From 73f1089820474afaddd96d997c62dbb37d625d7e Mon Sep 17 00:00:00 2001 From: noinia <991345+noinia@users.noreply.github.com> Date: Sun, 22 Dec 2024 18:35:59 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20docs=20from=20@=20noinia/hgeom?= =?UTF-8?q?etry@b552e60075b38267398eea2e516b8357cfa9e18a=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- haddock.txt | 6 +- haddocks/doc-index-95.html | 2 +- haddocks/doc-index-All.html | 2 +- haddocks/doc-index-T.html | 2 +- haddocks/doc-index.json | 2 +- haddocks/hgeometry/HGeometry-PolyLine.html | 2 +- .../hgeometry/HGeometry-Polygon-Class.html | 2 +- .../geojson/src/HGeometry.GeoJSON.html | 306 ++-- haddocks/hgeometry/hgeometry.haddock | Bin 87821 -> 88069 bytes haddocks/hgeometry/ipe/Ipe-Attributes.html | 2 +- haddocks/hgeometry/ipe/Ipe-Content.html | 4 +- haddocks/hgeometry/ipe/Ipe-FromIpe.html | 6 +- haddocks/hgeometry/ipe/Ipe-Types.html | 4 +- haddocks/hgeometry/ipe/Ipe.html | 8 +- haddocks/hgeometry/ipe/doc-index.json | 2 +- haddocks/hgeometry/ipe/ipe.haddock | Bin 44344 -> 44495 bytes .../hgeometry/ipe/src/Ipe.Attributes.html | 506 +++--- haddocks/hgeometry/ipe/src/Ipe.Color.html | 146 +- haddocks/hgeometry/ipe/src/Ipe.Content.html | 990 ++++++------ haddocks/hgeometry/ipe/src/Ipe.FromIpe.html | 1048 ++++++++----- haddocks/hgeometry/ipe/src/Ipe.IpeOut.html | 506 +++--- haddocks/hgeometry/ipe/src/Ipe.IpeRender.html | 82 +- haddocks/hgeometry/ipe/src/Ipe.IpeToIpe.html | 144 +- haddocks/hgeometry/ipe/src/Ipe.Layer.html | 10 +- haddocks/hgeometry/ipe/src/Ipe.Matrix.html | 90 +- .../ipe/src/Ipe.ParserPrimitives.html | 176 +-- haddocks/hgeometry/ipe/src/Ipe.Path.html | 334 ++-- .../hgeometry/ipe/src/Ipe.PathParser.html | 324 ++-- haddocks/hgeometry/ipe/src/Ipe.Reader.html | 956 ++++++------ haddocks/hgeometry/ipe/src/Ipe.Types.html | 466 +++--- haddocks/hgeometry/ipe/src/Ipe.Value.html | 20 +- haddocks/hgeometry/ipe/src/Ipe.Writer.html | 856 +++++------ haddocks/hgeometry/ipe/src/Ipe.html | 61 +- .../miso/src/HGeometry.Miso.Event.Extra.html | 108 +- .../miso/src/HGeometry.Miso.FFI.Extra.html | 6 +- ...Geometry.Miso.Subscription.MouseExtra.html | 178 +-- .../src/HGeometry.PlaneGraph.Instances.html | 366 ++--- .../src/HGeometry.Polygon.Instances.html | 408 ++--- .../quickcheck/src/Paths_hgeometry.html | 80 +- .../hgeometry/src/HGeometry.BezierSpline.html | 148 +- ...Geometry.ClosestPair.DivideAndConquer.html | 326 ++-- .../src/HGeometry.ClosestPair.Naive.html | 52 +- ...HGeometry.ConvexHull.DivideAndConquer.html | 130 +- .../src/HGeometry.ConvexHull.GrahamScan.html | 222 +-- .../src/HGeometry.ConvexHull.JarvisMarch.html | 330 ++-- .../src/HGeometry.ConvexHull.Melkman.html | 242 +-- .../src/HGeometry.ConvexHull.QuickHull.html | 284 ++-- .../HGeometry.ConvexHull.R3.Naive.Dual.html | 74 +- .../src/HGeometry.Graphics.Camera.html | 238 +-- ...ry.HalfPlane.CommonIntersection.Chain.html | 218 +-- ...Geometry.HalfPlane.CommonIntersection.html | 716 ++++----- .../hgeometry/src/HGeometry.IntervalTree.html | 354 ++--- .../src/HGeometry.Line.LowerEnvelope.html | 172 +-- ...neSegment.Intersection.BentleyOttmann.html | 1052 ++++++------- ...ometry.LineSegment.Intersection.Naive.html | 36 +- ...ometry.LineSegment.Intersection.Types.html | 622 ++++---- ...ne.LowerEnvelope.Connected.BruteForce.html | 62 +- ...y.Plane.LowerEnvelope.Connected.Graph.html | 338 ++-- ...e.LowerEnvelope.Connected.MonoidalMap.html | 102 +- ...ne.LowerEnvelope.Connected.Primitives.html | 234 +-- ...Plane.LowerEnvelope.Connected.Regions.html | 494 +++--- ...ane.LowerEnvelope.Connected.Separator.html | 1362 ++++++++--------- ...ry.Plane.LowerEnvelope.Connected.Type.html | 266 ++-- ...ne.LowerEnvelope.Connected.VertexForm.html | 200 +-- .../HGeometry.Plane.LowerEnvelope.Naive.html | 284 ++-- .../HGeometry.Plane.LowerEnvelope.Type.html | 72 +- .../src/HGeometry.PlaneGraph.Class.html | 542 +++---- .../HGeometry.PlaneGraph.Connected.Type.html | 526 +++---- .../src/HGeometry.PlaneGraph.Type.html | 714 +++++++++ .../src/HGeometry.PolyLine.Class.html | 54 +- .../HGeometry.PolyLine.Frechet.Discrete.html | 152 +- ...olyLine.Simplification.DouglasPeucker.html | 204 +-- ...metry.PolyLine.Simplification.ImaiIri.html | 220 +-- .../hgeometry/src/HGeometry.PolyLine.html | 194 +-- .../src/HGeometry.Polygon.Class.html | 472 +++--- .../src/HGeometry.Polygon.Convex.Class.html | 4 +- ...eometry.Polygon.Convex.Implementation.html | 612 ++++---- ...HGeometry.Polygon.Convex.MinkowskiSum.html | 230 +-- .../src/HGeometry.Polygon.Convex.Random.html | 164 +- .../HGeometry.Polygon.Convex.Tangents.html | 386 ++--- .../src/HGeometry.Polygon.Monotone.html | 248 +-- .../src/HGeometry.Polygon.Simple.Class.html | 74 +- ...eometry.Polygon.Simple.Implementation.html | 144 +- .../HGeometry.Polygon.Simple.InPolygon.html | 174 +-- .../src/HGeometry.Polygon.Simple.Sample.html | 234 +-- .../src/HGeometry.Polygon.Simple.Type.html | 132 +- .../src/HGeometry.Polygon.Simple.html | 362 ++--- ...ry.Polygon.Triangulation.MakeMonotone.html | 622 ++++---- ...gon.Triangulation.TriangulateMonotone.html | 298 ++-- ...HGeometry.Polygon.Triangulation.Types.html | 130 +- .../src/HGeometry.Polygon.Triangulation.html | 106 +- .../HGeometry.Polygon.Visibility.Naive.html | 114 +- .../src/HGeometry.Polygon.WithHoles.html | 502 +++--- haddocks/hgeometry/src/HGeometry.Polygon.html | 46 +- .../src/HGeometry.RangeTree.Base.html | 398 ++--- .../src/HGeometry.SegmentTree.Base.html | 642 ++++---- ...HGeometry.SegmentTree.CanonicalSubSet.html | 6 +- ...y.VerticalRayShooting.PersistentSweep.html | 362 ++--- ...metry.VoronoiDiagram.ViaLowerEnvelope.html | 124 +- .../svg/src/HGeometry.Miso.Canvas.Zoom.html | 70 +- .../src/HGeometry.Miso.OrphanInstances.html | 114 +- .../svg/src/HGeometry.Miso.Svg.Canvas.html | 178 +-- .../src/HGeometry.Miso.Svg.StaticCanvas.html | 126 +- .../svg/src/HGeometry.Miso.Svg.Writer.html | 568 +++---- .../hgeometry/svg/src/HGeometry.Miso.Svg.html | 20 +- 105 files changed, 14021 insertions(+), 13088 deletions(-) create mode 100644 haddocks/hgeometry/src/HGeometry.PlaneGraph.Type.html diff --git a/haddock.txt b/haddock.txt index ddbebf5dc..a92841efa 100644 --- a/haddock.txt +++ b/haddock.txt @@ -40,6 +40,7 @@ 100% ( 9 / 9) in 'HGeometry.Box.Class' 100% ( 9 / 9) in 'HGeometry.Ball.Class' 100% ( 8 / 8) in 'Ipe.IpeRender' + 100% ( 8 / 8) in 'Hiraffe.PlanarGraph' 100% ( 8 / 8) in 'HGeometry.YAML' 100% ( 8 / 8) in 'HGeometry.Triangle.Class' 100% ( 8 / 8) in 'HGeometry.SegmentTree.Base' @@ -94,7 +95,6 @@ 100% ( 4 / 4) in 'Hiraffe.Tree' 100% ( 4 / 4) in 'Hiraffe.PlanarGraph.Class' 100% ( 4 / 4) in 'Hiraffe.PlanarGraph.AdjRep' - 100% ( 4 / 4) in 'Hiraffe.PlanarGraph' 100% ( 4 / 4) in 'Hiraffe.AdjacencyListRep' 100% ( 4 / 4) in 'HGeometry.StringSearch.KMP' 100% ( 4 / 4) in 'HGeometry.Sign' @@ -150,15 +150,15 @@ 100% ( 1 / 1) in 'HGeometry.Miso.OrphanInstances' 100% ( 1 / 1) in 'HGeometry.Instances' 96% ( 27 / 28) in 'HGeometry.Box' + 95% ( 19 / 20) in 'Ipe.FromIpe' 95% ( 19 / 20) in 'HGeometry.LineSegment.Intersection.BentleyOttmann' - 94% ( 17 / 18) in 'Ipe.FromIpe' 94% ( 17 / 18) in 'HGeometry.LineSegment.Intersection.Naive' 92% ( 13 / 14) in 'Hiraffe.PlanarGraph.Component' 91% ( 11 / 12) in 'Hiraffe.Graph.Class' 90% ( 10 / 11) in 'HGeometry.Miso.Svg.Canvas' 89% ( 35 / 39) in 'Ipe.IpeOut' 86% ( 20 / 23) in 'Ipe.Reader' - 84% ( 98 /116) in 'Ipe' + 84% ( 99 /117) in 'Ipe' 84% ( 11 / 13) in 'HGeometry.Algorithms.BinarySearch' 83% ( 5 / 6) in 'HGeometry.Polygon.Triangulation' 83% ( 5 / 6) in 'HGeometry.Line' diff --git a/haddocks/doc-index-95.html b/haddocks/doc-index-95.html index b4aa609ea..cc6684344 100644 --- a/haddocks/doc-index-95.html +++ b/haddocks/doc-index-95.html @@ -1 +1 @@ - (Index - _)
 

Index - _

_AlternatingHGeometry.Line.LowerEnvelope
_anchorPointHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
_ArcSegmentIpe.Path
_ArcToIpe.Path
_arrowNameIpe.Attributes, Ipe
_arrowSizeIpe.Attributes, Ipe
_asClosedLineSegmentIpe.FromIpe, Ipe
_asConvexPolygonIpe.FromIpe, Ipe
_asLineSegmentIpe.FromIpe, Ipe
_asPointIpe.FromIpe, Ipe
_asPolyLineIpe.FromIpe, Ipe
_asRectangleIpe.FromIpe, Ipe
_asSimplePolygonIpe.FromIpe, Ipe
_asTriangleIpe.FromIpe, Ipe
_AttrIpe.Attributes, Ipe
_BallSphereHGeometry.Ball.CenterAndRadius, HGeometry.Ball
_BottomHGeometry.Unbounded
_BottomMaybeHGeometry.Unbounded
_BoundaryHGeometry.Boundary
_ClosedSplineIpe.Path
_ClosedSplineSegmentIpe.Path
_ClosePathIpe.Path
_ConvexPolygonHGeometry.Polygon.Convex
_coreHGeometry.Ext
_CubicBezierSegmentIpe.Path
_CurveToIpe.Path
_directionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
_DiskCircleHGeometry.Ball.CenterAndRadius, HGeometry.Ball
_EllipseIpe.Path
_EllipseCircleHGeometry.Ellipse
_EllipseSegmentIpe.Path
_endPointHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
_ExtHGeometry.Ext
_extraHGeometry.Ext
_GeoPolygonPolygonalDomainHGeometry.GeoJSON
_GeoPositionWithoutCRSHGeometry.GeoJSON
_getAttrIpe.Attributes, Ipe
_IpeGroupIpe.Content, Ipe.Types, Ipe
_IpeImageIpe.Content, Ipe.Types, Ipe
_IpeMiniPageIpe.Content, Ipe.Types, Ipe
_IpePathIpe.Content, Ipe.Types, Ipe
_IpeTextLabelIpe.Content, Ipe.Types, Ipe
_IpeUseIpe.Content, Ipe.Types, Ipe
_LineToIpe.Path
_MoveToIpe.Path
_PolygonPathIpe.Path
_PolyLineFHGeometry.PolyLine
_PolyLineLineSegmentHGeometry.PolyLine.Class, HGeometry.PolyLine
_PolyLineSegmentIpe.Path
_QCurveToIpe.Path
_QuadraticBezierSegmentIpe.Path
_SplineIpe.Path
_SplineSegmentIpe.Path
_TopHGeometry.Unbounded
_TopMaybeHGeometry.Unbounded
_TreeNodeEitherHGeometry.Tree.Util
_UncheckedConvexPolygonHGeometry.Polygon.Convex
_unUnBoundedHGeometry.Unbounded
_ValHGeometry.Unbounded
_ValBHGeometry.Unbounded
_ValTHGeometry.Unbounded
_VectorHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
_withAttrsIpe.FromIpe, Ipe
\ No newline at end of file + (Index - _)
 

Index - _

_AlternatingHGeometry.Line.LowerEnvelope
_anchorPointHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
_ArcSegmentIpe.Path
_ArcToIpe.Path
_arrowNameIpe.Attributes, Ipe
_arrowSizeIpe.Attributes, Ipe
_asClosedLineSegmentIpe.FromIpe, Ipe
_asConvexPolygonIpe.FromIpe, Ipe
_asLineSegmentIpe.FromIpe, Ipe
_asPointIpe.FromIpe, Ipe
_asPolygonalDomainIpe.FromIpe, Ipe
_asPolyLineIpe.FromIpe, Ipe
_asRectangleIpe.FromIpe, Ipe
_asSimplePolygonIpe.FromIpe, Ipe
_asTriangleIpe.FromIpe, Ipe
_AttrIpe.Attributes, Ipe
_BallSphereHGeometry.Ball.CenterAndRadius, HGeometry.Ball
_BottomHGeometry.Unbounded
_BottomMaybeHGeometry.Unbounded
_BoundaryHGeometry.Boundary
_ClosedSplineIpe.Path
_ClosedSplineSegmentIpe.Path
_ClosePathIpe.Path
_ConvexPolygonHGeometry.Polygon.Convex
_coreHGeometry.Ext
_CubicBezierSegmentIpe.Path
_CurveToIpe.Path
_directionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
_DiskCircleHGeometry.Ball.CenterAndRadius, HGeometry.Ball
_EllipseIpe.Path
_EllipseCircleHGeometry.Ellipse
_EllipseSegmentIpe.Path
_endPointHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
_ExtHGeometry.Ext
_extraHGeometry.Ext
_GeoPolygonPolygonalDomainHGeometry.GeoJSON
_GeoPositionWithoutCRSHGeometry.GeoJSON
_getAttrIpe.Attributes, Ipe
_IpeGroupIpe.Content, Ipe.Types, Ipe
_IpeImageIpe.Content, Ipe.Types, Ipe
_IpeMiniPageIpe.Content, Ipe.Types, Ipe
_IpePathIpe.Content, Ipe.Types, Ipe
_IpeTextLabelIpe.Content, Ipe.Types, Ipe
_IpeUseIpe.Content, Ipe.Types, Ipe
_LineToIpe.Path
_MoveToIpe.Path
_PolygonPathIpe.Path
_PolyLineFHGeometry.PolyLine
_PolyLineLineSegmentHGeometry.PolyLine.Class, HGeometry.PolyLine
_PolyLineSegmentIpe.Path
_QCurveToIpe.Path
_QuadraticBezierSegmentIpe.Path
_SplineIpe.Path
_SplineSegmentIpe.Path
_TopHGeometry.Unbounded
_TopMaybeHGeometry.Unbounded
_TreeNodeEitherHGeometry.Tree.Util
_UncheckedConvexPolygonHGeometry.Polygon.Convex
_unUnBoundedHGeometry.Unbounded
_ValHGeometry.Unbounded
_ValBHGeometry.Unbounded
_ValTHGeometry.Unbounded
_VectorHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
_withAttrsIpe.FromIpe, Ipe
\ No newline at end of file diff --git a/haddocks/doc-index-All.html b/haddocks/doc-index-All.html index 933aeaab2..78fed6096 100644 --- a/haddocks/doc-index-All.html +++ b/haddocks/doc-index-All.html @@ -1 +1 @@ - (Index)
 

Index

!Ipe.IpeOut, Ipe
!!*HGeometry.Matrix.Class, HGeometry.Matrix
!*HGeometry.Matrix.Class, HGeometry.Matrix
!*!HGeometry.Matrix.Class, HGeometry.Matrix
%HGeometry.Number.Ratio.Generalized
*!!HGeometry.Matrix.Class, HGeometry.Matrix
*^HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
.+^HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
.-.HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
.-^HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
:+ 
1 (Type/Class)HGeometry.Ext
2 (Data Constructor)HGeometry.Ext
:<<HGeometry.Sequence.NonEmpty
:>>HGeometry.Sequence.NonEmpty
:~HGeometry.Ext
<>>HGeometry.Sequence.NonEmpty
AboveHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
accessHGeometry.Tree.Binary.Static
activeLayerIpe.Types, Ipe
Additive_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
addStyleSheetIpe.Types, Ipe
addStyleSheetFromIpe.Reader, Ipe
AffineIpe.Attributes, Ipe
affineTransformationHGeometry.Ellipse
Affine_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
AfterHGeometry.Interval.Class, HGeometry.Interval
AlignBaselineIpe.Attributes, Ipe
AlignBottomIpe.Attributes, Ipe
alignedOriginHGeometry.Viewport
AlignHCenterIpe.Attributes, Ipe
AlignLeftIpe.Attributes, Ipe
AlignRightIpe.Attributes, Ipe
AlignTopIpe.Attributes, Ipe
AlignVCenterIpe.Attributes, Ipe
AllIpe.IpeToIpe
allChildrenHGeometry.Tree.Util
AllColinearHGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
AllFalseHGeometry.Algorithms.BinarySearch
allNextsHGeometry.List.Zipper
allNonEmptyNextsHGeometry.List.Zipper
allPointsHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
allSimplePolygonsHGeometry.Polygon.Instances
allTreesHGeometry.Tree.Util
AllTrueHGeometry.Algorithms.BinarySearch
Alternating 
1 (Type/Class)HGeometry.Sequence.Alternating
2 (Data Constructor)HGeometry.Sequence.Alternating
ancestorsHGeometry.Tree.Util
anchorPointHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
AnClosedEHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
AnEndPoint 
1 (Type/Class)HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
AnOpenEHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
applyHGeometry.Permutation
applyMatricesIpe.Matrix
applyMatricesPageIpe.Matrix
applyMatrixIpe.Matrix
applyMatrix'Ipe.Matrix
arbitraryPlaneGraphHGeometry.PlaneGraph.Instances
arbitraryPointInBoundingBoxHGeometry.Kernel.Test.Box
ArcSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
ArcToIpe.Path
areaHGeometry.Polygon
area2XHGeometry.Polygon
AroundEndHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
AroundIntersectionHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
AroundStartHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
ArrowIpe.Attributes, Ipe
arrowNameIpe.Attributes, Ipe
arrowSizeIpe.Attributes, Ipe
ArrowSym0Ipe.Attributes, Ipe
AsA 
1 (Data Constructor)HGeometry.Ext
2 (Type/Class)HGeometry.Ext
asAnEndPointHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
asAnIntervalHGeometry.Interval
asBalancedBinLeafTreeHGeometry.Tree.Binary.Static
asBalancedBinTreeHGeometry.Tree.Binary.Static
ascEndPointsHGeometry.SegmentTree.Base, HGeometry.SegmentTree
asClosedIntervalHGeometry.Interval
asCoreHGeometry.Ext
AsExtHGeometry.Ext
AsFixedHGeometry.Number.Real.Rational
asFixedHGeometry.Number.Real.Rational
asIndexedExtHGeometry.Ext
AsIsIpe.Path
asMap 
1 (Function)HGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
2 (Function)HGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
asMonotonePolygonHGeometry.Polygon.Monotone
asNonVerticalHyperPlaneHGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
asOpenIntervalHGeometry.Interval
asPointHGeometry, HGeometry.Kernel, HGeometry.Point
asPointLocationResultHGeometry.Boundary
asSimplePolygonHGeometry.Polygon.WithHoles
AssociatedHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
associatedSegmentsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
associatedSegsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
asTriangleHGeometry.Polygon
AsVector_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
Attr 
1 (Type/Class)Ipe.Attributes, Ipe
2 (Data Constructor)Ipe.Attributes, Ipe
attrIpe.Attributes, Ipe
AttributesIpe.Attributes, Ipe
attributesIpe.Content, Ipe.Types, Ipe
Attributes'Ipe.Content, Ipe.Types, Ipe
AttributesOfIpe.Content, Ipe.Types, Ipe
AttributeUniverseIpe.Attributes, Ipe
AttrMapIpe.Content, Ipe.Types, Ipe
AttrMapSym1Ipe.Content, Ipe.Types, Ipe
attrNameIpe.Attributes, Ipe
AttrsIpe.Attributes, Ipe
BackgroundIpe.IpeRender
Ball 
1 (Type/Class)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
Ball_ 
1 (Type/Class)HGeometry.Ball.Class, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.Class, HGeometry.Ball
basicIpeStyleIpe.Types, Ipe
basicNamedColorsIpe.Color
basisHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
BeforeHGeometry.Interval.Class, HGeometry.Interval
BelowHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
Bezier2HGeometry.BezierSpline
Bezier3HGeometry.BezierSpline
BezierSpline 
1 (Type/Class)HGeometry.BezierSpline
2 (Data Constructor)HGeometry.BezierSpline
BezierSplineFHGeometry.BezierSpline
BidirGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
BinarySearchHGeometry.Algorithms.BinarySearch
binarySearchFirstHGeometry.Algorithms.BinarySearch
binarySearchFirstIdxInHGeometry.Algorithms.BinarySearch
binarySearchFirstInHGeometry.Algorithms.BinarySearch
binarySearchIdxInHGeometry.Algorithms.BinarySearch
binarySearchInHGeometry.Algorithms.BinarySearch
binarySearchLastHGeometry.Algorithms.BinarySearch
binarySearchLastIdxInHGeometry.Algorithms.BinarySearch
binarySearchLastInHGeometry.Algorithms.BinarySearch
BinarySearchResultHGeometry.Algorithms.BinarySearch
binarySearchUntilHGeometry.Algorithms.BinarySearch
BinaryTreeHGeometry.Tree.Binary.Static
BinLeafTreeHGeometry.Tree.Binary.Static
bisectorHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
blackIpe.Color
blankCanvasHGeometry.Miso.Svg.Canvas
blueIpe.Color
bothClosedHGeometry.Kernel.Instances
Bottom 
1 (Type/Class)HGeometry.Unbounded
2 (Data Constructor)HGeometry.Unbounded
BottomLeftHGeometry, HGeometry.Kernel, HGeometry.Point
BottomRightHGeometry, HGeometry.Kernel, HGeometry.Point
bottomSideHGeometry, HGeometry.Box, HGeometry.Kernel
bottomToMaybeHGeometry.Unbounded
Boundary 
1 (Type/Class)HGeometry.Boundary
2 (Data Constructor)HGeometry.Boundary
boundaryDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
boundaryDartsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
boundaryDartsOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
boundaryVerticesHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
boundaryVerticesOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
BoundedHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
BoundedRegionHGeometry.HalfPlane.CommonIntersection
boundingBoxHGeometry, HGeometry.Box, HGeometry.Kernel
BoundingHyperPlaneHGeometry.HalfSpace.Class, HGeometry.HalfSpace, HGeometry.HalfSpace
boundingHyperPlaneHGeometry.HalfSpace.Class, HGeometry.HalfSpace
Box 
1 (Type/Class)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Box, HGeometry.Kernel
Box_HGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
brownIpe.Color
bruteForceLowerEnvelopeHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
buildHGeometry.Algorithms.LogarithmicMethod
buildClosedIntervalHGeometry.Interval.Class, HGeometry.Interval
buildFailureFunctionHGeometry.StringSearch.KMP
buildIntervalHGeometry.Interval.Class, HGeometry.Interval
buildRangeTreeHGeometry.RangeTree.Base, HGeometry.RangeTree
buildSegmentTreeHGeometry.SegmentTree.Base, HGeometry.SegmentTree
buildSkeletonHGeometry.SegmentTree.Base, HGeometry.SegmentTree
ButtonHGeometry.Miso.Event.Extra
Camera 
1 (Type/Class)HGeometry.Graphics.Camera
2 (Data Constructor)HGeometry.Graphics.Camera
cameraNormalHGeometry.Graphics.Camera
cameraPositionHGeometry.Graphics.Camera
cameraTransformHGeometry.Graphics.Camera
CanDeleteHGeometry.Measured.Class, HGeometry.Measured
CanInsertHGeometry.Measured.Class, HGeometry.Measured
canonicalSubSetHGeometry.SegmentTree.CanonicalSubSet
CanvasHGeometry.Miso.Svg.Canvas
CardinalDirectionHGeometry.Direction
CCP 
1 (Type/Class)HGeometry.ClosestPair.DivideAndConquer
2 (Data Constructor)HGeometry.ClosestPair.DivideAndConquer
CCW 
1 (Type/Class)HGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
2 (Data Constructor)HGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
ccwHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
ccwCmpAroundHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
ccwCmpAroundWithHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
ccwOuterBoundaryFromHGeometry.Polygon.Class, HGeometry.Polygon
ccwPredecessorOfHGeometry.Polygon.Class, HGeometry.Polygon
ccwSuccessorOfHGeometry.Polygon.Class, HGeometry.Polygon
centerHGeometry.Ball.Class, HGeometry.Ball
centeredOriginHGeometry.Viewport
centerPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
centroidHGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple
Chain 
1 (Type/Class)HGeometry.HalfPlane.CommonIntersection
2 (Data Constructor)HGeometry.HalfPlane.CommonIntersection
Circle 
1 (Type/Class)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
circleToEllipseHGeometry.Ellipse
clampToHGeometry.Interval.Class, HGeometry.Interval
classifyVerticesHGeometry.Polygon.Triangulation.MakeMonotone
ClipIpe.Attributes, Ipe
ClipSym0Ipe.Attributes, Ipe
ClosedHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
ClosedEHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
ClosedInterval 
1 (Type/Class)HGeometry.Interval
2 (Data Constructor)HGeometry.Interval
ClosedInterval_ 
1 (Type/Class)HGeometry.Interval.Class, HGeometry.Interval
2 (Data Constructor)HGeometry.Interval.Class, HGeometry.Interval
ClosedLineSegment 
1 (Type/Class)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
ClosedLineSegment_HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
ClosedSplineIpe.Path
ClosedSplineSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
ClosePathIpe.Path
closestPair 
1 (Function)HGeometry.ClosestPair.DivideAndConquer, HGeometry.ClosestPair
2 (Function)HGeometry.ClosestPair.Naive
closestPairWithHGeometry.ClosestPair.Naive
cmpByDistanceToHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
cmpInDirection 
1 (Function)HGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
2 (Function)HGeometry.HyperPlane
cmpSlopeHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
cmpXHGeometry.Polygon.Triangulation.MakeMonotone
CoLinearHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
Coloured 
1 (Type/Class)PLY.Writer
2 (Data Constructor)PLY.Writer
columnHGeometry.Matrix.Class, HGeometry.Matrix
CommonAttributesIpe.Attributes, Ipe
commonAttributesIpe.Content, Ipe.Types, Ipe
CommonIntersectionHGeometry.HalfPlane.CommonIntersection
commonIntersectionHGeometry.HalfPlane.CommonIntersection
CompareIntervalHGeometry.Interval.Class, HGeometry.Interval
compareIntervalHGeometry.Interval.Class, HGeometry.Interval
compareIntervalExactHGeometry.Interval.Class, HGeometry.Interval
compare_HGeometry.Ord.Dynamic
componentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
component'HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
componentsHGeometry, HGeometry.Kernel, HGeometry.Vector
computeDiagonals 
1 (Function)HGeometry.Polygon.Triangulation.TriangulateMonotone
2 (Function)HGeometry.Polygon.Triangulation.MakeMonotone
3 (Function)HGeometry.Polygon.Triangulation
computeVertexFormHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
ConnectedEnvelopeHGeometry.Plane.LowerEnvelope
ConnectedVDHGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
consHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
consElemWithHGeometry.Sequence.Alternating
constantHGeometry.Number.Real.Symbolic
constantFactorHGeometry.Number.Real.Symbolic
ConstructableClosedInterval_HGeometry.Interval.Class, HGeometry.Interval
ConstructableDiGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
ConstructableGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
ConstructableHyperPlane_HGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
ConstructableInterval_HGeometry.Interval.Class, HGeometry.Interval
ConstructableLineSegment_HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
ConstructableOpenInterval_HGeometry.Interval.Class, HGeometry.Interval
ConstructablePoint_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
ConstructablePolyLine_HGeometry.PolyLine.Class, HGeometry.PolyLine
ConstructableSimplePolygonHGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple, HGeometry.Polygon.Simple
constructTreeHGeometry.Tree.Util
contentIpe.Types, Ipe
contentInViewIpe.Types, Ipe
ConversionErrorIpe.Reader, Ipe
convexHull 
1 (Function)HGeometry.ConvexHull.QuickHull
2 (Function)HGeometry.ConvexHull.JarvisMarch
3 (Function)HGeometry.ConvexHull.GrahamScan, HGeometry.ConvexHull
4 (Function)HGeometry.ConvexHull.DivideAndConquer
5 (Function)HGeometry.ConvexHull.Melkman
ConvexPolygonHGeometry.Polygon.Convex
ConvexPolygonFHGeometry.Polygon.Convex
ConvexPolygon_HGeometry.Polygon.Convex.Class, HGeometry.Polygon.Convex
coordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
coord'HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
CoordinateIpe.PathParser, Ipe.Reader
coordinatesHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
coreHGeometry.Ext
CoreOfHGeometry.Ext
Corners 
1 (Type/Class)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Box, HGeometry.Kernel
corners 
1 (Function)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Function)HGeometry.Triangle.Class, HGeometry.Triangle
cornersInDirectionHGeometry, HGeometry.Box, HGeometry.Kernel
Count 
1 (Type/Class)HGeometry.Measured.Size
2 (Data Constructor)HGeometry.Measured.Size
CPHGeometry.ClosestPair.DivideAndConquer
CPlaneGraph 
1 (Type/Class)HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
2 (Data Constructor)HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
createTreeHGeometry.IntervalTree
Crop 
1 (Type/Class)Ipe.IpeRender
2 (Data Constructor)Ipe.IpeRender
cropIpe.IpeRender
crossHGeometry, HGeometry.Kernel, HGeometry.Vector
CubicBezierHGeometry.BezierSpline
CubicBezierSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
currentLevelHGeometry.Viewport
CurveToIpe.Path
CWHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
cwCmpAroundHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
cwCmpAroundWithHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
cwOuterBoundaryFromHGeometry.Polygon.Class, HGeometry.Polygon
cycleOfHGeometry.Permutation
cycleRepHGeometry.Permutation
Cyclic 
1 (Type/Class)HGeometry.Cyclic
2 (Data Constructor)HGeometry.Cyclic
darkblueIpe.Color
darkcyanIpe.Color
darkgrayIpe.Color
darkgreenIpe.Color
darkmagentaIpe.Color
darkorangeIpe.Color
darkredIpe.Color
DartHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
dartAtHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DartIxHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
dartIxFromToHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
dartsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
dartSegmentAtHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
dartSegmentsHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DashIpe.Attributes, Ipe
DashNamedIpe.Attributes, Ipe
DashPatternIpe.Attributes, Ipe
DashSym0Ipe.Attributes, Ipe
dCircleHGeometry.Miso.Svg, HGeometry.Svg
dCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
dDiskHGeometry.Miso.Svg, HGeometry.Svg
decodeYAMLHGeometry.YAML
decodeYAMLFileHGeometry.YAML
defaultBoxIpe.IpeOut, Ipe
DefaultFromIpeIpe.FromIpe, Ipe
defaultFromIpeIpe.FromIpe, Ipe
DefaultIpeOutIpe.IpeOut, Ipe, Ipe
defaultOptions 
1 (Function)Ipe.IpeRender
2 (Function)Ipe.IpeToIpe
DefaultTransformByConstraintsHGeometry.Transformation
DefinersHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
definersHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
defIOIpe.IpeOut, Ipe
deleteHGeometry.IntervalTree
deleteAllByHGeometry.Set.Util
deleteMeasureHGeometry.Measured.Class, HGeometry.Measured
denominatorHGeometry.Number.Ratio.Generalized
DepthIpe.Attributes, Ipe
DepthSym0Ipe.Attributes, Ipe
detHGeometry.Matrix.Class, HGeometry.Matrix
Diagonal 
1 (Type/Class)HGeometry.Polygon.Triangulation
2 (Data Constructor)HGeometry.Polygon.Triangulation
diGraphFromAdjacencyListsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DiGraphFromAdjListExtraConstraintsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
DiGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DimensionHGeometry.Properties
dimensionsHGeometry.Miso.Svg.StaticCanvas, HGeometry.Miso.Svg.Canvas
directionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
Disk 
1 (Type/Class)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
Disk_ 
1 (Type/Class)HGeometry.Ball.Class, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.Class, HGeometry.Ball
DistanceFunctionHGeometry.ClosestPair.Naive
divideAndConquerHGeometry.Algorithms.DivideAndConquer
divideAndConquer1HGeometry.Algorithms.DivideAndConquer
divideAndConquer1WithHGeometry.Algorithms.DivideAndConquer
dLineSegmentHGeometry.Miso.Svg, HGeometry.Svg
dotHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
douglasPeuckerHGeometry.PolyLine.Simplification.DouglasPeucker
DownHGeometry.Miso.Event.Extra
dPointHGeometry.Miso.Svg, HGeometry.Svg
dPolyLineHGeometry.Miso.Svg, HGeometry.Svg
drawHGeometry.Miso.Svg, HGeometry.Svg
DrawableHGeometry.Miso.Svg, HGeometry.Svg
drawTreeHGeometry.Tree.Binary.Static
drawTree'HGeometry.Tree.Binary.Static
drawWithHGeometry.Miso.Svg, HGeometry.Svg
dRectangleHGeometry.Miso.Svg, HGeometry.Svg
dropNextHGeometry.List.Zipper
dSimplePolygonHGeometry.Miso.Svg, HGeometry.Svg
dualGraphHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DualGraphOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
dualHyperPlaneHGeometry.Duality
dualLineHGeometry.Duality
dualPointHGeometry.Duality
durationHGeometry.Interval.Class, HGeometry.Interval
E 
1 (Type/Class)HGeometry.Plane.LowerEnvelope.Connected.Graph
2 (Data Constructor)HGeometry.Plane.LowerEnvelope.Connected.Graph
EastHGeometry.Direction
eastHGeometry, HGeometry.Box, HGeometry.Kernel
EdgeHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph, HGeometry.Polygon, HGeometry.Polygon
edgeAtHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
EdgeIxHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph, HGeometry.Polygon, HGeometry.Polygon
edgesHGeometry.PolyLine, HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
edgeSegmentAtHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
edgeSegmentsHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
ElemHGeometry.Algorithms.BinarySearch
ElemCyclicHGeometry.Cyclic
elementsHGeometry.Matrix.Class, HGeometry.Matrix
elemsHGeometry.Permutation
Ellipse 
1 (Data Constructor)Ipe.Path
2 (Type/Class)HGeometry.Ellipse
3 (Data Constructor)HGeometry.Ellipse
ellipseMatrixHGeometry.Ellipse
EllipseSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
ellipseToCircleHGeometry.Ellipse
emptyHGeometry.Algorithms.LogarithmicMethod
EmptyIntersectionHGeometry.HalfPlane.CommonIntersection
emptyPageIpe.Types, Ipe
encodeYAMLHGeometry.YAML
encodeYAMLFileHGeometry.YAML
encodingIpe.Types, Ipe
EndHGeometry.Polygon.Triangulation.MakeMonotone
endHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
EndPoint 
1 (Type/Class)HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
endPointHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
EndPointOfHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
endPointOfHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
endPointsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
endPointsOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
EndPointTypeHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
endPointTypeHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
EndPoint_HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
EntireFileIpe.IpeToIpe
EntireLineHGeometry.HalfPlane.CommonIntersection
EOFillIpe.Attributes, Ipe
EPSIpe.IpeRender
epsHGeometry.Number.Real.Symbolic
EpsFoldHGeometry.Number.Real.Symbolic
euclideanDistHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
evalAtHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
evalAt'HGeometry, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
evalEpsHGeometry.Number.Real.Symbolic
evalHyperPlaneEquationHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
ExactHGeometry.Number.Real.Rational
Export 
1 (Type/Class)Ipe.IpeToIpe
2 (Data Constructor)Ipe.IpeToIpe
exportIpe.IpeToIpe
extHGeometry.Ext
extentHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
ExtraHGeometry.Point.Either
extraHGeometry.Ext
extractMinimaBy 
1 (Function)HGeometry.NonEmpty.Util
2 (Function)HGeometry.List.Util
extractNextHGeometry.List.Zipper
extractOrd1HGeometry.Ord.Dynamic
extractOrd2HGeometry.Ord.Dynamic
ExtraOfHGeometry.Ext
extremesHGeometry.Polygon.Class, HGeometry.Polygon
FaceHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
faceAtHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
FaceIxHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
facesHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
FacetHGeometry.ConvexHull.R3.Naive.Dual
facetsHGeometry.ConvexHull.R3.Naive.Dual
factorsHGeometry.Number.Real.Symbolic
farDistHGeometry.Graphics.Camera
FileType 
1 (Type/Class)Ipe.IpeRender
2 (Type/Class)Ipe.IpeToIpe
FillIpe.Attributes, Ipe
FillRuleIpe.Attributes, Ipe
FillRuleSym0Ipe.Attributes, Ipe
FillSym0Ipe.Attributes, Ipe
FillTypeIpe.Attributes, Ipe
findEvertHGeometry.Tree.Util
findEvert'HGeometry.Tree.Util
findNodeHGeometry.Tree.Util
findNodesHGeometry.Tree.Util
findPathHGeometry.Tree.Util
findSlabHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
firstChildHGeometry.Tree.Util
firstTrueHGeometry.Algorithms.BinarySearch
firstWithNeighborsHGeometry.Sequence.Alternating
fitToBoxHGeometry.Transformation
fitToBoxTransformHGeometry.Transformation
flattenGroupsIpe.Content
flipAxesHGeometry.Graphics.Camera
FlipsAtHGeometry.Algorithms.BinarySearch
flipSignHGeometry.Sign
flipYHGeometry.Viewport
focusHGeometry.Tree.Util
foldBinaryUpHGeometry.Tree.Binary.Static
folding1HGeometry.Lens.Util
foldMapZipHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
foldUpHGeometry.Tree.Binary.Static
foldUpDataHGeometry.Tree.Binary.Static
frechetDistanceWithHGeometry.PolyLine.Frechet.Discrete
fromAdjacencyListsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
fromAdjacencyRepHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
fromAscListHGeometry.RangeTree.Base, HGeometry.RangeTree
fromBarricentricHGeometry.Triangle.Class, HGeometry.Triangle
fromBoundaryPointsHGeometry.Ball.Class, HGeometry.Ball
fromCCWListHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
fromCenterAndPointHGeometry.Ball.Class, HGeometry.Ball
fromCenterAndSquaredRadiusHGeometry.Ball.Class, HGeometry.Ball
fromConnectedSegmentsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
fromContentIpe.Types, Ipe
fromDiametralPairHGeometry.Ball.Class, HGeometry.Ball
fromEmbeddingHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
fromExtentHGeometry, HGeometry.Box, HGeometry.Kernel
fromFixedHGeometry.Number.Real.Rational
fromFoldableHGeometry.Foldable.Util
fromFoldable1HGeometry.Foldable.Util
fromGroupedAscListHGeometry.RangeTree.Base, HGeometry.RangeTree
fromIntervalsHGeometry.IntervalTree
fromIpeXMLIpe.Reader
fromLinearFunctionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
fromList 
1 (Function)HGeometry.Foldable.Util
2 (Function)HGeometry.List.Zipper
fromListByHGeometry.Set.Util
fromNonEmptyHGeometry.Foldable.Util
fromNonEmptyWithHGeometry.Sequence.Alternating
fromPointAndNormalHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
fromPointAndVecHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
fromPointsHGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple
fromSeqIpe.PathParser, Ipe.Reader
fromSimplePolygonHGeometry.Polygon.Convex
fromSizeHGeometry.Viewport
fromVectorHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
fromVertexFormHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
GAttrIpe.Attributes, Ipe
generateHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
generateAHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
generateMatrixHGeometry.Matrix.Class, HGeometry.Matrix
GeoPositionWithoutCRS'HGeometry.GeoJSON
getAttrIpe.Attributes, Ipe
getBoundingClientRectHGeometry.Miso.FFI.Extra
getPositiveDartHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
goldIpe.Color
goNextHGeometry.List.Zipper
goPrevHGeometry.List.Zipper
GradientIpe.Attributes, Ipe
GradientSym0Ipe.Attributes, Ipe
GraphFromAdjListExtraConstraintsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
Graph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
GRatioHGeometry.Number.Ratio.Generalized
grayIpe.Color
greenIpe.Color
Group 
1 (Type/Class)Ipe.Content, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Content, Ipe.Types, Ipe
GroupAttributesIpe.Attributes, Ipe
groupBy'HGeometry.List.Util
groupItemsIpe.Content, Ipe.Types, Ipe
HalfLine 
1 (Type/Class)HGeometry.HalfLine
2 (Data Constructor)HGeometry.HalfLine
HalfLineBoxIntersectionHGeometry, HGeometry.Box, HGeometry.Kernel
HalfLineLineSegmentIntersectionHGeometry, HGeometry.LineSegment, HGeometry.Kernel
halfLineThroughHGeometry.HalfLine
HalfLine_x_Box_LineSegmentHGeometry, HGeometry.Box, HGeometry.Kernel
HalfLine_x_Box_PointHGeometry, HGeometry.Box, HGeometry.Kernel
HalfLine_x_LineSegment_LineSegmentHGeometry, HGeometry.LineSegment, HGeometry.Kernel
HalfLine_x_LineSegment_PointHGeometry, HGeometry.LineSegment, HGeometry.Kernel
HalfOpenInterval 
1 (Type/Class)HGeometry.Interval
2 (Data Constructor)HGeometry.Interval
HalfPlane_HGeometry.HalfSpace.Class, HGeometry.HalfSpace
HalfSpace 
1 (Type/Class)HGeometry.HalfSpace
2 (Data Constructor)HGeometry.HalfSpace
HalfSpaceFHGeometry.HalfSpace
halfSpaceSignHGeometry.HalfSpace.Class, HGeometry.HalfSpace
HalfSpace_HGeometry.HalfSpace.Class, HGeometry.HalfSpace
HAlignIpe.Attributes, Ipe
HAlignSym0Ipe.Attributes, Ipe
handleInternalCanvasActionHGeometry.Miso.Svg.Canvas
HasCanonicalSubSetHGeometry.SegmentTree.CanonicalSubSet
HasCenterHGeometry.Ball.Class, HGeometry.Ball
HasComponentsHGeometry, HGeometry.Kernel, HGeometry.Vector
HasCoordinatesHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
HasDartsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HasDarts'HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HasDefaultFromIpeIpe.FromIpe, Ipe
HasDefaultIpeOutIpe.IpeOut, Ipe
HasDeterminantHGeometry.Matrix.Class, HGeometry.Matrix
HasDimensionsHGeometry.Miso.Svg.StaticCanvas, HGeometry.Miso.Svg.Canvas
HasDirectedTraversalsHGeometry.Cyclic
HasDirectionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
HasEdgesHGeometry.PolyLine, HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
HasEdges'HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
HasElementsHGeometry.Matrix.Class, HGeometry.Matrix
HasEndHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasEndPointHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasFacesHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HasFaces'HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HasFromFoldableHGeometry.Foldable.Util
HasFromFoldable1HGeometry.Foldable.Util
HasHolesHGeometry.Polygon.Class, HGeometry.Polygon
HasIndexHGeometry.Indexed
HasInPolygonHGeometry.Polygon.Simple
HasIntersectionWithHGeometry.Intersection
HasMaxPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
HasMinPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
HasMousePositionHGeometry.Miso.Svg.Canvas
hasNoPertubationHGeometry.Number.Real.Symbolic
hasNoSelfIntersectionsHGeometry.Polygon.Simple
HasOnLineHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
HasOnSegmentHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasOuterBoundaryHGeometry.Polygon.Class, HGeometry.Polygon
HasPointsHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
HasPoints'HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
HasSquaredEuclideanDistanceHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
HasStartHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasStartPointHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasSupportingLineHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
HasVectorHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
HasVerticesHGeometry.PolyLine, HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
HasVertices'HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
HasZoomLevelHGeometry.Miso.Canvas.Zoom
Has_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
headHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
headOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HeightIpe.Attributes, Ipe
heightHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
HeightSym0Ipe.Attributes, Ipe
HoleHGeometry.Polygon.Class, HGeometry.Polygon
holeAtHGeometry.Polygon.Class, HGeometry.Polygon
HoleContainerHGeometry.Polygon.WithHoles
HoleFHGeometry.Polygon.Class, HGeometry.Polygon, HGeometry.Polygon
HoleIxHGeometry.Polygon.Class, HGeometry.Polygon, HGeometry.Polygon
holesHGeometry.Polygon.Class, HGeometry.Polygon
HorizontalIpe.Attributes, Ipe
HorizontalAlignmentIpe.Attributes, Ipe
horizontalLineHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
hostToWorldHGeometry.Viewport
HyperPlane 
1 (Type/Class)HGeometry.HyperPlane
2 (Data Constructor)HGeometry.HyperPlane
HyperPlane2HGeometry.HyperPlane
HyperPlane3HGeometry.HyperPlane
hyperPlaneCoefficientsHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
hyperPlaneEquationHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
hyperPlaneFromEquationHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
HyperPlaneFromEquationConstraintHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane, HGeometry.HyperPlane
HyperPlaneFromPointsHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
hyperPlaneThroughHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
HyperPlane_HGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
identityHGeometry.Transformation
identityMatrixHGeometry.Matrix.Class, HGeometry.Matrix
ifolding1HGeometry.Lens.Util
Image 
1 (Type/Class)Ipe.Content, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Content, Ipe.Types, Ipe
ImageAttributesIpe.Attributes, Ipe
imageDataIpe.Content, Ipe.Types, Ipe
impliesHGeometry.Kernel.Instances
incidentEdgesOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
incidentFaceOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Index 
1 (Type/Class)HGeometry.Algorithms.BinarySearch
2 (Type/Class)HGeometry.Indexed
indicesHGeometry.Permutation
InHalfLineHGeometry.HalfPlane.CommonIntersection
inIntervalHGeometry.Interval.Class, HGeometry.Interval
inPolygonHGeometry.Polygon.Simple
InSegmentHGeometry.HalfPlane.CommonIntersection
insert 
1 (Function)HGeometry.IntervalTree
2 (Function)HGeometry.SegmentTree.Base, HGeometry.SegmentTree
3 (Function)HGeometry.Algorithms.LogarithmicMethod
insertBreakPointsHGeometry.Sequence.Alternating
insertByHGeometry.Set.Util
insertIntoCyclicOrderHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
InsertionOnly 
1 (Type/Class)HGeometry.Algorithms.LogarithmicMethod
2 (Data Constructor)HGeometry.Algorithms.LogarithmicMethod
insertMeasureHGeometry.Measured.Class, HGeometry.Measured
insertOrdHGeometry.CircularList.Util
insertOrdByHGeometry.CircularList.Util
insertOrdBy'HGeometry.CircularList.Util
Inside 
1 (Data Constructor)HGeometry.Polygon.Triangulation
2 (Data Constructor)HGeometry.Boundary
inSimplePolygonHGeometry.Polygon.Simple
InSubLineHGeometry.HalfPlane.CommonIntersection
InterCardinalDirectionHGeometry.Direction
interCardinalsOfHGeometry.Direction
interceptHGeometry, HGeometry.Line.NonVertical.Class, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
InteriorHGeometry.Interval.Class, HGeometry.Interval
interiorFacePolygonAtHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
interiorFacePolygonsHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
interiorFacesHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
interiorIntersectionsHGeometry.LineSegment.Intersection.BentleyOttmann
interiorToHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
InternalHGeometry.Tree.Binary.Static
InternalCanvasActionHGeometry.Miso.Svg.Canvas
InternalNodeHGeometry.Tree.Util
interpolateHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
intersectHGeometry.Intersection
IntersectConstraintsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
intersectingHalfPlanesHGeometry.Triangle.Class, HGeometry.Triangle
IntersectionHGeometry.Intersection
intersectionLineHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
IntersectionOfHGeometry.Intersection, HGeometry.Ball.CenterAndRadius, HGeometry.Ball
IntersectionPointHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
intersectionPoint 
1 (Function)HGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
2 (Function)HGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
intersectionPointOfHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
intersectionPointsHGeometry.LineSegment.Intersection.BentleyOttmann
IntersectionsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
intersections 
1 (Function)HGeometry.LineSegment.Intersection.Naive
2 (Function)HGeometry.LineSegment.Intersection.BentleyOttmann
intersectionVectorHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
intersectsHGeometry.Intersection
Interval 
1 (Type/Class)HGeometry.Interval
2 (Data Constructor)HGeometry.Interval
IntervalLike_HGeometry.Interval.Class, HGeometry.Interval
IntervalTreeHGeometry.IntervalTree
Interval_ 
1 (Type/Class)HGeometry.Interval.Class, HGeometry.Interval
2 (Data Constructor)HGeometry.Interval.Class, HGeometry.Interval
Interval_x_IntervalIntersectionHGeometry.Interval
Interval_x_Interval_ContainedHGeometry.Interval
Interval_x_Interval_PartialHGeometry.Interval
Interval_x_Interval_PointHGeometry.Interval
introOrd1HGeometry.Ord.Dynamic
introOrd2HGeometry.Ord.Dynamic
inverseMatrixHGeometry.Matrix.Class, HGeometry.Matrix
inverseOfHGeometry.Transformation
InvertibleHGeometry.Matrix.Class, HGeometry.Matrix
iOIpe.IpeOut, Ipe
iO'Ipe.IpeOut, Ipe
iO''Ipe.IpeOut, Ipe
IpeArrow 
1 (Type/Class)Ipe.Attributes, Ipe
2 (Data Constructor)Ipe.Attributes, Ipe
IpeAttributesIpe.Content, Ipe.Types, Ipe
IpeAttrNameIpe.Attributes, Ipe
ipeBezierIpe.IpeOut, Ipe
IpeBitmapIpe.Types, Ipe
ipeCircleIpe.IpeOut, Ipe
IpeColor 
1 (Type/Class)Ipe.Color, Ipe
2 (Data Constructor)Ipe.Color, Ipe
IpeDashIpe.Attributes, Ipe
ipeDiskIpe.IpeOut, Ipe
ipeDiskMarkIpe.IpeOut, Ipe
ipeEllipseIpe.IpeOut, Ipe
IpeFile 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
ipeFileIpe.Types, Ipe
IpeGradientIpe.Attributes, Ipe
IpeGroupIpe.Content, Ipe.Types, Ipe
ipeGroupIpe.IpeOut, Ipe
ipeHalfLineIpe.IpeOut, Ipe
ipeHalfLineInIpe.IpeOut, Ipe
IpeImageIpe.Content, Ipe.Types, Ipe
ipeLabelIpe.IpeOut, Ipe
ipeLineIpe.IpeOut, Ipe
ipeLineInIpe.IpeOut, Ipe
ipeLineSegmentIpe.IpeOut, Ipe
ipeMarkIpe.IpeOut, Ipe
IpeMiniPageIpe.Content, Ipe.Types, Ipe
IpeObjectIpe.Content, Ipe.Types, Ipe
IpeObject'Ipe.Content, Ipe.Types, Ipe
ipeObject'Ipe.Content, Ipe.Types, Ipe
IpeOpacityIpe.Attributes, Ipe
IpeOutIpe.IpeOut, Ipe
IpeOut'Ipe.IpeOut, Ipe
IpePage 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
IpePathIpe.Content, Ipe.Types, Ipe
IpePen 
1 (Type/Class)Ipe.Attributes, Ipe
2 (Data Constructor)Ipe.Attributes, Ipe
ipePolygonIpe.IpeOut, Ipe
ipePolyLineIpe.IpeOut, Ipe
IpePreamble 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
ipeRayIpe.IpeOut, Ipe
IpeReadIpe.Reader, Ipe
ipeReadIpe.Reader, Ipe
IpeReadAttrIpe.Reader
ipeReadAttrIpe.Reader
ipeReadAttrsIpe.Reader
ipeReadObjectIpe.Reader
ipeReadRecIpe.Reader
IpeReadTextIpe.Reader
ipeReadTextIpe.Reader
ipeReadTextWithIpe.Reader
ipeRectangleIpe.IpeOut, Ipe
ipeRenderIpe.IpeRender
ipeRenderWithIpe.IpeRender
ipeSimplePolygonIpe.IpeOut, Ipe
IpeSize 
1 (Type/Class)Ipe.Attributes, Ipe
2 (Data Constructor)Ipe.Attributes, Ipe
IpeStyle 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
IpeSymbolIpe.Content, Ipe.Types, Ipe
IpeTextLabelIpe.Content, Ipe.Types, Ipe
IpeTilingIpe.Attributes, Ipe
ipeToIpeIpe.IpeToIpe
ipeToIpeWithIpe.IpeToIpe
IpeUseIpe.Content, Ipe.Types, Ipe
IpeValueIpe.Value, Ipe
IpeWriteIpe.Writer, Ipe
ipeWriteIpe.Writer, Ipe
ipeWriteAttrsIpe.Writer
IpeWriteTextIpe.Writer, Ipe
ipeWriteTextIpe.Writer, Ipe
IsBoxableHGeometry, HGeometry.Box, HGeometry.Kernel
isCoLinearHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
isConvexHGeometry.Polygon.Convex
IsEndPointHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
isIdenticalToHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
isInteriorIntersectionHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
IsIntersectableWithHGeometry.Intersection
isMonotoneHGeometry.Polygon.Monotone
isParallelToHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
isPerpendicularToHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
isScalarMultipleOfHGeometry, HGeometry.Kernel, HGeometry.Vector
isShiftOf 
1 (Function)HGeometry.CircularList.Util
2 (Function)HGeometry.Cyclic
isStrictlyConvexHGeometry.Polygon.Convex
isSubStringOfHGeometry.StringSearch.KMP
IsTransformableHGeometry.Transformation
isValidIntervalHGeometry.Kernel.Instances
itoNonEmptyOfHGeometry.Lens.Util
ixAttrIpe.Attributes, Ipe
joinHGeometry.Set.Util
kmpMatchHGeometry.StringSearch.KMP
LabelIpe.Content, Ipe.Types, Ipe
labelledIpe.IpeOut, Ipe
labelledWithIpe.IpeOut, Ipe
labelWithHGeometry.Indexed
labelWith'HGeometry.Indexed
labelWithIndexHGeometry.Indexed
lastHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
lastFalseHGeometry.Algorithms.BinarySearch
LayerIpe.Attributes, Ipe
LayerName 
1 (Type/Class)Ipe.Layer, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Layer, Ipe.Types, Ipe
layerNameIpe.Layer, Ipe.Types, Ipe
layerNamesIpe.Types, Ipe
layersIpe.Types, Ipe
LayerSym0Ipe.Attributes, Ipe
LeafHGeometry.Tree.Binary.Static
LeafNodeHGeometry.Tree.Util
leaveOutOneHGeometry.List.Util
LeftButtonHGeometry.Miso.Event.Extra
leftFaceOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
leftHalfPlaneHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
LeftSideHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
leftSideHGeometry, HGeometry.Box, HGeometry.Kernel
leftTangentHGeometry.Polygon.Convex.Tangents
lerpHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
levelsHGeometry.Tree.Util
liesAboveHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
liesBelowHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
liftI2HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
liftI2AHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
liftOrd1HGeometry.Ord.Dynamic
liftPointToPlaneHGeometry.Duality
liftU2HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
lightblueIpe.Color
lightcyanIpe.Color
lightgrayIpe.Color
lightgreenIpe.Color
lightyellowIpe.Color
Line2_HGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
lineAtHGeometry.Line.LowerEnvelope
LineBoxIntersectionHGeometry, HGeometry.Box, HGeometry.Kernel
LineCapIpe.Attributes, Ipe
LineCapSym0Ipe.Attributes, Ipe
LineEQ 
1 (Type/Class)HGeometry, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
LineHalfLineIntersectionHGeometry.HalfLine
LineJoinIpe.Attributes, Ipe
LineJoinSym0Ipe.Attributes, Ipe
LineLineIntersectionHGeometry, HGeometry.Line, HGeometry.Kernel
LineLineIntersectionGHGeometry, HGeometry.Line, HGeometry.Kernel
LineLineSegmentIntersectionHGeometry, HGeometry.LineSegment, HGeometry.Kernel
LinePV 
1 (Type/Class)HGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
LineSegment 
1 (Type/Class)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
LineSegmentLineSegmentIntersectionHGeometry, HGeometry.LineSegment, HGeometry.Kernel
LineSegment_ 
1 (Data Constructor)HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
2 (Type/Class)HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
LineSegment_x_LineSegment_LineSegmentHGeometry, HGeometry.LineSegment, HGeometry.Kernel
LineSegment_x_LineSegment_PointHGeometry, HGeometry.LineSegment, HGeometry.Kernel
lineThroughHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
LineToIpe.Path
Line_HGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
Line_x_Ball_PointHGeometry.Ball.CenterAndRadius, HGeometry.Ball
Line_x_Ball_SegmentHGeometry.Ball.CenterAndRadius, HGeometry.Ball
Line_x_Box_LineSegmentHGeometry, HGeometry.Box, HGeometry.Kernel
Line_x_Box_PointHGeometry, HGeometry.Box, HGeometry.Kernel
Line_x_HalfLine_HalfLineHGeometry.HalfLine
Line_x_HalfLine_PointHGeometry.HalfLine
Line_x_LineSegment_LineSegmentHGeometry, HGeometry.LineSegment, HGeometry.Kernel
Line_x_LineSegment_PointHGeometry, HGeometry.LineSegment, HGeometry.Kernel
Line_x_Line_LineHGeometry, HGeometry.Line, HGeometry.Kernel
Line_x_Line_PointHGeometry, HGeometry.Line, HGeometry.Kernel
listIntervalsHGeometry.IntervalTree
litIpe.Literal
literallyIpe.Literal
litFileIpe.Literal
LogarithmicMethodDSHGeometry.Algorithms.LogarithmicMethod
lookupAboveHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
lookupAboveOrOnHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
lookupAttrIpe.Attributes, Ipe
lookupIdxHGeometry.Permutation
lookupLEVertexHGeometry.Line.LowerEnvelope
LossyHGeometry.Number.Real.Rational
LowerEnvelope 
1 (Type/Class)HGeometry.Plane.LowerEnvelope
2 (Type/Class)HGeometry.Line.LowerEnvelope
3 (Data Constructor)HGeometry.Line.LowerEnvelope
lowerEnvelope 
1 (Function)HGeometry.Line.LowerEnvelope
2 (Function)HGeometry.Plane.LowerEnvelope.Naive, HGeometry.Plane.LowerEnvelope
LowerEnvelopeFHGeometry.Line.LowerEnvelope
lowerEnvelopeWithHGeometry.Plane.LowerEnvelope.Naive, HGeometry.Plane.LowerEnvelope
lowerHull 
1 (Function)HGeometry.ConvexHull.JarvisMarch
2 (Function)HGeometry.ConvexHull.GrahamScan
3 (Function)HGeometry.ConvexHull.DivideAndConquer
lowerHull' 
1 (Function)HGeometry.ConvexHull.JarvisMarch
2 (Function)HGeometry.ConvexHull.GrahamScan
lowerTangentHGeometry.Polygon.Convex.Tangents
lowerTangent'HGeometry.Polygon.Convex.Tangents
makeMonotoneHGeometry.Polygon.Triangulation.MakeMonotone
mapFHGeometry.Sequence.Alternating
MarkedViewIpe.IpeToIpe
markedViewIpe.IpeToIpe
Matrix 
1 (Data Constructor)Ipe.Attributes, Ipe
2 (Type/Class)HGeometry.Matrix
3 (Data Constructor)HGeometry.Matrix
matrixFromListHGeometry.Matrix.Class, HGeometry.Matrix
matrixFromRowsHGeometry.Matrix.Class, HGeometry.Matrix
MatrixSym0Ipe.Attributes, Ipe
matrixToMisoStringHGeometry.Miso.Svg.StaticCanvas
Matrix_HGeometry.Matrix.Class, HGeometry.Matrix
maximumMaybeHGeometry.List.Util
maximumVertexByHGeometry.Polygon.Class, HGeometry.Polygon
maxInDirectionHGeometry.Polygon.Convex
MaxInfinityHGeometry.Unbounded
maxPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
measureHGeometry.Measured.Class, HGeometry.Measured
MeasuredHGeometry.Measured.Class, HGeometry.Measured
MergeHGeometry.Polygon.Triangulation.MakeMonotone
mergeHGeometry.Algorithms.LogarithmicMethod
mergeAlternatingHGeometry.Sequence.Alternating
mergeDefinersHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
mergePairsHGeometry.ClosestPair.DivideAndConquer
mergeSortedHGeometry.Algorithms.DivideAndConquer
mergeSortedByHGeometry.Algorithms.DivideAndConquer
mergeSortedListsHGeometry.Algorithms.DivideAndConquer
mergeSortedListsByHGeometry.Algorithms.DivideAndConquer
Metric_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
MiddleButtonHGeometry.Miso.Event.Extra
minimaByHGeometry.List.Util
minimaOnHGeometry.List.Util
MinimizationDiagram 
1 (Type/Class)HGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
2 (Data Constructor)HGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
minimumMaybeHGeometry.List.Util
minimumMaybeByHGeometry.List.Util
minimumVertexByHGeometry.Polygon.Class, HGeometry.Polygon
MinInfinityHGeometry.Unbounded
MiniPage 
1 (Type/Class)Ipe.Content, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Content, Ipe.Types, Ipe
MiniPageAttributesIpe.Attributes, Ipe
minkowskiSumHGeometry.Polygon.Convex
minPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
mkClosedIntervalHGeometry.Interval.Class, HGeometry.Interval
mkEndPointHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
mkEpsFoldHGeometry.Number.Real.Symbolic
MkHyperPlaneConstraintsHGeometry.HyperPlane
mkIntervalHGeometry.Interval.Class, HGeometry.Interval
mkIpeObjectIpe.Content, Ipe.Types, Ipe
MkLineEQHGeometry, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
mkLineSegmentHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
mkOpenIntervalHGeometry.Interval.Class, HGeometry.Interval
MkReportHGeometry.Measured.Report
MkSimplePolygonHGeometry.Polygon.Simple
MkSphereHGeometry.Ball.CenterAndRadius, HGeometry.Ball
mkTriangleHGeometry.Triangle.Class, HGeometry.Triangle
MkVector1HGeometry, HGeometry.Kernel, HGeometry.Vector
MkVector2HGeometry, HGeometry.Kernel, HGeometry.Vector
MkVector3HGeometry, HGeometry.Kernel, HGeometry.Vector
MkVector4HGeometry, HGeometry.Kernel, HGeometry.Vector
mkViewportHGeometry.Viewport
monotoneDirectionHGeometry.Polygon.Monotone
MonotonePolygonHGeometry.Polygon.Monotone
MonotonePolygonFHGeometry.Polygon.Monotone
mouseCoordinatesHGeometry.Miso.Svg.Canvas
mousePositionHGeometry.Miso.Svg.Canvas
MoveToIpe.Path
NamedIpe.Value, Ipe
namedIpe.Color, Ipe
NatHGeometry.Number.Real.Rational
navyIpe.Color
nearDistHGeometry.Graphics.Camera
negatedHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
NegativeHGeometry.HalfSpace, HGeometry.Sign
neighboursOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
nextHGeometry.Permutation
nextDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
nextSiblingHGeometry.Tree.Util
NilHGeometry.Tree.Binary.Static
NoIpe.Attributes, Ipe
NoAttrIpe.Attributes, Ipe
NoCropIpe.IpeRender
NodeHGeometry.Tree.Binary.Static
nodeHGeometry.Tree.Binary.Static
nonEmptyTailsHGeometry.Combinatorial.Util
NonVerticalHGeometry.Line.General
NonVerticalHyperPlane 
1 (Type/Class)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
2 (Data Constructor)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
NonVerticalHyperPlane_HGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
normHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
normalArrowIpe.Attributes, Ipe
normalVectorHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
NorthHGeometry.Direction
northHGeometry, HGeometry.Box, HGeometry.Kernel
NorthEastHGeometry.Direction
northEastHGeometry, HGeometry.Box, HGeometry.Kernel
NorthWestHGeometry.Direction
northWestHGeometry, HGeometry.Box, HGeometry.Kernel
NotColouredPLY.Writer
NoZip 
1 (Type/Class)Ipe.IpeToIpe
2 (Data Constructor)Ipe.IpeToIpe
nozipIpe.IpeToIpe
numDartsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
numEdgesHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
numeratorHGeometry.Number.Ratio.Generalized
numFacesHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
NumTypeHGeometry.Properties
numVerticesHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
NVLine2_ 
1 (Data Constructor)HGeometry, HGeometry.Line.NonVertical.Class, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
2 (Type/Class)HGeometry, HGeometry.Line.NonVertical.Class, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
O 
1 (Type/Class)HGeometry.Ord.Dynamic
2 (Data Constructor)HGeometry.Ord.Dynamic
OnHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
OnBoundaryHGeometry.Boundary
OnBoundaryEdgeHGeometry.Boundary
onClickWithButtonHGeometry.Miso.Event.Extra
onContextMenuHGeometry.Miso.Event.Extra
OnEndHGeometry.Interval.Class, HGeometry.Interval
onHyperPlaneHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
onLayerIpe.Types, Ipe
OnLineHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
onLineHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
OnlyMarkedViewsIpe.IpeToIpe
onMouseClickAtHGeometry.Miso.Subscription.MouseExtra
onMouseEnterAtHGeometry.Miso.Subscription.MouseExtra
onMouseMoveAtHGeometry.Miso.Subscription.MouseExtra
onRightClickHGeometry.Miso.Event.Extra
onSegmentHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
onSideHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
onSideTestHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
onSideUpDownHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
OnSideUpDownTestHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
OnStartHGeometry.Interval.Class, HGeometry.Interval
onTouchEnd 
1 (Function)HGeometry.Miso.Event.Extra
2 (Function)HGeometry.Miso.Subscription.MouseExtra
onTouchMoveHGeometry.Miso.Event.Extra
onTouchMoveAtHGeometry.Miso.Subscription.MouseExtra
onTouchStartHGeometry.Miso.Event.Extra
onTouchStartAtHGeometry.Miso.Subscription.MouseExtra
onWheelHGeometry.Miso.Event.Extra
opacitiesStyleIpe.Types, Ipe
OpacityIpe.Attributes, Ipe
OpacitySym0Ipe.Attributes, Ipe
OpaqueBackgroundIpe.IpeRender
OpenHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
OpenEHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
OpenInterval 
1 (Type/Class)HGeometry.Interval
2 (Data Constructor)HGeometry.Interval
OpenInterval_ 
1 (Type/Class)HGeometry.Interval.Class, HGeometry.Interval
2 (Data Constructor)HGeometry.Interval.Class, HGeometry.Interval
OpenLineSegment 
1 (Data Constructor)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
2 (Type/Class)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
OpenLineSegment_HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
OperationIpe.Path
oppositeDirectionHGeometry.Direction
Options 
1 (Type/Class)Ipe.IpeRender
2 (Data Constructor)Ipe.IpeRender
3 (Type/Class)Ipe.IpeToIpe
4 (Data Constructor)Ipe.IpeToIpe
OptMatrix_HGeometry.Matrix, HGeometry.Transformation
orangeIpe.Color
OrbitHGeometry.Permutation
orbitFromHGeometry.Permutation
orbitsHGeometry.Permutation
OrdAroundsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
ordAtXHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
ordAtYHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
OrdDict 
1 (Type/Class)HGeometry.Ord.Dynamic
2 (Data Constructor)HGeometry.Ord.Dynamic
OrientationIpe.Path
orientBTHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
orientLRHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
originHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Original 
1 (Data Constructor)HGeometry.Polygon.Triangulation
2 (Data Constructor)HGeometry.Point.Either
OriginalOrExtraHGeometry.Point.Either
outerBoundaryHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryEdgeAtHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryEdgesHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryEdgeSegmentAtHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryEdgeSegmentsHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryPolygonHGeometry.Polygon.WithHoles
outerBoundaryVertexAtHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryWithNeighboursHGeometry.Polygon.Class, HGeometry.Polygon
outerFaceHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
outerFaceDartHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
outerFaceIdHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
outgoingDartsOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
outNeighboursOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Outside 
1 (Data Constructor)HGeometry.Polygon.Triangulation
2 (Data Constructor)HGeometry.Boundary
PageNumberIpe.IpeToIpe
pageNumberIpe.IpeRender
PageRange 
1 (Type/Class)Ipe.IpeToIpe
2 (Data Constructor)Ipe.IpeToIpe
pages 
1 (Function)Ipe.Types, Ipe
2 (Function)Ipe.IpeToIpe
ParallelStripsHGeometry.Plane.LowerEnvelope
partition3HGeometry.List.Util
partitionIntoQuadrantsHGeometry, HGeometry.Kernel, HGeometry.Point
Path 
1 (Type/Class)Ipe.Path, Ipe.Content, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Path, Ipe.Content, Ipe.Types, Ipe
pathIpe.IpeOut, Ipe
PathAttributesIpe.Attributes, Ipe
PathSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
pathSegmentIpe.IpeOut, Ipe
pathSegmentsIpe.Path, Ipe.Content, Ipe.Types, Ipe
pCoordinateIpe.PathParser
PDF 
1 (Data Constructor)Ipe.IpeRender
2 (Data Constructor)Ipe.IpeToIpe
PenIpe.Attributes, Ipe
PenSym0Ipe.Attributes, Ipe
Permutation 
1 (Type/Class)HGeometry.Permutation
2 (Data Constructor)HGeometry.Permutation
perpendicularToHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
perspectiveProjectionHGeometry.Graphics.Camera
perturbHGeometry.Number.Real.Symbolic
PinIpe.Attributes, Ipe
pinkIpe.Color
PinSym0Ipe.Attributes, Ipe
PinTypeIpe.Attributes, Ipe
PlanarGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Plane 
1 (Type/Class)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
2 (Data Constructor)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
PlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
PlaneGraph_HGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Plane_ 
1 (Type/Class)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
2 (Data Constructor)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
PNGIpe.IpeRender
Point 
1 (Type/Class)HGeometry, HGeometry.Kernel, HGeometry.Point
2 (Data Constructor)HGeometry, HGeometry.Kernel, HGeometry.Point.PointF, HGeometry.Point
Point1HGeometry, HGeometry.Kernel, HGeometry.Point
Point1_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Point2HGeometry, HGeometry.Kernel, HGeometry.Point
Point2_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Point3HGeometry, HGeometry.Kernel, HGeometry.Point
Point3_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Point4HGeometry, HGeometry.Kernel, HGeometry.Point
Point4_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
pointClosestToHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
pointClosestToWithDistanceHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
PointFHGeometry, HGeometry.Kernel, HGeometry.Point.PointF, HGeometry.Point
pointFromListHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
pointLocateParallelHGeometry.Plane.LowerEnvelope
PointLocationResultHGeometry.Boundary
PointLocationResultWithHGeometry.Boundary
pointOnHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
pointToPlaneHGeometry.VoronoiDiagram.ViaLowerEnvelope
Point_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
PolygonalDomain 
1 (Type/Class)HGeometry.Polygon.WithHoles
2 (Data Constructor)HGeometry.Polygon.WithHoles
PolygonalDomainFHGeometry.Polygon.WithHoles
PolygonEdgeTypeHGeometry.Polygon.Triangulation
PolygonFaceDataHGeometry.Polygon.Triangulation
PolygonPathIpe.Path, Ipe.Content, Ipe.Types, Ipe
Polygon_HGeometry.Polygon.Class, HGeometry.Polygon
PolyLine 
1 (Type/Class)HGeometry.PolyLine
2 (Data Constructor)HGeometry.PolyLine
PolyLineFHGeometry.PolyLine
polyLineFromPointsHGeometry.PolyLine.Class, HGeometry.PolyLine
PolyLineSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
PolyLine_HGeometry.PolyLine.Class, HGeometry.PolyLine
pOperationIpe.PathParser
PositiveHGeometry.HalfSpace, HGeometry.Sign
pPointIpe.PathParser
preambleIpe.Types, Ipe
preambleDataIpe.Types, Ipe
prefixHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
prevDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
previousHGeometry.Permutation
prevSiblingHGeometry.Tree.Util
printAsIpeSelectionIpe.Writer, Ipe
printYAMLHGeometry.YAML
projectPointHGeometry, HGeometry.Kernel, HGeometry.Point
pureAttrIpe.Attributes, Ipe
purpleIpe.Color
QCurveToIpe.Path
qdHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
quadranceHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
QuadrantHGeometry, HGeometry.Kernel, HGeometry.Point
quadrantHGeometry, HGeometry.Kernel, HGeometry.Point
quadrantWithHGeometry, HGeometry.Kernel, HGeometry.Point
QuadraticBezierHGeometry.BezierSpline
QuadraticBezierSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
query 
1 (Function)HGeometry.SegmentTree.Base, HGeometry.SegmentTree
2 (Function)HGeometry.RangeTree.Base, HGeometry.RangeTree
queryByHGeometry.Set.Util
queryWithHGeometry.Algorithms.LogarithmicMethod
QuickCheckWorldHGeometry.PlaneGraph.Instances
RadicalHGeometry.Number.Radical
radiusHGeometry.Ball.Class, HGeometry.Ball
randomConvexHGeometry.Polygon.Convex.Random
randomMonotoneHGeometry.Polygon.Monotone
randomMonotoneDirectedHGeometry.Polygon.Monotone
randomNonZeroVectorHGeometry.Polygon.Monotone
rangeHGeometry.Viewport
rangeQueryHGeometry.RangeTree.Base, HGeometry.RangeTree
RangeTreeHGeometry.RangeTree.Base, HGeometry.RangeTree
RArrowIpe.Attributes, Ipe
RArrowSym0Ipe.Attributes, Ipe
rawCameraNormalHGeometry.Graphics.Camera
rawViewUpHGeometry.Graphics.Camera
readAllIpe.FromIpe, Ipe
readAllDeepIpe.FromIpe, Ipe
readAllFromIpe.FromIpe, Ipe
readCoordinateIpe.PathParser
readIpeFileIpe.Reader, Ipe
readIpeStylesheetIpe.Reader, Ipe
readMatrixIpe.PathParser
readPathOperationsIpe.PathParser
readPointIpe.PathParser
readRawIpeFileIpe.Reader, Ipe
readRectangleIpe.PathParser
readSinglePageFileIpe.Reader, Ipe
readSinglePageFileThrowIpe.Reader, Ipe
readXMLIpe.Reader
RealNumber 
1 (Type/Class)HGeometry.Number.Real.Rational
2 (Data Constructor)HGeometry.Number.Real.Rational
rectIpe.Content, Ipe.Types, Ipe
Rectangle 
1 (Data Constructor)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Type/Class)HGeometry, HGeometry.Box, HGeometry.Kernel
Rectangle_HGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
redIpe.Color
reflectionHGeometry.Transformation
reflectionHHGeometry.Transformation
reflectionVHGeometry.Transformation
RegionHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
RegularHGeometry.Polygon.Triangulation.MakeMonotone
renderAsSvgByteStringHGeometry.Miso.Svg, HGeometry.Svg
renderAsSvgTextHGeometry.Miso.Svg, HGeometry.Svg
renderOutputPLY.Writer
renderOutputToFilePLY.Writer
renderSvgToFileHGeometry.Miso.Svg, HGeometry.Svg
Report 
1 (Type/Class)HGeometry.Measured.Report
2 (Data Constructor)HGeometry.Measured.Report
Report1 
1 (Type/Class)HGeometry.Measured.Report
2 (Data Constructor)HGeometry.Measured.Report
ReportList 
1 (Type/Class)HGeometry.Measured.Report
2 (Data Constructor)HGeometry.Measured.Report
resolutionIpe.IpeRender
RestGeoPositionHGeometry.GeoJSON
RetainIpeInfoIpe.IpeToIpe
reverseHGeometry.Sequence.Alternating
ReversedIpe.Path
RightButtonHGeometry.Miso.Event.Extra
rightFaceOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
rightHalfPlaneHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
RightSideHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
rightSideHGeometry, HGeometry.Box, HGeometry.Kernel
rightTangentHGeometry.Polygon.Convex.Tangents
RigidIpe.Attributes, Ipe
rootHGeometry.Tree.Util
rotateCoordSystemHGeometry.Graphics.Camera
rotateToHGeometry.Transformation
rotationHGeometry.Transformation
roundToConstantHGeometry.Number.Real.Symbolic
rowHGeometry.Matrix.Class, HGeometry.Matrix
rowsHGeometry.Matrix.Class, HGeometry.Matrix
runLatexIpe.IpeToIpe
runOHGeometry.Ord.Dynamic
runParserIpe.PathParser
sameDirectionHGeometry, HGeometry.Kernel, HGeometry.Vector
samplePointHGeometry.Polygon.Simple.Sample
samplePolygonHGeometry.Polygon.Simple.Sample
samplePolygonsHGeometry.Polygon.Simple.Sample
SamplerHGeometry.Polygon.Simple.Sample
SArrowIpe.Attributes, Ipe
SAttributeUniverseIpe.Attributes, Ipe
scalarMultipleHGeometry, HGeometry.Kernel, HGeometry.Vector
scaleByHGeometry.Transformation
scaleUniformlyByHGeometry.Transformation
scalingHGeometry.Transformation
SClipIpe.Attributes, Ipe
screenDimensionsHGeometry.Graphics.Camera
SDashIpe.Attributes, Ipe
SDepthIpe.Attributes, Ipe
seagreenIpe.Color
searchHGeometry.IntervalTree
searchInSlabHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
segmentAboveHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
segmentAboveOrOnHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
SegmentTreeHGeometry.SegmentTree.Base, HGeometry.SegmentTree
separatorsHGeometry.Sequence.Alternating
setAttrIpe.Attributes, Ipe
SFillIpe.Attributes, Ipe
SFillRuleIpe.Attributes, Ipe
SGradientIpe.Attributes, Ipe
SHAlignIpe.Attributes, Ipe
SHeightIpe.Attributes, Ipe
ShiftedEqHGeometry.Cyclic
shiftLeftHGeometry.Interval.Class, HGeometry.Interval
shiftRightHGeometry.Interval.Class, HGeometry.Interval
shrinkPolygonHGeometry.Polygon.Instances
sideDirectionsHGeometry, HGeometry.Box, HGeometry.Kernel
Sides 
1 (Type/Class)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Box, HGeometry.Kernel
sidesHGeometry, HGeometry.Box, HGeometry.Kernel
sides'HGeometry, HGeometry.Box, HGeometry.Kernel
SideTestHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
SideTestUpDownHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
sideValuesHGeometry, HGeometry.Box, HGeometry.Kernel
SignHGeometry.HalfSpace, HGeometry.Sign
signedArea2XHGeometry.Polygon.Class, HGeometry.Polygon
signFromTermsHGeometry.Sign
signOfHGeometry.Number.Real.Symbolic
signormHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
SimplePolygonHGeometry.Polygon.Simple
SimplePolygonFHGeometry.Polygon.Simple
SimplePolygon_HGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple
simplifyHGeometry.PolyLine.Simplification.ImaiIri
simplifyWithHGeometry.PolyLine.Simplification.ImaiIri
singlePageFileIpe.Types, Ipe
singlePageFromContentIpe.Types, Ipe
singletonHGeometry.Algorithms.LogarithmicMethod
SingletonPointHGeometry.HalfPlane.CommonIntersection
singleViewIpe.IpeToIpe
SizeIpe.Attributes, Ipe
size 
1 (Function)HGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
2 (Function)HGeometry.Permutation
Sized 
1 (Type/Class)HGeometry.Measured.Size
2 (Data Constructor)HGeometry.Measured.Size
SizeSym0Ipe.Attributes, Ipe
skewXHGeometry.Transformation
SlabHGeometry.HalfPlane.CommonIntersection
SLayerIpe.Attributes, Ipe
SLineCapIpe.Attributes, Ipe
SLineJoinIpe.Attributes, Ipe
slopeHGeometry, HGeometry.Line.NonVertical.Class, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
SMatrixIpe.Attributes, Ipe
snocHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
snocElemWithHGeometry.Sequence.Alternating
SOpacityIpe.Attributes, Ipe
sortHGeometry.Foldable.Sort
sortAroundHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
sortByHGeometry.Foldable.Sort
sortOnCheapHGeometry.Foldable.Sort
sosIndexHGeometry.Indexed
SoSRationalHGeometry.Number.Real.Symbolic
sosRationalHGeometry.Number.Real.Symbolic
SouthHGeometry.Direction
southHGeometry, HGeometry.Box, HGeometry.Kernel
SouthEastHGeometry.Direction
southEastHGeometry, HGeometry.Box, HGeometry.Kernel
SouthWestHGeometry.Direction
southWestHGeometry, HGeometry.Box, HGeometry.Kernel
SP 
1 (Type/Class)HGeometry.Combinatorial.Util
2 (Data Constructor)HGeometry.Combinatorial.Util
spanInHGeometry, HGeometry.LineSegment, HGeometry.Kernel
SPenIpe.Attributes, Ipe
Sphere 
1 (Type/Class)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
SPinIpe.Attributes, Ipe
SplineIpe.Path
SplineSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
SplitHGeometry.Polygon.Triangulation.MakeMonotone
splitByHGeometry.Set.Util
splitIncrHGeometry.CircularList.Util
splitL1AtHGeometry.Sequence.NonEmpty
splitOnHGeometry.Set.Util
splitR1AtHGeometry.Sequence.NonEmpty
sqrtHGeometry.Number.Radical
squaredEuclideanDistHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
squaredEuclideanDistToHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
squaredRadiusHGeometry.Ball.Class, HGeometry.Ball
SRArrowIpe.Attributes, Ipe
SSizeIpe.Attributes, Ipe
SStrokeIpe.Attributes, Ipe
SStrokeOpacityIpe.Attributes, Ipe
SStyleIpe.Attributes, Ipe
stab 
1 (Function)HGeometry.IntervalTree
2 (Function)HGeometry.SegmentTree.Base, HGeometry.SegmentTree
stabsIntervalHGeometry.Interval.Class, HGeometry.Interval
StartHGeometry.Polygon.Triangulation.MakeMonotone
startHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
startAndEndHGeometry.Interval.Class, HGeometry.Interval
startAndEndPointHGeometry.Interval.Class, HGeometry.Interval
startPointHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
StartPointOfHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
startPointOfHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
StaticCanvasHGeometry.Miso.Svg.StaticCanvas
staticCanvasHGeometry.Miso.Svg.StaticCanvas
staticCanvas_HGeometry.Miso.Svg.StaticCanvas
StatusStructureHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
steepestCcwFromHGeometry.ConvexHull.JarvisMarch
steepestCwFromHGeometry.ConvexHull.JarvisMarch
STilingIpe.Attributes, Ipe
STR 
1 (Type/Class)HGeometry.Combinatorial.Util
2 (Data Constructor)HGeometry.Combinatorial.Util
STransformationsIpe.Attributes, Ipe
StrictlyInsideHGeometry.Boundary
StrictlyOutsideHGeometry.Boundary
StrokeIpe.Attributes, Ipe
StrokeOpacityIpe.Attributes, Ipe
StrokeOpacitySym0Ipe.Attributes, Ipe
StrokeSym0Ipe.Attributes, Ipe
StyleIpe.Attributes, Ipe
styleDataIpe.Types, Ipe
styleNameIpe.Types, Ipe
stylesIpe.Types, Ipe
StyleSym0Ipe.Attributes, Ipe
SubLineHGeometry.HalfPlane.CommonIntersection
suffixHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
suitableBaseHGeometry.Number.Real.Symbolic
sumVHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
supportingLineHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
SVAlignIpe.Attributes, Ipe
SVGIpe.IpeRender
svgCanvas_HGeometry.Miso.Svg.Canvas
SWidthIpe.Attributes, Ipe
SymbolIpe.Content, Ipe.Types, Ipe
SymbolAttributesIpe.Attributes, Ipe
SymbolicHGeometry.Number.Real.Symbolic
symbolicHGeometry.Number.Real.Symbolic
symbolNameIpe.Content, Ipe.Types, Ipe
symbolPointIpe.Content, Ipe.Types, Ipe
tailOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
takeAttrIpe.Attributes, Ipe
Term 
1 (Type/Class)HGeometry.Number.Real.Symbolic
2 (Data Constructor)HGeometry.Number.Real.Symbolic
termHGeometry.Number.Real.Symbolic
TeXStyleIpe.Attributes, Ipe
TextAttributesIpe.Attributes, Ipe
TextLabelIpe.Content, Ipe.Types, Ipe
TextLabelAttributesIpe.Attributes, Ipe
TextSizeUnitIpe.Attributes, Ipe
theHolesHGeometry.Polygon.WithHoles
theValueHGeometry.Indexed
theViewportHGeometry.Miso.Svg.Canvas
Three 
1 (Data Constructor)HGeometry.Combinatorial.Util
2 (Type/Class)HGeometry.Combinatorial.Util
TilingIpe.Attributes, Ipe
TilingSym0Ipe.Attributes, Ipe
toBarricentricHGeometry.Triangle.Class, HGeometry.Triangle
toConvexPolygonInHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
toCounterClockwiseTriangleHGeometry.Triangle.Class, HGeometry.Triangle
toCycleRepHGeometry.Permutation
toCyclicHGeometry.Polygon.Simple
toFixedHGeometry.Number.Real.Rational
toggleHGeometry.Set.Util
toggleByHGeometry.Set.Util
toHostFromHGeometry.Viewport
toIpeSelectionXMLIpe.Writer, Ipe
toIpeXMLIpe.Writer, Ipe
toLinearFunctionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
ToObjectIpe.Content, Ipe.Types, Ipe
Top 
1 (Type/Class)HGeometry.Unbounded
2 (Data Constructor)HGeometry.Unbounded
toPlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
TopLeftHGeometry, HGeometry.Kernel, HGeometry.Point
toPolygonPathSegmentIpe.IpeOut, Ipe
TopRightHGeometry, HGeometry.Kernel, HGeometry.Point
topSideHGeometry, HGeometry.Box, HGeometry.Kernel
topToMaybeHGeometry.Unbounded
toRoseTreeHGeometry.Tree.Binary.Static
toRoseTree'HGeometry.Tree.Binary.Static
toSimplePolygon 
1 (Function)HGeometry.Polygon.Monotone
2 (Function)HGeometry.Polygon.Convex
ToSvgCoordinateHGeometry.Miso.Svg.StaticCanvas
toTermsHGeometry.Number.Real.Symbolic
toTriangulatedPlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
toVecHGeometry, HGeometry.Kernel, HGeometry.Point.PointF, HGeometry.Point
toViewPortHGeometry.Graphics.Camera
toWorldInHGeometry.Viewport
Transformation 
1 (Type/Class)HGeometry.Transformation
2 (Data Constructor)HGeometry.Transformation
TransformationConstraintsHGeometry.Transformation
transformationMatrixHGeometry.Transformation
TransformationsIpe.Attributes, Ipe
TransformationsSym0Ipe.Attributes, Ipe
TransformationTypesIpe.Attributes, Ipe
transformByHGeometry.Transformation
translateByHGeometry.Transformation
translationHGeometry.Transformation
TranslationsIpe.Attributes, Ipe
transparentIpe.IpeRender
TransparentBackgroundIpe.IpeRender
traverseAttrIpe.Attributes, Ipe
traverseAttrsIpe.Attributes, Ipe
traverseIpeAttrsIpe.Content, Ipe.Types, Ipe
traverseLeftFromHGeometry.Cyclic
traverseRightFromHGeometry.Cyclic
TreeNodeHGeometry.Tree.Util
Triangle 
1 (Type/Class)HGeometry.Triangle
2 (Data Constructor)HGeometry.Triangle
triangleSamplerHGeometry.Polygon.Simple.Sample
triangleSignedArea2XHGeometry.Triangle.Class, HGeometry.Triangle
Triangle_ 
1 (Type/Class)HGeometry.Triangle.Class, HGeometry.Triangle
2 (Data Constructor)HGeometry.Triangle.Class, HGeometry.Triangle
triangulate 
1 (Function)HGeometry.Polygon.Triangulation.TriangulateMonotone
2 (Function)HGeometry.Polygon.Triangulation
turquoiseIpe.Color
twinDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
twinOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Two 
1 (Data Constructor)HGeometry.Combinatorial.Util
2 (Type/Class)HGeometry.Combinatorial.Util
unAttrsIpe.Attributes, Ipe
UnBoundedHGeometry.Unbounded
UnboundedHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
UnboundedRegionHGeometry.HalfPlane.CommonIntersection
unBoundedToMaybeHGeometry.Unbounded
uncheckedFromCCWPointsHGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple
uncheckedLineSegmentHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
uncheckedMontonePolygonHGeometry.Polygon.Monotone
unconsHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
unconsAltHGeometry.Sequence.Alternating
uniformScalingHGeometry.Transformation
uniquePairsHGeometry.Combinatorial.Util
uniqueTripletsHGeometry.Combinatorial.Util
unitHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
unitBallHGeometry.Ball.Class, HGeometry.Ball
unitEllipseHGeometry.Ellipse
unSetAttrIpe.Attributes, Ipe
unsnocHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
unversionedHGeometry.YAML
unZipperLocalHGeometry.Tree.Util
UpHGeometry.Miso.Event.Extra
upHGeometry.Tree.Util
updateHGeometry.Miso.Canvas.Zoom
UpperHullHGeometry.ConvexHull.R3.Naive.Dual
upperHull 
1 (Function)HGeometry.ConvexHull.JarvisMarch
2 (Function)HGeometry.ConvexHull.GrahamScan
3 (Function)HGeometry.ConvexHull.R3.Naive.Dual
4 (Function)HGeometry.ConvexHull.DivideAndConquer
upperHull' 
1 (Function)HGeometry.ConvexHull.JarvisMarch
2 (Function)HGeometry.ConvexHull.GrahamScan
upperHullFromSortedHGeometry.ConvexHull.GrahamScan
upperHullFromSorted'HGeometry.ConvexHull.GrahamScan
upperTangentHGeometry.Polygon.Convex.Tangents
upperTangent'HGeometry.Polygon.Convex.Tangents
ValHGeometry.Unbounded
ValBHGeometry.Unbounded
VAlignIpe.Attributes, Ipe
VAlignSym0Ipe.Attributes, Ipe
ValTHGeometry.Unbounded
ValuedIpe.Value, Ipe
VectorHGeometry, HGeometry.Kernel, HGeometry.Vector
vectorHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Vector1HGeometry, HGeometry.Kernel, HGeometry.Vector
Vector2HGeometry, HGeometry.Kernel, HGeometry.Vector
Vector3HGeometry, HGeometry.Kernel, HGeometry.Vector
Vector4HGeometry, HGeometry.Kernel, HGeometry.Vector
vectorFromListHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
Vector_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
verifyConvexHGeometry.Polygon.Convex
Versioned 
1 (Type/Class)HGeometry.YAML
2 (Data Constructor)HGeometry.YAML
VertexHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph, HGeometry.Polygon, HGeometry.Polygon
vertexAtHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
VertexAttributes 
1 (Type/Class)PLY.Writer
2 (Data Constructor)PLY.Writer
VertexContainerHGeometry.Polygon.Simple
VertexFormHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
VertexIxHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph, HGeometry.Polygon, HGeometry.Polygon
VertexTypeHGeometry.Polygon.Triangulation.MakeMonotone
VerticalIpe.Attributes, Ipe
VerticalAlignmentIpe.Attributes, Ipe
verticalLineHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
VerticalLineThroughHGeometry.Line.General
VerticalOrLineEQHGeometry.Line.General
VerticalRayShootingStructureHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
verticalRayShootingStructureHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
verticalSideTestHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
verticesHGeometry.PolyLine, HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
View 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
ViewL1HGeometry.Sequence.NonEmpty
viewl1HGeometry.Sequence.NonEmpty
ViewNumberIpe.IpeToIpe
viewNumberIpe.IpeRender
viewPlaneDepthHGeometry.Graphics.Camera
Viewport 
1 (Type/Class)HGeometry.Viewport
2 (Data Constructor)HGeometry.Viewport
viewPortHGeometry.Viewport
ViewR1HGeometry.Sequence.NonEmpty
viewr1HGeometry.Sequence.NonEmpty
viewsIpe.Types, Ipe
viewUpHGeometry.Graphics.Camera
violetIpe.Color
visibilityGraphHGeometry.Polygon.Visibility.Naive
visibilityGraphWithHGeometry.Polygon.Visibility.Naive
VoronoiDiagram 
1 (Type/Class)HGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
2 (Data Constructor)HGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
voronoiDiagramHGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
VoronoiDiagram'HGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
voronoiVerticesHGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
vtxColourPLY.Writer
wComponentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
wCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
WestHGeometry.Direction
westHGeometry, HGeometry.Box, HGeometry.Kernel
WheelDirectionHGeometry.Miso.Event.Extra
whiteIpe.Color
WidthIpe.Attributes, Ipe
width 
1 (Function)HGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
2 (Function)Ipe.Content, Ipe.Types, Ipe
WidthSym0Ipe.Attributes, Ipe
WindIpe.Attributes, Ipe
withAtsHGeometry.Miso.Svg, HGeometry.Svg
withAts'HGeometry.Miso.Svg, HGeometry.Svg
withCanvasEventsHGeometry.Miso.Svg.Canvas
withDefaultsIpe.Types, Ipe
WithIndex 
1 (Type/Class)HGeometry.Indexed
2 (Data Constructor)HGeometry.Indexed
withNeighboursHGeometry.Sequence.Alternating
withOrdHGeometry.Ord.Dynamic
WorldOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
worldToHostHGeometry.Viewport
worldToViewHGeometry.Graphics.Camera
writeAttrNamesIpe.Attributes, Ipe
writeAttrValuesIpe.Writer
writeIpeFileIpe.Writer, Ipe
writeIpeFile'Ipe.Writer, Ipe
writeIpeFileAsPdfIpe.IpeToIpe
writeIpePageIpe.Writer, Ipe
wrtCenterHGeometry.Viewport
xComponentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
xCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
xCoordAtHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
XMLIpe.IpeToIpe
xmlLiteralIpe.Literal
yComponentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
yCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
yCoordAtHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
yellowIpe.Color
YesIpe.Attributes, Ipe
YMonotonePolygon_HGeometry.Polygon.Triangulation.TriangulateMonotone
ZHGeometry.GeoJSON
zComponentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
zCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
zeroHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
ZeroToOne 
1 (Type/Class)HGeometry.Kernel.Test.Box
2 (Data Constructor)HGeometry.Kernel.Test.Box
ZipIpe.IpeToIpe
zipExactWithHGeometry.Tree.Binary.Static
Zipper 
1 (Type/Class)HGeometry.List.Zipper
2 (Data Constructor)HGeometry.List.Zipper
3 (Type/Class)HGeometry.Tree.Util
4 (Data Constructor)HGeometry.Tree.Util
zipRecsWithIpe.Attributes, Ipe
ZMHGeometry.GeoJSON
ZoomAction 
1 (Type/Class)HGeometry.Miso.Canvas.Zoom
2 (Data Constructor)HGeometry.Miso.Canvas.Zoom
ZoomConfig 
1 (Type/Class)HGeometry.Viewport
2 (Data Constructor)HGeometry.Viewport
ZoomDirectionHGeometry.Miso.Canvas.Zoom
ZoomInHGeometry.Miso.Canvas.Zoom
zoomLevelHGeometry.Miso.Canvas.Zoom
ZoomOutHGeometry.Miso.Canvas.Zoom
^*HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
^+^HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
^-^HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
^/HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
_AlternatingHGeometry.Line.LowerEnvelope
_anchorPointHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
_ArcSegmentIpe.Path
_ArcToIpe.Path
_arrowNameIpe.Attributes, Ipe
_arrowSizeIpe.Attributes, Ipe
_asClosedLineSegmentIpe.FromIpe, Ipe
_asConvexPolygonIpe.FromIpe, Ipe
_asLineSegmentIpe.FromIpe, Ipe
_asPointIpe.FromIpe, Ipe
_asPolyLineIpe.FromIpe, Ipe
_asRectangleIpe.FromIpe, Ipe
_asSimplePolygonIpe.FromIpe, Ipe
_asTriangleIpe.FromIpe, Ipe
_AttrIpe.Attributes, Ipe
_BallSphereHGeometry.Ball.CenterAndRadius, HGeometry.Ball
_BottomHGeometry.Unbounded
_BottomMaybeHGeometry.Unbounded
_BoundaryHGeometry.Boundary
_ClosedSplineIpe.Path
_ClosedSplineSegmentIpe.Path
_ClosePathIpe.Path
_ConvexPolygonHGeometry.Polygon.Convex
_coreHGeometry.Ext
_CubicBezierSegmentIpe.Path
_CurveToIpe.Path
_directionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
_DiskCircleHGeometry.Ball.CenterAndRadius, HGeometry.Ball
_EllipseIpe.Path
_EllipseCircleHGeometry.Ellipse
_EllipseSegmentIpe.Path
_endPointHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
_ExtHGeometry.Ext
_extraHGeometry.Ext
_GeoPolygonPolygonalDomainHGeometry.GeoJSON
_GeoPositionWithoutCRSHGeometry.GeoJSON
_getAttrIpe.Attributes, Ipe
_IpeGroupIpe.Content, Ipe.Types, Ipe
_IpeImageIpe.Content, Ipe.Types, Ipe
_IpeMiniPageIpe.Content, Ipe.Types, Ipe
_IpePathIpe.Content, Ipe.Types, Ipe
_IpeTextLabelIpe.Content, Ipe.Types, Ipe
_IpeUseIpe.Content, Ipe.Types, Ipe
_LineToIpe.Path
_MoveToIpe.Path
_PolygonPathIpe.Path
_PolyLineFHGeometry.PolyLine
_PolyLineLineSegmentHGeometry.PolyLine.Class, HGeometry.PolyLine
_PolyLineSegmentIpe.Path
_QCurveToIpe.Path
_QuadraticBezierSegmentIpe.Path
_SplineIpe.Path
_SplineSegmentIpe.Path
_TopHGeometry.Unbounded
_TopMaybeHGeometry.Unbounded
_TreeNodeEitherHGeometry.Tree.Util
_UncheckedConvexPolygonHGeometry.Polygon.Convex
_unUnBoundedHGeometry.Unbounded
_ValHGeometry.Unbounded
_ValBHGeometry.Unbounded
_ValTHGeometry.Unbounded
_VectorHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
_withAttrsIpe.FromIpe, Ipe
|.|HGeometry.Transformation
|>>HGeometry.Sequence.NonEmpty
\ No newline at end of file + (Index)
 

Index

!Ipe.IpeOut, Ipe
!!*HGeometry.Matrix.Class, HGeometry.Matrix
!*HGeometry.Matrix.Class, HGeometry.Matrix
!*!HGeometry.Matrix.Class, HGeometry.Matrix
%HGeometry.Number.Ratio.Generalized
*!!HGeometry.Matrix.Class, HGeometry.Matrix
*^HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
.+^HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
.-.HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
.-^HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
:+ 
1 (Type/Class)HGeometry.Ext
2 (Data Constructor)HGeometry.Ext
:<<HGeometry.Sequence.NonEmpty
:>>HGeometry.Sequence.NonEmpty
:~HGeometry.Ext
<>>HGeometry.Sequence.NonEmpty
AboveHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
accessHGeometry.Tree.Binary.Static
activeLayerIpe.Types, Ipe
Additive_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
addStyleSheetIpe.Types, Ipe
addStyleSheetFromIpe.Reader, Ipe
AffineIpe.Attributes, Ipe
affineTransformationHGeometry.Ellipse
Affine_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
AfterHGeometry.Interval.Class, HGeometry.Interval
AlignBaselineIpe.Attributes, Ipe
AlignBottomIpe.Attributes, Ipe
alignedOriginHGeometry.Viewport
AlignHCenterIpe.Attributes, Ipe
AlignLeftIpe.Attributes, Ipe
AlignRightIpe.Attributes, Ipe
AlignTopIpe.Attributes, Ipe
AlignVCenterIpe.Attributes, Ipe
AllIpe.IpeToIpe
allChildrenHGeometry.Tree.Util
AllColinearHGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
AllFalseHGeometry.Algorithms.BinarySearch
allNextsHGeometry.List.Zipper
allNonEmptyNextsHGeometry.List.Zipper
allPointsHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
allSimplePolygonsHGeometry.Polygon.Instances
allTreesHGeometry.Tree.Util
AllTrueHGeometry.Algorithms.BinarySearch
Alternating 
1 (Type/Class)HGeometry.Sequence.Alternating
2 (Data Constructor)HGeometry.Sequence.Alternating
ancestorsHGeometry.Tree.Util
anchorPointHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
AnClosedEHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
AnEndPoint 
1 (Type/Class)HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
AnOpenEHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
applyHGeometry.Permutation
applyMatricesIpe.Matrix
applyMatricesPageIpe.Matrix
applyMatrixIpe.Matrix
applyMatrix'Ipe.Matrix
arbitraryPlaneGraphHGeometry.PlaneGraph.Instances
arbitraryPointInBoundingBoxHGeometry.Kernel.Test.Box
ArcSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
ArcToIpe.Path
areaHGeometry.Polygon
area2XHGeometry.Polygon
AroundEndHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
AroundIntersectionHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
AroundStartHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
ArrowIpe.Attributes, Ipe
arrowNameIpe.Attributes, Ipe
arrowSizeIpe.Attributes, Ipe
ArrowSym0Ipe.Attributes, Ipe
AsA 
1 (Data Constructor)HGeometry.Ext
2 (Type/Class)HGeometry.Ext
asAnEndPointHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
asAnIntervalHGeometry.Interval
asBalancedBinLeafTreeHGeometry.Tree.Binary.Static
asBalancedBinTreeHGeometry.Tree.Binary.Static
ascEndPointsHGeometry.SegmentTree.Base, HGeometry.SegmentTree
asClosedIntervalHGeometry.Interval
asCoreHGeometry.Ext
AsExtHGeometry.Ext
AsFixedHGeometry.Number.Real.Rational
asFixedHGeometry.Number.Real.Rational
asIndexedExtHGeometry.Ext
AsIsIpe.Path
asMap 
1 (Function)HGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
2 (Function)HGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
asMonotonePolygonHGeometry.Polygon.Monotone
asNonVerticalHyperPlaneHGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
asOpenIntervalHGeometry.Interval
asPointHGeometry, HGeometry.Kernel, HGeometry.Point
asPointLocationResultHGeometry.Boundary
asSimplePolygonHGeometry.Polygon.WithHoles
AssociatedHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
associatedSegmentsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
associatedSegsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
asTriangleHGeometry.Polygon
AsVector_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
Attr 
1 (Type/Class)Ipe.Attributes, Ipe
2 (Data Constructor)Ipe.Attributes, Ipe
attrIpe.Attributes, Ipe
AttributesIpe.Attributes, Ipe
attributesIpe.Content, Ipe.Types, Ipe
Attributes'Ipe.Content, Ipe.Types, Ipe
AttributesOfIpe.Content, Ipe.Types, Ipe
AttributeUniverseIpe.Attributes, Ipe
AttrMapIpe.Content, Ipe.Types, Ipe
AttrMapSym1Ipe.Content, Ipe.Types, Ipe
attrNameIpe.Attributes, Ipe
AttrsIpe.Attributes, Ipe
BackgroundIpe.IpeRender
Ball 
1 (Type/Class)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
Ball_ 
1 (Type/Class)HGeometry.Ball.Class, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.Class, HGeometry.Ball
basicIpeStyleIpe.Types, Ipe
basicNamedColorsIpe.Color
basisHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
BeforeHGeometry.Interval.Class, HGeometry.Interval
BelowHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
Bezier2HGeometry.BezierSpline
Bezier3HGeometry.BezierSpline
BezierSpline 
1 (Type/Class)HGeometry.BezierSpline
2 (Data Constructor)HGeometry.BezierSpline
BezierSplineFHGeometry.BezierSpline
BidirGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
BinarySearchHGeometry.Algorithms.BinarySearch
binarySearchFirstHGeometry.Algorithms.BinarySearch
binarySearchFirstIdxInHGeometry.Algorithms.BinarySearch
binarySearchFirstInHGeometry.Algorithms.BinarySearch
binarySearchIdxInHGeometry.Algorithms.BinarySearch
binarySearchInHGeometry.Algorithms.BinarySearch
binarySearchLastHGeometry.Algorithms.BinarySearch
binarySearchLastIdxInHGeometry.Algorithms.BinarySearch
binarySearchLastInHGeometry.Algorithms.BinarySearch
BinarySearchResultHGeometry.Algorithms.BinarySearch
binarySearchUntilHGeometry.Algorithms.BinarySearch
BinaryTreeHGeometry.Tree.Binary.Static
BinLeafTreeHGeometry.Tree.Binary.Static
bisectorHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
blackIpe.Color
blankCanvasHGeometry.Miso.Svg.Canvas
blueIpe.Color
bothClosedHGeometry.Kernel.Instances
Bottom 
1 (Type/Class)HGeometry.Unbounded
2 (Data Constructor)HGeometry.Unbounded
BottomLeftHGeometry, HGeometry.Kernel, HGeometry.Point
BottomRightHGeometry, HGeometry.Kernel, HGeometry.Point
bottomSideHGeometry, HGeometry.Box, HGeometry.Kernel
bottomToMaybeHGeometry.Unbounded
Boundary 
1 (Type/Class)HGeometry.Boundary
2 (Data Constructor)HGeometry.Boundary
boundaryDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
boundaryDartsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
boundaryDartsOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
boundaryVerticesHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
boundaryVerticesOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
BoundedHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
BoundedRegionHGeometry.HalfPlane.CommonIntersection
boundingBoxHGeometry, HGeometry.Box, HGeometry.Kernel
BoundingHyperPlaneHGeometry.HalfSpace.Class, HGeometry.HalfSpace, HGeometry.HalfSpace
boundingHyperPlaneHGeometry.HalfSpace.Class, HGeometry.HalfSpace
Box 
1 (Type/Class)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Box, HGeometry.Kernel
Box_HGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
brownIpe.Color
bruteForceLowerEnvelopeHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
buildHGeometry.Algorithms.LogarithmicMethod
buildClosedIntervalHGeometry.Interval.Class, HGeometry.Interval
buildFailureFunctionHGeometry.StringSearch.KMP
buildIntervalHGeometry.Interval.Class, HGeometry.Interval
buildRangeTreeHGeometry.RangeTree.Base, HGeometry.RangeTree
buildSegmentTreeHGeometry.SegmentTree.Base, HGeometry.SegmentTree
buildSkeletonHGeometry.SegmentTree.Base, HGeometry.SegmentTree
ButtonHGeometry.Miso.Event.Extra
Camera 
1 (Type/Class)HGeometry.Graphics.Camera
2 (Data Constructor)HGeometry.Graphics.Camera
cameraNormalHGeometry.Graphics.Camera
cameraPositionHGeometry.Graphics.Camera
cameraTransformHGeometry.Graphics.Camera
CanDeleteHGeometry.Measured.Class, HGeometry.Measured
CanInsertHGeometry.Measured.Class, HGeometry.Measured
canonicalSubSetHGeometry.SegmentTree.CanonicalSubSet
CanvasHGeometry.Miso.Svg.Canvas
CardinalDirectionHGeometry.Direction
CCP 
1 (Type/Class)HGeometry.ClosestPair.DivideAndConquer
2 (Data Constructor)HGeometry.ClosestPair.DivideAndConquer
CCW 
1 (Type/Class)HGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
2 (Data Constructor)HGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
ccwHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
ccwCmpAroundHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
ccwCmpAroundWithHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
ccwOuterBoundaryFromHGeometry.Polygon.Class, HGeometry.Polygon
ccwPredecessorOfHGeometry.Polygon.Class, HGeometry.Polygon
ccwSuccessorOfHGeometry.Polygon.Class, HGeometry.Polygon
centerHGeometry.Ball.Class, HGeometry.Ball
centeredOriginHGeometry.Viewport
centerPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
centroidHGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple
Chain 
1 (Type/Class)HGeometry.HalfPlane.CommonIntersection
2 (Data Constructor)HGeometry.HalfPlane.CommonIntersection
Circle 
1 (Type/Class)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
circleToEllipseHGeometry.Ellipse
clampToHGeometry.Interval.Class, HGeometry.Interval
classifyVerticesHGeometry.Polygon.Triangulation.MakeMonotone
ClipIpe.Attributes, Ipe
ClipSym0Ipe.Attributes, Ipe
ClosedHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
ClosedEHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
ClosedInterval 
1 (Type/Class)HGeometry.Interval
2 (Data Constructor)HGeometry.Interval
ClosedInterval_ 
1 (Type/Class)HGeometry.Interval.Class, HGeometry.Interval
2 (Data Constructor)HGeometry.Interval.Class, HGeometry.Interval
ClosedLineSegment 
1 (Type/Class)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
ClosedLineSegment_HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
ClosedSplineIpe.Path
ClosedSplineSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
ClosePathIpe.Path
closestPair 
1 (Function)HGeometry.ClosestPair.DivideAndConquer, HGeometry.ClosestPair
2 (Function)HGeometry.ClosestPair.Naive
closestPairWithHGeometry.ClosestPair.Naive
cmpByDistanceToHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
cmpInDirection 
1 (Function)HGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
2 (Function)HGeometry.HyperPlane
cmpSlopeHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
cmpXHGeometry.Polygon.Triangulation.MakeMonotone
CoLinearHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
Coloured 
1 (Type/Class)PLY.Writer
2 (Data Constructor)PLY.Writer
columnHGeometry.Matrix.Class, HGeometry.Matrix
CommonAttributesIpe.Attributes, Ipe
commonAttributesIpe.Content, Ipe.Types, Ipe
CommonIntersectionHGeometry.HalfPlane.CommonIntersection
commonIntersectionHGeometry.HalfPlane.CommonIntersection
CompareIntervalHGeometry.Interval.Class, HGeometry.Interval
compareIntervalHGeometry.Interval.Class, HGeometry.Interval
compareIntervalExactHGeometry.Interval.Class, HGeometry.Interval
compare_HGeometry.Ord.Dynamic
componentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
component'HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
componentsHGeometry, HGeometry.Kernel, HGeometry.Vector
computeDiagonals 
1 (Function)HGeometry.Polygon.Triangulation.TriangulateMonotone
2 (Function)HGeometry.Polygon.Triangulation.MakeMonotone
3 (Function)HGeometry.Polygon.Triangulation
computeVertexFormHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
ConnectedEnvelopeHGeometry.Plane.LowerEnvelope
ConnectedVDHGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
consHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
consElemWithHGeometry.Sequence.Alternating
constantHGeometry.Number.Real.Symbolic
constantFactorHGeometry.Number.Real.Symbolic
ConstructableClosedInterval_HGeometry.Interval.Class, HGeometry.Interval
ConstructableDiGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
ConstructableGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
ConstructableHyperPlane_HGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
ConstructableInterval_HGeometry.Interval.Class, HGeometry.Interval
ConstructableLineSegment_HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
ConstructableOpenInterval_HGeometry.Interval.Class, HGeometry.Interval
ConstructablePoint_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
ConstructablePolyLine_HGeometry.PolyLine.Class, HGeometry.PolyLine
ConstructableSimplePolygonHGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple, HGeometry.Polygon.Simple
constructTreeHGeometry.Tree.Util
contentIpe.Types, Ipe
contentInViewIpe.Types, Ipe
ConversionErrorIpe.Reader, Ipe
convexHull 
1 (Function)HGeometry.ConvexHull.QuickHull
2 (Function)HGeometry.ConvexHull.JarvisMarch
3 (Function)HGeometry.ConvexHull.GrahamScan, HGeometry.ConvexHull
4 (Function)HGeometry.ConvexHull.DivideAndConquer
5 (Function)HGeometry.ConvexHull.Melkman
ConvexPolygonHGeometry.Polygon.Convex
ConvexPolygonFHGeometry.Polygon.Convex
ConvexPolygon_HGeometry.Polygon.Convex.Class, HGeometry.Polygon.Convex
coordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
coord'HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
CoordinateIpe.PathParser, Ipe.Reader
coordinatesHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
coreHGeometry.Ext
CoreOfHGeometry.Ext
Corners 
1 (Type/Class)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Box, HGeometry.Kernel
corners 
1 (Function)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Function)HGeometry.Triangle.Class, HGeometry.Triangle
cornersInDirectionHGeometry, HGeometry.Box, HGeometry.Kernel
Count 
1 (Type/Class)HGeometry.Measured.Size
2 (Data Constructor)HGeometry.Measured.Size
CPHGeometry.ClosestPair.DivideAndConquer
CPlaneGraph 
1 (Type/Class)HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
2 (Data Constructor)HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
createTreeHGeometry.IntervalTree
Crop 
1 (Type/Class)Ipe.IpeRender
2 (Data Constructor)Ipe.IpeRender
cropIpe.IpeRender
crossHGeometry, HGeometry.Kernel, HGeometry.Vector
CubicBezierHGeometry.BezierSpline
CubicBezierSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
currentLevelHGeometry.Viewport
CurveToIpe.Path
CWHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
cwCmpAroundHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
cwCmpAroundWithHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
cwOuterBoundaryFromHGeometry.Polygon.Class, HGeometry.Polygon
cycleOfHGeometry.Permutation
cycleRepHGeometry.Permutation
Cyclic 
1 (Type/Class)HGeometry.Cyclic
2 (Data Constructor)HGeometry.Cyclic
darkblueIpe.Color
darkcyanIpe.Color
darkgrayIpe.Color
darkgreenIpe.Color
darkmagentaIpe.Color
darkorangeIpe.Color
darkredIpe.Color
DartHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
dartAtHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DartIxHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
dartIxFromToHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
dartsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
dartSegmentAtHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
dartSegmentsHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DashIpe.Attributes, Ipe
DashNamedIpe.Attributes, Ipe
DashPatternIpe.Attributes, Ipe
DashSym0Ipe.Attributes, Ipe
dCircleHGeometry.Miso.Svg, HGeometry.Svg
dCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
dDiskHGeometry.Miso.Svg, HGeometry.Svg
decodeYAMLHGeometry.YAML
decodeYAMLFileHGeometry.YAML
defaultBoxIpe.IpeOut, Ipe
DefaultFromIpeIpe.FromIpe, Ipe
defaultFromIpeIpe.FromIpe, Ipe
DefaultIpeOutIpe.IpeOut, Ipe, Ipe
defaultOptions 
1 (Function)Ipe.IpeRender
2 (Function)Ipe.IpeToIpe
DefaultTransformByConstraintsHGeometry.Transformation
DefinersHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
definersHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
defIOIpe.IpeOut, Ipe
deleteHGeometry.IntervalTree
deleteAllByHGeometry.Set.Util
deleteMeasureHGeometry.Measured.Class, HGeometry.Measured
denominatorHGeometry.Number.Ratio.Generalized
DepthIpe.Attributes, Ipe
DepthSym0Ipe.Attributes, Ipe
detHGeometry.Matrix.Class, HGeometry.Matrix
Diagonal 
1 (Type/Class)HGeometry.Polygon.Triangulation
2 (Data Constructor)HGeometry.Polygon.Triangulation
diGraphFromAdjacencyListsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DiGraphFromAdjListExtraConstraintsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
DiGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DimensionHGeometry.Properties
dimensionsHGeometry.Miso.Svg.StaticCanvas, HGeometry.Miso.Svg.Canvas
directionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
Disk 
1 (Type/Class)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
Disk_ 
1 (Type/Class)HGeometry.Ball.Class, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.Class, HGeometry.Ball
DistanceFunctionHGeometry.ClosestPair.Naive
divideAndConquerHGeometry.Algorithms.DivideAndConquer
divideAndConquer1HGeometry.Algorithms.DivideAndConquer
divideAndConquer1WithHGeometry.Algorithms.DivideAndConquer
dLineSegmentHGeometry.Miso.Svg, HGeometry.Svg
dotHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
douglasPeuckerHGeometry.PolyLine.Simplification.DouglasPeucker
DownHGeometry.Miso.Event.Extra
dPointHGeometry.Miso.Svg, HGeometry.Svg
dPolyLineHGeometry.Miso.Svg, HGeometry.Svg
drawHGeometry.Miso.Svg, HGeometry.Svg
DrawableHGeometry.Miso.Svg, HGeometry.Svg
drawTreeHGeometry.Tree.Binary.Static
drawTree'HGeometry.Tree.Binary.Static
drawWithHGeometry.Miso.Svg, HGeometry.Svg
dRectangleHGeometry.Miso.Svg, HGeometry.Svg
dropNextHGeometry.List.Zipper
dSimplePolygonHGeometry.Miso.Svg, HGeometry.Svg
dualGraphHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
DualGraphOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
dualHyperPlaneHGeometry.Duality
dualLineHGeometry.Duality
dualPointHGeometry.Duality
durationHGeometry.Interval.Class, HGeometry.Interval
E 
1 (Type/Class)HGeometry.Plane.LowerEnvelope.Connected.Graph
2 (Data Constructor)HGeometry.Plane.LowerEnvelope.Connected.Graph
EastHGeometry.Direction
eastHGeometry, HGeometry.Box, HGeometry.Kernel
EdgeHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph, HGeometry.Polygon, HGeometry.Polygon
edgeAtHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
EdgeIxHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph, HGeometry.Polygon, HGeometry.Polygon
edgesHGeometry.PolyLine, HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
edgeSegmentAtHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
edgeSegmentsHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
ElemHGeometry.Algorithms.BinarySearch
ElemCyclicHGeometry.Cyclic
elementsHGeometry.Matrix.Class, HGeometry.Matrix
elemsHGeometry.Permutation
Ellipse 
1 (Data Constructor)Ipe.Path
2 (Type/Class)HGeometry.Ellipse
3 (Data Constructor)HGeometry.Ellipse
ellipseMatrixHGeometry.Ellipse
EllipseSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
ellipseToCircleHGeometry.Ellipse
emptyHGeometry.Algorithms.LogarithmicMethod
EmptyIntersectionHGeometry.HalfPlane.CommonIntersection
emptyPageIpe.Types, Ipe
encodeYAMLHGeometry.YAML
encodeYAMLFileHGeometry.YAML
encodingIpe.Types, Ipe
EndHGeometry.Polygon.Triangulation.MakeMonotone
endHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
EndPoint 
1 (Type/Class)HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
endPointHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
EndPointOfHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
endPointOfHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
endPointsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
endPointsOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
EndPointTypeHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
endPointTypeHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
EndPoint_HGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
EntireFileIpe.IpeToIpe
EntireLineHGeometry.HalfPlane.CommonIntersection
EOFillIpe.Attributes, Ipe
EPSIpe.IpeRender
epsHGeometry.Number.Real.Symbolic
EpsFoldHGeometry.Number.Real.Symbolic
euclideanDistHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
evalAtHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
evalAt'HGeometry, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
evalEpsHGeometry.Number.Real.Symbolic
evalHyperPlaneEquationHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
ExactHGeometry.Number.Real.Rational
Export 
1 (Type/Class)Ipe.IpeToIpe
2 (Data Constructor)Ipe.IpeToIpe
exportIpe.IpeToIpe
extHGeometry.Ext
extentHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
ExtraHGeometry.Point.Either
extraHGeometry.Ext
extractMinimaBy 
1 (Function)HGeometry.NonEmpty.Util
2 (Function)HGeometry.List.Util
extractNextHGeometry.List.Zipper
extractOrd1HGeometry.Ord.Dynamic
extractOrd2HGeometry.Ord.Dynamic
ExtraOfHGeometry.Ext
extremesHGeometry.Polygon.Class, HGeometry.Polygon
FaceHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
faceAtHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
FaceIxHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
facesHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
FacetHGeometry.ConvexHull.R3.Naive.Dual
facetsHGeometry.ConvexHull.R3.Naive.Dual
factorsHGeometry.Number.Real.Symbolic
farDistHGeometry.Graphics.Camera
FileType 
1 (Type/Class)Ipe.IpeRender
2 (Type/Class)Ipe.IpeToIpe
FillIpe.Attributes, Ipe
FillRuleIpe.Attributes, Ipe
FillRuleSym0Ipe.Attributes, Ipe
FillSym0Ipe.Attributes, Ipe
FillTypeIpe.Attributes, Ipe
findEvertHGeometry.Tree.Util
findEvert'HGeometry.Tree.Util
findNodeHGeometry.Tree.Util
findNodesHGeometry.Tree.Util
findPathHGeometry.Tree.Util
findSlabHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
firstChildHGeometry.Tree.Util
firstTrueHGeometry.Algorithms.BinarySearch
firstWithNeighborsHGeometry.Sequence.Alternating
fitToBoxHGeometry.Transformation
fitToBoxTransformHGeometry.Transformation
flattenGroupsIpe.Content
flipAxesHGeometry.Graphics.Camera
FlipsAtHGeometry.Algorithms.BinarySearch
flipSignHGeometry.Sign
flipYHGeometry.Viewport
focusHGeometry.Tree.Util
foldBinaryUpHGeometry.Tree.Binary.Static
folding1HGeometry.Lens.Util
foldMapZipHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
foldUpHGeometry.Tree.Binary.Static
foldUpDataHGeometry.Tree.Binary.Static
frechetDistanceWithHGeometry.PolyLine.Frechet.Discrete
fromAdjacencyListsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
fromAdjacencyRepHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
fromAscListHGeometry.RangeTree.Base, HGeometry.RangeTree
fromBarricentricHGeometry.Triangle.Class, HGeometry.Triangle
fromBoundaryPointsHGeometry.Ball.Class, HGeometry.Ball
fromCCWListHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
fromCenterAndPointHGeometry.Ball.Class, HGeometry.Ball
fromCenterAndSquaredRadiusHGeometry.Ball.Class, HGeometry.Ball
fromConnectedSegmentsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
fromContentIpe.Types, Ipe
fromDiametralPairHGeometry.Ball.Class, HGeometry.Ball
fromEmbeddingHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
fromExtentHGeometry, HGeometry.Box, HGeometry.Kernel
fromFixedHGeometry.Number.Real.Rational
fromFoldableHGeometry.Foldable.Util
fromFoldable1HGeometry.Foldable.Util
fromGroupedAscListHGeometry.RangeTree.Base, HGeometry.RangeTree
fromIntervalsHGeometry.IntervalTree
fromIpeXMLIpe.Reader
fromLinearFunctionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
fromList 
1 (Function)HGeometry.Foldable.Util
2 (Function)HGeometry.List.Zipper
fromListByHGeometry.Set.Util
fromNonEmptyHGeometry.Foldable.Util
fromNonEmptyWithHGeometry.Sequence.Alternating
fromPointAndNormalHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
fromPointAndVecHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
fromPointsHGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple
fromSeqIpe.PathParser, Ipe.Reader
fromSimplePolygonHGeometry.Polygon.Convex
fromSizeHGeometry.Viewport
fromVectorHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
fromVertexFormHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
GAttrIpe.Attributes, Ipe
generateHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
generateAHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
generateMatrixHGeometry.Matrix.Class, HGeometry.Matrix
GeoPositionWithoutCRS'HGeometry.GeoJSON
getAttrIpe.Attributes, Ipe
getBoundingClientRectHGeometry.Miso.FFI.Extra
getPositiveDartHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
goldIpe.Color
goNextHGeometry.List.Zipper
goPrevHGeometry.List.Zipper
GradientIpe.Attributes, Ipe
GradientSym0Ipe.Attributes, Ipe
GraphFromAdjListExtraConstraintsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
Graph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
GRatioHGeometry.Number.Ratio.Generalized
grayIpe.Color
greenIpe.Color
Group 
1 (Type/Class)Ipe.Content, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Content, Ipe.Types, Ipe
GroupAttributesIpe.Attributes, Ipe
groupBy'HGeometry.List.Util
groupItemsIpe.Content, Ipe.Types, Ipe
HalfLine 
1 (Type/Class)HGeometry.HalfLine
2 (Data Constructor)HGeometry.HalfLine
HalfLineBoxIntersectionHGeometry, HGeometry.Box, HGeometry.Kernel
HalfLineLineSegmentIntersectionHGeometry, HGeometry.LineSegment, HGeometry.Kernel
halfLineThroughHGeometry.HalfLine
HalfLine_x_Box_LineSegmentHGeometry, HGeometry.Box, HGeometry.Kernel
HalfLine_x_Box_PointHGeometry, HGeometry.Box, HGeometry.Kernel
HalfLine_x_LineSegment_LineSegmentHGeometry, HGeometry.LineSegment, HGeometry.Kernel
HalfLine_x_LineSegment_PointHGeometry, HGeometry.LineSegment, HGeometry.Kernel
HalfOpenInterval 
1 (Type/Class)HGeometry.Interval
2 (Data Constructor)HGeometry.Interval
HalfPlane_HGeometry.HalfSpace.Class, HGeometry.HalfSpace
HalfSpace 
1 (Type/Class)HGeometry.HalfSpace
2 (Data Constructor)HGeometry.HalfSpace
HalfSpaceFHGeometry.HalfSpace
halfSpaceSignHGeometry.HalfSpace.Class, HGeometry.HalfSpace
HalfSpace_HGeometry.HalfSpace.Class, HGeometry.HalfSpace
HAlignIpe.Attributes, Ipe
HAlignSym0Ipe.Attributes, Ipe
handleInternalCanvasActionHGeometry.Miso.Svg.Canvas
HasCanonicalSubSetHGeometry.SegmentTree.CanonicalSubSet
HasCenterHGeometry.Ball.Class, HGeometry.Ball
HasComponentsHGeometry, HGeometry.Kernel, HGeometry.Vector
HasCoordinatesHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
HasDartsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HasDarts'HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HasDefaultFromIpeIpe.FromIpe, Ipe
HasDefaultIpeOutIpe.IpeOut, Ipe
HasDeterminantHGeometry.Matrix.Class, HGeometry.Matrix
HasDimensionsHGeometry.Miso.Svg.StaticCanvas, HGeometry.Miso.Svg.Canvas
HasDirectedTraversalsHGeometry.Cyclic
HasDirectionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
HasEdgesHGeometry.PolyLine, HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
HasEdges'HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
HasElementsHGeometry.Matrix.Class, HGeometry.Matrix
HasEndHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasEndPointHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasFacesHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HasFaces'HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HasFromFoldableHGeometry.Foldable.Util
HasFromFoldable1HGeometry.Foldable.Util
HasHolesHGeometry.Polygon.Class, HGeometry.Polygon
HasIndexHGeometry.Indexed
HasInPolygonHGeometry.Polygon.Simple
HasIntersectionWithHGeometry.Intersection
HasMaxPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
HasMinPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
HasMousePositionHGeometry.Miso.Svg.Canvas
hasNoPertubationHGeometry.Number.Real.Symbolic
hasNoSelfIntersectionsHGeometry.Polygon.Simple
HasOnLineHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
HasOnSegmentHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasOuterBoundaryHGeometry.Polygon.Class, HGeometry.Polygon
HasPointsHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
HasPoints'HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
HasSquaredEuclideanDistanceHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
HasStartHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasStartPointHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
HasSupportingLineHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
HasVectorHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
HasVerticesHGeometry.PolyLine, HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
HasVertices'HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
HasZoomLevelHGeometry.Miso.Canvas.Zoom
Has_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
headHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
headOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
HeightIpe.Attributes, Ipe
heightHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
HeightSym0Ipe.Attributes, Ipe
HoleHGeometry.Polygon.Class, HGeometry.Polygon
holeAtHGeometry.Polygon.Class, HGeometry.Polygon
HoleContainerHGeometry.Polygon.WithHoles
HoleFHGeometry.Polygon.Class, HGeometry.Polygon, HGeometry.Polygon
HoleIxHGeometry.Polygon.Class, HGeometry.Polygon, HGeometry.Polygon
holesHGeometry.Polygon.Class, HGeometry.Polygon
HorizontalIpe.Attributes, Ipe
HorizontalAlignmentIpe.Attributes, Ipe
horizontalLineHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
hostToWorldHGeometry.Viewport
HyperPlane 
1 (Type/Class)HGeometry.HyperPlane
2 (Data Constructor)HGeometry.HyperPlane
HyperPlane2HGeometry.HyperPlane
HyperPlane3HGeometry.HyperPlane
hyperPlaneCoefficientsHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
hyperPlaneEquationHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
hyperPlaneFromEquationHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
HyperPlaneFromEquationConstraintHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane, HGeometry.HyperPlane
HyperPlaneFromPointsHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
hyperPlaneThroughHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
HyperPlane_HGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
identityHGeometry.Transformation
identityMatrixHGeometry.Matrix.Class, HGeometry.Matrix
ifolding1HGeometry.Lens.Util
Image 
1 (Type/Class)Ipe.Content, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Content, Ipe.Types, Ipe
ImageAttributesIpe.Attributes, Ipe
imageDataIpe.Content, Ipe.Types, Ipe
impliesHGeometry.Kernel.Instances
incidentEdgesOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
incidentFaceOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Index 
1 (Type/Class)HGeometry.Algorithms.BinarySearch
2 (Type/Class)HGeometry.Indexed
indicesHGeometry.Permutation
InHalfLineHGeometry.HalfPlane.CommonIntersection
inIntervalHGeometry.Interval.Class, HGeometry.Interval
inPolygonHGeometry.Polygon.Simple
InSegmentHGeometry.HalfPlane.CommonIntersection
insert 
1 (Function)HGeometry.IntervalTree
2 (Function)HGeometry.SegmentTree.Base, HGeometry.SegmentTree
3 (Function)HGeometry.Algorithms.LogarithmicMethod
insertBreakPointsHGeometry.Sequence.Alternating
insertByHGeometry.Set.Util
insertIntoCyclicOrderHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
InsertionOnly 
1 (Type/Class)HGeometry.Algorithms.LogarithmicMethod
2 (Data Constructor)HGeometry.Algorithms.LogarithmicMethod
insertMeasureHGeometry.Measured.Class, HGeometry.Measured
insertOrdHGeometry.CircularList.Util
insertOrdByHGeometry.CircularList.Util
insertOrdBy'HGeometry.CircularList.Util
Inside 
1 (Data Constructor)HGeometry.Polygon.Triangulation
2 (Data Constructor)HGeometry.Boundary
inSimplePolygonHGeometry.Polygon.Simple
InSubLineHGeometry.HalfPlane.CommonIntersection
InterCardinalDirectionHGeometry.Direction
interCardinalsOfHGeometry.Direction
interceptHGeometry, HGeometry.Line.NonVertical.Class, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
InteriorHGeometry.Interval.Class, HGeometry.Interval
interiorFacePolygonAtHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
interiorFacePolygonsHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
interiorFacesHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
interiorIntersectionsHGeometry.LineSegment.Intersection.BentleyOttmann
interiorToHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
InternalHGeometry.Tree.Binary.Static
InternalCanvasActionHGeometry.Miso.Svg.Canvas
InternalNodeHGeometry.Tree.Util
interpolateHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
intersectHGeometry.Intersection
IntersectConstraintsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
intersectingHalfPlanesHGeometry.Triangle.Class, HGeometry.Triangle
IntersectionHGeometry.Intersection
intersectionLineHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
IntersectionOfHGeometry.Intersection, HGeometry.Ball.CenterAndRadius, HGeometry.Ball
IntersectionPointHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
intersectionPoint 
1 (Function)HGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
2 (Function)HGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
intersectionPointOfHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
intersectionPointsHGeometry.LineSegment.Intersection.BentleyOttmann
IntersectionsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
intersections 
1 (Function)HGeometry.LineSegment.Intersection.Naive
2 (Function)HGeometry.LineSegment.Intersection.BentleyOttmann
intersectionVectorHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
intersectsHGeometry.Intersection
Interval 
1 (Type/Class)HGeometry.Interval
2 (Data Constructor)HGeometry.Interval
IntervalLike_HGeometry.Interval.Class, HGeometry.Interval
IntervalTreeHGeometry.IntervalTree
Interval_ 
1 (Type/Class)HGeometry.Interval.Class, HGeometry.Interval
2 (Data Constructor)HGeometry.Interval.Class, HGeometry.Interval
Interval_x_IntervalIntersectionHGeometry.Interval
Interval_x_Interval_ContainedHGeometry.Interval
Interval_x_Interval_PartialHGeometry.Interval
Interval_x_Interval_PointHGeometry.Interval
introOrd1HGeometry.Ord.Dynamic
introOrd2HGeometry.Ord.Dynamic
inverseMatrixHGeometry.Matrix.Class, HGeometry.Matrix
inverseOfHGeometry.Transformation
InvertibleHGeometry.Matrix.Class, HGeometry.Matrix
iOIpe.IpeOut, Ipe
iO'Ipe.IpeOut, Ipe
iO''Ipe.IpeOut, Ipe
IpeArrow 
1 (Type/Class)Ipe.Attributes, Ipe
2 (Data Constructor)Ipe.Attributes, Ipe
IpeAttributesIpe.Content, Ipe.Types, Ipe
IpeAttrNameIpe.Attributes, Ipe
ipeBezierIpe.IpeOut, Ipe
IpeBitmapIpe.Types, Ipe
ipeCircleIpe.IpeOut, Ipe
IpeColor 
1 (Type/Class)Ipe.Color, Ipe
2 (Data Constructor)Ipe.Color, Ipe
IpeDashIpe.Attributes, Ipe
ipeDiskIpe.IpeOut, Ipe
ipeDiskMarkIpe.IpeOut, Ipe
ipeEllipseIpe.IpeOut, Ipe
IpeFile 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
ipeFileIpe.Types, Ipe
IpeGradientIpe.Attributes, Ipe
IpeGroupIpe.Content, Ipe.Types, Ipe
ipeGroupIpe.IpeOut, Ipe
ipeHalfLineIpe.IpeOut, Ipe
ipeHalfLineInIpe.IpeOut, Ipe
IpeImageIpe.Content, Ipe.Types, Ipe
ipeLabelIpe.IpeOut, Ipe
ipeLineIpe.IpeOut, Ipe
ipeLineInIpe.IpeOut, Ipe
ipeLineSegmentIpe.IpeOut, Ipe
ipeMarkIpe.IpeOut, Ipe
IpeMiniPageIpe.Content, Ipe.Types, Ipe
IpeObjectIpe.Content, Ipe.Types, Ipe
IpeObject'Ipe.Content, Ipe.Types, Ipe
ipeObject'Ipe.Content, Ipe.Types, Ipe
IpeOpacityIpe.Attributes, Ipe
IpeOutIpe.IpeOut, Ipe
IpeOut'Ipe.IpeOut, Ipe
IpePage 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
IpePathIpe.Content, Ipe.Types, Ipe
IpePen 
1 (Type/Class)Ipe.Attributes, Ipe
2 (Data Constructor)Ipe.Attributes, Ipe
ipePolygonIpe.IpeOut, Ipe
ipePolyLineIpe.IpeOut, Ipe
IpePreamble 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
ipeRayIpe.IpeOut, Ipe
IpeReadIpe.Reader, Ipe
ipeReadIpe.Reader, Ipe
IpeReadAttrIpe.Reader
ipeReadAttrIpe.Reader
ipeReadAttrsIpe.Reader
ipeReadObjectIpe.Reader
ipeReadRecIpe.Reader
IpeReadTextIpe.Reader
ipeReadTextIpe.Reader
ipeReadTextWithIpe.Reader
ipeRectangleIpe.IpeOut, Ipe
ipeRenderIpe.IpeRender
ipeRenderWithIpe.IpeRender
ipeSimplePolygonIpe.IpeOut, Ipe
IpeSize 
1 (Type/Class)Ipe.Attributes, Ipe
2 (Data Constructor)Ipe.Attributes, Ipe
IpeStyle 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
IpeSymbolIpe.Content, Ipe.Types, Ipe
IpeTextLabelIpe.Content, Ipe.Types, Ipe
IpeTilingIpe.Attributes, Ipe
ipeToIpeIpe.IpeToIpe
ipeToIpeWithIpe.IpeToIpe
IpeUseIpe.Content, Ipe.Types, Ipe
IpeValueIpe.Value, Ipe
IpeWriteIpe.Writer, Ipe
ipeWriteIpe.Writer, Ipe
ipeWriteAttrsIpe.Writer
IpeWriteTextIpe.Writer, Ipe
ipeWriteTextIpe.Writer, Ipe
IsBoxableHGeometry, HGeometry.Box, HGeometry.Kernel
isCoLinearHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
isConvexHGeometry.Polygon.Convex
IsEndPointHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
isIdenticalToHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
isInteriorIntersectionHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
IsIntersectableWithHGeometry.Intersection
isMonotoneHGeometry.Polygon.Monotone
isParallelToHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
isPerpendicularToHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
isScalarMultipleOfHGeometry, HGeometry.Kernel, HGeometry.Vector
isShiftOf 
1 (Function)HGeometry.CircularList.Util
2 (Function)HGeometry.Cyclic
isStrictlyConvexHGeometry.Polygon.Convex
isSubStringOfHGeometry.StringSearch.KMP
IsTransformableHGeometry.Transformation
isValidIntervalHGeometry.Kernel.Instances
itoNonEmptyOfHGeometry.Lens.Util
ixAttrIpe.Attributes, Ipe
joinHGeometry.Set.Util
kmpMatchHGeometry.StringSearch.KMP
LabelIpe.Content, Ipe.Types, Ipe
labelledIpe.IpeOut, Ipe
labelledWithIpe.IpeOut, Ipe
labelWithHGeometry.Indexed
labelWith'HGeometry.Indexed
labelWithIndexHGeometry.Indexed
lastHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
lastFalseHGeometry.Algorithms.BinarySearch
LayerIpe.Attributes, Ipe
LayerName 
1 (Type/Class)Ipe.Layer, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Layer, Ipe.Types, Ipe
layerNameIpe.Layer, Ipe.Types, Ipe
layerNamesIpe.Types, Ipe
layersIpe.Types, Ipe
LayerSym0Ipe.Attributes, Ipe
LeafHGeometry.Tree.Binary.Static
LeafNodeHGeometry.Tree.Util
leaveOutOneHGeometry.List.Util
LeftButtonHGeometry.Miso.Event.Extra
leftFaceOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
leftHalfPlaneHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
LeftSideHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
leftSideHGeometry, HGeometry.Box, HGeometry.Kernel
leftTangentHGeometry.Polygon.Convex.Tangents
lerpHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
levelsHGeometry.Tree.Util
liesAboveHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
liesBelowHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
liftI2HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
liftI2AHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
liftOrd1HGeometry.Ord.Dynamic
liftPointToPlaneHGeometry.Duality
liftU2HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
lightblueIpe.Color
lightcyanIpe.Color
lightgrayIpe.Color
lightgreenIpe.Color
lightyellowIpe.Color
Line2_HGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
lineAtHGeometry.Line.LowerEnvelope
LineBoxIntersectionHGeometry, HGeometry.Box, HGeometry.Kernel
LineCapIpe.Attributes, Ipe
LineCapSym0Ipe.Attributes, Ipe
LineEQ 
1 (Type/Class)HGeometry, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
LineHalfLineIntersectionHGeometry.HalfLine
LineJoinIpe.Attributes, Ipe
LineJoinSym0Ipe.Attributes, Ipe
LineLineIntersectionHGeometry, HGeometry.Line, HGeometry.Kernel
LineLineIntersectionGHGeometry, HGeometry.Line, HGeometry.Kernel
LineLineSegmentIntersectionHGeometry, HGeometry.LineSegment, HGeometry.Kernel
LinePV 
1 (Type/Class)HGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
LineSegment 
1 (Type/Class)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
LineSegmentLineSegmentIntersectionHGeometry, HGeometry.LineSegment, HGeometry.Kernel
LineSegment_ 
1 (Data Constructor)HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
2 (Type/Class)HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
LineSegment_x_LineSegment_LineSegmentHGeometry, HGeometry.LineSegment, HGeometry.Kernel
LineSegment_x_LineSegment_PointHGeometry, HGeometry.LineSegment, HGeometry.Kernel
lineThroughHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
LineToIpe.Path
Line_HGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
Line_x_Ball_PointHGeometry.Ball.CenterAndRadius, HGeometry.Ball
Line_x_Ball_SegmentHGeometry.Ball.CenterAndRadius, HGeometry.Ball
Line_x_Box_LineSegmentHGeometry, HGeometry.Box, HGeometry.Kernel
Line_x_Box_PointHGeometry, HGeometry.Box, HGeometry.Kernel
Line_x_HalfLine_HalfLineHGeometry.HalfLine
Line_x_HalfLine_PointHGeometry.HalfLine
Line_x_LineSegment_LineSegmentHGeometry, HGeometry.LineSegment, HGeometry.Kernel
Line_x_LineSegment_PointHGeometry, HGeometry.LineSegment, HGeometry.Kernel
Line_x_Line_LineHGeometry, HGeometry.Line, HGeometry.Kernel
Line_x_Line_PointHGeometry, HGeometry.Line, HGeometry.Kernel
listIntervalsHGeometry.IntervalTree
litIpe.Literal
literallyIpe.Literal
litFileIpe.Literal
LogarithmicMethodDSHGeometry.Algorithms.LogarithmicMethod
lookupAboveHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
lookupAboveOrOnHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
lookupAttrIpe.Attributes, Ipe
lookupIdxHGeometry.Permutation
lookupLEVertexHGeometry.Line.LowerEnvelope
LossyHGeometry.Number.Real.Rational
LowerEnvelope 
1 (Type/Class)HGeometry.Plane.LowerEnvelope
2 (Type/Class)HGeometry.Line.LowerEnvelope
3 (Data Constructor)HGeometry.Line.LowerEnvelope
lowerEnvelope 
1 (Function)HGeometry.Line.LowerEnvelope
2 (Function)HGeometry.Plane.LowerEnvelope.Naive, HGeometry.Plane.LowerEnvelope
LowerEnvelopeFHGeometry.Line.LowerEnvelope
lowerEnvelopeWithHGeometry.Plane.LowerEnvelope.Naive, HGeometry.Plane.LowerEnvelope
lowerHull 
1 (Function)HGeometry.ConvexHull.JarvisMarch
2 (Function)HGeometry.ConvexHull.GrahamScan
3 (Function)HGeometry.ConvexHull.DivideAndConquer
lowerHull' 
1 (Function)HGeometry.ConvexHull.JarvisMarch
2 (Function)HGeometry.ConvexHull.GrahamScan
lowerTangentHGeometry.Polygon.Convex.Tangents
lowerTangent'HGeometry.Polygon.Convex.Tangents
makeMonotoneHGeometry.Polygon.Triangulation.MakeMonotone
mapFHGeometry.Sequence.Alternating
MarkedViewIpe.IpeToIpe
markedViewIpe.IpeToIpe
Matrix 
1 (Data Constructor)Ipe.Attributes, Ipe
2 (Type/Class)HGeometry.Matrix
3 (Data Constructor)HGeometry.Matrix
matrixFromListHGeometry.Matrix.Class, HGeometry.Matrix
matrixFromRowsHGeometry.Matrix.Class, HGeometry.Matrix
MatrixSym0Ipe.Attributes, Ipe
matrixToMisoStringHGeometry.Miso.Svg.StaticCanvas
Matrix_HGeometry.Matrix.Class, HGeometry.Matrix
maximumMaybeHGeometry.List.Util
maximumVertexByHGeometry.Polygon.Class, HGeometry.Polygon
maxInDirectionHGeometry.Polygon.Convex
MaxInfinityHGeometry.Unbounded
maxPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
measureHGeometry.Measured.Class, HGeometry.Measured
MeasuredHGeometry.Measured.Class, HGeometry.Measured
MergeHGeometry.Polygon.Triangulation.MakeMonotone
mergeHGeometry.Algorithms.LogarithmicMethod
mergeAlternatingHGeometry.Sequence.Alternating
mergeDefinersHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
mergePairsHGeometry.ClosestPair.DivideAndConquer
mergeSortedHGeometry.Algorithms.DivideAndConquer
mergeSortedByHGeometry.Algorithms.DivideAndConquer
mergeSortedListsHGeometry.Algorithms.DivideAndConquer
mergeSortedListsByHGeometry.Algorithms.DivideAndConquer
Metric_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
MiddleButtonHGeometry.Miso.Event.Extra
minimaByHGeometry.List.Util
minimaOnHGeometry.List.Util
MinimizationDiagram 
1 (Type/Class)HGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
2 (Data Constructor)HGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
minimumMaybeHGeometry.List.Util
minimumMaybeByHGeometry.List.Util
minimumVertexByHGeometry.Polygon.Class, HGeometry.Polygon
MinInfinityHGeometry.Unbounded
MiniPage 
1 (Type/Class)Ipe.Content, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Content, Ipe.Types, Ipe
MiniPageAttributesIpe.Attributes, Ipe
minkowskiSumHGeometry.Polygon.Convex
minPointHGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
mkClosedIntervalHGeometry.Interval.Class, HGeometry.Interval
mkEndPointHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
mkEpsFoldHGeometry.Number.Real.Symbolic
MkHyperPlaneConstraintsHGeometry.HyperPlane
mkIntervalHGeometry.Interval.Class, HGeometry.Interval
mkIpeObjectIpe.Content, Ipe.Types, Ipe
MkLineEQHGeometry, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
mkLineSegmentHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
mkOpenIntervalHGeometry.Interval.Class, HGeometry.Interval
MkReportHGeometry.Measured.Report
MkSimplePolygonHGeometry.Polygon.Simple
MkSphereHGeometry.Ball.CenterAndRadius, HGeometry.Ball
mkTriangleHGeometry.Triangle.Class, HGeometry.Triangle
MkVector1HGeometry, HGeometry.Kernel, HGeometry.Vector
MkVector2HGeometry, HGeometry.Kernel, HGeometry.Vector
MkVector3HGeometry, HGeometry.Kernel, HGeometry.Vector
MkVector4HGeometry, HGeometry.Kernel, HGeometry.Vector
mkViewportHGeometry.Viewport
monotoneDirectionHGeometry.Polygon.Monotone
MonotonePolygonHGeometry.Polygon.Monotone
MonotonePolygonFHGeometry.Polygon.Monotone
mouseCoordinatesHGeometry.Miso.Svg.Canvas
mousePositionHGeometry.Miso.Svg.Canvas
MoveToIpe.Path
NamedIpe.Value, Ipe
namedIpe.Color, Ipe
NatHGeometry.Number.Real.Rational
navyIpe.Color
nearDistHGeometry.Graphics.Camera
negatedHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
NegativeHGeometry.HalfSpace, HGeometry.Sign
neighboursOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
nextHGeometry.Permutation
nextDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
nextSiblingHGeometry.Tree.Util
NilHGeometry.Tree.Binary.Static
NoIpe.Attributes, Ipe
NoAttrIpe.Attributes, Ipe
NoCropIpe.IpeRender
NodeHGeometry.Tree.Binary.Static
nodeHGeometry.Tree.Binary.Static
nonEmptyTailsHGeometry.Combinatorial.Util
NonVerticalHGeometry.Line.General
NonVerticalHyperPlane 
1 (Type/Class)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
2 (Data Constructor)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
NonVerticalHyperPlane_HGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
normHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
normalArrowIpe.Attributes, Ipe
normalVectorHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
NorthHGeometry.Direction
northHGeometry, HGeometry.Box, HGeometry.Kernel
NorthEastHGeometry.Direction
northEastHGeometry, HGeometry.Box, HGeometry.Kernel
NorthWestHGeometry.Direction
northWestHGeometry, HGeometry.Box, HGeometry.Kernel
NotColouredPLY.Writer
NoZip 
1 (Type/Class)Ipe.IpeToIpe
2 (Data Constructor)Ipe.IpeToIpe
nozipIpe.IpeToIpe
numDartsHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
numEdgesHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
numeratorHGeometry.Number.Ratio.Generalized
numFacesHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
NumTypeHGeometry.Properties
numVerticesHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
NVLine2_ 
1 (Data Constructor)HGeometry, HGeometry.Line.NonVertical.Class, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
2 (Type/Class)HGeometry, HGeometry.Line.NonVertical.Class, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
O 
1 (Type/Class)HGeometry.Ord.Dynamic
2 (Data Constructor)HGeometry.Ord.Dynamic
OnHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
OnBoundaryHGeometry.Boundary
OnBoundaryEdgeHGeometry.Boundary
onClickWithButtonHGeometry.Miso.Event.Extra
onContextMenuHGeometry.Miso.Event.Extra
OnEndHGeometry.Interval.Class, HGeometry.Interval
onHyperPlaneHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
onLayerIpe.Types, Ipe
OnLineHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
onLineHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
OnlyMarkedViewsIpe.IpeToIpe
onMouseClickAtHGeometry.Miso.Subscription.MouseExtra
onMouseEnterAtHGeometry.Miso.Subscription.MouseExtra
onMouseMoveAtHGeometry.Miso.Subscription.MouseExtra
onRightClickHGeometry.Miso.Event.Extra
onSegmentHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
onSideHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
onSideTestHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
onSideUpDownHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
OnSideUpDownTestHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
OnStartHGeometry.Interval.Class, HGeometry.Interval
onTouchEnd 
1 (Function)HGeometry.Miso.Event.Extra
2 (Function)HGeometry.Miso.Subscription.MouseExtra
onTouchMoveHGeometry.Miso.Event.Extra
onTouchMoveAtHGeometry.Miso.Subscription.MouseExtra
onTouchStartHGeometry.Miso.Event.Extra
onTouchStartAtHGeometry.Miso.Subscription.MouseExtra
onWheelHGeometry.Miso.Event.Extra
opacitiesStyleIpe.Types, Ipe
OpacityIpe.Attributes, Ipe
OpacitySym0Ipe.Attributes, Ipe
OpaqueBackgroundIpe.IpeRender
OpenHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
OpenEHGeometry, HGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment, HGeometry.Kernel
OpenInterval 
1 (Type/Class)HGeometry.Interval
2 (Data Constructor)HGeometry.Interval
OpenInterval_ 
1 (Type/Class)HGeometry.Interval.Class, HGeometry.Interval
2 (Data Constructor)HGeometry.Interval.Class, HGeometry.Interval
OpenLineSegment 
1 (Data Constructor)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
2 (Type/Class)HGeometry, HGeometry.LineSegment, HGeometry.Kernel
OpenLineSegment_HGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
OperationIpe.Path
oppositeDirectionHGeometry.Direction
Options 
1 (Type/Class)Ipe.IpeRender
2 (Data Constructor)Ipe.IpeRender
3 (Type/Class)Ipe.IpeToIpe
4 (Data Constructor)Ipe.IpeToIpe
OptMatrix_HGeometry.Matrix, HGeometry.Transformation
orangeIpe.Color
OrbitHGeometry.Permutation
orbitFromHGeometry.Permutation
orbitsHGeometry.Permutation
OrdAroundsHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
ordAtXHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
ordAtYHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
OrdDict 
1 (Type/Class)HGeometry.Ord.Dynamic
2 (Data Constructor)HGeometry.Ord.Dynamic
OrientationIpe.Path
orientBTHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
orientLRHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
originHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Original 
1 (Data Constructor)HGeometry.Polygon.Triangulation
2 (Data Constructor)HGeometry.Point.Either
OriginalOrExtraHGeometry.Point.Either
outerBoundaryHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryEdgeAtHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryEdgesHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryEdgeSegmentAtHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryEdgeSegmentsHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryPolygonHGeometry.Polygon.WithHoles
outerBoundaryVertexAtHGeometry.Polygon.Class, HGeometry.Polygon
outerBoundaryWithNeighboursHGeometry.Polygon.Class, HGeometry.Polygon
outerFaceHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
outerFaceDartHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
outerFaceIdHGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
outgoingDartsOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
outNeighboursOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Outside 
1 (Data Constructor)HGeometry.Polygon.Triangulation
2 (Data Constructor)HGeometry.Boundary
PageNumberIpe.IpeToIpe
pageNumberIpe.IpeRender
PageRange 
1 (Type/Class)Ipe.IpeToIpe
2 (Data Constructor)Ipe.IpeToIpe
pages 
1 (Function)Ipe.Types, Ipe
2 (Function)Ipe.IpeToIpe
ParallelStripsHGeometry.Plane.LowerEnvelope
partition3HGeometry.List.Util
partitionIntoQuadrantsHGeometry, HGeometry.Kernel, HGeometry.Point
Path 
1 (Type/Class)Ipe.Path, Ipe.Content, Ipe.Types, Ipe
2 (Data Constructor)Ipe.Path, Ipe.Content, Ipe.Types, Ipe
pathIpe.IpeOut, Ipe
PathAttributesIpe.Attributes, Ipe
PathSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
pathSegmentIpe.IpeOut, Ipe
pathSegmentsIpe.Path, Ipe.Content, Ipe.Types, Ipe
pCoordinateIpe.PathParser
PDF 
1 (Data Constructor)Ipe.IpeRender
2 (Data Constructor)Ipe.IpeToIpe
PenIpe.Attributes, Ipe
PenSym0Ipe.Attributes, Ipe
Permutation 
1 (Type/Class)HGeometry.Permutation
2 (Data Constructor)HGeometry.Permutation
perpendicularToHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
perspectiveProjectionHGeometry.Graphics.Camera
perturbHGeometry.Number.Real.Symbolic
PinIpe.Attributes, Ipe
pinkIpe.Color
PinSym0Ipe.Attributes, Ipe
PinTypeIpe.Attributes, Ipe
PlanarGraph_HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Plane 
1 (Type/Class)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
2 (Data Constructor)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
PlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
PlaneGraph_HGeometry.PlaneGraph.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Plane_ 
1 (Type/Class)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
2 (Data Constructor)HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
PNGIpe.IpeRender
Point 
1 (Type/Class)HGeometry, HGeometry.Kernel, HGeometry.Point
2 (Data Constructor)HGeometry, HGeometry.Kernel, HGeometry.Point.PointF, HGeometry.Point
Point1HGeometry, HGeometry.Kernel, HGeometry.Point
Point1_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Point2HGeometry, HGeometry.Kernel, HGeometry.Point
Point2_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Point3HGeometry, HGeometry.Kernel, HGeometry.Point
Point3_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Point4HGeometry, HGeometry.Kernel, HGeometry.Point
Point4_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
pointClosestToHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
pointClosestToWithDistanceHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
PointFHGeometry, HGeometry.Kernel, HGeometry.Point.PointF, HGeometry.Point
pointFromListHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
pointLocateParallelHGeometry.Plane.LowerEnvelope
PointLocationResultHGeometry.Boundary
PointLocationResultWithHGeometry.Boundary
pointOnHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
pointToPlaneHGeometry.VoronoiDiagram.ViaLowerEnvelope
Point_HGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
PolygonalDomain 
1 (Type/Class)HGeometry.Polygon.WithHoles
2 (Data Constructor)HGeometry.Polygon.WithHoles
PolygonalDomainFHGeometry.Polygon.WithHoles
PolygonEdgeTypeHGeometry.Polygon.Triangulation
PolygonFaceDataHGeometry.Polygon.Triangulation
PolygonPathIpe.Path, Ipe.Content, Ipe.Types, Ipe
Polygon_HGeometry.Polygon.Class, HGeometry.Polygon
PolyLine 
1 (Type/Class)HGeometry.PolyLine
2 (Data Constructor)HGeometry.PolyLine
PolyLineFHGeometry.PolyLine
polyLineFromPointsHGeometry.PolyLine.Class, HGeometry.PolyLine
PolyLineSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
PolyLine_HGeometry.PolyLine.Class, HGeometry.PolyLine
pOperationIpe.PathParser
PositiveHGeometry.HalfSpace, HGeometry.Sign
pPointIpe.PathParser
preambleIpe.Types, Ipe
preambleDataIpe.Types, Ipe
prefixHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
prevDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
previousHGeometry.Permutation
prevSiblingHGeometry.Tree.Util
printAsIpeSelectionIpe.Writer, Ipe
printYAMLHGeometry.YAML
projectPointHGeometry, HGeometry.Kernel, HGeometry.Point
pureAttrIpe.Attributes, Ipe
purpleIpe.Color
QCurveToIpe.Path
qdHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
quadranceHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
QuadrantHGeometry, HGeometry.Kernel, HGeometry.Point
quadrantHGeometry, HGeometry.Kernel, HGeometry.Point
quadrantWithHGeometry, HGeometry.Kernel, HGeometry.Point
QuadraticBezierHGeometry.BezierSpline
QuadraticBezierSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
query 
1 (Function)HGeometry.SegmentTree.Base, HGeometry.SegmentTree
2 (Function)HGeometry.RangeTree.Base, HGeometry.RangeTree
queryByHGeometry.Set.Util
queryWithHGeometry.Algorithms.LogarithmicMethod
QuickCheckWorldHGeometry.PlaneGraph.Instances
RadicalHGeometry.Number.Radical
radiusHGeometry.Ball.Class, HGeometry.Ball
randomConvexHGeometry.Polygon.Convex.Random
randomMonotoneHGeometry.Polygon.Monotone
randomMonotoneDirectedHGeometry.Polygon.Monotone
randomNonZeroVectorHGeometry.Polygon.Monotone
rangeHGeometry.Viewport
rangeQueryHGeometry.RangeTree.Base, HGeometry.RangeTree
RangeTreeHGeometry.RangeTree.Base, HGeometry.RangeTree
RArrowIpe.Attributes, Ipe
RArrowSym0Ipe.Attributes, Ipe
rawCameraNormalHGeometry.Graphics.Camera
rawViewUpHGeometry.Graphics.Camera
readAllIpe.FromIpe, Ipe
readAllDeepIpe.FromIpe, Ipe
readAllFromIpe.FromIpe, Ipe
readCoordinateIpe.PathParser
readIpeFileIpe.Reader, Ipe
readIpeStylesheetIpe.Reader, Ipe
readMatrixIpe.PathParser
readPathOperationsIpe.PathParser
readPointIpe.PathParser
readRawIpeFileIpe.Reader, Ipe
readRectangleIpe.PathParser
readSinglePageFileIpe.Reader, Ipe
readSinglePageFileThrowIpe.Reader, Ipe
readXMLIpe.Reader
RealNumber 
1 (Type/Class)HGeometry.Number.Real.Rational
2 (Data Constructor)HGeometry.Number.Real.Rational
rectIpe.Content, Ipe.Types, Ipe
Rectangle 
1 (Data Constructor)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Type/Class)HGeometry, HGeometry.Box, HGeometry.Kernel
Rectangle_HGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
redIpe.Color
reflectionHGeometry.Transformation
reflectionHHGeometry.Transformation
reflectionVHGeometry.Transformation
RegionHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
RegularHGeometry.Polygon.Triangulation.MakeMonotone
renderAsSvgByteStringHGeometry.Miso.Svg, HGeometry.Svg
renderAsSvgTextHGeometry.Miso.Svg, HGeometry.Svg
renderOutputPLY.Writer
renderOutputToFilePLY.Writer
renderSvgToFileHGeometry.Miso.Svg, HGeometry.Svg
Report 
1 (Type/Class)HGeometry.Measured.Report
2 (Data Constructor)HGeometry.Measured.Report
Report1 
1 (Type/Class)HGeometry.Measured.Report
2 (Data Constructor)HGeometry.Measured.Report
ReportList 
1 (Type/Class)HGeometry.Measured.Report
2 (Data Constructor)HGeometry.Measured.Report
resolutionIpe.IpeRender
RestGeoPositionHGeometry.GeoJSON
RetainIpeInfoIpe.IpeToIpe
reverseHGeometry.Sequence.Alternating
ReversedIpe.Path
RightButtonHGeometry.Miso.Event.Extra
rightFaceOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
rightHalfPlaneHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
RightSideHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
rightSideHGeometry, HGeometry.Box, HGeometry.Kernel
rightTangentHGeometry.Polygon.Convex.Tangents
RigidIpe.Attributes, Ipe
rootHGeometry.Tree.Util
rotateCoordSystemHGeometry.Graphics.Camera
rotateToHGeometry.Transformation
rotationHGeometry.Transformation
roundToConstantHGeometry.Number.Real.Symbolic
rowHGeometry.Matrix.Class, HGeometry.Matrix
rowsHGeometry.Matrix.Class, HGeometry.Matrix
runLatexIpe.IpeToIpe
runOHGeometry.Ord.Dynamic
runParserIpe.PathParser
sameDirectionHGeometry, HGeometry.Kernel, HGeometry.Vector
samplePointHGeometry.Polygon.Simple.Sample
samplePolygonHGeometry.Polygon.Simple.Sample
samplePolygonsHGeometry.Polygon.Simple.Sample
SamplerHGeometry.Polygon.Simple.Sample
SArrowIpe.Attributes, Ipe
SAttributeUniverseIpe.Attributes, Ipe
scalarMultipleHGeometry, HGeometry.Kernel, HGeometry.Vector
scaleByHGeometry.Transformation
scaleUniformlyByHGeometry.Transformation
scalingHGeometry.Transformation
SClipIpe.Attributes, Ipe
screenDimensionsHGeometry.Graphics.Camera
SDashIpe.Attributes, Ipe
SDepthIpe.Attributes, Ipe
seagreenIpe.Color
searchHGeometry.IntervalTree
searchInSlabHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
segmentAboveHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
segmentAboveOrOnHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
SegmentTreeHGeometry.SegmentTree.Base, HGeometry.SegmentTree
separatorsHGeometry.Sequence.Alternating
setAttrIpe.Attributes, Ipe
SFillIpe.Attributes, Ipe
SFillRuleIpe.Attributes, Ipe
SGradientIpe.Attributes, Ipe
SHAlignIpe.Attributes, Ipe
SHeightIpe.Attributes, Ipe
ShiftedEqHGeometry.Cyclic
shiftLeftHGeometry.Interval.Class, HGeometry.Interval
shiftRightHGeometry.Interval.Class, HGeometry.Interval
shrinkPolygonHGeometry.Polygon.Instances
sideDirectionsHGeometry, HGeometry.Box, HGeometry.Kernel
Sides 
1 (Type/Class)HGeometry, HGeometry.Box, HGeometry.Kernel
2 (Data Constructor)HGeometry, HGeometry.Box, HGeometry.Kernel
sidesHGeometry, HGeometry.Box, HGeometry.Kernel
sides'HGeometry, HGeometry.Box, HGeometry.Kernel
SideTestHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
SideTestUpDownHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
sideValuesHGeometry, HGeometry.Box, HGeometry.Kernel
SignHGeometry.HalfSpace, HGeometry.Sign
signedArea2XHGeometry.Polygon.Class, HGeometry.Polygon
signFromTermsHGeometry.Sign
signOfHGeometry.Number.Real.Symbolic
signormHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
SimplePolygonHGeometry.Polygon.Simple
SimplePolygonFHGeometry.Polygon.Simple
SimplePolygon_HGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple
simplifyHGeometry.PolyLine.Simplification.ImaiIri
simplifyWithHGeometry.PolyLine.Simplification.ImaiIri
singlePageFileIpe.Types, Ipe
singlePageFromContentIpe.Types, Ipe
singletonHGeometry.Algorithms.LogarithmicMethod
SingletonPointHGeometry.HalfPlane.CommonIntersection
singleViewIpe.IpeToIpe
SizeIpe.Attributes, Ipe
size 
1 (Function)HGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
2 (Function)HGeometry.Permutation
Sized 
1 (Type/Class)HGeometry.Measured.Size
2 (Data Constructor)HGeometry.Measured.Size
SizeSym0Ipe.Attributes, Ipe
skewXHGeometry.Transformation
SlabHGeometry.HalfPlane.CommonIntersection
SLayerIpe.Attributes, Ipe
SLineCapIpe.Attributes, Ipe
SLineJoinIpe.Attributes, Ipe
slopeHGeometry, HGeometry.Line.NonVertical.Class, HGeometry.Line.LineEQ, HGeometry.Line, HGeometry.Kernel
SMatrixIpe.Attributes, Ipe
snocHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
snocElemWithHGeometry.Sequence.Alternating
SOpacityIpe.Attributes, Ipe
sortHGeometry.Foldable.Sort
sortAroundHGeometry, HGeometry.Kernel, HGeometry.Point.Orientation, HGeometry.Point
sortByHGeometry.Foldable.Sort
sortOnCheapHGeometry.Foldable.Sort
sosIndexHGeometry.Indexed
SoSRationalHGeometry.Number.Real.Symbolic
sosRationalHGeometry.Number.Real.Symbolic
SouthHGeometry.Direction
southHGeometry, HGeometry.Box, HGeometry.Kernel
SouthEastHGeometry.Direction
southEastHGeometry, HGeometry.Box, HGeometry.Kernel
SouthWestHGeometry.Direction
southWestHGeometry, HGeometry.Box, HGeometry.Kernel
SP 
1 (Type/Class)HGeometry.Combinatorial.Util
2 (Data Constructor)HGeometry.Combinatorial.Util
spanInHGeometry, HGeometry.LineSegment, HGeometry.Kernel
SPenIpe.Attributes, Ipe
Sphere 
1 (Type/Class)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
2 (Data Constructor)HGeometry.Ball.CenterAndRadius, HGeometry.Ball
SPinIpe.Attributes, Ipe
SplineIpe.Path
SplineSegmentIpe.Path, Ipe.Content, Ipe.Types, Ipe
SplitHGeometry.Polygon.Triangulation.MakeMonotone
splitByHGeometry.Set.Util
splitIncrHGeometry.CircularList.Util
splitL1AtHGeometry.Sequence.NonEmpty
splitOnHGeometry.Set.Util
splitR1AtHGeometry.Sequence.NonEmpty
sqrtHGeometry.Number.Radical
squaredEuclideanDistHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
squaredEuclideanDistToHGeometry, HGeometry.Kernel, HGeometry.Point.EuclideanDistance, HGeometry.Point
squaredRadiusHGeometry.Ball.Class, HGeometry.Ball
SRArrowIpe.Attributes, Ipe
SSizeIpe.Attributes, Ipe
SStrokeIpe.Attributes, Ipe
SStrokeOpacityIpe.Attributes, Ipe
SStyleIpe.Attributes, Ipe
stab 
1 (Function)HGeometry.IntervalTree
2 (Function)HGeometry.SegmentTree.Base, HGeometry.SegmentTree
stabsIntervalHGeometry.Interval.Class, HGeometry.Interval
StartHGeometry.Polygon.Triangulation.MakeMonotone
startHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
startAndEndHGeometry.Interval.Class, HGeometry.Interval
startAndEndPointHGeometry.Interval.Class, HGeometry.Interval
startPointHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
StartPointOfHGeometry, HGeometry.Interval.Class, HGeometry.Interval, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
startPointOfHGeometry.LineSegment.Intersection.Naive, HGeometry.LineSegment.Intersection.BentleyOttmann
StaticCanvasHGeometry.Miso.Svg.StaticCanvas
staticCanvasHGeometry.Miso.Svg.StaticCanvas
staticCanvas_HGeometry.Miso.Svg.StaticCanvas
StatusStructureHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
steepestCcwFromHGeometry.ConvexHull.JarvisMarch
steepestCwFromHGeometry.ConvexHull.JarvisMarch
STilingIpe.Attributes, Ipe
STR 
1 (Type/Class)HGeometry.Combinatorial.Util
2 (Data Constructor)HGeometry.Combinatorial.Util
STransformationsIpe.Attributes, Ipe
StrictlyInsideHGeometry.Boundary
StrictlyOutsideHGeometry.Boundary
StrokeIpe.Attributes, Ipe
StrokeOpacityIpe.Attributes, Ipe
StrokeOpacitySym0Ipe.Attributes, Ipe
StrokeSym0Ipe.Attributes, Ipe
StyleIpe.Attributes, Ipe
styleDataIpe.Types, Ipe
styleNameIpe.Types, Ipe
stylesIpe.Types, Ipe
StyleSym0Ipe.Attributes, Ipe
SubLineHGeometry.HalfPlane.CommonIntersection
suffixHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
suitableBaseHGeometry.Number.Real.Symbolic
sumVHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
supportingLineHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
SVAlignIpe.Attributes, Ipe
SVGIpe.IpeRender
svgCanvas_HGeometry.Miso.Svg.Canvas
SWidthIpe.Attributes, Ipe
SymbolIpe.Content, Ipe.Types, Ipe
SymbolAttributesIpe.Attributes, Ipe
SymbolicHGeometry.Number.Real.Symbolic
symbolicHGeometry.Number.Real.Symbolic
symbolNameIpe.Content, Ipe.Types, Ipe
symbolPointIpe.Content, Ipe.Types, Ipe
tailOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
takeAttrIpe.Attributes, Ipe
Term 
1 (Type/Class)HGeometry.Number.Real.Symbolic
2 (Data Constructor)HGeometry.Number.Real.Symbolic
termHGeometry.Number.Real.Symbolic
TeXStyleIpe.Attributes, Ipe
TextAttributesIpe.Attributes, Ipe
TextLabelIpe.Content, Ipe.Types, Ipe
TextLabelAttributesIpe.Attributes, Ipe
TextSizeUnitIpe.Attributes, Ipe
theHolesHGeometry.Polygon.WithHoles
theValueHGeometry.Indexed
theViewportHGeometry.Miso.Svg.Canvas
Three 
1 (Data Constructor)HGeometry.Combinatorial.Util
2 (Type/Class)HGeometry.Combinatorial.Util
TilingIpe.Attributes, Ipe
TilingSym0Ipe.Attributes, Ipe
toBarricentricHGeometry.Triangle.Class, HGeometry.Triangle
toConvexPolygonInHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
toCounterClockwiseTriangleHGeometry.Triangle.Class, HGeometry.Triangle
toCycleRepHGeometry.Permutation
toCyclicHGeometry.Polygon.Simple
toFixedHGeometry.Number.Real.Rational
toggleHGeometry.Set.Util
toggleByHGeometry.Set.Util
toHostFromHGeometry.Viewport
toIpeSelectionXMLIpe.Writer, Ipe
toIpeXMLIpe.Writer, Ipe
toLinearFunctionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
ToObjectIpe.Content, Ipe.Types, Ipe
Top 
1 (Type/Class)HGeometry.Unbounded
2 (Data Constructor)HGeometry.Unbounded
toPlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
TopLeftHGeometry, HGeometry.Kernel, HGeometry.Point
toPolygonalDomainIpe.FromIpe
toPolygonPathSegmentIpe.IpeOut, Ipe
TopRightHGeometry, HGeometry.Kernel, HGeometry.Point
topSideHGeometry, HGeometry.Box, HGeometry.Kernel
topToMaybeHGeometry.Unbounded
toRoseTreeHGeometry.Tree.Binary.Static
toRoseTree'HGeometry.Tree.Binary.Static
toSimplePolygon 
1 (Function)HGeometry.Polygon.Monotone
2 (Function)HGeometry.Polygon.Convex
ToSvgCoordinateHGeometry.Miso.Svg.StaticCanvas
toTermsHGeometry.Number.Real.Symbolic
toTriangulatedPlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
toVecHGeometry, HGeometry.Kernel, HGeometry.Point.PointF, HGeometry.Point
toViewPortHGeometry.Graphics.Camera
toWorldInHGeometry.Viewport
Transformation 
1 (Type/Class)HGeometry.Transformation
2 (Data Constructor)HGeometry.Transformation
TransformationConstraintsHGeometry.Transformation
transformationMatrixHGeometry.Transformation
TransformationsIpe.Attributes, Ipe
TransformationsSym0Ipe.Attributes, Ipe
TransformationTypesIpe.Attributes, Ipe
transformByHGeometry.Transformation
translateByHGeometry.Transformation
translationHGeometry.Transformation
TranslationsIpe.Attributes, Ipe
transparentIpe.IpeRender
TransparentBackgroundIpe.IpeRender
traverseAttrIpe.Attributes, Ipe
traverseAttrsIpe.Attributes, Ipe
traverseIpeAttrsIpe.Content, Ipe.Types, Ipe
traverseLeftFromHGeometry.Cyclic
traverseRightFromHGeometry.Cyclic
TreeNodeHGeometry.Tree.Util
Triangle 
1 (Type/Class)HGeometry.Triangle
2 (Data Constructor)HGeometry.Triangle
triangleSamplerHGeometry.Polygon.Simple.Sample
triangleSignedArea2XHGeometry.Triangle.Class, HGeometry.Triangle
Triangle_ 
1 (Type/Class)HGeometry.Triangle.Class, HGeometry.Triangle
2 (Data Constructor)HGeometry.Triangle.Class, HGeometry.Triangle
triangulate 
1 (Function)HGeometry.Polygon.Triangulation.TriangulateMonotone
2 (Function)HGeometry.Polygon.Triangulation
turquoiseIpe.Color
twinDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
twinOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Two 
1 (Data Constructor)HGeometry.Combinatorial.Util
2 (Type/Class)HGeometry.Combinatorial.Util
unAttrsIpe.Attributes, Ipe
UnBoundedHGeometry.Unbounded
UnboundedHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
UnboundedRegionHGeometry.HalfPlane.CommonIntersection
unBoundedToMaybeHGeometry.Unbounded
uncheckedFromCCWPointsHGeometry.Polygon.Simple.Class, HGeometry.Polygon.Simple
uncheckedLineSegmentHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
uncheckedMontonePolygonHGeometry.Polygon.Monotone
unconsHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
unconsAltHGeometry.Sequence.Alternating
uniformScalingHGeometry.Transformation
uniquePairsHGeometry.Combinatorial.Util
uniqueTripletsHGeometry.Combinatorial.Util
unitHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
unitBallHGeometry.Ball.Class, HGeometry.Ball
unitEllipseHGeometry.Ellipse
unSetAttrIpe.Attributes, Ipe
unsnocHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
unversionedHGeometry.YAML
unZipperLocalHGeometry.Tree.Util
UpHGeometry.Miso.Event.Extra
upHGeometry.Tree.Util
updateHGeometry.Miso.Canvas.Zoom
UpperHullHGeometry.ConvexHull.R3.Naive.Dual
upperHull 
1 (Function)HGeometry.ConvexHull.JarvisMarch
2 (Function)HGeometry.ConvexHull.GrahamScan
3 (Function)HGeometry.ConvexHull.R3.Naive.Dual
4 (Function)HGeometry.ConvexHull.DivideAndConquer
upperHull' 
1 (Function)HGeometry.ConvexHull.JarvisMarch
2 (Function)HGeometry.ConvexHull.GrahamScan
upperHullFromSortedHGeometry.ConvexHull.GrahamScan
upperHullFromSorted'HGeometry.ConvexHull.GrahamScan
upperTangentHGeometry.Polygon.Convex.Tangents
upperTangent'HGeometry.Polygon.Convex.Tangents
ValHGeometry.Unbounded
ValBHGeometry.Unbounded
VAlignIpe.Attributes, Ipe
VAlignSym0Ipe.Attributes, Ipe
ValTHGeometry.Unbounded
ValuedIpe.Value, Ipe
VectorHGeometry, HGeometry.Kernel, HGeometry.Vector
vectorHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
Vector1HGeometry, HGeometry.Kernel, HGeometry.Vector
Vector2HGeometry, HGeometry.Kernel, HGeometry.Vector
Vector3HGeometry, HGeometry.Kernel, HGeometry.Vector
Vector4HGeometry, HGeometry.Kernel, HGeometry.Vector
vectorFromListHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
Vector_HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
verifyConvexHGeometry.Polygon.Convex
Versioned 
1 (Type/Class)HGeometry.YAML
2 (Data Constructor)HGeometry.YAML
VertexHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph, HGeometry.Polygon, HGeometry.Polygon
vertexAtHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
VertexAttributes 
1 (Type/Class)PLY.Writer
2 (Data Constructor)PLY.Writer
VertexContainerHGeometry.Polygon.Simple
VertexFormHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
VertexIxHGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph, HGeometry.Polygon, HGeometry.Polygon
VertexTypeHGeometry.Polygon.Triangulation.MakeMonotone
VerticalIpe.Attributes, Ipe
VerticalAlignmentIpe.Attributes, Ipe
verticalLineHGeometry, HGeometry.Line.Class, HGeometry.Line, HGeometry.Kernel
VerticalLineThroughHGeometry.Line.General
VerticalOrLineEQHGeometry.Line.General
VerticalRayShootingStructureHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
verticalRayShootingStructureHGeometry.VerticalRayShooting.PersistentSweep, HGeometry.VerticalRayShooting
verticalSideTestHGeometry.HyperPlane.Class, HGeometry.HyperPlane.NonVertical, HGeometry.HyperPlane
verticesHGeometry.PolyLine, HGeometry.Polygon.Class, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.Polygon
View 
1 (Type/Class)Ipe.Types, Ipe
2 (Data Constructor)Ipe.Types, Ipe
ViewL1HGeometry.Sequence.NonEmpty
viewl1HGeometry.Sequence.NonEmpty
ViewNumberIpe.IpeToIpe
viewNumberIpe.IpeRender
viewPlaneDepthHGeometry.Graphics.Camera
Viewport 
1 (Type/Class)HGeometry.Viewport
2 (Data Constructor)HGeometry.Viewport
viewPortHGeometry.Viewport
ViewR1HGeometry.Sequence.NonEmpty
viewr1HGeometry.Sequence.NonEmpty
viewsIpe.Types, Ipe
viewUpHGeometry.Graphics.Camera
violetIpe.Color
visibilityGraphHGeometry.Polygon.Visibility.Naive
visibilityGraphWithHGeometry.Polygon.Visibility.Naive
VoronoiDiagram 
1 (Type/Class)HGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
2 (Data Constructor)HGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
voronoiDiagramHGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
VoronoiDiagram'HGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
voronoiVerticesHGeometry.VoronoiDiagram.ViaLowerEnvelope, HGeometry.VoronoiDiagram
vtxColourPLY.Writer
wComponentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
wCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
WestHGeometry.Direction
westHGeometry, HGeometry.Box, HGeometry.Kernel
WheelDirectionHGeometry.Miso.Event.Extra
whiteIpe.Color
WidthIpe.Attributes, Ipe
width 
1 (Function)HGeometry, HGeometry.Box.Class, HGeometry.Box, HGeometry.Kernel
2 (Function)Ipe.Content, Ipe.Types, Ipe
WidthSym0Ipe.Attributes, Ipe
WindIpe.Attributes, Ipe
withAtsHGeometry.Miso.Svg, HGeometry.Svg
withAts'HGeometry.Miso.Svg, HGeometry.Svg
withCanvasEventsHGeometry.Miso.Svg.Canvas
withDefaultsIpe.Types, Ipe
WithIndex 
1 (Type/Class)HGeometry.Indexed
2 (Data Constructor)HGeometry.Indexed
withNeighboursHGeometry.Sequence.Alternating
withOrdHGeometry.Ord.Dynamic
WorldOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph, HGeometry.PlaneGraph
worldToHostHGeometry.Viewport
worldToViewHGeometry.Graphics.Camera
writeAttrNamesIpe.Attributes, Ipe
writeAttrValuesIpe.Writer
writeIpeFileIpe.Writer, Ipe
writeIpeFile'Ipe.Writer, Ipe
writeIpeFileAsPdfIpe.IpeToIpe
writeIpePageIpe.Writer, Ipe
wrtCenterHGeometry.Viewport
xComponentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
xCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
xCoordAtHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
XMLIpe.IpeToIpe
xmlLiteralIpe.Literal
yComponentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
yCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
yCoordAtHGeometry, HGeometry.LineSegment.Class, HGeometry.LineSegment, HGeometry.Kernel
yellowIpe.Color
YesIpe.Attributes, Ipe
YMonotonePolygon_HGeometry.Polygon.Triangulation.TriangulateMonotone
ZHGeometry.GeoJSON
zComponentHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
zCoordHGeometry, HGeometry.Kernel, HGeometry.Point.Class, HGeometry.Point
zeroHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
ZeroToOne 
1 (Type/Class)HGeometry.Kernel.Test.Box
2 (Data Constructor)HGeometry.Kernel.Test.Box
ZipIpe.IpeToIpe
zipExactWithHGeometry.Tree.Binary.Static
Zipper 
1 (Type/Class)HGeometry.List.Zipper
2 (Data Constructor)HGeometry.List.Zipper
3 (Type/Class)HGeometry.Tree.Util
4 (Data Constructor)HGeometry.Tree.Util
zipRecsWithIpe.Attributes, Ipe
ZMHGeometry.GeoJSON
ZoomAction 
1 (Type/Class)HGeometry.Miso.Canvas.Zoom
2 (Data Constructor)HGeometry.Miso.Canvas.Zoom
ZoomConfig 
1 (Type/Class)HGeometry.Viewport
2 (Data Constructor)HGeometry.Viewport
ZoomDirectionHGeometry.Miso.Canvas.Zoom
ZoomInHGeometry.Miso.Canvas.Zoom
zoomLevelHGeometry.Miso.Canvas.Zoom
ZoomOutHGeometry.Miso.Canvas.Zoom
^*HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
^+^HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
^-^HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
^/HGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
_AlternatingHGeometry.Line.LowerEnvelope
_anchorPointHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
_ArcSegmentIpe.Path
_ArcToIpe.Path
_arrowNameIpe.Attributes, Ipe
_arrowSizeIpe.Attributes, Ipe
_asClosedLineSegmentIpe.FromIpe, Ipe
_asConvexPolygonIpe.FromIpe, Ipe
_asLineSegmentIpe.FromIpe, Ipe
_asPointIpe.FromIpe, Ipe
_asPolygonalDomainIpe.FromIpe, Ipe
_asPolyLineIpe.FromIpe, Ipe
_asRectangleIpe.FromIpe, Ipe
_asSimplePolygonIpe.FromIpe, Ipe
_asTriangleIpe.FromIpe, Ipe
_AttrIpe.Attributes, Ipe
_BallSphereHGeometry.Ball.CenterAndRadius, HGeometry.Ball
_BottomHGeometry.Unbounded
_BottomMaybeHGeometry.Unbounded
_BoundaryHGeometry.Boundary
_ClosedSplineIpe.Path
_ClosedSplineSegmentIpe.Path
_ClosePathIpe.Path
_ConvexPolygonHGeometry.Polygon.Convex
_coreHGeometry.Ext
_CubicBezierSegmentIpe.Path
_CurveToIpe.Path
_directionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
_DiskCircleHGeometry.Ball.CenterAndRadius, HGeometry.Ball
_EllipseIpe.Path
_EllipseCircleHGeometry.Ellipse
_EllipseSegmentIpe.Path
_endPointHGeometry.Interval.EndPoint, HGeometry.Interval.Class, HGeometry.Interval
_ExtHGeometry.Ext
_extraHGeometry.Ext
_GeoPolygonPolygonalDomainHGeometry.GeoJSON
_GeoPositionWithoutCRSHGeometry.GeoJSON
_getAttrIpe.Attributes, Ipe
_IpeGroupIpe.Content, Ipe.Types, Ipe
_IpeImageIpe.Content, Ipe.Types, Ipe
_IpeMiniPageIpe.Content, Ipe.Types, Ipe
_IpePathIpe.Content, Ipe.Types, Ipe
_IpeTextLabelIpe.Content, Ipe.Types, Ipe
_IpeUseIpe.Content, Ipe.Types, Ipe
_LineToIpe.Path
_MoveToIpe.Path
_PolygonPathIpe.Path
_PolyLineFHGeometry.PolyLine
_PolyLineLineSegmentHGeometry.PolyLine.Class, HGeometry.PolyLine
_PolyLineSegmentIpe.Path
_QCurveToIpe.Path
_QuadraticBezierSegmentIpe.Path
_SplineIpe.Path
_SplineSegmentIpe.Path
_TopHGeometry.Unbounded
_TopMaybeHGeometry.Unbounded
_TreeNodeEitherHGeometry.Tree.Util
_UncheckedConvexPolygonHGeometry.Polygon.Convex
_unUnBoundedHGeometry.Unbounded
_ValHGeometry.Unbounded
_ValBHGeometry.Unbounded
_ValTHGeometry.Unbounded
_VectorHGeometry, HGeometry.Kernel, HGeometry.Vector.Class, HGeometry.Vector
_withAttrsIpe.FromIpe, Ipe
|.|HGeometry.Transformation
|>>HGeometry.Sequence.NonEmpty
\ No newline at end of file diff --git a/haddocks/doc-index-T.html b/haddocks/doc-index-T.html index a46beaf08..2c27a1bb7 100644 --- a/haddocks/doc-index-T.html +++ b/haddocks/doc-index-T.html @@ -1 +1 @@ - (Index - T)
 

Index - T

tailOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
takeAttrIpe.Attributes, Ipe
Term 
1 (Type/Class)HGeometry.Number.Real.Symbolic
2 (Data Constructor)HGeometry.Number.Real.Symbolic
termHGeometry.Number.Real.Symbolic
TeXStyleIpe.Attributes, Ipe
TextAttributesIpe.Attributes, Ipe
TextLabelIpe.Content, Ipe.Types, Ipe
TextLabelAttributesIpe.Attributes, Ipe
TextSizeUnitIpe.Attributes, Ipe
theHolesHGeometry.Polygon.WithHoles
theValueHGeometry.Indexed
theViewportHGeometry.Miso.Svg.Canvas
Three 
1 (Data Constructor)HGeometry.Combinatorial.Util
2 (Type/Class)HGeometry.Combinatorial.Util
TilingIpe.Attributes, Ipe
TilingSym0Ipe.Attributes, Ipe
toBarricentricHGeometry.Triangle.Class, HGeometry.Triangle
toConvexPolygonInHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
toCounterClockwiseTriangleHGeometry.Triangle.Class, HGeometry.Triangle
toCycleRepHGeometry.Permutation
toCyclicHGeometry.Polygon.Simple
toFixedHGeometry.Number.Real.Rational
toggleHGeometry.Set.Util
toggleByHGeometry.Set.Util
toHostFromHGeometry.Viewport
toIpeSelectionXMLIpe.Writer, Ipe
toIpeXMLIpe.Writer, Ipe
toLinearFunctionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
ToObjectIpe.Content, Ipe.Types, Ipe
Top 
1 (Type/Class)HGeometry.Unbounded
2 (Data Constructor)HGeometry.Unbounded
toPlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
TopLeftHGeometry, HGeometry.Kernel, HGeometry.Point
toPolygonPathSegmentIpe.IpeOut, Ipe
TopRightHGeometry, HGeometry.Kernel, HGeometry.Point
topSideHGeometry, HGeometry.Box, HGeometry.Kernel
topToMaybeHGeometry.Unbounded
toRoseTreeHGeometry.Tree.Binary.Static
toRoseTree'HGeometry.Tree.Binary.Static
toSimplePolygon 
1 (Function)HGeometry.Polygon.Monotone
2 (Function)HGeometry.Polygon.Convex
ToSvgCoordinateHGeometry.Miso.Svg.StaticCanvas
toTermsHGeometry.Number.Real.Symbolic
toTriangulatedPlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
toVecHGeometry, HGeometry.Kernel, HGeometry.Point.PointF, HGeometry.Point
toViewPortHGeometry.Graphics.Camera
toWorldInHGeometry.Viewport
Transformation 
1 (Type/Class)HGeometry.Transformation
2 (Data Constructor)HGeometry.Transformation
TransformationConstraintsHGeometry.Transformation
transformationMatrixHGeometry.Transformation
TransformationsIpe.Attributes, Ipe
TransformationsSym0Ipe.Attributes, Ipe
TransformationTypesIpe.Attributes, Ipe
transformByHGeometry.Transformation
translateByHGeometry.Transformation
translationHGeometry.Transformation
TranslationsIpe.Attributes, Ipe
transparentIpe.IpeRender
TransparentBackgroundIpe.IpeRender
traverseAttrIpe.Attributes, Ipe
traverseAttrsIpe.Attributes, Ipe
traverseIpeAttrsIpe.Content, Ipe.Types, Ipe
traverseLeftFromHGeometry.Cyclic
traverseRightFromHGeometry.Cyclic
TreeNodeHGeometry.Tree.Util
Triangle 
1 (Type/Class)HGeometry.Triangle
2 (Data Constructor)HGeometry.Triangle
triangleSamplerHGeometry.Polygon.Simple.Sample
triangleSignedArea2XHGeometry.Triangle.Class, HGeometry.Triangle
Triangle_ 
1 (Type/Class)HGeometry.Triangle.Class, HGeometry.Triangle
2 (Data Constructor)HGeometry.Triangle.Class, HGeometry.Triangle
triangulate 
1 (Function)HGeometry.Polygon.Triangulation.TriangulateMonotone
2 (Function)HGeometry.Polygon.Triangulation
turquoiseIpe.Color
twinDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
twinOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Two 
1 (Data Constructor)HGeometry.Combinatorial.Util
2 (Type/Class)HGeometry.Combinatorial.Util
\ No newline at end of file + (Index - T)
 

Index - T

tailOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
takeAttrIpe.Attributes, Ipe
Term 
1 (Type/Class)HGeometry.Number.Real.Symbolic
2 (Data Constructor)HGeometry.Number.Real.Symbolic
termHGeometry.Number.Real.Symbolic
TeXStyleIpe.Attributes, Ipe
TextAttributesIpe.Attributes, Ipe
TextLabelIpe.Content, Ipe.Types, Ipe
TextLabelAttributesIpe.Attributes, Ipe
TextSizeUnitIpe.Attributes, Ipe
theHolesHGeometry.Polygon.WithHoles
theValueHGeometry.Indexed
theViewportHGeometry.Miso.Svg.Canvas
Three 
1 (Data Constructor)HGeometry.Combinatorial.Util
2 (Type/Class)HGeometry.Combinatorial.Util
TilingIpe.Attributes, Ipe
TilingSym0Ipe.Attributes, Ipe
toBarricentricHGeometry.Triangle.Class, HGeometry.Triangle
toConvexPolygonInHGeometry.Plane.LowerEnvelope.Connected, HGeometry.Plane.LowerEnvelope
toCounterClockwiseTriangleHGeometry.Triangle.Class, HGeometry.Triangle
toCycleRepHGeometry.Permutation
toCyclicHGeometry.Polygon.Simple
toFixedHGeometry.Number.Real.Rational
toggleHGeometry.Set.Util
toggleByHGeometry.Set.Util
toHostFromHGeometry.Viewport
toIpeSelectionXMLIpe.Writer, Ipe
toIpeXMLIpe.Writer, Ipe
toLinearFunctionHGeometry, HGeometry.Line.PointAndVector, HGeometry.Line, HGeometry.Kernel
ToObjectIpe.Content, Ipe.Types, Ipe
Top 
1 (Type/Class)HGeometry.Unbounded
2 (Data Constructor)HGeometry.Unbounded
toPlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
TopLeftHGeometry, HGeometry.Kernel, HGeometry.Point
toPolygonalDomainIpe.FromIpe
toPolygonPathSegmentIpe.IpeOut, Ipe
TopRightHGeometry, HGeometry.Kernel, HGeometry.Point
topSideHGeometry, HGeometry.Box, HGeometry.Kernel
topToMaybeHGeometry.Unbounded
toRoseTreeHGeometry.Tree.Binary.Static
toRoseTree'HGeometry.Tree.Binary.Static
toSimplePolygon 
1 (Function)HGeometry.Polygon.Monotone
2 (Function)HGeometry.Polygon.Convex
ToSvgCoordinateHGeometry.Miso.Svg.StaticCanvas
toTermsHGeometry.Number.Real.Symbolic
toTriangulatedPlaneGraph'HGeometry.Plane.LowerEnvelope.Connected.Graph
toVecHGeometry, HGeometry.Kernel, HGeometry.Point.PointF, HGeometry.Point
toViewPortHGeometry.Graphics.Camera
toWorldInHGeometry.Viewport
Transformation 
1 (Type/Class)HGeometry.Transformation
2 (Data Constructor)HGeometry.Transformation
TransformationConstraintsHGeometry.Transformation
transformationMatrixHGeometry.Transformation
TransformationsIpe.Attributes, Ipe
TransformationsSym0Ipe.Attributes, Ipe
TransformationTypesIpe.Attributes, Ipe
transformByHGeometry.Transformation
translateByHGeometry.Transformation
translationHGeometry.Transformation
TranslationsIpe.Attributes, Ipe
transparentIpe.IpeRender
TransparentBackgroundIpe.IpeRender
traverseAttrIpe.Attributes, Ipe
traverseAttrsIpe.Attributes, Ipe
traverseIpeAttrsIpe.Content, Ipe.Types, Ipe
traverseLeftFromHGeometry.Cyclic
traverseRightFromHGeometry.Cyclic
TreeNodeHGeometry.Tree.Util
Triangle 
1 (Type/Class)HGeometry.Triangle
2 (Data Constructor)HGeometry.Triangle
triangleSamplerHGeometry.Polygon.Simple.Sample
triangleSignedArea2XHGeometry.Triangle.Class, HGeometry.Triangle
Triangle_ 
1 (Type/Class)HGeometry.Triangle.Class, HGeometry.Triangle
2 (Data Constructor)HGeometry.Triangle.Class, HGeometry.Triangle
triangulate 
1 (Function)HGeometry.Polygon.Triangulation.TriangulateMonotone
2 (Function)HGeometry.Polygon.Triangulation
turquoiseIpe.Color
twinDartOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
twinOfHGeometry.PlaneGraph.Connected, HGeometry.PlaneGraph
Two 
1 (Data Constructor)HGeometry.Combinatorial.Util
2 (Type/Class)HGeometry.Combinatorial.Util
\ No newline at end of file diff --git a/haddocks/doc-index.json b/haddocks/doc-index.json index 8b87020c8..ff8234b86 100644 --- a/haddocks/doc-index.json +++ b/haddocks/doc-index.json @@ -1 +1 @@ -[{"display_html":"class HasVector point point' where","name":"HasVector vector","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasVector"},{"display_html":"generate :: forall vector (d :: Nat) r. Vector_ vector d r => (Int -> r) -> vector","name":"generate","module":"HGeometry","link":"hgeometry/HGeometry.html#v:generate"},{"display_html":"unit :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => vector","name":"unit","module":"HGeometry","link":"hgeometry/HGeometry.html#v:unit"},{"display_html":"size :: forall box (d :: Nat) point r. (Box_ box point, Point_ point d r, Num r, Functor (Vector d)) => box -> Vector d r","name":"size","module":"HGeometry","link":"hgeometry/HGeometry.html#v:size"},{"display_html":"data family Vector (d :: Nat) r","name":"Vector Vector2 MkVector1 MkVector2 MkVector3 MkVector4 Vector1 Vector3 Vector4","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Vector"},{"display_html":"head :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"head","module":"HGeometry","link":"hgeometry/HGeometry.html#v:head"},{"display_html":"uncons :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, 0 <= ((d + 1) - 1), d <= Dimension vector) => vector -> (r, vector')","name":"uncons","module":"HGeometry","link":"hgeometry/HGeometry.html#v:uncons"},{"display_html":"unsnoc :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, d <= ((d + 1) - 1), d <= Dimension vector) => vector -> (vector', r)","name":"unsnoc","module":"HGeometry","link":"hgeometry/HGeometry.html#v:unsnoc"},{"display_html":"last :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"last","module":"HGeometry","link":"hgeometry/HGeometry.html#v:last"},{"display_html":"cons :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => r -> vector -> vector'","name":"cons","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cons"},{"display_html":"snoc :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => vector -> r -> vector'","name":"snoc","module":"HGeometry","link":"hgeometry/HGeometry.html#v:snoc"},{"display_html":"class HasComponents vector vector' where","name":"HasComponents components","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasComponents"},{"display_html":"zero :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector","name":"zero","module":"HGeometry","link":"hgeometry/HGeometry.html#v:zero"},{"display_html":"class Additive_ vector d r => Metric_ vector (d :: Nat) r where","name":"Metric_ dot norm qd quadrance signorm","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Metric_"},{"display_html":"data SideTestUpDown","name":"SideTestUpDown On Above Below","module":"HGeometry","link":"hgeometry/HGeometry.html#t:SideTestUpDown"},{"display_html":"type Point (d :: Nat) r = PointF (Vector d r)","name":"Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Point"},{"display_html":"newtype PointF v where","name":"PointF Point Point1 Point2 Point3 Point4 toVec","module":"HGeometry","link":"hgeometry/HGeometry.html#t:PointF"},{"display_html":"prefix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"prefix","module":"HGeometry","link":"hgeometry/HGeometry.html#v:prefix"},{"display_html":"data Box point where","name":"Box Box Rectangle","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Box"},{"display_html":"class HasDirection t where","name":"HasDirection direction","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasDirection"},{"display_html":"component :: forall (i :: Natural) vector r (d :: Natural). (i <= (d - 1), KnownNat i, Vector_ vector d r) => IndexedLens' Int vector r","name":"component","module":"HGeometry","link":"hgeometry/HGeometry.html#v:component"},{"display_html":"negated :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> vector","name":"negated","module":"HGeometry","link":"hgeometry/HGeometry.html#v:negated"},{"display_html":"(*^) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => r -> vector -> vector","name":"*^","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-42--94-"},{"display_html":"(^*) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> r -> vector","name":"^*","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-94--42-"},{"display_html":"(^/) :: forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector","name":"^/","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-94--47-"},{"display_html":"basis :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => [vector]","name":"basis","module":"HGeometry","link":"hgeometry/HGeometry.html#v:basis"},{"display_html":"sumV :: forall f vector (d :: Nat) r. (Foldable f, Additive_ vector d r, Num r) => f vector -> vector","name":"sumV","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sumV"},{"display_html":"(^+^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^+^","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-94--43--94-"},{"display_html":"(^-^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^-^","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-94--45--94-"},{"display_html":"lerp :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => r -> vector -> vector -> vector","name":"lerp","module":"HGeometry","link":"hgeometry/HGeometry.html#v:lerp"},{"display_html":"liftI2 :: forall vector (d :: Nat) r. Additive_ vector d r => (r -> r -> r) -> vector -> vector -> vector","name":"liftI2","module":"HGeometry","link":"hgeometry/HGeometry.html#v:liftI2"},{"display_html":"class Vector_ vector d r => Additive_ vector (d :: Nat) r where","name":"Additive_ liftU2 liftI2A","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Additive_"},{"display_html":"class Point_ point d r => ConstructablePoint_ point (d :: Nat) r where","name":"ConstructablePoint_ fromVector","module":"HGeometry","link":"hgeometry/HGeometry.html#t:ConstructablePoint_"},{"display_html":"cross :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r","name":"cross","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cross"},{"display_html":"origin :: forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point","name":"origin","module":"HGeometry","link":"hgeometry/HGeometry.html#v:origin"},{"display_html":"class (Additive_ (Vector d r) d r, HasCoordinates point point, d ~ Dimension point, r ~ NumType point) => Affine_ point (d :: Nat) r | point -> d, point -> r where","name":"Affine_ .+^ .-. .-^","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Affine_"},{"display_html":"class (HasMinPoint box point, HasMaxPoint box point, Point_ point (Dimension box) (NumType box)) => Box_ box point | box -> point where","name":"Box_ extent","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Box_"},{"display_html":"data LineSegment (endPoint :: Type -> Type) point where","name":"LineSegment LineSegment ClosedLineSegment OpenLineSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineSegment"},{"display_html":"data LinePV (d :: Nat) r = LinePV {}","name":"LinePV LinePV _anchorPoint _direction","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LinePV"},{"display_html":"centerPoint :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, Fractional r) => box -> point","name":"centerPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#v:centerPoint"},{"display_html":"height :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, 2 <= d, Functor (Vector d), Num r) => box -> r","name":"height","module":"HGeometry","link":"hgeometry/HGeometry.html#v:height"},{"display_html":"width :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, 1 <= d, Functor (Vector d), Num r) => box -> r","name":"width","module":"HGeometry","link":"hgeometry/HGeometry.html#v:width"},{"display_html":"corners :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Corners point","name":"corners","module":"HGeometry","link":"hgeometry/HGeometry.html#v:corners"},{"display_html":"cornersInDirection :: CardinalDirection -> Corners p -> Vector 2 p","name":"cornersInDirection","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cornersInDirection"},{"display_html":"northEast :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"northEast","module":"HGeometry","link":"hgeometry/HGeometry.html#v:northEast"},{"display_html":"northWest :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"northWest","module":"HGeometry","link":"hgeometry/HGeometry.html#v:northWest"},{"display_html":"southEast :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"southEast","module":"HGeometry","link":"hgeometry/HGeometry.html#v:southEast"},{"display_html":"southWest :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"southWest","module":"HGeometry","link":"hgeometry/HGeometry.html#v:southWest"},{"display_html":"fromExtent :: forall vector (d :: Nat) interval r. (Vector_ vector d interval, ClosedInterval_ interval r, Has_ Additive_ d r, Has_ Vector_ d interval, HasComponents (Vector d interval) (Vector d r)) => vector -> Box (Point d r)","name":"fromExtent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:fromExtent"},{"display_html":"bottomSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"bottomSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:bottomSide"},{"display_html":"east :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"east","module":"HGeometry","link":"hgeometry/HGeometry.html#v:east"},{"display_html":"leftSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"leftSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:leftSide"},{"display_html":"north :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"north","module":"HGeometry","link":"hgeometry/HGeometry.html#v:north"},{"display_html":"rightSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"rightSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:rightSide"},{"display_html":"sideDirections :: Sides CardinalDirection","name":"sideDirections","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sideDirections"},{"display_html":"sideValues :: (Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides r","name":"sideValues","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sideValues"},{"display_html":"sides :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point)","name":"sides","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sides"},{"display_html":"sides' :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point)","name":"sides'","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sides-39-"},{"display_html":"south :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"south","module":"HGeometry","link":"hgeometry/HGeometry.html#v:south"},{"display_html":"topSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"topSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:topSide"},{"display_html":"west :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"west","module":"HGeometry","link":"hgeometry/HGeometry.html#v:west"},{"display_html":"horizontalLine :: forall r line. (Line_ line 2 r, Num r) => r -> line","name":"horizontalLine","module":"HGeometry","link":"hgeometry/HGeometry.html#v:horizontalLine"},{"display_html":"lineThrough :: forall line point (d :: Nat) r. (Line_ line d r, Point_ point d r, Num r) => point -> point -> line","name":"lineThrough","module":"HGeometry","link":"hgeometry/HGeometry.html#v:lineThrough"},{"display_html":"verticalLine :: forall r line. (Line_ line 2 r, Num r) => r -> line","name":"verticalLine","module":"HGeometry","link":"hgeometry/HGeometry.html#v:verticalLine"},{"display_html":"evalAt' :: Num r => r -> LineEQ r -> r","name":"evalAt'","module":"HGeometry","link":"hgeometry/HGeometry.html#v:evalAt-39-"},{"display_html":"type NVLine2_ line r = (Line_ line 2 r, NonVerticalHyperPlane_ line 2 r)","name":"NVLine2_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:NVLine2_"},{"display_html":"pattern NVLine2_ :: NonVerticalHyperPlane_ line 2 r => r -> r -> line","name":"NVLine2_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:NVLine2_"},{"display_html":"intercept :: NonVerticalHyperPlane_ line 2 r => Lens' line r","name":"intercept","module":"HGeometry","link":"hgeometry/HGeometry.html#v:intercept"},{"display_html":"slope :: NonVerticalHyperPlane_ line 2 r => Lens' line r","name":"slope","module":"HGeometry","link":"hgeometry/HGeometry.html#v:slope"},{"display_html":"anchorPoint :: forall (d :: Nat) r f. Functor f => (Point d r -> f (Point d r)) -> LinePV d r -> f (LinePV d r)","name":"anchorPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#v:anchorPoint"},{"display_html":"bisector :: (Fractional r, Point_ point 2 r) => point -> point -> LinePV 2 r","name":"bisector","module":"HGeometry","link":"hgeometry/HGeometry.html#v:bisector"},{"display_html":"cmpSlope :: (Num r, Ord r) => LinePV 2 r -> LinePV 2 r -> Ordering","name":"cmpSlope","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cmpSlope"},{"display_html":"fromLinearFunction :: Num r => r -> r -> LinePV 2 r","name":"fromLinearFunction","module":"HGeometry","link":"hgeometry/HGeometry.html#v:fromLinearFunction"},{"display_html":"isIdenticalTo :: forall (d :: Nat) r. Eq (Vector d r) => LinePV d r -> LinePV d r -> Bool","name":"isIdenticalTo","module":"HGeometry","link":"hgeometry/HGeometry.html#v:isIdenticalTo"},{"display_html":"isPerpendicularTo :: (Num r, Eq r) => Vector 2 r -> LinePV 2 r -> Bool","name":"isPerpendicularTo","module":"HGeometry","link":"hgeometry/HGeometry.html#v:isPerpendicularTo"},{"display_html":"leftHalfPlane :: (Num r, Ord r) => LinePV 2 r -> HalfSpaceF (LinePV 2 r)","name":"leftHalfPlane","module":"HGeometry","link":"hgeometry/HGeometry.html#v:leftHalfPlane"},{"display_html":"liesAbove :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool","name":"liesAbove","module":"HGeometry","link":"hgeometry/HGeometry.html#v:liesAbove"},{"display_html":"liesBelow :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool","name":"liesBelow","module":"HGeometry","link":"hgeometry/HGeometry.html#v:liesBelow"},{"display_html":"onSide :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> SideTest","name":"onSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:onSide"},{"display_html":"perpendicularTo :: Num r => LinePV 2 r -> LinePV 2 r","name":"perpendicularTo","module":"HGeometry","link":"hgeometry/HGeometry.html#v:perpendicularTo"},{"display_html":"rightHalfPlane :: (Num r, Ord r) => LinePV 2 r -> HalfSpaceF (LinePV 2 r)","name":"rightHalfPlane","module":"HGeometry","link":"hgeometry/HGeometry.html#v:rightHalfPlane"},{"display_html":"toLinearFunction :: (Fractional r, Ord r) => LinePV 2 r -> Maybe (LineEQ r)","name":"toLinearFunction","module":"HGeometry","link":"hgeometry/HGeometry.html#v:toLinearFunction"},{"display_html":"class (IntervalLike_ lineSegment point, Point_ point (Dimension lineSegment) (NumType lineSegment)) => LineSegment_ lineSegment point | lineSegment -> point","name":"LineSegment_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineSegment_"},{"display_html":"pattern LineSegment_ :: LineSegment_ lineSegment point => point -> point -> lineSegment","name":"LineSegment_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:LineSegment_"},{"display_html":"interpolate :: forall lineSegment (d :: Nat) point r. (Fractional r, LineSegment_ lineSegment point, ConstructablePoint_ point d r) => r -> lineSegment -> point","name":"interpolate","module":"HGeometry","link":"hgeometry/HGeometry.html#v:interpolate"},{"display_html":"ordAtX :: (Num r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> lineSegment -> Ordering","name":"ordAtX","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ordAtX"},{"display_html":"ordAtY :: (Num r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> lineSegment -> Ordering","name":"ordAtY","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ordAtY"},{"display_html":"orientBT :: forall lineSegment point (d :: Nat) r. (LineSegment_ lineSegment point, Point_ point d r, 2 <= d, Ord r) => lineSegment -> lineSegment","name":"orientBT","module":"HGeometry","link":"hgeometry/HGeometry.html#v:orientBT"},{"display_html":"orientLR :: forall lineSegment point (d :: Nat) r. (LineSegment_ lineSegment point, Point_ point d r, 1 <= d, Ord r) => lineSegment -> lineSegment","name":"orientLR","module":"HGeometry","link":"hgeometry/HGeometry.html#v:orientLR"},{"display_html":"xCoordAt :: (Fractional r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> r","name":"xCoordAt","module":"HGeometry","link":"hgeometry/HGeometry.html#v:xCoordAt"},{"display_html":"yCoordAt :: (Fractional r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> r","name":"yCoordAt","module":"HGeometry","link":"hgeometry/HGeometry.html#v:yCoordAt"},{"display_html":"spanIn :: forall point (d :: Nat) r (endPoint :: Type -> Type). (Point_ point d r, Ord r, IxValue (endPoint point) ~ point, EndPoint_ (endPoint point)) => Getter point r -> LineSegment endPoint point -> Interval AnEndPoint r","name":"spanIn","module":"HGeometry","link":"hgeometry/HGeometry.html#v:spanIn"},{"display_html":"asPoint :: forall point (d :: Nat) r. Point_ point d r => Lens' point (Point d r)","name":"asPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#v:asPoint"},{"display_html":"projectPoint :: forall (i :: Nat) point (d :: Nat) r. (Point_ point d r, i <= d, Has_ Vector_ i r) => point -> Point i r","name":"projectPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#v:projectPoint"},{"display_html":"pattern Point1_ :: Point_ point 1 r => r -> point","name":"Point1_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:Point1_"},{"display_html":"pattern Point2_ :: Point_ point 2 r => r -> r -> point","name":"Point2_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:Point2_"},{"display_html":"pattern Point3_ :: Point_ point 3 r => r -> r -> r -> point","name":"Point3_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:Point3_"},{"display_html":"pattern Point4_ :: Point_ point 4 r => r -> r -> r -> r -> point","name":"Point4_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:Point4_"},{"display_html":"coord :: forall (i :: Natural) point (d :: Natural) r. (1 <= i, i <= d, KnownNat i, Point_ point d r) => IndexedLens' Int point r","name":"coord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:coord"},{"display_html":"dCoord :: forall point (d :: Natural) r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"dCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:dCoord"},{"display_html":"pointFromList :: forall point (d :: Nat) r. (ConstructablePoint_ point d r, Vector_ (Vector d r) d r) => [r] -> Maybe point","name":"pointFromList","module":"HGeometry","link":"hgeometry/HGeometry.html#v:pointFromList"},{"display_html":"wCoord :: forall (d :: Natural) point r. (4 <= d, Point_ point d r) => IndexedLens' Int point r","name":"wCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:wCoord"},{"display_html":"xCoord :: forall (d :: Natural) point r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"xCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:xCoord"},{"display_html":"yCoord :: forall (d :: Natural) point r. (2 <= d, Point_ point d r) => IndexedLens' Int point r","name":"yCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:yCoord"},{"display_html":"zCoord :: forall (d :: Natural) point r. (3 <= d, Point_ point d r) => IndexedLens' Int point r","name":"zCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:zCoord"},{"display_html":"cmpByDistanceTo :: forall r point (d :: Nat) center. (Ord r, Num r, Point_ point d r, Point_ center d r, Metric_ (Vector d r) d r) => center -> point -> point -> Ordering","name":"cmpByDistanceTo","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cmpByDistanceTo"},{"display_html":"euclideanDist :: forall r point (d :: Nat). (Radical r, Point_ point d r, Metric_ (Vector d r) d r) => point -> point -> r","name":"euclideanDist","module":"HGeometry","link":"hgeometry/HGeometry.html#v:euclideanDist"},{"display_html":"squaredEuclideanDist :: forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r","name":"squaredEuclideanDist","module":"HGeometry","link":"hgeometry/HGeometry.html#v:squaredEuclideanDist"},{"display_html":"cmpInDirection :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cmpInDirection"},{"display_html":"ccw :: (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW","name":"ccw","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ccw"},{"display_html":"ccwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"ccwCmpAround","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ccwCmpAround"},{"display_html":"ccwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"ccwCmpAroundWith","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ccwCmpAroundWith"},{"display_html":"cwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"cwCmpAround","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cwCmpAround"},{"display_html":"cwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"cwCmpAroundWith","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cwCmpAroundWith"},{"display_html":"insertIntoCyclicOrder :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> CList point -> CList point","name":"insertIntoCyclicOrder","module":"HGeometry","link":"hgeometry/HGeometry.html#v:insertIntoCyclicOrder"},{"display_html":"isCoLinear :: (Point_ point 2 r, Num r, Eq r) => point -> point -> point -> Bool","name":"isCoLinear","module":"HGeometry","link":"hgeometry/HGeometry.html#v:isCoLinear"},{"display_html":"sortAround :: (Point_ center 2 r, Point_ point 2 r, Num r, Ord r) => center -> [point] -> [point]","name":"sortAround","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sortAround"},{"display_html":"partitionIntoQuadrants :: (Ord r, Point_ point 2 r) => point -> [point] -> ([point], [point], [point], [point])","name":"partitionIntoQuadrants","module":"HGeometry","link":"hgeometry/HGeometry.html#v:partitionIntoQuadrants"},{"display_html":"quadrant :: (Ord r, Num r, ConstructablePoint_ point 2 r) => point -> Quadrant","name":"quadrant","module":"HGeometry","link":"hgeometry/HGeometry.html#v:quadrant"},{"display_html":"quadrantWith :: (Ord r, Point_ point 2 r) => point -> point -> Quadrant","name":"quadrantWith","module":"HGeometry","link":"hgeometry/HGeometry.html#v:quadrantWith"},{"display_html":"isScalarMultipleOf :: forall r vector (d :: Nat). (Eq r, Num r, Metric_ vector d r) => vector -> vector -> Bool","name":"isScalarMultipleOf","module":"HGeometry","link":"hgeometry/HGeometry.html#v:isScalarMultipleOf"},{"display_html":"sameDirection :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r, Eq r) => vector -> vector -> Bool","name":"sameDirection","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sameDirection"},{"display_html":"scalarMultiple :: forall r vector (d :: Nat). (Eq r, Fractional r, Additive_ vector d r) => vector -> vector -> Maybe r","name":"scalarMultiple","module":"HGeometry","link":"hgeometry/HGeometry.html#v:scalarMultiple"},{"display_html":"foldMapZip :: forall vector (d :: Nat) r m. (Additive_ vector d r, Semigroup m) => (r -> r -> m) -> vector -> vector -> m","name":"foldMapZip","module":"HGeometry","link":"hgeometry/HGeometry.html#v:foldMapZip"},{"display_html":"suffix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"suffix","module":"HGeometry","link":"hgeometry/HGeometry.html#v:suffix"},{"display_html":"vectorFromList :: forall vector (d :: Nat) r. Vector_ vector d r => [r] -> Maybe vector","name":"vectorFromList","module":"HGeometry","link":"hgeometry/HGeometry.html#v:vectorFromList"},{"display_html":"wComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 4 <= d) => IndexedLens' Int vector r","name":"wComponent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:wComponent"},{"display_html":"xComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"xComponent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:xComponent"},{"display_html":"yComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 2 <= d) => IndexedLens' Int vector r","name":"yComponent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:yComponent"},{"display_html":"zComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 3 <= d) => IndexedLens' Int vector r","name":"zComponent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:zComponent"},{"display_html":"data HalfLineBoxIntersection point","name":"HalfLineBoxIntersection HalfLine_x_Box_LineSegment HalfLine_x_Box_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HalfLineBoxIntersection"},{"display_html":"data LineBoxIntersection (d :: Nat) r","name":"LineBoxIntersection Line_x_Box_LineSegment Line_x_Box_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineBoxIntersection"},{"display_html":"class IsBoxable g where","name":"IsBoxable boundingBox","module":"HGeometry","link":"hgeometry/HGeometry.html#t:IsBoxable"},{"display_html":"class HasMaxPoint box point | box -> point where","name":"HasMaxPoint maxPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasMaxPoint"},{"display_html":"class HasMinPoint box point | box -> point where","name":"HasMinPoint minPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasMinPoint"},{"display_html":"type Rectangle_ rectangle point = (Box_ rectangle point, Dimension rectangle ~ 2)","name":"Rectangle_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Rectangle_"},{"display_html":"data Corners a = Corners !a !a !a !a","name":"Corners Corners","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Corners"},{"display_html":"type Rectangle = Box","name":"Rectangle","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Rectangle"},{"display_html":"data Sides a = Sides !a !a !a !a","name":"Sides Sides","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Sides"},{"display_html":"type family EndPointOf interval","name":"EndPointOf","module":"HGeometry","link":"hgeometry/HGeometry.html#t:EndPointOf"},{"display_html":"class HasEnd seg p | seg -> p where","name":"HasEnd end","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasEnd"},{"display_html":"class HasEndPoint seg p | seg -> p where","name":"HasEndPoint endPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasEndPoint"},{"display_html":"class HasStart seg p | seg -> p where","name":"HasStart start","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasStart"},{"display_html":"class HasStartPoint seg p | seg -> p where","name":"HasStartPoint startPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasStartPoint"},{"display_html":"type family StartPointOf interval","name":"StartPointOf","module":"HGeometry","link":"hgeometry/HGeometry.html#t:StartPointOf"},{"display_html":"data AnEndPoint r where","name":"AnEndPoint AnEndPoint AnClosedE AnOpenE","module":"HGeometry","link":"hgeometry/HGeometry.html#t:AnEndPoint"},{"display_html":"newtype EndPoint (et :: EndPointType) r where","name":"EndPoint EndPoint ClosedE OpenE","module":"HGeometry","link":"hgeometry/HGeometry.html#t:EndPoint"},{"display_html":"class IsEndPoint endPoint endPoint => EndPoint_ endPoint where","name":"EndPoint_ endPointType mkEndPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:EndPoint_"},{"display_html":"class HasOnLine line (d :: Nat) | line -> d where","name":"HasOnLine onLine","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasOnLine"},{"display_html":"type Line2_ line r = (Line_ line 2 r, HyperPlane_ line 2 r)","name":"Line2_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Line2_"},{"display_html":"class Line_ line (d :: Nat) r | line -> d, line -> r where","name":"Line_ fromPointAndVec","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Line_"},{"display_html":"type LineLineIntersection line = LineLineIntersectionG (NumType line) line","name":"LineLineIntersection","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineLineIntersection"},{"display_html":"data LineLineIntersectionG r line","name":"LineLineIntersectionG Line_x_Line_Line Line_x_Line_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineLineIntersectionG"},{"display_html":"newtype LineEQ r where","name":"LineEQ LineEQ MkLineEQ","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineEQ"},{"display_html":"class HasSupportingLine t where","name":"HasSupportingLine supportingLine","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasSupportingLine"},{"display_html":"class OnSideUpDownTest t where","name":"OnSideUpDownTest onSideUpDown","module":"HGeometry","link":"hgeometry/HGeometry.html#t:OnSideUpDownTest"},{"display_html":"data SideTest","name":"SideTest LeftSide OnLine RightSide","module":"HGeometry","link":"hgeometry/HGeometry.html#t:SideTest"},{"display_html":"class (LineSegment_ lineSegment point, StartPointOf lineSegment ~ EndPoint 'Closed point, EndPointOf lineSegment ~ EndPoint 'Closed point) => ClosedLineSegment_ lineSegment point","name":"ClosedLineSegment_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:ClosedLineSegment_"},{"display_html":"class LineSegment_ lineSegment point => ConstructableLineSegment_ lineSegment point where","name":"ConstructableLineSegment_ mkLineSegment uncheckedLineSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:ConstructableLineSegment_"},{"display_html":"class HasOnSegment lineSegment (d :: Nat) | lineSegment -> d where","name":"HasOnSegment onSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasOnSegment"},{"display_html":"class (LineSegment_ lineSegment point, StartPointOf lineSegment ~ EndPoint 'Open point, EndPointOf lineSegment ~ EndPoint 'Open point) => OpenLineSegment_ lineSegment point","name":"OpenLineSegment_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:OpenLineSegment_"},{"display_html":"type ClosedLineSegment point = LineSegment (EndPoint 'Closed) point","name":"ClosedLineSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:ClosedLineSegment"},{"display_html":"type OpenLineSegment point = LineSegment (EndPoint 'Open) point","name":"OpenLineSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:OpenLineSegment"},{"display_html":"data HalfLineLineSegmentIntersection point segment","name":"HalfLineLineSegmentIntersection HalfLine_x_LineSegment_LineSegment HalfLine_x_LineSegment_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HalfLineLineSegmentIntersection"},{"display_html":"data LineLineSegmentIntersection lineSegment","name":"LineLineSegmentIntersection Line_x_LineSegment_LineSegment Line_x_LineSegment_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineLineSegmentIntersection"},{"display_html":"data LineSegmentLineSegmentIntersection lineSegment","name":"LineSegmentLineSegmentIntersection LineSegment_x_LineSegment_LineSegment LineSegment_x_LineSegment_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineSegmentLineSegmentIntersection"},{"display_html":"class (Has_ Vector_ (Dimension point) (NumType point), Has_ Vector_ (Dimension point') (NumType point'), HasComponents (Vector (Dimension point') (NumType point)) (Vector (Dimension point') (NumType point')), Dimension point ~ Dimension point', HasVector point point') => HasCoordinates point point' where","name":"HasCoordinates coordinates","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasCoordinates"},{"display_html":"class HasPoints s t point point' | s -> point, t -> point' where","name":"HasPoints allPoints","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasPoints"},{"display_html":"type HasPoints' s point = HasPoints s s point point","name":"HasPoints'","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasPoints-39-"},{"display_html":"class (Affine_ point d r, HasVector point point) => Point_ point (d :: Nat) r where","name":"Point_ coord'","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Point_"},{"display_html":"class Metric_ (Vector (Dimension g) (NumType g)) (Dimension g) (NumType g) => HasSquaredEuclideanDistance g where","name":"HasSquaredEuclideanDistance pointClosestTo pointClosestToWithDistance squaredEuclideanDistTo","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasSquaredEuclideanDistance"},{"display_html":"data CCW where","name":"CCW CCW CW CoLinear","module":"HGeometry","link":"hgeometry/HGeometry.html#t:CCW"},{"display_html":"data Quadrant","name":"Quadrant BottomLeft BottomRight TopLeft TopRight","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Quadrant"},{"display_html":"class (r ~ IxValue vector, s ~ IxValue vector', d ~ Dimension vector, d ~ Dimension vector') => AsVector_ vector vector' (d :: Nat) r s | vector -> d, vector -> r, vector' -> s where","name":"AsVector_ _Vector","module":"HGeometry","link":"hgeometry/HGeometry.html#t:AsVector_"},{"display_html":"type Has_ (c :: Type -> Nat -> Type -> k) (d :: Nat) r = c (Vector d r) d r","name":"Has_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Has_"},{"display_html":"class (HasComponents vector vector, AsVector_ vector vector d r r, KnownNat d) => Vector_ vector (d :: Nat) r where","name":"Vector_ component' generateA","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Vector_"},{"display_html":"newtype BezierSplineF (f :: Type -> Type) point where","name":"BezierSplineF Bezier2 Bezier3 BezierSpline","module":"HGeometry.BezierSpline","link":"hgeometry/HGeometry-BezierSpline.html#t:BezierSplineF"},{"display_html":"type BezierSpline = BezierSplineF NonEmptyVector","name":"BezierSpline","module":"HGeometry.BezierSpline","link":"hgeometry/HGeometry-BezierSpline.html#t:BezierSpline"},{"display_html":"type QuadraticBezier = BezierSplineF (Vector 3)","name":"QuadraticBezier","module":"HGeometry.BezierSpline","link":"hgeometry/HGeometry-BezierSpline.html#t:QuadraticBezier"},{"display_html":"type CubicBezier = BezierSplineF (Vector 4)","name":"CubicBezier","module":"HGeometry.BezierSpline","link":"hgeometry/HGeometry-BezierSpline.html#t:CubicBezier"},{"display_html":"closestPair :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> Vector 2 point","name":"closestPair","module":"HGeometry.ClosestPair.DivideAndConquer","link":"hgeometry/HGeometry-ClosestPair-DivideAndConquer.html#v:closestPair"},{"display_html":"type CP point = Top (SP (Two point) (NumType point))","name":"CP","module":"HGeometry.ClosestPair.DivideAndConquer","link":"hgeometry/HGeometry-ClosestPair-DivideAndConquer.html#t:CP"},{"display_html":"data CCP point = CCP (NonEmpty point) !(CP point)","name":"CCP CCP","module":"HGeometry.ClosestPair.DivideAndConquer","link":"hgeometry/HGeometry-ClosestPair-DivideAndConquer.html#t:CCP"},{"display_html":"mergePairs :: forall point r. (Ord r, Num r, Point_ point 2 r) => CP point -> NonEmpty point -> NonEmpty point -> CP point","name":"mergePairs","module":"HGeometry.ClosestPair.DivideAndConquer","link":"hgeometry/HGeometry-ClosestPair-DivideAndConquer.html#v:mergePairs"},{"display_html":"closestPair :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> Vector 2 point","name":"closestPair","module":"HGeometry.ClosestPair","link":"hgeometry/HGeometry-ClosestPair.html#v:closestPair"},{"display_html":"closestPair :: forall r point (d :: Nat) f. (Ord r, Num r, Point_ point d r, Foldable1 f, Has_ Metric_ d r) => f point -> Vector 2 point","name":"closestPair","module":"HGeometry.ClosestPair.Naive","link":"hgeometry/HGeometry-ClosestPair-Naive.html#v:closestPair"},{"display_html":"closestPairWith :: forall r point (d :: Nat) f. (Ord r, Point_ point d r, Foldable1 f) => DistanceFunction point -> f point -> SP (Vector 2 point) r","name":"closestPairWith","module":"HGeometry.ClosestPair.Naive","link":"hgeometry/HGeometry-ClosestPair-Naive.html#v:closestPairWith"},{"display_html":"type DistanceFunction g = g -> g -> NumType g","name":"DistanceFunction","module":"HGeometry.ClosestPair.Naive","link":"hgeometry/HGeometry-ClosestPair-Naive.html#t:DistanceFunction"},{"display_html":"data Camera r = Camera !(Point 3 r) !(Vector 3 r) !(Vector 3 r) !r !r !r !(Vector 2 r)","name":"Camera Camera","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#t:Camera"},{"display_html":"cameraPosition :: forall r f. Functor f => (Point 3 r -> f (Point 3 r)) -> Camera r -> f (Camera r)","name":"cameraPosition","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:cameraPosition"},{"display_html":"rawCameraNormal :: forall r f. Functor f => (Vector 3 r -> f (Vector 3 r)) -> Camera r -> f (Camera r)","name":"rawCameraNormal","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:rawCameraNormal"},{"display_html":"rawViewUp :: forall r f. Functor f => (Vector 3 r -> f (Vector 3 r)) -> Camera r -> f (Camera r)","name":"rawViewUp","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:rawViewUp"},{"display_html":"viewPlaneDepth :: forall r f. Functor f => (r -> f r) -> Camera r -> f (Camera r)","name":"viewPlaneDepth","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:viewPlaneDepth"},{"display_html":"nearDist :: forall r f. Functor f => (r -> f r) -> Camera r -> f (Camera r)","name":"nearDist","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:nearDist"},{"display_html":"farDist :: forall r f. Functor f => (r -> f r) -> Camera r -> f (Camera r)","name":"farDist","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:farDist"},{"display_html":"screenDimensions :: forall r f. Functor f => (Vector 2 r -> f (Vector 2 r)) -> Camera r -> f (Camera r)","name":"screenDimensions","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:screenDimensions"},{"display_html":"cameraNormal :: (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r)","name":"cameraNormal","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:cameraNormal"},{"display_html":"viewUp :: (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r)","name":"viewUp","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:viewUp"},{"display_html":"cameraTransform :: Fractional r => Camera r -> Transformation 3 r","name":"cameraTransform","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:cameraTransform"},{"display_html":"worldToView :: Fractional r => Camera r -> Transformation 3 r","name":"worldToView","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:worldToView"},{"display_html":"toViewPort :: Fractional r => Camera r -> Transformation 3 r","name":"toViewPort","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:toViewPort"},{"display_html":"perspectiveProjection :: Fractional r => Camera r -> Transformation 3 r","name":"perspectiveProjection","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:perspectiveProjection"},{"display_html":"rotateCoordSystem :: Num r => Camera r -> Transformation 3 r","name":"rotateCoordSystem","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:rotateCoordSystem"},{"display_html":"flipAxes :: Num r => Transformation 3 r","name":"flipAxes","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:flipAxes"},{"display_html":"data IntervalTree interval r","name":"IntervalTree","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#t:IntervalTree"},{"display_html":"createTree :: (Foldable f, Ord r) => f r -> IntervalTree interval r","name":"createTree","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:createTree"},{"display_html":"fromIntervals :: (Foldable f, Ord r, ClosedInterval_ interval r) => f interval -> IntervalTree interval r","name":"fromIntervals","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:fromIntervals"},{"display_html":"insert :: (Ord r, ClosedInterval_ interval r) => interval -> IntervalTree interval r -> IntervalTree interval r","name":"insert","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:insert"},{"display_html":"delete :: (Ord r, ClosedInterval_ interval r, Eq interval) => interval -> IntervalTree interval r -> IntervalTree interval r","name":"delete","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:delete"},{"display_html":"stab :: Ord r => r -> IntervalTree interval r -> [interval]","name":"stab","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:stab"},{"display_html":"search :: Ord r => r -> IntervalTree interval r -> [interval]","name":"search","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:search"},{"display_html":"listIntervals :: IntervalTree interval r -> [interval]","name":"listIntervals","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:listIntervals"},{"display_html":"intersections :: (Ord r, Fractional r, LineSegment_ lineSegment point, Eq lineSegment, Point_ point 2 r, IntersectConstraints lineSegment, Foldable f) => f lineSegment -> Intersections r lineSegment","name":"intersections","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:intersections"},{"display_html":"type Intersections r lineSegment = Map (Point 2 r) (Associated lineSegment)","name":"Intersections","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:Intersections"},{"display_html":"data Associated lineSegment","name":"Associated","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:Associated"},{"display_html":"startPointOf :: forall lineSegment f. Functor f => (Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"startPointOf","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:startPointOf"},{"display_html":"endPointOf :: forall lineSegment f. Functor f => (Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"endPointOf","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:endPointOf"},{"display_html":"interiorTo :: forall lineSegment f. Functor f => (Set (AroundIntersection lineSegment) -> f (Set (AroundIntersection lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"interiorTo","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:interiorTo"},{"display_html":"associatedSegments :: forall lineSegment f. (Contravariant f, Applicative f) => (lineSegment -> f lineSegment) -> Associated lineSegment -> f (Associated lineSegment)","name":"associatedSegments","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:associatedSegments"},{"display_html":"data AroundEnd a","name":"AroundEnd","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:AroundEnd"},{"display_html":"data AroundStart a","name":"AroundStart","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:AroundStart"},{"display_html":"data AroundIntersection a","name":"AroundIntersection","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:AroundIntersection"},{"display_html":"isInteriorIntersection :: Associated lineSegment -> Bool","name":"isInteriorIntersection","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:isInteriorIntersection"},{"display_html":"data IntersectionPoint point lineSegment","name":"IntersectionPoint","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:IntersectionPoint"},{"display_html":"intersectionPointOf :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, IntersectConstraints lineSegment) => lineSegment -> lineSegment -> Maybe (IntersectionPoint (Point 2 r) lineSegment)","name":"intersectionPointOf","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:intersectionPointOf"},{"display_html":"intersectionPoint :: forall point lineSegment point' f. Functor f => (point -> f point') -> IntersectionPoint point lineSegment -> f (IntersectionPoint point' lineSegment)","name":"intersectionPoint","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:intersectionPoint"},{"display_html":"associatedSegs :: forall point lineSegment lineSegment' f. Functor f => (Associated lineSegment -> f (Associated lineSegment')) -> IntersectionPoint point lineSegment -> f (IntersectionPoint point lineSegment')","name":"associatedSegs","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:associatedSegs"},{"display_html":"type IntersectConstraints lineSegment = (OrdArounds lineSegment, IsIntersectableWith lineSegment lineSegment, Intersection lineSegment lineSegment ~ Maybe (LineSegmentLineSegmentIntersection lineSegment))","name":"IntersectConstraints","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:IntersectConstraints"},{"display_html":"type OrdArounds lineSegment = (Ord (AroundStart lineSegment), Ord (AroundIntersection lineSegment), Ord (AroundEnd lineSegment))","name":"OrdArounds","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:OrdArounds"},{"display_html":"intersections :: (LineSegment_ lineSegment point, Point_ point 2 r, Eq lineSegment, Ord r, Fractional r, HasOnSegment lineSegment 2, IntersectConstraints lineSegment, Foldable f, Functor f, StartPointOf lineSegment ~ EndPointOf lineSegment) => f lineSegment -> Intersections r lineSegment","name":"intersections","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:intersections"},{"display_html":"interiorIntersections :: (LineSegment_ lineSegment point, Point_ point 2 r, Eq lineSegment, Ord r, Fractional r, IntersectConstraints lineSegment, StartPointOf lineSegment ~ EndPointOf lineSegment, HasOnSegment lineSegment 2, Foldable f, Functor f) => f lineSegment -> Intersections r lineSegment","name":"interiorIntersections","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:interiorIntersections"},{"display_html":"type Intersections r lineSegment = Map (Point 2 r) (Associated lineSegment)","name":"Intersections","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:Intersections"},{"display_html":"intersectionPoints :: Intersections r lineSegment -> Set (Point 2 r)","name":"intersectionPoints","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:intersectionPoints"},{"display_html":"data Associated lineSegment","name":"Associated","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:Associated"},{"display_html":"startPointOf :: forall lineSegment f. Functor f => (Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"startPointOf","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:startPointOf"},{"display_html":"endPointOf :: forall lineSegment f. Functor f => (Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"endPointOf","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:endPointOf"},{"display_html":"interiorTo :: forall lineSegment f. Functor f => (Set (AroundIntersection lineSegment) -> f (Set (AroundIntersection lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"interiorTo","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:interiorTo"},{"display_html":"associatedSegments :: forall lineSegment f. (Contravariant f, Applicative f) => (lineSegment -> f lineSegment) -> Associated lineSegment -> f (Associated lineSegment)","name":"associatedSegments","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:associatedSegments"},{"display_html":"data AroundEnd a","name":"AroundEnd","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:AroundEnd"},{"display_html":"data AroundStart a","name":"AroundStart","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:AroundStart"},{"display_html":"data AroundIntersection a","name":"AroundIntersection","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:AroundIntersection"},{"display_html":"isInteriorIntersection :: Associated lineSegment -> Bool","name":"isInteriorIntersection","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:isInteriorIntersection"},{"display_html":"data IntersectionPoint point lineSegment","name":"IntersectionPoint","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:IntersectionPoint"},{"display_html":"intersectionPointOf :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, IntersectConstraints lineSegment) => lineSegment -> lineSegment -> Maybe (IntersectionPoint (Point 2 r) lineSegment)","name":"intersectionPointOf","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:intersectionPointOf"},{"display_html":"intersectionPoint :: forall point lineSegment point' f. Functor f => (point -> f point') -> IntersectionPoint point lineSegment -> f (IntersectionPoint point' lineSegment)","name":"intersectionPoint","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:intersectionPoint"},{"display_html":"associatedSegs :: forall point lineSegment lineSegment' f. Functor f => (Associated lineSegment -> f (Associated lineSegment')) -> IntersectionPoint point lineSegment -> f (IntersectionPoint point lineSegment')","name":"associatedSegs","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:associatedSegs"},{"display_html":"type IntersectConstraints lineSegment = (OrdArounds lineSegment, IsIntersectableWith lineSegment lineSegment, Intersection lineSegment lineSegment ~ Maybe (LineSegmentLineSegmentIntersection lineSegment))","name":"IntersectConstraints","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:IntersectConstraints"},{"display_html":"type OrdArounds lineSegment = (Ord (AroundStart lineSegment), Ord (AroundIntersection lineSegment), Ord (AroundEnd lineSegment))","name":"OrdArounds","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:OrdArounds"},{"display_html":"class (HasVertices polyLine polyLine, HasPoints' polyLine point, HasStart polyLine point, HasEnd polyLine point, Vertex polyLine ~ point, Point_ point (Dimension point) (NumType point), NumType polyLine ~ NumType point, Dimension polyLine ~ Dimension point) => PolyLine_ polyLine point | polyLine -> point","name":"PolyLine_","module":"HGeometry.PolyLine.Class","link":"hgeometry/HGeometry-PolyLine-Class.html#t:PolyLine_"},{"display_html":"class PolyLine_ polyLine point => ConstructablePolyLine_ polyLine point where","name":"ConstructablePolyLine_ polyLineFromPoints","module":"HGeometry.PolyLine.Class","link":"hgeometry/HGeometry-PolyLine-Class.html#t:ConstructablePolyLine_"},{"display_html":"_PolyLineLineSegment :: (ConstructableLineSegment_ lineSegment point, ConstructablePolyLine_ polyLine point) => Prism' polyLine lineSegment","name":"_PolyLineLineSegment","module":"HGeometry.PolyLine.Class","link":"hgeometry/HGeometry-PolyLine-Class.html#v:_PolyLineLineSegment"},{"display_html":"newtype PolyLineF (f :: k -> Type) (point :: k) = PolyLine (f point)","name":"PolyLineF PolyLine","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#t:PolyLineF"},{"display_html":"type PolyLine = PolyLineF NonEmptyVector","name":"PolyLine","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#t:PolyLine"},{"display_html":"_PolyLineF :: forall {k1} {k2} f1 (point :: k1) f' (point' :: k2) p f2. (Profunctor p, Functor f2) => p (f1 point) (f2 (f' point')) -> p (PolyLineF f1 point) (f2 (PolyLineF f' point'))","name":"_PolyLineF","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#v:_PolyLineF"},{"display_html":"module HGeometry.PolyLine.Class","name":"","module":"HGeometry.PolyLine","link":"hgeometry"},{"display_html":"class HasVertices' graph => HasVertices graph graph' where","name":"HasVertices vertices","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#t:HasVertices"},{"display_html":"class HasEdges' graph => HasEdges graph graph' where","name":"HasEdges edges","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#t:HasEdges"},{"display_html":"frechetDistanceWith :: (HasVertices' polyLine, HasVertices' polyLine', Ord r, VertexIx polyLine ~ Int, VertexIx polyLine' ~ Int) => (Vertex polyLine -> Vertex polyLine' -> r) -> polyLine -> polyLine' -> r","name":"frechetDistanceWith","module":"HGeometry.PolyLine.Frechet.Discrete","link":"hgeometry/HGeometry-PolyLine-Frechet-Discrete.html#v:frechetDistanceWith"},{"display_html":"douglasPeucker :: forall polyLine point (d :: Nat) r. (PolyLine_ polyLine point, Point_ point d r, Ord r, Fractional r, HasSquaredEuclideanDistance point) => r -> polyLine -> PolyLineF ViewR1 point","name":"douglasPeucker","module":"HGeometry.PolyLine.Simplification.DouglasPeucker","link":"hgeometry/HGeometry-PolyLine-Simplification-DouglasPeucker.html#v:douglasPeucker"},{"display_html":"simplify :: forall polyLine point (d :: Nat) r. (PolyLine_ polyLine point, Point_ point d r, Ord r, Fractional r, HasSquaredEuclideanDistance point) => r -> polyLine -> PolyLine point","name":"simplify","module":"HGeometry.PolyLine.Simplification.ImaiIri","link":"hgeometry/HGeometry-PolyLine-Simplification-ImaiIri.html#v:simplify"},{"display_html":"simplifyWith :: forall polyLine point (d :: Nat) r. (PolyLine_ polyLine point, Point_ point d r, Ord r, Fractional r) => (ClosedLineSegment point -> PolyLine point -> Bool) -> polyLine -> PolyLine point","name":"simplifyWith","module":"HGeometry.PolyLine.Simplification.ImaiIri","link":"hgeometry/HGeometry-PolyLine-Simplification-ImaiIri.html#v:simplifyWith"},{"display_html":"class HasVertices polygon polygon => HasOuterBoundary polygon where","name":"HasOuterBoundary outerBoundaryVertexAt ccwOuterBoundaryFrom cwOuterBoundaryFrom outerBoundary outerBoundaryEdgeAt outerBoundaryEdges $dmouterBoundary $dmouterBoundaryEdgeAt $dmouterBoundaryEdges","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasOuterBoundary"},{"display_html":"signedArea2X :: (Num r, HasOuterBoundary simplePolygon, Point_ point 2 r, Vertex simplePolygon ~ point) => simplePolygon -> r","name":"signedArea2X","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:signedArea2X"},{"display_html":"minimumVertexBy :: HasOuterBoundary polygon => (Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon)","name":"minimumVertexBy","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:minimumVertexBy"},{"display_html":"maximumVertexBy :: HasOuterBoundary polygon => (Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon)","name":"maximumVertexBy","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:maximumVertexBy"},{"display_html":"outerBoundaryEdgeSegmentAt :: (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r) => VertexIx polygon -> IndexedGetter (VertexIx polygon, VertexIx polygon) polygon (ClosedLineSegment point)","name":"outerBoundaryEdgeSegmentAt","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:outerBoundaryEdgeSegmentAt"},{"display_html":"outerBoundaryEdgeSegments :: (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r) => IndexedFold1 (VertexIx polygon, VertexIx polygon) polygon (ClosedLineSegment point)","name":"outerBoundaryEdgeSegments","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:outerBoundaryEdgeSegments"},{"display_html":"outerBoundaryWithNeighbours :: (HasOuterBoundary polygon, VertexIx polygon ~ Int) => IndexedFold1 (VertexIx polygon, (VertexIx polygon, VertexIx polygon)) polygon (Vertex polygon, (Vertex polygon, Vertex polygon))","name":"outerBoundaryWithNeighbours","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:outerBoundaryWithNeighbours"},{"display_html":"type Hole polygon = SimplePolygonF (HoleF polygon) (Vertex polygon)","name":"Hole","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:Hole"},{"display_html":"class VertexContainer (HoleF polygon) (Vertex polygon) => HasHoles polygon where","name":"HasHoles holes HoleF HoleIx holeAt $dmholes $dmholeAt","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasHoles"},{"display_html":"class (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r, NumType polygon ~ r, Dimension polygon ~ 2, HasHoles polygon) => Polygon_ polygon point r where","name":"Polygon_ ccwPredecessorOf ccwSuccessorOf extremes $dmextremes","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:Polygon_"},{"display_html":"class HasVertices' graph => HasVertices graph graph' where","name":"HasVertices vertices","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasVertices"},{"display_html":"class HasVertices' graph where","name":"HasVertices' Vertex VertexIx vertexAt numVertices $dmnumVertices","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasVertices-39-"},{"display_html":"class HasEdges' graph => HasEdges graph graph' where","name":"HasEdges edges","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasEdges"},{"display_html":"class HasEdges' graph where","name":"HasEdges' Edge EdgeIx edgeAt numEdges $dmnumEdges","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasEdges-39-"},{"display_html":"class (Polygon_ simplePolygon point r, VertexIx simplePolygon ~ Int, Point_ point 2 r) => SimplePolygon_ simplePolygon point r where","name":"SimplePolygon_ uncheckedFromCCWPoints fromPoints ConstructableSimplePolygon centroid $dmcentroid","module":"HGeometry.Polygon.Simple.Class","link":"hgeometry/HGeometry-Polygon-Simple-Class.html#t:SimplePolygon_"},{"display_html":"class SimplePolygon_ convexPolygon point r => ConvexPolygon_ convexPolygon point r","name":"ConvexPolygon_","module":"HGeometry.Polygon.Convex.Class","link":"hgeometry/HGeometry-Polygon-Convex-Class.html#t:ConvexPolygon_"},{"display_html":"class (Polygon_ simplePolygon point r, VertexIx simplePolygon ~ Int, Point_ point 2 r) => SimplePolygon_ simplePolygon point r where","name":"SimplePolygon_ uncheckedFromCCWPoints fromPoints ConstructableSimplePolygon centroid $dmcentroid","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:SimplePolygon_"},{"display_html":"type SimplePolygon = SimplePolygonF (Cyclic NonEmptyVector)","name":"SimplePolygon","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:SimplePolygon"},{"display_html":"newtype SimplePolygonF (f :: k -> Type) (point :: k) = MkSimplePolygon (f point)","name":"SimplePolygonF MkSimplePolygon","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:SimplePolygonF"},{"display_html":"toCyclic :: forall {k} (v :: k -> Type) (point :: k). SimplePolygonF (Cyclic v) point -> Cyclic v point","name":"toCyclic","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#v:toCyclic"},{"display_html":"type VertexContainer (f :: Type -> Type) point = (IxValue (f point) ~ point, Index (f point) ~ Int, TraversableWithIndex Int f, Traversable1 f, Ixed (f point), HasDirectedTraversals f)","name":"VertexContainer","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:VertexContainer"},{"display_html":"class HasInPolygon polygon point r | polygon -> point, point -> r where","name":"HasInPolygon inPolygon $dminPolygon","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:HasInPolygon"},{"display_html":"inSimplePolygon :: forall queryPoint simplePolygon point r. (Num r, Ord r, Point_ point 2 r, Point_ queryPoint 2 r, SimplePolygon_ simplePolygon point r) => queryPoint -> simplePolygon -> PointLocationResultWith (VertexIx simplePolygon)","name":"inSimplePolygon","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#v:inSimplePolygon"},{"display_html":"hasNoSelfIntersections :: (Foldable1 f, Functor f, Point_ point 2 r, Ord r, Real r) => f point -> Bool","name":"hasNoSelfIntersections","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#v:hasNoSelfIntersections"},{"display_html":"module HGeometry.Polygon.Simple.Class","name":"","module":"HGeometry.Polygon.Simple","link":"hgeometry"},{"display_html":"class (PlanarGraph_ planeGraph, vertex ~ Vertex planeGraph, Point_ vertex 2 (NumType vertex), NumType vertex ~ NumType planeGraph, HasEdges planeGraph planeGraph) => PlaneGraph_ planeGraph vertex | planeGraph -> vertex where","name":"PlaneGraph_ fromEmbedding interiorFaces outerFace outerFaceDart outerFaceId $dminteriorFaces $dmouterFace $dmouterFaceDart $dmouterFaceId","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#t:PlaneGraph_"},{"display_html":"dartSegmentAt :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => DartIx planeGraph -> IndexedFold (DartIx planeGraph) planeGraph (ClosedLineSegment vertex)","name":"dartSegmentAt","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:dartSegmentAt"},{"display_html":"edgeSegmentAt :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => EdgeIx planeGraph -> IndexedFold (EdgeIx planeGraph) planeGraph (ClosedLineSegment vertex)","name":"edgeSegmentAt","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:edgeSegmentAt"},{"display_html":"dartSegments :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => IndexedFold (DartIx planeGraph) planeGraph (ClosedLineSegment vertex)","name":"dartSegments","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:dartSegments"},{"display_html":"edgeSegments :: (HasEdges planeGraph planeGraph, BidirGraph_ planeGraph, vertex ~ Vertex planeGraph, Point_ vertex 2 (NumType vertex)) => IndexedFold (EdgeIx planeGraph) planeGraph (ClosedLineSegment vertex)","name":"edgeSegments","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:edgeSegments"},{"display_html":"interiorFacePolygonAt :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => FaceIx planeGraph -> IndexedFold (FaceIx planeGraph) planeGraph (SimplePolygon (vertex :+ VertexIx planeGraph))","name":"interiorFacePolygonAt","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:interiorFacePolygonAt"},{"display_html":"interiorFacePolygons :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 r, Ord r, Num r, Eq (FaceIx planeGraph)) => IndexedFold (FaceIx planeGraph) planeGraph (SimplePolygon (vertex :+ VertexIx planeGraph))","name":"interiorFacePolygons","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:interiorFacePolygons"},{"display_html":"module Hiraffe.Graph.Class","name":"","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry"},{"display_html":"module HGeometry.PlaneGraph.Class","name":"","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry"},{"display_html":"module Hiraffe.PlanarGraph.Class","name":"","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry"},{"display_html":"newtype CPlaneGraph (s :: k) v e f = CPlaneGraph (CPlanarGraph 'Primal s v e f)","name":"CPlaneGraph CPlaneGraph","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry/HGeometry-PlaneGraph-Connected.html#t:CPlaneGraph"},{"display_html":"fromAdjacencyRep :: forall {k} vertex r i (f :: Type -> Type) proxy (s :: k) e. (Point_ vertex 2 r, Ord i, Foldable1 f) => proxy s -> GGraph f i vertex e -> CPlaneGraph s vertex e ()","name":"fromAdjacencyRep","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry/HGeometry-PlaneGraph-Connected.html#v:fromAdjacencyRep"},{"display_html":"fromConnectedSegments :: forall {k} f r lineSegment point (s :: k). (Foldable1 f, Ord r, Num r, LineSegment_ lineSegment point, Point_ point 2 r) => f lineSegment -> CPlaneGraph s (NonEmpty point) lineSegment ()","name":"fromConnectedSegments","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry/HGeometry-PlaneGraph-Connected.html#v:fromConnectedSegments"},{"display_html":"module Hiraffe.Graph.Class","name":"","module":"HGeometry.PlaneGraph","link":"hgeometry"},{"display_html":"module HGeometry.PlaneGraph.Class","name":"","module":"HGeometry.PlaneGraph","link":"hgeometry"},{"display_html":"module Hiraffe.PlanarGraph.Class","name":"","module":"HGeometry.PlaneGraph","link":"hgeometry"},{"display_html":"newtype CPlaneGraph (s :: k) v e f = CPlaneGraph (CPlanarGraph 'Primal s v e f)","name":"CPlaneGraph CPlaneGraph","module":"HGeometry.PlaneGraph","link":"hgeometry/HGeometry-PlaneGraph.html#t:CPlaneGraph"},{"display_html":"fromAdjacencyRep :: forall {k} vertex r i (f :: Type -> Type) proxy (s :: k) e. (Point_ vertex 2 r, Ord i, Foldable1 f) => proxy s -> GGraph f i vertex e -> CPlaneGraph s vertex e ()","name":"fromAdjacencyRep","module":"HGeometry.PlaneGraph","link":"hgeometry/HGeometry-PlaneGraph.html#v:fromAdjacencyRep"},{"display_html":"fromConnectedSegments :: forall {k} f r lineSegment point (s :: k). (Foldable1 f, Ord r, Num r, LineSegment_ lineSegment point, Point_ point 2 r) => f lineSegment -> CPlaneGraph s (NonEmpty point) lineSegment ()","name":"fromConnectedSegments","module":"HGeometry.PlaneGraph","link":"hgeometry/HGeometry-PlaneGraph.html#v:fromConnectedSegments"},{"display_html":"type MonotonePolygon point = MonotonePolygonF (SimplePolygon point)","name":"MonotonePolygon","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#t:MonotonePolygon"},{"display_html":"data MonotonePolygonF simplePolygon","name":"MonotonePolygonF","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#t:MonotonePolygonF"},{"display_html":"monotoneDirection :: MonotonePolygonF simplePolygon -> Vector 2 (NumType simplePolygon)","name":"monotoneDirection","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:monotoneDirection"},{"display_html":"toSimplePolygon :: MonotonePolygonF simplePolygon -> simplePolygon","name":"toSimplePolygon","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:toSimplePolygon"},{"display_html":"asMonotonePolygon :: (SimplePolygon_ simplePolygon point r, Num r, Ord r) => Vector 2 r -> simplePolygon -> Maybe (MonotonePolygonF simplePolygon)","name":"asMonotonePolygon","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:asMonotonePolygon"},{"display_html":"uncheckedMontonePolygon :: SimplePolygon_ simplePolygon point r => Vector 2 r -> simplePolygon -> MonotonePolygonF simplePolygon","name":"uncheckedMontonePolygon","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:uncheckedMontonePolygon"},{"display_html":"randomMonotone :: (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) => Int -> m (MonotonePolygon (Point 2 r))","name":"randomMonotone","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:randomMonotone"},{"display_html":"randomMonotoneDirected :: (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) => Int -> Vector 2 r -> m (MonotonePolygon (Point 2 r))","name":"randomMonotoneDirected","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:randomMonotoneDirected"},{"display_html":"isMonotone :: (SimplePolygon_ simplePolygon point r, Num r, Ord r) => Vector 2 r -> simplePolygon -> Bool","name":"isMonotone","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:isMonotone"},{"display_html":"randomNonZeroVector :: (MonadState g m, RandomGen g, Uniform r, Eq r, Num r) => m (Vector 2 r)","name":"randomNonZeroVector","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:randomNonZeroVector"},{"display_html":"leftTangent :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r) => convexPolygon -> point -> point","name":"leftTangent","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:leftTangent"},{"display_html":"rightTangent :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r) => convexPolygon -> point -> point","name":"rightTangent","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:rightTangent"},{"display_html":"lowerTangent :: (Num r, Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) => convexPolygon -> convexPolygon -> ClosedLineSegment point","name":"lowerTangent","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:lowerTangent"},{"display_html":"lowerTangent' :: forall point r f. (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point])","name":"lowerTangent'","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:lowerTangent-39-"},{"display_html":"upperTangent :: forall convexPolygon point r. (Num r, Ord r, ConvexPolygon_ convexPolygon point r) => convexPolygon -> convexPolygon -> ClosedLineSegment point","name":"upperTangent","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:upperTangent"},{"display_html":"upperTangent' :: (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point])","name":"upperTangent'","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:upperTangent-39-"},{"display_html":"randomConvex :: (MonadState g m, RandomGen g) => Int -> Int -> m (ConvexPolygon (Point 2 Rational))","name":"randomConvex","module":"HGeometry.Polygon.Convex.Random","link":"hgeometry/HGeometry-Polygon-Convex-Random.html#v:randomConvex"},{"display_html":"class SimplePolygon_ convexPolygon point r => ConvexPolygon_ convexPolygon point r","name":"ConvexPolygon_","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#t:ConvexPolygon_"},{"display_html":"type ConvexPolygon = ConvexPolygonF (Cyclic NonEmptyVector)","name":"ConvexPolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#t:ConvexPolygon"},{"display_html":"data ConvexPolygonF (f :: k -> Type) (point :: k)","name":"ConvexPolygonF","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#t:ConvexPolygonF"},{"display_html":"fromSimplePolygon :: forall r point (f :: Type -> Type). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Maybe (ConvexPolygonF f point)","name":"fromSimplePolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:fromSimplePolygon"},{"display_html":"toSimplePolygon :: ConvexPolygonF f point -> SimplePolygonF f point","name":"toSimplePolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:toSimplePolygon"},{"display_html":"_ConvexPolygon :: forall (f :: Type -> Type) point r. (Num r, Ord r, Point_ point 2 r, VertexContainer f point) => Prism' (SimplePolygonF f point) (ConvexPolygonF f point)","name":"_ConvexPolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:_ConvexPolygon"},{"display_html":"isStrictlyConvex :: forall r point (f :: Type -> Type). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Bool","name":"isStrictlyConvex","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:isStrictlyConvex"},{"display_html":"isConvex :: forall r point (f :: Type -> Type). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Bool","name":"isConvex","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:isConvex"},{"display_html":"verifyConvex :: forall r point (f :: Type -> Type). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => ConvexPolygonF f point -> Bool","name":"verifyConvex","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:verifyConvex"},{"display_html":"minkowskiSum :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r, ConvexPolygon_ convexPolygon' point' r) => convexPolygon -> convexPolygon' -> ConvexPolygon (point :+ point')","name":"minkowskiSum","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:minkowskiSum"},{"display_html":"maxInDirection :: (Num r, Ord r, ConvexPolygon_ convexPolygon point r) => Vector 2 r -> convexPolygon -> point","name":"maxInDirection","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:maxInDirection"},{"display_html":"_UncheckedConvexPolygon :: forall {k1} {k2} (f1 :: k1 -> Type) (point :: k1) (f' :: k2 -> Type) (point' :: k2) p f2. (Profunctor p, Functor f2) => p (SimplePolygonF f1 point) (f2 (SimplePolygonF f' point')) -> p (ConvexPolygonF f1 point) (f2 (ConvexPolygonF f' point'))","name":"_UncheckedConvexPolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:_UncheckedConvexPolygon"},{"display_html":"type PlaneGraph' k v e = GGraph (NEMap e) k v e","name":"PlaneGraph'","module":"HGeometry.Plane.LowerEnvelope.Connected.Graph","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected-Graph.html#t:PlaneGraph-39-"},{"display_html":"newtype E r = E (Vector 2 r)","name":"E E","module":"HGeometry.Plane.LowerEnvelope.Connected.Graph","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected-Graph.html#t:E"},{"display_html":"toTriangulatedPlaneGraph' :: (Plane_ plane r, Num r, Ord r) => MinimizationDiagram r plane -> PlaneGraph' (Point 2 r) (First r) (E r)","name":"toTriangulatedPlaneGraph'","module":"HGeometry.Plane.LowerEnvelope.Connected.Graph","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected-Graph.html#v:toTriangulatedPlaneGraph-39-"},{"display_html":"toPlaneGraph' :: (Plane_ plane r, Num r, Ord r) => MinimizationDiagram r plane -> PlaneGraph' (Point 2 r) (First r) (E r)","name":"toPlaneGraph'","module":"HGeometry.Plane.LowerEnvelope.Connected.Graph","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected-Graph.html#v:toPlaneGraph-39-"},{"display_html":"newtype MinimizationDiagram r plane = MinimizationDiagram (NEMap plane (Region r (Point 2 r)))","name":"MinimizationDiagram MinimizationDiagram","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#t:MinimizationDiagram"},{"display_html":"asMap :: MinimizationDiagram r plane -> NEMap plane (Region r (Point 2 r))","name":"asMap","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:asMap"},{"display_html":"data Region r point","name":"Region Bounded Unbounded","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#t:Region"},{"display_html":"toConvexPolygonIn :: (Rectangle_ rectangle corner, Point_ corner 2 r, Point_ point 2 r, Ord r, Fractional r) => rectangle -> Region r point -> Either (ConvexPolygonF NonEmpty point) (ConvexPolygonF NonEmpty (OriginalOrExtra point (Point 2 r)))","name":"toConvexPolygonIn","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:toConvexPolygonIn"},{"display_html":"intersectionPoint :: (Plane_ plane r, Ord r, Fractional r) => Three plane -> Maybe (Point 3 r)","name":"intersectionPoint","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:intersectionPoint"},{"display_html":"intersectionLine :: (Plane_ plane r, Fractional r, Eq r) => plane -> plane -> Maybe (VerticalOrLineEQ r)","name":"intersectionLine","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:intersectionLine"},{"display_html":"intersectionVector :: (Plane_ plane r, Ord r, Fractional r) => plane -> plane -> Maybe (Vector 2 r)","name":"intersectionVector","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:intersectionVector"},{"display_html":"type VertexForm r plane = Map (Point 3 r) (Definers plane)","name":"VertexForm","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#t:VertexForm"},{"display_html":"data Definers plane","name":"Definers","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#t:Definers"},{"display_html":"fromCCWList :: NonEmpty plane -> Definers plane","name":"fromCCWList","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:fromCCWList"},{"display_html":"definers :: (Plane_ plane r, Ord r, Fractional r) => Three plane -> Maybe (Point 3 r, Definers plane)","name":"definers","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:definers"},{"display_html":"fromVertexForm :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Show r, Show plane) => VertexForm r plane -> MinimizationDiagram r plane","name":"fromVertexForm","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:fromVertexForm"},{"display_html":"mergeDefiners :: (Plane_ plane r, Eq plane, Ord r, Fractional r, Show plane, Show r) => Point 3 r -> Definers plane -> Definers plane -> Definers plane","name":"mergeDefiners","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:mergeDefiners"},{"display_html":"bruteForceLowerEnvelope :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Foldable set, Show r, Show plane) => set plane -> MinimizationDiagram r plane","name":"bruteForceLowerEnvelope","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:bruteForceLowerEnvelope"},{"display_html":"computeVertexForm :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Foldable set, Show plane, Show r) => set plane -> VertexForm r plane","name":"computeVertexForm","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:computeVertexForm"},{"display_html":"convexHull :: (Ord r, Fractional r, Show r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.QuickHull","link":"hgeometry/HGeometry-ConvexHull-QuickHull.html#v:convexHull"},{"display_html":"convexHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:convexHull"},{"display_html":"upperHull :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHull","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:upperHull"},{"display_html":"upperHull' :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHull'","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:upperHull-39-"},{"display_html":"lowerHull :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"lowerHull","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:lowerHull"},{"display_html":"lowerHull' :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"lowerHull'","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:lowerHull-39-"},{"display_html":"steepestCcwFrom :: (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point","name":"steepestCcwFrom","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:steepestCcwFrom"},{"display_html":"steepestCwFrom :: (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point","name":"steepestCwFrom","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:steepestCwFrom"},{"display_html":"convexHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:convexHull"},{"display_html":"upperHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHull","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:upperHull"},{"display_html":"upperHull' :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> NonEmpty point","name":"upperHull'","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:upperHull-39-"},{"display_html":"lowerHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"lowerHull","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:lowerHull"},{"display_html":"lowerHull' :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> NonEmpty point","name":"lowerHull'","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:lowerHull-39-"},{"display_html":"upperHullFromSorted :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHullFromSorted","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:upperHullFromSorted"},{"display_html":"upperHullFromSorted' :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHullFromSorted'","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:upperHullFromSorted-39-"},{"display_html":"newtype LowerEnvelopeF (f :: Type -> Type) vertex line = LowerEnvelope (Alternating f vertex line)","name":"LowerEnvelopeF LowerEnvelope","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#t:LowerEnvelopeF"},{"display_html":"type LowerEnvelope = LowerEnvelopeF Vector","name":"LowerEnvelope","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#t:LowerEnvelope"},{"display_html":"_Alternating :: forall (f1 :: Type -> Type) vertex line (f' :: Type -> Type) vertex' line' p f2. (Profunctor p, Functor f2) => p (Alternating f1 vertex line) (f2 (Alternating f' vertex' line')) -> p (LowerEnvelopeF f1 vertex line) (f2 (LowerEnvelopeF f' vertex' line'))","name":"_Alternating","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#v:_Alternating"},{"display_html":"lowerEnvelope :: forall (g :: Type -> Type) f line r. (NonVerticalHyperPlane_ line 2 r, Fractional r, Ord r, Foldable1 f, Functor f, IsIntersectableWith line line, Intersection line line ~ Maybe (LineLineIntersection line), HasFromFoldable g) => f line -> LowerEnvelopeF g (Point 2 r) line","name":"lowerEnvelope","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#v:lowerEnvelope"},{"display_html":"lineAt :: forall r vertex (d :: Nat) (f :: Type -> Type) line. (Ord r, Point_ vertex d r, 1 <= d, BinarySearch (f (vertex, line)), Elem (f (vertex, line)) ~ (vertex, line)) => r -> LowerEnvelopeF f vertex line -> line","name":"lineAt","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#v:lineAt"},{"display_html":"lookupLEVertex :: forall r vertex (d :: Nat) (f :: Type -> Type) line. (Ord r, Point_ vertex d r, 1 <= d, BinarySearch (f (vertex, line)), Elem (f (vertex, line)) ~ (vertex, line)) => r -> LowerEnvelopeF f vertex line -> Maybe (vertex, line)","name":"lookupLEVertex","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#v:lookupLEVertex"},{"display_html":"lowerEnvelope :: (Plane_ plane r, Ord r, Fractional r, Foldable1 f, Functor f, Ord plane, Show plane, Show r) => f plane -> LowerEnvelope plane","name":"lowerEnvelope","module":"HGeometry.Plane.LowerEnvelope.Naive","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Naive.html#v:lowerEnvelope"},{"display_html":"lowerEnvelopeWith :: forall nonEmpty plane r. (Plane_ plane r, Ord r, Fractional r, Foldable1 nonEmpty) => (NonEmpty plane -> MinimizationDiagram r plane) -> nonEmpty plane -> LowerEnvelope plane","name":"lowerEnvelopeWith","module":"HGeometry.Plane.LowerEnvelope.Naive","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Naive.html#v:lowerEnvelopeWith"},{"display_html":"module HGeometry.Plane.LowerEnvelope.Naive","name":"","module":"HGeometry.Plane.LowerEnvelope","link":"hgeometry"},{"display_html":"data LowerEnvelope plane","name":"LowerEnvelope ConnectedEnvelope ParallelStrips","module":"HGeometry.Plane.LowerEnvelope","link":"hgeometry/HGeometry-Plane-LowerEnvelope.html#t:LowerEnvelope"},{"display_html":"pointLocateParallel :: (Plane_ plane r, Point_ point 2 r, Ord r, Num r) => point -> Alternating Vector (VerticalOrLineEQ r) plane -> plane","name":"pointLocateParallel","module":"HGeometry.Plane.LowerEnvelope","link":"hgeometry/HGeometry-Plane-LowerEnvelope.html#v:pointLocateParallel"},{"display_html":"module HGeometry.Plane.LowerEnvelope.Connected","name":"","module":"HGeometry.Plane.LowerEnvelope","link":"hgeometry"},{"display_html":"type UpperHull point = LowerEnvelope (NonVerticalHyperPlane 3 (NumType point) :+ point)","name":"UpperHull","module":"HGeometry.ConvexHull.R3.Naive.Dual","link":"hgeometry/HGeometry-ConvexHull-R3-Naive-Dual.html#t:UpperHull"},{"display_html":"upperHull :: (Point_ point 3 r, Ord r, Fractional r, Foldable1 f, Functor f, Show point, Show r, Ord point) => f point -> UpperHull point","name":"upperHull","module":"HGeometry.ConvexHull.R3.Naive.Dual","link":"hgeometry/HGeometry-ConvexHull-R3-Naive-Dual.html#v:upperHull"},{"display_html":"type Facet point = NonEmpty point","name":"Facet","module":"HGeometry.ConvexHull.R3.Naive.Dual","link":"hgeometry/HGeometry-ConvexHull-R3-Naive-Dual.html#t:Facet"},{"display_html":"facets :: Ord (NumType point) => UpperHull point -> [Facet point]","name":"facets","module":"HGeometry.ConvexHull.R3.Naive.Dual","link":"hgeometry/HGeometry-ConvexHull-R3-Naive-Dual.html#v:facets"},{"display_html":"data CommonIntersection halfPlane r","name":"CommonIntersection BoundedRegion EmptyIntersection InSubLine SingletonPoint Slab UnboundedRegion","module":"HGeometry.HalfPlane.CommonIntersection","link":"hgeometry/HGeometry-HalfPlane-CommonIntersection.html#t:CommonIntersection"},{"display_html":"data SubLine halfPlane r","name":"SubLine EntireLine InHalfLine InSegment","module":"HGeometry.HalfPlane.CommonIntersection","link":"hgeometry/HGeometry-HalfPlane-CommonIntersection.html#t:SubLine"},{"display_html":"newtype Chain (f :: Type -> Type) halfPlane r = Chain (Alternating f (Point 2 r) halfPlane)","name":"Chain Chain","module":"HGeometry.HalfPlane.CommonIntersection","link":"hgeometry/HGeometry-HalfPlane-CommonIntersection.html#t:Chain"},{"display_html":"commonIntersection :: (Foldable1 f, Functor f, HalfPlane_ halfPlane r, Fractional r, Ord r, Show halfPlane, Show r) => f halfPlane -> CommonIntersection halfPlane r","name":"commonIntersection","module":"HGeometry.HalfPlane.CommonIntersection","link":"hgeometry/HGeometry-HalfPlane-CommonIntersection.html#v:commonIntersection"},{"display_html":"convexHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull","link":"hgeometry/HGeometry-ConvexHull.html#v:convexHull"},{"display_html":"convexHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.DivideAndConquer","link":"hgeometry/HGeometry-ConvexHull-DivideAndConquer.html#v:convexHull"},{"display_html":"upperHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHull","module":"HGeometry.ConvexHull.DivideAndConquer","link":"hgeometry/HGeometry-ConvexHull-DivideAndConquer.html#v:upperHull"},{"display_html":"lowerHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"lowerHull","module":"HGeometry.ConvexHull.DivideAndConquer","link":"hgeometry/HGeometry-ConvexHull-DivideAndConquer.html#v:lowerHull"},{"display_html":"module HGeometry.Polygon.Class","name":"","module":"HGeometry.Polygon","link":"hgeometry"},{"display_html":"asTriangle :: Polygon_ polygon point r => polygon -> Maybe (Triangle point)","name":"asTriangle","module":"HGeometry.Polygon","link":"hgeometry/HGeometry-Polygon.html#v:asTriangle"},{"display_html":"area2X :: (Polygon_ polygon point r, Num r, Point_ point 2 r, SimplePolygon_ (Hole polygon) point r) => polygon -> r","name":"area2X","module":"HGeometry.Polygon","link":"hgeometry/HGeometry-Polygon.html#v:area2X"},{"display_html":"area :: (Polygon_ polygon point r, SimplePolygon_ (Hole polygon) point r, Fractional r) => polygon -> r","name":"area","module":"HGeometry.Polygon","link":"hgeometry/HGeometry-Polygon.html#v:area"},{"display_html":"convexHull :: (Polygon_ polygon point r, Ord r, Num r) => polygon -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.Melkman","link":"hgeometry/HGeometry-ConvexHull-Melkman.html#v:convexHull"},{"display_html":"type YMonotonePolygon_ = SimplePolygon_","name":"YMonotonePolygon_","module":"HGeometry.Polygon.Triangulation.TriangulateMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-TriangulateMonotone.html#t:YMonotonePolygon_"},{"display_html":"triangulate :: forall {k} (s :: k) yMonotonePolygon point r. (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r) => yMonotonePolygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData","name":"triangulate","module":"HGeometry.Polygon.Triangulation.TriangulateMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-TriangulateMonotone.html#v:triangulate"},{"display_html":"computeDiagonals :: (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r) => yMonotonePolygon -> [Diagonal yMonotonePolygon]","name":"computeDiagonals","module":"HGeometry.Polygon.Triangulation.TriangulateMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-TriangulateMonotone.html#v:computeDiagonals"},{"display_html":"makeMonotone :: forall {k} (s :: k) polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData","name":"makeMonotone","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#v:makeMonotone"},{"display_html":"computeDiagonals :: (Polygon_ polygon point r, Point_ point 2 r, Ord r, Num r, Ord (VertexIx polygon)) => polygon -> [Diagonal polygon]","name":"computeDiagonals","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#v:computeDiagonals"},{"display_html":"classifyVertices :: (Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) => polygon -> [(VertexIx polygon, VertexType)]","name":"classifyVertices","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#v:classifyVertices"},{"display_html":"data VertexType","name":"VertexType Start Split End Merge Regular","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#t:VertexType"},{"display_html":"cmpX :: (Point_ point 2 r, LineSegment_ lineSegment point', Point_ point' 2 r, Ord r, Num r) => point -> lineSegment -> Ordering","name":"cmpX","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#v:cmpX"},{"display_html":"triangulate :: forall {k} (s :: k) polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData","name":"triangulate","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#v:triangulate"},{"display_html":"computeDiagonals :: (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> [Diagonal polygon]","name":"computeDiagonals","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#v:computeDiagonals"},{"display_html":"data PolygonEdgeType","name":"PolygonEdgeType Diagonal Original","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#t:PolygonEdgeType"},{"display_html":"data PolygonFaceData","name":"PolygonFaceData Outside Inside","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#t:PolygonFaceData"},{"display_html":"type Diagonal polygon = Vector 2 (VertexIx polygon)","name":"Diagonal","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#t:Diagonal"},{"display_html":"samplePolygon :: (SimplePolygon_ polygon point r, Ord r, Real r, UniformRange r, StatefulGen g m) => polygon -> g -> m (Point 2 Double)","name":"samplePolygon","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#v:samplePolygon"},{"display_html":"samplePolygons :: (SimplePolygon_ polygon point r, StatefulGen g m, Foldable1 nonEmpty, Real r, Ord r, UniformRange r) => nonEmpty polygon -> g -> m (Point 2 Double)","name":"samplePolygons","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#v:samplePolygons"},{"display_html":"data Sampler w v","name":"Sampler","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#t:Sampler"},{"display_html":"samplePoint :: (Point_ point 2 r, StatefulGen g m, Real r, Ord r, UniformRange r) => Sampler r (Triangle point) -> g -> m (Point 2 Double)","name":"samplePoint","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#v:samplePoint"},{"display_html":"triangleSampler :: (SimplePolygon_ polygon point r, Num r, Ord r, Foldable1 nonEmpty) => nonEmpty polygon -> Sampler r (Triangle point)","name":"triangleSampler","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#v:triangleSampler"},{"display_html":"visibilityGraph :: (SimplePolygon_ simplePolygon point r, HasIntersectionWith point simplePolygon, Ord r, Num r) => simplePolygon -> [Vector 2 (VertexIx simplePolygon)]","name":"visibilityGraph","module":"HGeometry.Polygon.Visibility.Naive","link":"hgeometry/HGeometry-Polygon-Visibility-Naive.html#v:visibilityGraph"},{"display_html":"visibilityGraphWith :: (SimplePolygon_ simplePolygon point r, HasIntersectionWith point simplePolygon, Ord r, Num r) => simplePolygon -> [Vector 2 (point :+ VertexIx simplePolygon)] -> [Vector 2 (VertexIx simplePolygon)]","name":"visibilityGraphWith","module":"HGeometry.Polygon.Visibility.Naive","link":"hgeometry/HGeometry-Polygon-Visibility-Naive.html#v:visibilityGraphWith"},{"display_html":"data PolygonalDomainF (h :: Type -> Type) (f :: Type -> Type) point = PolygonalDomain (SimplePolygonF f point) (h (SimplePolygonF f point))","name":"PolygonalDomainF PolygonalDomain","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#t:PolygonalDomainF"},{"display_html":"type PolygonalDomain point = PolygonalDomainF Vector (Cyclic NonEmptyVector) point","name":"PolygonalDomain","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#t:PolygonalDomain"},{"display_html":"asSimplePolygon :: forall (h :: Type -> Type) (f :: Type -> Type) point. (HasFromFoldable h, HoleContainer h f point) => Prism' (PolygonalDomainF h f point) (SimplePolygonF f point)","name":"asSimplePolygon","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#v:asSimplePolygon"},{"display_html":"outerBoundaryPolygon :: forall (h :: Type -> Type) (f1 :: Type -> Type) point f2. Functor f2 => (SimplePolygonF f1 point -> f2 (SimplePolygonF f1 point)) -> PolygonalDomainF h f1 point -> f2 (PolygonalDomainF h f1 point)","name":"outerBoundaryPolygon","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#v:outerBoundaryPolygon"},{"display_html":"theHoles :: forall h (f1 :: Type -> Type) point h' f2. Functor f2 => (h (SimplePolygonF f1 point) -> f2 (h' (SimplePolygonF f1 point))) -> PolygonalDomainF h f1 point -> f2 (PolygonalDomainF h' f1 point)","name":"theHoles","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#v:theHoles"},{"display_html":"type HoleContainer (h :: Type -> Type) (f :: Type -> Type) point = (TraversableWithIndex Int h, Index (h (SimplePolygonF f point)) ~ Int, IxValue (h (SimplePolygonF f point)) ~ SimplePolygonF f point, Ixed (h (SimplePolygonF f point)), VertexContainer f point)","name":"HoleContainer","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#t:HoleContainer"},{"display_html":"class HasCanonicalSubSet s t (a :: k) (f :: k -> Type) (g :: k -> Type) | s -> f, t -> g where","name":"HasCanonicalSubSet canonicalSubSet","module":"HGeometry.SegmentTree.CanonicalSubSet","link":"hgeometry/HGeometry-SegmentTree-CanonicalSubSet.html#t:HasCanonicalSubSet"},{"display_html":"data SegmentTree (f :: Type -> Type) interval","name":"SegmentTree","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#t:SegmentTree"},{"display_html":"buildSegmentTree :: forall (f :: Type -> Type) interval r g. (ClosedInterval_ interval r, Ord r, Monoid (f interval), CanInsert f interval, Foldable1 g) => g interval -> SegmentTree f interval","name":"buildSegmentTree","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:buildSegmentTree"},{"display_html":"buildSkeleton :: forall (f :: Type -> Type) interval r g. (ClosedInterval_ interval r, Ord r, Monoid (f interval), Foldable1 g) => g r -> SegmentTree f interval","name":"buildSkeleton","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:buildSkeleton"},{"display_html":"stab :: (Ord r, ClosedInterval_ interval r) => r -> SegmentTree f interval -> [f interval]","name":"stab","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:stab"},{"display_html":"query :: (Ord r, ClosedInterval_ interval r, Monoid (f interval)) => r -> SegmentTree f interval -> f interval","name":"query","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:query"},{"display_html":"insert :: forall interval r (f :: Type -> Type). (ClosedInterval_ interval r, Ord r, CanInsert f interval) => interval -> SegmentTree f interval -> SegmentTree f interval","name":"insert","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:insert"},{"display_html":"ascEndPoints :: forall (f :: Type -> Type) interval. SegmentTree f interval -> [NumType interval]","name":"ascEndPoints","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:ascEndPoints"},{"display_html":"data SegmentTree (f :: Type -> Type) interval","name":"SegmentTree","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#t:SegmentTree"},{"display_html":"buildSegmentTree :: forall (f :: Type -> Type) interval r g. (ClosedInterval_ interval r, Ord r, Monoid (f interval), CanInsert f interval, Foldable1 g) => g interval -> SegmentTree f interval","name":"buildSegmentTree","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:buildSegmentTree"},{"display_html":"buildSkeleton :: forall (f :: Type -> Type) interval r g. (ClosedInterval_ interval r, Ord r, Monoid (f interval), Foldable1 g) => g r -> SegmentTree f interval","name":"buildSkeleton","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:buildSkeleton"},{"display_html":"stab :: (Ord r, ClosedInterval_ interval r) => r -> SegmentTree f interval -> [f interval]","name":"stab","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:stab"},{"display_html":"query :: (Ord r, ClosedInterval_ interval r, Monoid (f interval)) => r -> SegmentTree f interval -> f interval","name":"query","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:query"},{"display_html":"insert :: forall interval r (f :: Type -> Type). (ClosedInterval_ interval r, Ord r, CanInsert f interval) => interval -> SegmentTree f interval -> SegmentTree f interval","name":"insert","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:insert"},{"display_html":"ascEndPoints :: forall (f :: Type -> Type) interval. SegmentTree f interval -> [NumType interval]","name":"ascEndPoints","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:ascEndPoints"},{"display_html":"data RangeTree (f :: Type -> Type) point","name":"RangeTree","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#t:RangeTree"},{"display_html":"buildRangeTree :: forall g point (d :: Nat) r (f :: Type -> Type). (Foldable1 g, Point_ point d r, Ord r, 1 <= d, Semigroup (f point), Measured f point) => g point -> RangeTree f point","name":"buildRangeTree","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:buildRangeTree"},{"display_html":"fromAscList :: forall g point (d :: Nat) r (f :: Type -> Type). (Foldable1 g, Functor g, Point_ point d r, 1 <= d, Semigroup (f point), Measured f point) => g point -> RangeTree f point","name":"fromAscList","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:fromAscList"},{"display_html":"fromGroupedAscList :: forall g h point (d :: Nat) r (f :: Type -> Type). (Foldable1 g, Foldable1 h, Point_ point d r, 1 <= d, Semigroup (f point), Measured f point) => g (h point) -> RangeTree f point","name":"fromGroupedAscList","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:fromGroupedAscList"},{"display_html":"rangeQuery :: forall interval r point (d :: Nat) f. (Interval_ interval r, Point_ point d r, 1 <= d, Ord r) => interval -> RangeTree f point -> [f point]","name":"rangeQuery","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:rangeQuery"},{"display_html":"query :: forall interval r point (d :: Nat) f. (Interval_ interval r, Point_ point d r, 1 <= d, Ord r, Monoid (f point)) => interval -> RangeTree f point -> f point","name":"query","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:query"},{"display_html":"module HGeometry.RangeTree.Base","name":"","module":"HGeometry.RangeTree","link":"hgeometry"},{"display_html":"type VerticalRayShootingStructure lineSegment = VerticalRayShootingStructure' (NumType lineSegment) lineSegment","name":"VerticalRayShootingStructure","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#t:VerticalRayShootingStructure"},{"display_html":"type StatusStructure lineSegment = Set lineSegment","name":"StatusStructure","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#t:StatusStructure"},{"display_html":"verticalRayShootingStructure :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, Foldable1 f) => f lineSegment -> VerticalRayShootingStructure lineSegment","name":"verticalRayShootingStructure","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:verticalRayShootingStructure"},{"display_html":"segmentAbove :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe lineSegment","name":"segmentAbove","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:segmentAbove"},{"display_html":"segmentAboveOrOn :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe lineSegment","name":"segmentAboveOrOn","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:segmentAboveOrOn"},{"display_html":"findSlab :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe (StatusStructure lineSegment)","name":"findSlab","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:findSlab"},{"display_html":"lookupAbove :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment","name":"lookupAbove","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:lookupAbove"},{"display_html":"lookupAboveOrOn :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment","name":"lookupAboveOrOn","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:lookupAboveOrOn"},{"display_html":"searchInSlab :: (LineSegment_ lineSegment point, Point_ point 2 r, HasSupportingLine lineSegment, Num r) => (LinePV 2 r -> Bool) -> StatusStructure lineSegment -> Maybe lineSegment","name":"searchInSlab","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:searchInSlab"},{"display_html":"module HGeometry.VerticalRayShooting.PersistentSweep","name":"","module":"HGeometry.VerticalRayShooting","link":"hgeometry"},{"display_html":"data VoronoiDiagram point","name":"VoronoiDiagram AllColinear ConnectedVD","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#t:VoronoiDiagram"},{"display_html":"newtype VoronoiDiagram' point = VoronoiDiagram (MinimizationDiagram (NumType point) point)","name":"VoronoiDiagram' VoronoiDiagram","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#t:VoronoiDiagram-39-"},{"display_html":"asMap :: (Point_ point 2 r, Ord point) => VoronoiDiagram' point -> NEMap point (Region r (Point 2 r))","name":"asMap","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#v:asMap"},{"display_html":"voronoiDiagram :: (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r) => f point -> VoronoiDiagram point","name":"voronoiDiagram","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#v:voronoiDiagram"},{"display_html":"voronoiVertices :: (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r, Ord point) => f point -> Set (Point 2 r)","name":"voronoiVertices","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#v:voronoiVertices"},{"display_html":"pointToPlane :: (Point_ point 2 r, Num r) => point -> Plane r","name":"pointToPlane","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#v:pointToPlane"},{"display_html":"data VoronoiDiagram point","name":"VoronoiDiagram AllColinear ConnectedVD","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#t:VoronoiDiagram"},{"display_html":"newtype VoronoiDiagram' point = VoronoiDiagram (MinimizationDiagram (NumType point) point)","name":"VoronoiDiagram' VoronoiDiagram","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#t:VoronoiDiagram-39-"},{"display_html":"voronoiDiagram :: (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r) => f point -> VoronoiDiagram point","name":"voronoiDiagram","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#v:voronoiDiagram"},{"display_html":"voronoiVertices :: (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r, Ord point) => f point -> Set (Point 2 r)","name":"voronoiVertices","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#v:voronoiVertices"},{"display_html":"asMap :: (Point_ point 2 r, Ord point) => VoronoiDiagram' point -> NEMap point (Region r (Point 2 r))","name":"asMap","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#v:asMap"},{"display_html":"type GeoPositionWithoutCRS' = PointXY :+ Maybe RestGeoPosition","name":"GeoPositionWithoutCRS'","module":"HGeometry.GeoJSON","link":"hgeometry/geojson/HGeometry-GeoJSON.html#t:GeoPositionWithoutCRS-39-"},{"display_html":"data RestGeoPosition","name":"RestGeoPosition Z ZM","module":"HGeometry.GeoJSON","link":"hgeometry/geojson/HGeometry-GeoJSON.html#t:RestGeoPosition"},{"display_html":"_GeoPositionWithoutCRS :: Prism' GeoPositionWithoutCRS (PointXY :+ Maybe RestGeoPosition)","name":"_GeoPositionWithoutCRS","module":"HGeometry.GeoJSON","link":"hgeometry/geojson/HGeometry-GeoJSON.html#v:_GeoPositionWithoutCRS"},{"display_html":"_GeoPolygonPolygonalDomain :: Iso' GeoPolygon GeoPolygonalDomain","name":"_GeoPolygonPolygonalDomain","module":"HGeometry.GeoJSON","link":"hgeometry/geojson/HGeometry-GeoJSON.html#v:_GeoPolygonPolygonalDomain"},{"display_html":"ipeRenderWith :: Options -> FileType -> OsPath -> OsPath -> IO ()","name":"ipeRenderWith","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#v:ipeRenderWith"},{"display_html":"ipeRender :: FileType -> OsPath -> OsPath -> IO ()","name":"ipeRender","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#v:ipeRender"},{"display_html":"data FileType","name":"FileType SVG PDF PNG EPS","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#t:FileType"},{"display_html":"data Options = Options {}","name":"Options crop viewNumber pageNumber transparent resolution Options","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#t:Options"},{"display_html":"defaultOptions :: Options","name":"defaultOptions","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#v:defaultOptions"},{"display_html":"data Background","name":"Background OpaqueBackground TransparentBackground","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#t:Background"},{"display_html":"data Crop","name":"Crop Crop NoCrop","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#t:Crop"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe.Layer","link":"hgeometry/ipe/Ipe-Layer.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe.Layer","link":"hgeometry/ipe/Ipe-Layer.html#v:layerName"},{"display_html":"literally :: String -> Q Exp","name":"literally","module":"Ipe.Literal","link":"hgeometry/ipe/Ipe-Literal.html#v:literally"},{"display_html":"lit :: QuasiQuoter","name":"lit","module":"Ipe.Literal","link":"hgeometry/ipe/Ipe-Literal.html#v:lit"},{"display_html":"litFile :: QuasiQuoter","name":"litFile","module":"Ipe.Literal","link":"hgeometry/ipe/Ipe-Literal.html#v:litFile"},{"display_html":"xmlLiteral :: String -> Node Text Text","name":"xmlLiteral","module":"Ipe.Literal","link":"hgeometry/ipe/Ipe-Literal.html#v:xmlLiteral"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#t:PathSegment"},{"display_html":"_PolyLineSegment :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_PolyLineSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_PolyLineSegment"},{"display_html":"_PolygonPath :: forall r p f. (Choice p, Applicative f) => p (Orientation, SimplePolygon (Point 2 r)) (f (Orientation, SimplePolygon (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_PolygonPath","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_PolygonPath"},{"display_html":"_CubicBezierSegment :: forall r p f. (Choice p, Applicative f) => p (CubicBezier (Point 2 r)) (f (CubicBezier (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_CubicBezierSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_CubicBezierSegment"},{"display_html":"_QuadraticBezierSegment :: forall r p f. (Choice p, Applicative f) => p (QuadraticBezier (Point 2 r)) (f (QuadraticBezier (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_QuadraticBezierSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_QuadraticBezierSegment"},{"display_html":"_EllipseSegment :: forall r p f. (Choice p, Applicative f) => p (Ellipse r) (f (Ellipse r)) -> p (PathSegment r) (f (PathSegment r))","name":"_EllipseSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_EllipseSegment"},{"display_html":"_ArcSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_ArcSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ArcSegment"},{"display_html":"_SplineSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_SplineSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_SplineSegment"},{"display_html":"_ClosedSplineSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_ClosedSplineSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ClosedSplineSegment"},{"display_html":"data Orientation","name":"Orientation Reversed AsIs","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#t:Orientation"},{"display_html":"data Operation r","name":"Operation Ellipse MoveTo LineTo ArcTo Spline ClosedSpline ClosePath CurveTo QCurveTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#t:Operation"},{"display_html":"_MoveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_MoveTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_MoveTo"},{"display_html":"_LineTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_LineTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_LineTo"},{"display_html":"_CurveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r, Point 2 r, Point 2 r) (f (Point 2 r, Point 2 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_CurveTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_CurveTo"},{"display_html":"_QCurveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r, Point 2 r) (f (Point 2 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_QCurveTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_QCurveTo"},{"display_html":"_Ellipse :: forall r p f. (Choice p, Applicative f) => p (Matrix 3 3 r) (f (Matrix 3 3 r)) -> p (Operation r) (f (Operation r))","name":"_Ellipse","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_Ellipse"},{"display_html":"_ArcTo :: forall r p f. (Choice p, Applicative f) => p (Matrix 3 3 r, Point 2 r) (f (Matrix 3 3 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_ArcTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ArcTo"},{"display_html":"_Spline :: forall r p f. (Choice p, Applicative f) => p [Point 2 r] (f [Point 2 r]) -> p (Operation r) (f (Operation r))","name":"_Spline","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_Spline"},{"display_html":"_ClosedSpline :: forall r p f. (Choice p, Applicative f) => p [Point 2 r] (f [Point 2 r]) -> p (Operation r) (f (Operation r))","name":"_ClosedSpline","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ClosedSpline"},{"display_html":"_ClosePath :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (Operation r) (f (Operation r))","name":"_ClosePath","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ClosePath"},{"display_html":"class Fractional r => Coordinate r where","name":"Coordinate fromSeq $dmfromSeq","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#t:Coordinate"},{"display_html":"readCoordinate :: Coordinate r => Text -> Either Text r","name":"readCoordinate","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readCoordinate"},{"display_html":"readPoint :: Coordinate r => Text -> Either Text (Point 2 r)","name":"readPoint","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readPoint"},{"display_html":"readMatrix :: Coordinate r => Text -> Either Text (Matrix 3 3 r)","name":"readMatrix","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readMatrix"},{"display_html":"readRectangle :: Coordinate r => Text -> Either Text (Rectangle (Point 2 r))","name":"readRectangle","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readRectangle"},{"display_html":"runParser :: Parser a -> Text -> Either Text a","name":"runParser","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:runParser"},{"display_html":"readPathOperations :: Coordinate r => Text -> Either Text [Operation r]","name":"readPathOperations","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readPathOperations"},{"display_html":"pOperation :: Coordinate r => Parser (Operation r)","name":"pOperation","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:pOperation"},{"display_html":"pPoint :: Coordinate r => Parser (Point 2 r)","name":"pPoint","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:pPoint"},{"display_html":"pCoordinate :: Coordinate r => Parser r","name":"pCoordinate","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:pCoordinate"},{"display_html":"data IpeValue v","name":"IpeValue Valued Named","module":"Ipe.Value","link":"hgeometry/ipe/Ipe-Value.html#t:IpeValue"},{"display_html":"newtype IpeColor r = IpeColor (IpeValue (RGB r))","name":"IpeColor IpeColor","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#t:IpeColor"},{"display_html":"named :: Text -> IpeColor r","name":"named","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:named"},{"display_html":"basicNamedColors :: [IpeColor r]","name":"basicNamedColors","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:basicNamedColors"},{"display_html":"black :: IpeColor r","name":"black","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:black"},{"display_html":"white :: IpeColor r","name":"white","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:white"},{"display_html":"red :: IpeColor r","name":"red","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:red"},{"display_html":"green :: IpeColor r","name":"green","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:green"},{"display_html":"blue :: IpeColor r","name":"blue","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:blue"},{"display_html":"yellow :: IpeColor r","name":"yellow","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:yellow"},{"display_html":"orange :: IpeColor r","name":"orange","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:orange"},{"display_html":"gold :: IpeColor r","name":"gold","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:gold"},{"display_html":"purple :: IpeColor r","name":"purple","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:purple"},{"display_html":"gray :: IpeColor r","name":"gray","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:gray"},{"display_html":"brown :: IpeColor r","name":"brown","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:brown"},{"display_html":"navy :: IpeColor r","name":"navy","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:navy"},{"display_html":"pink :: IpeColor r","name":"pink","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:pink"},{"display_html":"seagreen :: IpeColor r","name":"seagreen","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:seagreen"},{"display_html":"turquoise :: IpeColor r","name":"turquoise","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:turquoise"},{"display_html":"violet :: IpeColor r","name":"violet","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:violet"},{"display_html":"darkblue :: IpeColor r","name":"darkblue","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkblue"},{"display_html":"darkcyan :: IpeColor r","name":"darkcyan","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkcyan"},{"display_html":"darkgray :: IpeColor r","name":"darkgray","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkgray"},{"display_html":"darkgreen :: IpeColor r","name":"darkgreen","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkgreen"},{"display_html":"darkmagenta :: IpeColor r","name":"darkmagenta","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkmagenta"},{"display_html":"darkorange :: IpeColor r","name":"darkorange","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkorange"},{"display_html":"darkred :: IpeColor r","name":"darkred","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkred"},{"display_html":"lightblue :: IpeColor r","name":"lightblue","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightblue"},{"display_html":"lightcyan :: IpeColor r","name":"lightcyan","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightcyan"},{"display_html":"lightgray :: IpeColor r","name":"lightgray","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightgray"},{"display_html":"lightgreen :: IpeColor r","name":"lightgreen","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightgreen"},{"display_html":"lightyellow :: IpeColor r","name":"lightyellow","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightyellow"},{"display_html":"data AttributeUniverse","name":"AttributeUniverse HAlign VAlign Height Gradient Tiling Opacity StrokeOpacity RArrow FillRule LineJoin LineCap Dash Pen Fill Stroke Transformations Pin Clip Layer Matrix Width Depth Style Size Arrow","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:AttributeUniverse"},{"display_html":"data SAttributeUniverse (a :: AttributeUniverse) where","name":"SAttributeUniverse SClip SStyle SHAlign SVAlign SDepth SHeight SWidth SGradient STiling SOpacity SStrokeOpacity SRArrow SArrow SFillRule SLineJoin SLineCap SDash SSize SPen SFill SStroke STransformations SPin SMatrix SLayer","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:SAttributeUniverse"},{"display_html":"type family ClipSym0 :: AttributeUniverse where ...","name":"ClipSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:ClipSym0"},{"display_html":"type family StyleSym0 :: AttributeUniverse where ...","name":"StyleSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:StyleSym0"},{"display_html":"type family HAlignSym0 :: AttributeUniverse where ...","name":"HAlignSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:HAlignSym0"},{"display_html":"type family VAlignSym0 :: AttributeUniverse where ...","name":"VAlignSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:VAlignSym0"},{"display_html":"type family DepthSym0 :: AttributeUniverse where ...","name":"DepthSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:DepthSym0"},{"display_html":"type family HeightSym0 :: AttributeUniverse where ...","name":"HeightSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:HeightSym0"},{"display_html":"type family WidthSym0 :: AttributeUniverse where ...","name":"WidthSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:WidthSym0"},{"display_html":"type family GradientSym0 :: AttributeUniverse where ...","name":"GradientSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:GradientSym0"},{"display_html":"type family TilingSym0 :: AttributeUniverse where ...","name":"TilingSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TilingSym0"},{"display_html":"type family OpacitySym0 :: AttributeUniverse where ...","name":"OpacitySym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:OpacitySym0"},{"display_html":"type family StrokeOpacitySym0 :: AttributeUniverse where ...","name":"StrokeOpacitySym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:StrokeOpacitySym0"},{"display_html":"type family RArrowSym0 :: AttributeUniverse where ...","name":"RArrowSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:RArrowSym0"},{"display_html":"type family ArrowSym0 :: AttributeUniverse where ...","name":"ArrowSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:ArrowSym0"},{"display_html":"type family FillRuleSym0 :: AttributeUniverse where ...","name":"FillRuleSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:FillRuleSym0"},{"display_html":"type family LineJoinSym0 :: AttributeUniverse where ...","name":"LineJoinSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:LineJoinSym0"},{"display_html":"type family LineCapSym0 :: AttributeUniverse where ...","name":"LineCapSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:LineCapSym0"},{"display_html":"type family DashSym0 :: AttributeUniverse where ...","name":"DashSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:DashSym0"},{"display_html":"type family SizeSym0 :: AttributeUniverse where ...","name":"SizeSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:SizeSym0"},{"display_html":"type family PenSym0 :: AttributeUniverse where ...","name":"PenSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:PenSym0"},{"display_html":"type family FillSym0 :: AttributeUniverse where ...","name":"FillSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:FillSym0"},{"display_html":"type family StrokeSym0 :: AttributeUniverse where ...","name":"StrokeSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:StrokeSym0"},{"display_html":"type family TransformationsSym0 :: AttributeUniverse where ...","name":"TransformationsSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TransformationsSym0"},{"display_html":"type family PinSym0 :: AttributeUniverse where ...","name":"PinSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:PinSym0"},{"display_html":"type family MatrixSym0 :: AttributeUniverse where ...","name":"MatrixSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:MatrixSym0"},{"display_html":"type family LayerSym0 :: AttributeUniverse where ...","name":"LayerSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:LayerSym0"},{"display_html":"type CommonAttributes = '['Layer, 'Matrix, 'Pin, 'Transformations]","name":"CommonAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:CommonAttributes"},{"display_html":"type TextAttributes = CommonAttributes ++ '['Stroke, 'Size, 'Width, 'Height, 'Depth, 'VAlign, 'HAlign, 'Style, 'Opacity]","name":"TextAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TextAttributes"},{"display_html":"type TextLabelAttributes = TextAttributes","name":"TextLabelAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TextLabelAttributes"},{"display_html":"type MiniPageAttributes = TextAttributes","name":"MiniPageAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:MiniPageAttributes"},{"display_html":"type ImageAttributes = CommonAttributes","name":"ImageAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:ImageAttributes"},{"display_html":"type SymbolAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Pen, 'Size]","name":"SymbolAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:SymbolAttributes"},{"display_html":"type PathAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Dash, 'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow, 'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]","name":"PathAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:PathAttributes"},{"display_html":"type GroupAttributes = CommonAttributes ++ '['Clip]","name":"GroupAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:GroupAttributes"},{"display_html":"newtype Attr (f :: TyFun u Type -> Type) (label :: u) = GAttr {}","name":"Attr _getAttr GAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:Attr"},{"display_html":"getAttr :: forall u1 (f1 :: TyFun u1 Type -> Type) (label1 :: u1) u2 (f2 :: TyFun u2 Type -> Type) (label2 :: u2) p f3. (Profunctor p, Functor f3) => p (Maybe (Apply f1 label1)) (f3 (Maybe (Apply f2 label2))) -> p (Attr f1 label1) (f3 (Attr f2 label2))","name":"getAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:getAttr"},{"display_html":"pattern Attr :: Apply f label -> Attr f label","name":"Attr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:Attr"},{"display_html":"pattern NoAttr :: Attr f label","name":"NoAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:NoAttr"},{"display_html":"traverseAttr :: forall {u} h (f :: u ~> Type) (label :: u) (g :: u ~> Type). Applicative h => (Apply f label -> h (Apply g label)) -> Attr f label -> h (Attr g label)","name":"traverseAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:traverseAttr"},{"display_html":"pureAttr :: forall {u} h (f :: u ~> Type) (a :: u) (g :: u ~> Type). (Applicative h, Apply f a ~ Apply g a) => Attr f a -> h (Attr g a)","name":"pureAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:pureAttr"},{"display_html":"newtype Attributes (f :: TyFun u Type -> Type) (ats :: [u]) = Attrs (Rec (Attr f) ats)","name":"Attributes Attrs","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:Attributes"},{"display_html":"unAttrs :: forall {u1} {u2} (f1 :: TyFun u1 Type -> Type) (ats :: [u1]) (f' :: TyFun u2 Type -> Type) (ats' :: [u2]) f2. Functor f2 => (Rec (Attr f1) ats -> f2 (Rec (Attr f') ats')) -> Attributes f1 ats -> f2 (Attributes f' ats')","name":"unAttrs","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:unAttrs"},{"display_html":"traverseAttrs :: forall {u} h (f :: TyFun u Type -> Type) (g :: TyFun u Type -> Type) (ats :: [u]). Applicative h => (forall (label :: u). Attr f label -> h (Attr g label)) -> Attributes f ats -> h (Attributes g ats)","name":"traverseAttrs","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:traverseAttrs"},{"display_html":"zipRecsWith :: forall {u} f g h (as :: [u]). (forall (a :: u). f a -> g a -> h a) -> Rec f as -> Rec g as -> Rec h as","name":"zipRecsWith","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:zipRecsWith"},{"display_html":"ixAttr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). at ats => proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))","name":"ixAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:ixAttr"},{"display_html":"_Attr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). (at ats, RecApplicative ats) => proxy at -> Prism' (Attributes f ats) (Apply f at)","name":"_Attr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:_Attr"},{"display_html":"lookupAttr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). at ats => proxy at -> Attributes f ats -> Maybe (Apply f at)","name":"lookupAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:lookupAttr"},{"display_html":"setAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: u ~> Type). at ats => proxy at -> Apply f at -> Attributes f ats -> Attributes f ats","name":"setAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:setAttr"},{"display_html":"takeAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: TyFun u Type -> Type). at ats => proxy at -> Attributes f ats -> (Maybe (Apply f at), Attributes f ats)","name":"takeAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:takeAttr"},{"display_html":"unSetAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: TyFun u Type -> Type). at ats => proxy at -> Attributes f ats -> Attributes f ats","name":"unSetAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:unSetAttr"},{"display_html":"attr :: forall {u} (at :: u) (ats :: [u]) proxy (f :: u ~> Type). (at ats, RecApplicative ats) => proxy at -> Apply f at -> Attributes f ats","name":"attr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:attr"},{"display_html":"data PinType","name":"PinType Vertical Horizontal Yes No","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:PinType"},{"display_html":"data TransformationTypes","name":"TransformationTypes Translations Rigid Affine","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TransformationTypes"},{"display_html":"data HorizontalAlignment","name":"HorizontalAlignment AlignRight AlignHCenter AlignLeft","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:HorizontalAlignment"},{"display_html":"data VerticalAlignment","name":"VerticalAlignment AlignBaseline AlignBottom AlignVCenter AlignTop","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:VerticalAlignment"},{"display_html":"type TeXStyle = Text","name":"TeXStyle","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TeXStyle"},{"display_html":"type TextSizeUnit (r :: k) = r","name":"TextSizeUnit","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TextSizeUnit"},{"display_html":"newtype IpeSize r = IpeSize (IpeValue r)","name":"IpeSize IpeSize","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeSize"},{"display_html":"newtype IpePen r = IpePen (IpeValue r)","name":"IpePen IpePen","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpePen"},{"display_html":"data IpeDash r","name":"IpeDash DashPattern DashNamed","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeDash"},{"display_html":"data FillType","name":"FillType EOFill Wind","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:FillType"},{"display_html":"type IpeOpacity = Text","name":"IpeOpacity","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeOpacity"},{"display_html":"type IpeTiling = Text","name":"IpeTiling","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeTiling"},{"display_html":"type IpeGradient = Text","name":"IpeGradient","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeGradient"},{"display_html":"data IpeArrow r = IpeArrow {}","name":"IpeArrow _arrowSize _arrowName IpeArrow","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeArrow"},{"display_html":"arrowName :: forall r f. Functor f => (Text -> f Text) -> IpeArrow r -> f (IpeArrow r)","name":"arrowName","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:arrowName"},{"display_html":"arrowSize :: forall r1 r2 f. Functor f => (IpeSize r1 -> f (IpeSize r2)) -> IpeArrow r1 -> f (IpeArrow r2)","name":"arrowSize","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:arrowSize"},{"display_html":"normalArrow :: IpeArrow r","name":"normalArrow","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:normalArrow"},{"display_html":"class IpeAttrName (a :: AttributeUniverse) where","name":"IpeAttrName attrName","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeAttrName"},{"display_html":"writeAttrNames :: forall (rs :: [AttributeUniverse]) (f :: AttributeUniverse -> Type). AllConstrained IpeAttrName rs => Rec f rs -> Rec (Const Text :: AttributeUniverse -> Type) rs","name":"writeAttrNames","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:writeAttrNames"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:rect"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:width"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:symbolName"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:PathSegment"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:groupItems"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:IpeObject"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeGroup"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeImage"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeMiniPage"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeUse"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpePath"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:ToObject"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260257 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:commonAttributes"},{"display_html":"flattenGroups :: [IpeObject r] -> [IpeObject r]","name":"flattenGroups","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:flattenGroups"},{"display_html":"data IpeFile r = IpeFile (Maybe IpePreamble) [IpeStyle] (NonEmpty (IpePage r))","name":"IpeFile IpeFile","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeFile"},{"display_html":"preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r)","name":"preamble","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:preamble"},{"display_html":"styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r)","name":"styles","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:styles"},{"display_html":"pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r')","name":"pages","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:pages"},{"display_html":"ipeFile :: NonEmpty (IpePage r) -> IpeFile r","name":"ipeFile","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:ipeFile"},{"display_html":"singlePageFile :: IpePage r -> IpeFile r","name":"singlePageFile","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:singlePageFile"},{"display_html":"singlePageFromContent :: [IpeObject r] -> IpeFile r","name":"singlePageFromContent","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:singlePageFromContent"},{"display_html":"data IpePage r = IpePage [LayerName] [View] [IpeObject r]","name":"IpePage IpePage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpePage"},{"display_html":"layers :: forall r f. Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r)","name":"layers","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:layers"},{"display_html":"views :: forall r f. Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r)","name":"views","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:views"},{"display_html":"content :: forall r r' f. Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r')","name":"content","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:content"},{"display_html":"emptyPage :: IpePage r","name":"emptyPage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:emptyPage"},{"display_html":"fromContent :: [IpeObject r] -> IpePage r","name":"fromContent","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:fromContent"},{"display_html":"onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r)","name":"onLayer","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:onLayer"},{"display_html":"contentInView :: Word -> Getter (IpePage r) [IpeObject r]","name":"contentInView","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:contentInView"},{"display_html":"withDefaults :: IpePage r -> IpePage r","name":"withDefaults","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:withDefaults"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeObject"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeGroup"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeImage"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeMiniPage"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeUse"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpePath"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:ToObject"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:PathSegment"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:symbolName"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:groupItems"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:width"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:rect"},{"display_html":"type IpeBitmap = Text","name":"IpeBitmap","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeBitmap"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260257 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:commonAttributes"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:layerName"},{"display_html":"data View = View [LayerName] LayerName","name":"View View","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:View"},{"display_html":"layerNames :: Lens' View [LayerName]","name":"layerNames","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:layerNames"},{"display_html":"activeLayer :: Lens' View LayerName","name":"activeLayer","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:activeLayer"},{"display_html":"addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r","name":"addStyleSheet","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:addStyleSheet"},{"display_html":"data IpeStyle = IpeStyle (Maybe Text) (Node Text Text)","name":"IpeStyle IpeStyle","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeStyle"},{"display_html":"styleName :: Lens' IpeStyle (Maybe Text)","name":"styleName","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:styleName"},{"display_html":"styleData :: Lens' IpeStyle (Node Text Text)","name":"styleData","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:styleData"},{"display_html":"basicIpeStyle :: IpeStyle","name":"basicIpeStyle","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:basicIpeStyle"},{"display_html":"opacitiesStyle :: IpeStyle","name":"opacitiesStyle","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:opacitiesStyle"},{"display_html":"data IpePreamble = IpePreamble (Maybe Text) Text","name":"IpePreamble IpePreamble","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpePreamble"},{"display_html":"encoding :: Lens' IpePreamble (Maybe Text)","name":"encoding","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:encoding"},{"display_html":"preambleData :: Lens' IpePreamble Text","name":"preambleData","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:preambleData"},{"display_html":"applyMatrix' :: (IsTransformable (i r), 'Matrix AttributesOf i, Dimension (i r) ~ 2, r ~ NumType (i r)) => IpeObject' i r -> IpeObject' i r","name":"applyMatrix'","module":"Ipe.Matrix","link":"hgeometry/ipe/Ipe-Matrix.html#v:applyMatrix-39-"},{"display_html":"applyMatrix :: (Fractional r, Eq r) => IpeObject r -> IpeObject r","name":"applyMatrix","module":"Ipe.Matrix","link":"hgeometry/ipe/Ipe-Matrix.html#v:applyMatrix"},{"display_html":"applyMatrices :: (Fractional r, Eq r) => IpeFile r -> IpeFile r","name":"applyMatrices","module":"Ipe.Matrix","link":"hgeometry/ipe/Ipe-Matrix.html#v:applyMatrices"},{"display_html":"applyMatricesPage :: (Fractional r, Eq r) => IpePage r -> IpePage r","name":"applyMatricesPage","module":"Ipe.Matrix","link":"hgeometry/ipe/Ipe-Matrix.html#v:applyMatricesPage"},{"display_html":"readRawIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readRawIpeFile","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readRawIpeFile"},{"display_html":"readIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readIpeFile","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readIpeFile"},{"display_html":"readSinglePageFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r))","name":"readSinglePageFile","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readSinglePageFile"},{"display_html":"readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r)","name":"readSinglePageFileThrow","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readSinglePageFileThrow"},{"display_html":"type ConversionError = Text","name":"ConversionError","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:ConversionError"},{"display_html":"readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle)","name":"readIpeStylesheet","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readIpeStylesheet"},{"display_html":"addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r)","name":"addStyleSheetFrom","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:addStyleSheetFrom"},{"display_html":"fromIpeXML :: forall {k} t (r :: k). IpeRead (t r) => ByteString -> Either ConversionError (t r)","name":"fromIpeXML","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:fromIpeXML"},{"display_html":"readXML :: ByteString -> Either ConversionError (Node Text Text)","name":"readXML","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readXML"},{"display_html":"class IpeReadText t where","name":"IpeReadText ipeReadText","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:IpeReadText"},{"display_html":"class IpeRead t where","name":"IpeRead ipeRead","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:IpeRead"},{"display_html":"class IpeReadAttr t where","name":"IpeReadAttr ipeReadAttr","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:IpeReadAttr"},{"display_html":"ipeReadTextWith :: (Text -> Either t v) -> Text -> Either ConversionError (IpeValue v)","name":"ipeReadTextWith","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:ipeReadTextWith"},{"display_html":"ipeReadObject :: forall i r (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]) proxy. (IpeRead (i r), f ~ AttrMapSym1 r, ats ~ AttributesOf i, RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => Proxy i -> proxy r -> Node Text Text -> Either ConversionError (i r :+ IpeAttributes i r)","name":"ipeReadObject","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:ipeReadObject"},{"display_html":"ipeReadAttrs :: forall proxy proxy' (i :: Type -> Type) r (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]). (f ~ AttrMapSym1 r, ats ~ AttributesOf i, ReifyConstraint IpeReadAttr (Attr f) ats, RecApplicative ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => proxy i -> proxy' r -> Node Text Text -> Either ConversionError (IpeAttributes i r)","name":"ipeReadAttrs","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:ipeReadAttrs"},{"display_html":"ipeReadRec :: forall (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]). (RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => Proxy f -> Proxy ats -> Node Text Text -> Either ConversionError (Rec (Attr f) ats)","name":"ipeReadRec","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:ipeReadRec"},{"display_html":"class Fractional r => Coordinate r where","name":"Coordinate fromSeq $dmfromSeq","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:Coordinate"},{"display_html":"_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r))","name":"_asPoint","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asPoint"},{"display_html":"_asLineSegment :: forall r p f. (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asLineSegment","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asLineSegment"},{"display_html":"_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asClosedLineSegment","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asClosedLineSegment"},{"display_html":"_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r))","name":"_asRectangle","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asRectangle"},{"display_html":"_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asTriangle","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asTriangle"},{"display_html":"_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolyLine","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asPolyLine"},{"display_html":"_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asSimplePolygon","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asSimplePolygon"},{"display_html":"_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r))","name":"_asConvexPolygon","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asConvexPolygon"},{"display_html":"_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r)","name":"_withAttrs","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_withAttrs"},{"display_html":"class HasDefaultFromIpe g where","name":"HasDefaultFromIpe DefaultFromIpe defaultFromIpe","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#t:HasDefaultFromIpe"},{"display_html":"readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAll","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:readAll"},{"display_html":"readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllDeep","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:readAllDeep"},{"display_html":"readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllFrom","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:readAllFrom"},{"display_html":"type IpeOut g (i :: Type -> Type) r = g -> IpeObject' i r","name":"IpeOut","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#t:IpeOut"},{"display_html":"type IpeOut' (f :: Type -> Type) g (i :: Type -> Type) r = g -> f (IpeObject' i r)","name":"IpeOut'","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#t:IpeOut-39-"},{"display_html":"(!) :: IpeObject' i r -> IpeAttributes i r -> IpeObject' i r","name":"!","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:-33-"},{"display_html":"iO :: ToObject i => IpeObject' i r -> IpeObject r","name":"iO","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:iO"},{"display_html":"iO'' :: forall g r (i :: Type -> Type). (HasDefaultIpeOut g, NumType g ~ r, DefaultIpeOut g ~ i, ToObject i) => g -> IpeAttributes i r -> IpeObject r","name":"iO''","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:iO-39--39-"},{"display_html":"iO' :: HasDefaultIpeOut g => g -> IpeObject (NumType g)","name":"iO'","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:iO-39-"},{"display_html":"class ToObject (DefaultIpeOut g) => HasDefaultIpeOut g where","name":"HasDefaultIpeOut defIO DefaultIpeOut","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#t:HasDefaultIpeOut"},{"display_html":"ipeMark :: Text -> IpeOut (Point 2 r) IpeSymbol r","name":"ipeMark","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeMark"},{"display_html":"ipeDiskMark :: IpeOut (Point 2 r) IpeSymbol r","name":"ipeDiskMark","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeDiskMark"},{"display_html":"defaultBox :: Num r => Rectangle (Point 2 r)","name":"defaultBox","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:defaultBox"},{"display_html":"ipeLine :: (Ord r, Fractional r, Show r) => IpeOut (LinePV 2 r) Path r","name":"ipeLine","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeLine"},{"display_html":"ipeLineIn :: (Ord r, Fractional r, Show r) => Rectangle (Point 2 r) -> IpeOut (LinePV 2 r) Path r","name":"ipeLineIn","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeLineIn"},{"display_html":"ipeHalfLine :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r","name":"ipeHalfLine","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeHalfLine"},{"display_html":"ipeRay :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r","name":"ipeRay","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeRay"},{"display_html":"ipeHalfLineIn :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => Rectangle point -> IpeOut (HalfLine point) Path r","name":"ipeHalfLineIn","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeHalfLineIn"},{"display_html":"ipeLineSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) => IpeOut lineSegment Path r","name":"ipeLineSegment","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeLineSegment"},{"display_html":"ipePolyLine :: IpeOut (PolyLine (Point 2 r)) Path r","name":"ipePolyLine","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipePolyLine"},{"display_html":"ipeEllipse :: IpeOut (Ellipse r) Path r","name":"ipeEllipse","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeEllipse"},{"display_html":"ipeCircle :: Radical r => IpeOut (Circle (Point 2 r)) Path r","name":"ipeCircle","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeCircle"},{"display_html":"ipeDisk :: Radical r => IpeOut (Disk (Point 2 r)) Path r","name":"ipeDisk","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeDisk"},{"display_html":"ipeBezier :: IpeOut (CubicBezier (Point 2 r)) Path r","name":"ipeBezier","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeBezier"},{"display_html":"path :: PathSegment r -> Path r","name":"path","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:path"},{"display_html":"pathSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) => lineSegment -> PathSegment r","name":"pathSegment","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:pathSegment"},{"display_html":"ipePolygon :: Polygon_ polygon point r => IpeOut polygon Path r","name":"ipePolygon","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipePolygon"},{"display_html":"toPolygonPathSegment :: (HasOuterBoundary polygon, Point_ point 2 r, Vertex polygon ~ point) => polygon -> PathSegment r","name":"toPolygonPathSegment","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:toPolygonPathSegment"},{"display_html":"ipeSimplePolygon :: IpeOut (SimplePolygon (Point 2 r)) Path r","name":"ipeSimplePolygon","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeSimplePolygon"},{"display_html":"ipeRectangle :: Num r => IpeOut (Rectangle (Point 2 r)) Path r","name":"ipeRectangle","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeRectangle"},{"display_html":"ipeGroup :: Foldable f => IpeOut (f (IpeObject r)) Group r","name":"ipeGroup","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeGroup"},{"display_html":"ipeLabel :: IpeOut (Text :+ Point 2 r) TextLabel r","name":"ipeLabel","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeLabel"},{"display_html":"labelled :: (Show lbl, NumType g ~ r, ToObject i) => (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r","name":"labelled","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:labelled"},{"display_html":"labelledWith :: (Show lbl, NumType g ~ r, ToObject i) => IpeAttributes TextLabel r -> (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r","name":"labelledWith","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:labelledWith"},{"display_html":"writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFile","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:writeIpeFile"},{"display_html":"writeIpeFile' :: IpeWrite t => t -> OsPath -> IO ()","name":"writeIpeFile'","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:writeIpeFile-39-"},{"display_html":"writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO ()","name":"writeIpePage","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:writeIpePage"},{"display_html":"toIpeXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeXML","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:toIpeXML"},{"display_html":"printAsIpeSelection :: IpeWrite t => t -> IO ()","name":"printAsIpeSelection","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:printAsIpeSelection"},{"display_html":"toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeSelectionXML","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:toIpeSelectionXML"},{"display_html":"class IpeWrite t where","name":"IpeWrite ipeWrite","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#t:IpeWrite"},{"display_html":"class IpeWriteText t where","name":"IpeWriteText ipeWriteText","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#t:IpeWriteText"},{"display_html":"ipeWriteAttrs :: forall (rs :: [AttributeUniverse]) (f :: TyFun AttributeUniverse Type -> Type). (RecordToList rs, RMap rs, ReifyConstraint IpeWriteText (Attr f) rs, AllConstrained IpeAttrName rs, RecAll (Attr f) rs IpeWriteText) => Attributes f rs -> [(Text, Text)]","name":"ipeWriteAttrs","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:ipeWriteAttrs"},{"display_html":"writeAttrValues :: forall {u} (rs :: [u]) (f :: u -> Type). (RMap rs, ReifyConstraint IpeWriteText f rs, RecAll f rs IpeWriteText) => Rec f rs -> Rec (Const (Maybe Text) :: u -> Type) rs","name":"writeAttrValues","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:writeAttrValues"},{"display_html":"ipeToIpeWith :: Options -> FileType -> OsPath -> OsPath -> IO ()","name":"ipeToIpeWith","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#v:ipeToIpeWith"},{"display_html":"ipeToIpe :: FileType -> OsPath -> OsPath -> IO ()","name":"ipeToIpe","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#v:ipeToIpe"},{"display_html":"writeIpeFileAsPdf :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFileAsPdf","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#v:writeIpeFileAsPdf"},{"display_html":"data FileType","name":"FileType XML PDF","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:FileType"},{"display_html":"data Export","name":"Export RetainIpeInfo Export","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:Export"},{"display_html":"type PageNumber = Int","name":"PageNumber","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:PageNumber"},{"display_html":"type ViewNumber = Int","name":"ViewNumber","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:ViewNumber"},{"display_html":"data MarkedView","name":"MarkedView OnlyMarkedViews All","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:MarkedView"},{"display_html":"data NoZip","name":"NoZip NoZip Zip","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:NoZip"},{"display_html":"data PageRange","name":"PageRange EntireFile PageRange","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:PageRange"},{"display_html":"data Options = Options {}","name":"Options markedView nozip runLatex singleView pages export Options","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:Options"},{"display_html":"defaultOptions :: Options","name":"defaultOptions","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#v:defaultOptions"},{"display_html":"data IpeFile r = IpeFile (Maybe IpePreamble) [IpeStyle] (NonEmpty (IpePage r))","name":"IpeFile IpeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeFile"},{"display_html":"preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r)","name":"preamble","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:preamble"},{"display_html":"styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r)","name":"styles","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:styles"},{"display_html":"pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r')","name":"pages","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:pages"},{"display_html":"ipeFile :: NonEmpty (IpePage r) -> IpeFile r","name":"ipeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:ipeFile"},{"display_html":"singlePageFile :: IpePage r -> IpeFile r","name":"singlePageFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:singlePageFile"},{"display_html":"singlePageFromContent :: [IpeObject r] -> IpeFile r","name":"singlePageFromContent","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:singlePageFromContent"},{"display_html":"readIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readIpeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readIpeFile"},{"display_html":"readSinglePageFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r))","name":"readSinglePageFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readSinglePageFile"},{"display_html":"readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r)","name":"readSinglePageFileThrow","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readSinglePageFileThrow"},{"display_html":"readRawIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readRawIpeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readRawIpeFile"},{"display_html":"type ConversionError = Text","name":"ConversionError","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:ConversionError"},{"display_html":"readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAll","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readAll"},{"display_html":"readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllDeep","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readAllDeep"},{"display_html":"readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllFrom","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readAllFrom"},{"display_html":"writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:writeIpeFile"},{"display_html":"writeIpeFile' :: IpeWrite t => t -> OsPath -> IO ()","name":"writeIpeFile'","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:writeIpeFile-39-"},{"display_html":"writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO ()","name":"writeIpePage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:writeIpePage"},{"display_html":"toIpeXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeXML","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:toIpeXML"},{"display_html":"printAsIpeSelection :: IpeWrite t => t -> IO ()","name":"printAsIpeSelection","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:printAsIpeSelection"},{"display_html":"toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeSelectionXML","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:toIpeSelectionXML"},{"display_html":"data IpePage r = IpePage [LayerName] [View] [IpeObject r]","name":"IpePage IpePage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpePage"},{"display_html":"layers :: forall r f. Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r)","name":"layers","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:layers"},{"display_html":"views :: forall r f. Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r)","name":"views","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:views"},{"display_html":"content :: forall r r' f. Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r')","name":"content","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:content"},{"display_html":"emptyPage :: IpePage r","name":"emptyPage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:emptyPage"},{"display_html":"fromContent :: [IpeObject r] -> IpePage r","name":"fromContent","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:fromContent"},{"display_html":"onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r)","name":"onLayer","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:onLayer"},{"display_html":"contentInView :: Word -> Getter (IpePage r) [IpeObject r]","name":"contentInView","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:contentInView"},{"display_html":"withDefaults :: IpePage r -> IpePage r","name":"withDefaults","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:withDefaults"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeObject"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpePath"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeUse"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeGroup"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeMiniPage"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeImage"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:ToObject"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:PathSegment"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:symbolName"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:groupItems"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:width"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:rect"},{"display_html":"type IpeBitmap = Text","name":"IpeBitmap","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeBitmap"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260257 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:commonAttributes"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:layerName"},{"display_html":"data View = View [LayerName] LayerName","name":"View View","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:View"},{"display_html":"layerNames :: Lens' View [LayerName]","name":"layerNames","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:layerNames"},{"display_html":"activeLayer :: Lens' View LayerName","name":"activeLayer","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:activeLayer"},{"display_html":"data IpeStyle = IpeStyle (Maybe Text) (Node Text Text)","name":"IpeStyle IpeStyle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeStyle"},{"display_html":"styleName :: Lens' IpeStyle (Maybe Text)","name":"styleName","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:styleName"},{"display_html":"styleData :: Lens' IpeStyle (Node Text Text)","name":"styleData","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:styleData"},{"display_html":"basicIpeStyle :: IpeStyle","name":"basicIpeStyle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:basicIpeStyle"},{"display_html":"opacitiesStyle :: IpeStyle","name":"opacitiesStyle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:opacitiesStyle"},{"display_html":"readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle)","name":"readIpeStylesheet","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readIpeStylesheet"},{"display_html":"addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r","name":"addStyleSheet","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:addStyleSheet"},{"display_html":"addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r)","name":"addStyleSheetFrom","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:addStyleSheetFrom"},{"display_html":"data IpePreamble = IpePreamble (Maybe Text) Text","name":"IpePreamble IpePreamble","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpePreamble"},{"display_html":"encoding :: Lens' IpePreamble (Maybe Text)","name":"encoding","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:encoding"},{"display_html":"preambleData :: Lens' IpePreamble Text","name":"preambleData","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:preambleData"},{"display_html":"class IpeRead t where","name":"IpeRead ipeRead","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeRead"},{"display_html":"_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r))","name":"_asPoint","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asPoint"},{"display_html":"_asLineSegment :: forall r p f. (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asLineSegment","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asLineSegment"},{"display_html":"_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asClosedLineSegment","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asClosedLineSegment"},{"display_html":"_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r))","name":"_asRectangle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asRectangle"},{"display_html":"_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asTriangle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asTriangle"},{"display_html":"_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolyLine","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asPolyLine"},{"display_html":"_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asSimplePolygon","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asSimplePolygon"},{"display_html":"_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r))","name":"_asConvexPolygon","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asConvexPolygon"},{"display_html":"_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r)","name":"_withAttrs","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_withAttrs"},{"display_html":"class HasDefaultFromIpe g where","name":"HasDefaultFromIpe DefaultFromIpe defaultFromIpe","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:HasDefaultFromIpe"},{"display_html":"class IpeWrite t where","name":"IpeWrite ipeWrite","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeWrite"},{"display_html":"class IpeWriteText t where","name":"IpeWriteText ipeWriteText","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeWriteText"},{"display_html":"module Ipe.IpeOut","name":"","module":"Ipe","link":"hgeometry/ipe"},{"display_html":"module Ipe.Attributes","name":"","module":"Ipe","link":"hgeometry/ipe"},{"display_html":"module Ipe.Value","name":"","module":"Ipe","link":"hgeometry/ipe"},{"display_html":"newtype IpeColor r = IpeColor (IpeValue (RGB r))","name":"IpeColor IpeColor","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeColor"},{"display_html":"named :: Text -> IpeColor r","name":"named","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:named"},{"display_html":"class (HasCenter ball point, NumType ball ~ NumType point, Point_ point (Dimension ball) (NumType ball)) => Ball_ ball point | ball -> point where","name":"Ball_ squaredRadius fromCenterAndSquaredRadius unitBall radius $dmunitBall $dmradius","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#t:Ball_"},{"display_html":"pattern Ball_ :: Ball_ ball point => point -> NumType ball -> ball","name":"Ball_","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:Ball_"},{"display_html":"class HasCenter geom point | geom -> point where","name":"HasCenter center","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#t:HasCenter"},{"display_html":"fromDiametralPair :: forall r point (d :: Nat) ball. (Fractional r, Point_ point d r, Ball_ ball point, Has_ Metric_ d r) => point -> point -> ball","name":"fromDiametralPair","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:fromDiametralPair"},{"display_html":"fromCenterAndPoint :: forall r point (d :: Nat) ball. (Num r, Point_ point d r, Ball_ ball point, Has_ Metric_ d r) => point -> point -> ball","name":"fromCenterAndPoint","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:fromCenterAndPoint"},{"display_html":"class (Ball_ disk point, Dimension disk ~ 2) => Disk_ disk point","name":"Disk_","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#t:Disk_"},{"display_html":"fromBoundaryPoints :: (Disk_ disk (Point 2 r), Point_ point 2 r, Fractional r) => Vector 3 point -> disk","name":"fromBoundaryPoints","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:fromBoundaryPoints"},{"display_html":"pattern Disk_ :: Disk_ ball point => point -> NumType ball -> ball","name":"Disk_","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:Disk_"},{"display_html":"newtype Boundary g = Boundary g","name":"Boundary Boundary","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#t:Boundary"},{"display_html":"_Boundary :: forall g h p f. (Profunctor p, Functor f) => p (Boundary g) (f (Boundary h)) -> p g (f h)","name":"_Boundary","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#v:_Boundary"},{"display_html":"data PointLocationResult","name":"PointLocationResult Inside OnBoundary Outside","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#t:PointLocationResult"},{"display_html":"data PointLocationResultWith edge","name":"PointLocationResultWith StrictlyInside OnBoundaryEdge StrictlyOutside","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#t:PointLocationResultWith"},{"display_html":"asPointLocationResult :: PointLocationResultWith edge -> PointLocationResult","name":"asPointLocationResult","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#v:asPointLocationResult"},{"display_html":"data CardinalDirection","name":"CardinalDirection North East South West","module":"HGeometry.Direction","link":"hgeometry/kernel/HGeometry-Direction.html#t:CardinalDirection"},{"display_html":"oppositeDirection :: CardinalDirection -> CardinalDirection","name":"oppositeDirection","module":"HGeometry.Direction","link":"hgeometry/kernel/HGeometry-Direction.html#v:oppositeDirection"},{"display_html":"data InterCardinalDirection","name":"InterCardinalDirection NorthWest NorthEast SouthEast SouthWest","module":"HGeometry.Direction","link":"hgeometry/kernel/HGeometry-Direction.html#t:InterCardinalDirection"},{"display_html":"interCardinalsOf :: CardinalDirection -> Vector 2 InterCardinalDirection","name":"interCardinalsOf","module":"HGeometry.Direction","link":"hgeometry/kernel/HGeometry-Direction.html#v:interCardinalsOf"},{"display_html":"class (NumType hyperPlane ~ r, Dimension hyperPlane ~ d, Has_ Vector_ d r, Has_ Vector_ (1 + d) r) => HyperPlane_ hyperPlane (d :: Natural) r | hyperPlane -> d, hyperPlane -> r where","name":"HyperPlane_ evalHyperPlaneEquation hyperPlaneEquation normalVector onHyperPlane onSideTest $dmevalHyperPlaneEquation $dmhyperPlaneEquation $dmnormalVector $dmonHyperPlane $dmonSideTest","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#t:HyperPlane_"},{"display_html":"class HyperPlane_ hyperPlane d r => ConstructableHyperPlane_ hyperPlane (d :: Natural) r where","name":"ConstructableHyperPlane_ HyperPlaneFromEquationConstraint hyperPlaneFromEquation fromPointAndNormal $dmfromPointAndNormal","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#t:ConstructableHyperPlane_"},{"display_html":"class HyperPlane_ hyperPlane d r => NonVerticalHyperPlane_ hyperPlane (d :: Natural) r where","name":"NonVerticalHyperPlane_ hyperPlaneCoefficients evalAt verticalSideTest $dmevalAt $dmverticalSideTest","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#t:NonVerticalHyperPlane_"},{"display_html":"isParallelTo :: forall hyperPlane (d :: Natural) r hyperPlane'. (HyperPlane_ hyperPlane d r, HyperPlane_ hyperPlane' d r, Has_ Metric_ d r, Num r, Eq r, 1 <= d) => hyperPlane -> hyperPlane' -> Bool","name":"isParallelTo","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#v:isParallelTo"},{"display_html":"pointOn :: forall hyperPlane (d :: Natural) r. (HyperPlane_ hyperPlane d r, Eq r, Fractional r, Has_ Additive_ d r, FoldableWithIndex Int (Vector d)) => hyperPlane -> Point d r","name":"pointOn","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#v:pointOn"},{"display_html":"class HyperPlaneFromPoints hyperPlane where","name":"HyperPlaneFromPoints hyperPlaneThrough","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#t:HyperPlaneFromPoints"},{"display_html":"class (HyperPlane_ (BoundingHyperPlane halfSpace d r) d r, Dimension halfSpace ~ d, Dimension (BoundingHyperPlane halfSpace d r) ~ d, NumType halfSpace ~ r, NumType (BoundingHyperPlane halfSpace d r) ~ r) => HalfSpace_ halfSpace (d :: Natural) r | halfSpace -> d, halfSpace -> r where","name":"HalfSpace_ BoundingHyperPlane boundingHyperPlane halfSpaceSign","module":"HGeometry.HalfSpace.Class","link":"hgeometry/kernel/HGeometry-HalfSpace-Class.html#t:HalfSpace_"},{"display_html":"type HalfPlane_ halfPlane r = HalfSpace_ halfPlane 2 r","name":"HalfPlane_","module":"HGeometry.HalfSpace.Class","link":"hgeometry/kernel/HGeometry-HalfSpace-Class.html#t:HalfPlane_"},{"display_html":"newtype NonVerticalHyperPlane (d :: Nat) r where","name":"NonVerticalHyperPlane NonVerticalHyperPlane Plane","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#t:NonVerticalHyperPlane"},{"display_html":"asNonVerticalHyperPlane :: forall hyperPlane (d :: Natural) r. (HyperPlane_ hyperPlane d r, Fractional r, Eq r, 1 <= d) => hyperPlane -> Maybe (NonVerticalHyperPlane d r)","name":"asNonVerticalHyperPlane","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#v:asNonVerticalHyperPlane"},{"display_html":"type Plane = NonVerticalHyperPlane 3","name":"Plane","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#t:Plane"},{"display_html":"type Plane_ plane = NonVerticalHyperPlane_ plane 3","name":"Plane_","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#t:Plane_"},{"display_html":"pattern Plane_ :: Plane_ plane r => r -> r -> r -> plane","name":"Plane_","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#v:Plane_"},{"display_html":"module HGeometry.HyperPlane.Class","name":"","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel"},{"display_html":"module HGeometry.HyperPlane.Class","name":"","module":"HGeometry.HyperPlane","link":"hgeometry/kernel"},{"display_html":"newtype HyperPlane (d :: Natural) r where","name":"HyperPlane HyperPlane HyperPlane2 HyperPlane3","module":"HGeometry.HyperPlane","link":"hgeometry/kernel/HGeometry-HyperPlane.html#t:HyperPlane"},{"display_html":"type MkHyperPlaneConstraints (d :: Natural) r = (d < (d + 1), KnownNat d, Has_ Metric_ d r, Has_ Metric_ (d + 1) r, Has_ Vector_ d r, Has_ Vector_ (d + 1) r)","name":"MkHyperPlaneConstraints","module":"HGeometry.HyperPlane","link":"hgeometry/kernel/HGeometry-HyperPlane.html#t:MkHyperPlaneConstraints"},{"display_html":"cmpInDirection :: forall point (d :: Natural) r. (Ord r, Num r, Has_ Metric_ (d + 1) r, Has_ Metric_ d r, Point_ point d r, d < (d + 1)) => Vector d r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry.HyperPlane","link":"hgeometry/kernel/HGeometry-HyperPlane.html#v:cmpInDirection"},{"display_html":"module HGeometry.HyperPlane.NonVertical","name":"","module":"HGeometry.HyperPlane","link":"hgeometry/kernel"},{"display_html":"type family Intersection g h","name":"Intersection","module":"HGeometry.Intersection","link":"hgeometry/kernel/HGeometry-Intersection.html#t:Intersection"},{"display_html":"data family IntersectionOf g h","name":"IntersectionOf","module":"HGeometry.Intersection","link":"hgeometry/kernel/HGeometry-Intersection.html#t:IntersectionOf"},{"display_html":"class HasIntersectionWith g h where","name":"HasIntersectionWith intersects $dmintersects","module":"HGeometry.Intersection","link":"hgeometry/kernel/HGeometry-Intersection.html#t:HasIntersectionWith"},{"display_html":"class HasIntersectionWith g h => IsIntersectableWith g h where","name":"IsIntersectableWith intersect","module":"HGeometry.Intersection","link":"hgeometry/kernel/HGeometry-Intersection.html#t:IsIntersectableWith"},{"display_html":"data HalfSpaceF boundingHyperPlane = HalfSpace !Sign boundingHyperPlane","name":"HalfSpaceF HalfSpace","module":"HGeometry.HalfSpace","link":"hgeometry/kernel/HGeometry-HalfSpace.html#t:HalfSpaceF"},{"display_html":"type HalfSpace (d :: Natural) r = HalfSpaceF (HyperPlane d r)","name":"HalfSpace","module":"HGeometry.HalfSpace","link":"hgeometry/kernel/HGeometry-HalfSpace.html#t:HalfSpace"},{"display_html":"data Sign","name":"Sign Negative Positive","module":"HGeometry.HalfSpace","link":"hgeometry/kernel/HGeometry-HalfSpace.html#t:Sign"},{"display_html":"module HGeometry.HalfSpace.Class","name":"","module":"HGeometry.HalfSpace","link":"hgeometry/kernel"},{"display_html":"class IsEndPoint endPoint endPoint => EndPoint_ endPoint where","name":"EndPoint_ endPointType mkEndPoint","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:EndPoint_"},{"display_html":"class IsEndPoint endPoint endPoint' where","name":"IsEndPoint _endPoint","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:IsEndPoint"},{"display_html":"data EndPointType","name":"EndPointType Open Closed","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:EndPointType"},{"display_html":"newtype EndPoint (et :: EndPointType) r where","name":"EndPoint EndPoint OpenE ClosedE","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:EndPoint"},{"display_html":"data AnEndPoint r where","name":"AnEndPoint AnOpenE AnClosedE AnEndPoint","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:AnEndPoint"},{"display_html":"asAnEndPoint :: EndPoint_ endPoint => endPoint -> AnEndPoint (IxValue endPoint)","name":"asAnEndPoint","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#v:asAnEndPoint"},{"display_html":"class (IntervalLike_ interval r, NumType interval ~ r) => Interval_ interval r | interval -> r","name":"Interval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:Interval_"},{"display_html":"pattern Interval_ :: Interval_ interval r => StartPointOf interval -> EndPointOf interval -> interval","name":"Interval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:Interval_"},{"display_html":"class (HasStart interval point, HasStartPoint interval (StartPointOf interval), HasEnd interval point, HasEndPoint interval (EndPointOf interval), EndPoint_ (EndPointOf interval), IxValue (EndPointOf interval) ~ point, EndPoint_ (StartPointOf interval), IxValue (StartPointOf interval) ~ point) => IntervalLike_ interval point | interval -> point","name":"IntervalLike_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:IntervalLike_"},{"display_html":"class Interval_ interval point => ConstructableInterval_ interval point where","name":"ConstructableInterval_ mkInterval buildInterval $dmbuildInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:ConstructableInterval_"},{"display_html":"class (Interval_ interval r, StartPointOf interval ~ EndPoint 'Closed r, EndPointOf interval ~ EndPoint 'Closed r) => ClosedInterval_ interval r","name":"ClosedInterval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:ClosedInterval_"},{"display_html":"pattern ClosedInterval_ :: ClosedInterval_ interval r => r -> r -> interval","name":"ClosedInterval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:ClosedInterval_"},{"display_html":"class (ClosedInterval_ interval r, ConstructableInterval_ interval r) => ConstructableClosedInterval_ interval r where","name":"ConstructableClosedInterval_ mkClosedInterval buildClosedInterval $dmmkClosedInterval $dmbuildClosedInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:ConstructableClosedInterval_"},{"display_html":"clampTo :: (ClosedInterval_ interval r, Ord r) => interval -> r -> r","name":"clampTo","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:clampTo"},{"display_html":"class (Interval_ interval r, StartPointOf interval ~ EndPoint 'Open r, EndPointOf interval ~ EndPoint 'Open r) => OpenInterval_ interval r | interval -> r","name":"OpenInterval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:OpenInterval_"},{"display_html":"pattern OpenInterval_ :: OpenInterval_ interval r => r -> r -> interval","name":"OpenInterval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:OpenInterval_"},{"display_html":"class (OpenInterval_ interval r, ConstructableInterval_ interval r) => ConstructableOpenInterval_ interval r | interval -> r where","name":"ConstructableOpenInterval_ mkOpenInterval $dmmkOpenInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:ConstructableOpenInterval_"},{"display_html":"class HasStart seg p | seg -> p where","name":"HasStart start","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:HasStart"},{"display_html":"class HasEnd seg p | seg -> p where","name":"HasEnd end","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:HasEnd"},{"display_html":"startAndEnd :: (HasStart seg p, HasEnd seg p) => seg -> (p, p)","name":"startAndEnd","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:startAndEnd"},{"display_html":"type family StartPointOf interval","name":"StartPointOf","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:StartPointOf"},{"display_html":"type family EndPointOf interval","name":"EndPointOf","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:EndPointOf"},{"display_html":"class HasStartPoint seg p | seg -> p where","name":"HasStartPoint startPoint","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:HasStartPoint"},{"display_html":"class HasEndPoint seg p | seg -> p where","name":"HasEndPoint endPoint","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:HasEndPoint"},{"display_html":"startAndEndPoint :: (HasStartPoint seg s, HasEndPoint seg e) => seg -> (s, e)","name":"startAndEndPoint","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:startAndEndPoint"},{"display_html":"inInterval :: forall interval r. (Ord r, Interval_ interval r) => r -> interval -> PointLocationResult","name":"inInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:inInterval"},{"display_html":"stabsInterval :: forall interval r. (Ord r, Interval_ interval r) => r -> interval -> Bool","name":"stabsInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:stabsInterval"},{"display_html":"compareInterval :: (Ord r, Interval_ interval r) => r -> interval -> Ordering","name":"compareInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:compareInterval"},{"display_html":"compareIntervalExact :: (Ord r, Interval_ interval r) => r -> interval -> CompareInterval","name":"compareIntervalExact","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:compareIntervalExact"},{"display_html":"data CompareInterval","name":"CompareInterval Before OnStart Interior OnEnd After","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:CompareInterval"},{"display_html":"shiftLeft :: (Num r, Interval_ interval r) => r -> interval -> interval","name":"shiftLeft","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:shiftLeft"},{"display_html":"shiftRight :: (Num r, Interval_ interval r) => r -> interval -> interval","name":"shiftRight","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:shiftRight"},{"display_html":"duration :: (Interval_ interval r, Num r) => interval -> r","name":"duration","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:duration"},{"display_html":"module HGeometry.Interval.EndPoint","name":"","module":"HGeometry.Interval.Class","link":"hgeometry/kernel"},{"display_html":"data Interval (endPoint :: k -> Type) (r :: k) where","name":"Interval Interval ClosedInterval OpenInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:Interval"},{"display_html":"type ClosedInterval r = Interval (EndPoint 'Closed) r","name":"ClosedInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:ClosedInterval"},{"display_html":"type OpenInterval r = Interval (EndPoint 'Open) r","name":"OpenInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:OpenInterval"},{"display_html":"data HalfOpenInterval r = HalfOpenInterval !(EndPoint 'Open r) !(EndPoint 'Closed r)","name":"HalfOpenInterval HalfOpenInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:HalfOpenInterval"},{"display_html":"module HGeometry.Interval.Class","name":"","module":"HGeometry.Interval","link":"hgeometry/kernel"},{"display_html":"asClosedInterval :: Interval_ interval r => interval -> Maybe (ClosedInterval r)","name":"asClosedInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#v:asClosedInterval"},{"display_html":"asOpenInterval :: Interval_ interval r => interval -> Maybe (OpenInterval r)","name":"asOpenInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#v:asOpenInterval"},{"display_html":"asAnInterval :: Interval_ interval r => interval -> Interval AnEndPoint r","name":"asAnInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#v:asAnInterval"},{"display_html":"data Interval_x_IntervalIntersection r interval","name":"Interval_x_IntervalIntersection Interval_x_Interval_Point Interval_x_Interval_Contained Interval_x_Interval_Partial","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:Interval_x_IntervalIntersection"},{"display_html":"class (HasMinPoint box point, HasMaxPoint box point, Point_ point (Dimension box) (NumType box)) => Box_ box point | box -> point where","name":"Box_ extent","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#t:Box_"},{"display_html":"class HasMinPoint box point | box -> point where","name":"HasMinPoint minPoint","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#t:HasMinPoint"},{"display_html":"class HasMaxPoint box point | box -> point where","name":"HasMaxPoint maxPoint","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#t:HasMaxPoint"},{"display_html":"centerPoint :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, Fractional r) => box -> point","name":"centerPoint","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#v:centerPoint"},{"display_html":"type Rectangle_ rectangle point = (Box_ rectangle point, Dimension rectangle ~ 2)","name":"Rectangle_","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#t:Rectangle_"},{"display_html":"width :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, 1 <= d, Functor (Vector d), Num r) => box -> r","name":"width","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#v:width"},{"display_html":"height :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, 2 <= d, Functor (Vector d), Num r) => box -> r","name":"height","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#v:height"},{"display_html":"size :: forall box (d :: Nat) point r. (Box_ box point, Point_ point d r, Num r, Functor (Vector d)) => box -> Vector d r","name":"size","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#v:size"},{"display_html":"class Line_ line (d :: Nat) r | line -> d, line -> r where","name":"Line_ fromPointAndVec","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#t:Line_"},{"display_html":"type Line2_ line r = (Line_ line 2 r, HyperPlane_ line 2 r)","name":"Line2_","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#t:Line2_"},{"display_html":"lineThrough :: forall line point (d :: Nat) r. (Line_ line d r, Point_ point d r, Num r) => point -> point -> line","name":"lineThrough","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#v:lineThrough"},{"display_html":"verticalLine :: forall r line. (Line_ line 2 r, Num r) => r -> line","name":"verticalLine","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#v:verticalLine"},{"display_html":"horizontalLine :: forall r line. (Line_ line 2 r, Num r) => r -> line","name":"horizontalLine","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#v:horizontalLine"},{"display_html":"class HasOnLine line (d :: Nat) | line -> d where","name":"HasOnLine onLine","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#t:HasOnLine"},{"display_html":"type NVLine2_ line r = (Line_ line 2 r, NonVerticalHyperPlane_ line 2 r)","name":"NVLine2_","module":"HGeometry.Line.NonVertical.Class","link":"hgeometry/kernel/HGeometry-Line-NonVertical-Class.html#t:NVLine2_"},{"display_html":"pattern NVLine2_ :: NonVerticalHyperPlane_ line 2 r => r -> r -> line","name":"NVLine2_","module":"HGeometry.Line.NonVertical.Class","link":"hgeometry/kernel/HGeometry-Line-NonVertical-Class.html#v:NVLine2_"},{"display_html":"slope :: NonVerticalHyperPlane_ line 2 r => Lens' line r","name":"slope","module":"HGeometry.Line.NonVertical.Class","link":"hgeometry/kernel/HGeometry-Line-NonVertical-Class.html#v:slope"},{"display_html":"intercept :: NonVerticalHyperPlane_ line 2 r => Lens' line r","name":"intercept","module":"HGeometry.Line.NonVertical.Class","link":"hgeometry/kernel/HGeometry-Line-NonVertical-Class.html#v:intercept"},{"display_html":"newtype LineEQ r where","name":"LineEQ LineEQ MkLineEQ","module":"HGeometry.Line.LineEQ","link":"hgeometry/kernel/HGeometry-Line-LineEQ.html#t:LineEQ"},{"display_html":"evalAt' :: Num r => r -> LineEQ r -> r","name":"evalAt'","module":"HGeometry.Line.LineEQ","link":"hgeometry/kernel/HGeometry-Line-LineEQ.html#v:evalAt-39-"},{"display_html":"module HGeometry.Line.NonVertical.Class","name":"","module":"HGeometry.Line.LineEQ","link":"hgeometry/kernel"},{"display_html":"data VerticalOrLineEQ r","name":"VerticalOrLineEQ NonVertical VerticalLineThrough","module":"HGeometry.Line.General","link":"hgeometry/kernel/HGeometry-Line-General.html#t:VerticalOrLineEQ"},{"display_html":"dualPoint :: forall hyperPlane (d :: Natural) r. (NonVerticalHyperPlane_ hyperPlane d r, Num r, 1 <= d) => hyperPlane -> Point d r","name":"dualPoint","module":"HGeometry.Duality","link":"hgeometry/kernel/HGeometry-Duality.html#v:dualPoint"},{"display_html":"dualHyperPlane :: forall point (d :: Nat) r. (Point_ point d r, Num r, 1 <= d) => point -> NonVerticalHyperPlane d r","name":"dualHyperPlane","module":"HGeometry.Duality","link":"hgeometry/kernel/HGeometry-Duality.html#v:dualHyperPlane"},{"display_html":"dualLine :: (Point_ point 2 r, Num r) => point -> LineEQ r","name":"dualLine","module":"HGeometry.Duality","link":"hgeometry/kernel/HGeometry-Duality.html#v:dualLine"},{"display_html":"liftPointToPlane :: (Point_ point 2 r, Num r) => point -> NonVerticalHyperPlane 3 r","name":"liftPointToPlane","module":"HGeometry.Duality","link":"hgeometry/kernel/HGeometry-Duality.html#v:liftPointToPlane"},{"display_html":"data LinePV (d :: Nat) r = LinePV {}","name":"LinePV LinePV _anchorPoint _direction","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:LinePV"},{"display_html":"anchorPoint :: forall (d :: Nat) r f. Functor f => (Point d r -> f (Point d r)) -> LinePV d r -> f (LinePV d r)","name":"anchorPoint","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:anchorPoint"},{"display_html":"class HasDirection t where","name":"HasDirection direction","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:HasDirection"},{"display_html":"isIdenticalTo :: forall (d :: Nat) r. Eq (Vector d r) => LinePV d r -> LinePV d r -> Bool","name":"isIdenticalTo","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:isIdenticalTo"},{"display_html":"class HasSupportingLine t where","name":"HasSupportingLine supportingLine","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:HasSupportingLine"},{"display_html":"fromLinearFunction :: Num r => r -> r -> LinePV 2 r","name":"fromLinearFunction","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:fromLinearFunction"},{"display_html":"toLinearFunction :: (Fractional r, Ord r) => LinePV 2 r -> Maybe (LineEQ r)","name":"toLinearFunction","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:toLinearFunction"},{"display_html":"data SideTestUpDown","name":"SideTestUpDown On Above Below","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:SideTestUpDown"},{"display_html":"class OnSideUpDownTest t where","name":"OnSideUpDownTest onSideUpDown","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:OnSideUpDownTest"},{"display_html":"liesAbove :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool","name":"liesAbove","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:liesAbove"},{"display_html":"liesBelow :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool","name":"liesBelow","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:liesBelow"},{"display_html":"data SideTest","name":"SideTest LeftSide OnLine RightSide","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:SideTest"},{"display_html":"onSide :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> SideTest","name":"onSide","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:onSide"},{"display_html":"leftHalfPlane :: (Num r, Ord r) => LinePV 2 r -> HalfSpaceF (LinePV 2 r)","name":"leftHalfPlane","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:leftHalfPlane"},{"display_html":"rightHalfPlane :: (Num r, Ord r) => LinePV 2 r -> HalfSpaceF (LinePV 2 r)","name":"rightHalfPlane","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:rightHalfPlane"},{"display_html":"bisector :: (Fractional r, Point_ point 2 r) => point -> point -> LinePV 2 r","name":"bisector","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:bisector"},{"display_html":"perpendicularTo :: Num r => LinePV 2 r -> LinePV 2 r","name":"perpendicularTo","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:perpendicularTo"},{"display_html":"isPerpendicularTo :: (Num r, Eq r) => Vector 2 r -> LinePV 2 r -> Bool","name":"isPerpendicularTo","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:isPerpendicularTo"},{"display_html":"cmpSlope :: (Num r, Ord r) => LinePV 2 r -> LinePV 2 r -> Ordering","name":"cmpSlope","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:cmpSlope"},{"display_html":"module HGeometry.Line.Class","name":"","module":"HGeometry.Line","link":"hgeometry/kernel"},{"display_html":"module HGeometry.Line.LineEQ","name":"","module":"HGeometry.Line","link":"hgeometry/kernel"},{"display_html":"module HGeometry.Line.PointAndVector","name":"","module":"HGeometry.Line","link":"hgeometry/kernel"},{"display_html":"type LineLineIntersection line = LineLineIntersectionG (NumType line) line","name":"LineLineIntersection","module":"HGeometry.Line","link":"hgeometry/kernel/HGeometry-Line.html#t:LineLineIntersection"},{"display_html":"data LineLineIntersectionG r line","name":"LineLineIntersectionG Line_x_Line_Point Line_x_Line_Line","module":"HGeometry.Line","link":"hgeometry/kernel/HGeometry-Line.html#t:LineLineIntersectionG"},{"display_html":"data HalfLine point = HalfLine !point !(Vector (Dimension point) (NumType point))","name":"HalfLine HalfLine","module":"HGeometry.HalfLine","link":"hgeometry/kernel/HGeometry-HalfLine.html#t:HalfLine"},{"display_html":"halfLineThrough :: forall point (d :: Nat) r. (Point_ point d r, Num r) => point -> point -> HalfLine point","name":"halfLineThrough","module":"HGeometry.HalfLine","link":"hgeometry/kernel/HGeometry-HalfLine.html#v:halfLineThrough"},{"display_html":"data LineHalfLineIntersection point halfLine","name":"LineHalfLineIntersection Line_x_HalfLine_Point Line_x_HalfLine_HalfLine","module":"HGeometry.HalfLine","link":"hgeometry/kernel/HGeometry-HalfLine.html#t:LineHalfLineIntersection"},{"display_html":"class (IntervalLike_ lineSegment point, Point_ point (Dimension lineSegment) (NumType lineSegment)) => LineSegment_ lineSegment point | lineSegment -> point","name":"LineSegment_","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:LineSegment_"},{"display_html":"pattern LineSegment_ :: LineSegment_ lineSegment point => point -> point -> lineSegment","name":"LineSegment_","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:LineSegment_"},{"display_html":"class LineSegment_ lineSegment point => ConstructableLineSegment_ lineSegment point where","name":"ConstructableLineSegment_ uncheckedLineSegment mkLineSegment $dmmkLineSegment","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:ConstructableLineSegment_"},{"display_html":"class (LineSegment_ lineSegment point, StartPointOf lineSegment ~ EndPoint 'Closed point, EndPointOf lineSegment ~ EndPoint 'Closed point) => ClosedLineSegment_ lineSegment point","name":"ClosedLineSegment_","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:ClosedLineSegment_"},{"display_html":"class (LineSegment_ lineSegment point, StartPointOf lineSegment ~ EndPoint 'Open point, EndPointOf lineSegment ~ EndPoint 'Open point) => OpenLineSegment_ lineSegment point","name":"OpenLineSegment_","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:OpenLineSegment_"},{"display_html":"interpolate :: forall lineSegment (d :: Nat) point r. (Fractional r, LineSegment_ lineSegment point, ConstructablePoint_ point d r) => r -> lineSegment -> point","name":"interpolate","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:interpolate"},{"display_html":"class HasOnSegment lineSegment (d :: Nat) | lineSegment -> d where","name":"HasOnSegment onSegment","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasOnSegment"},{"display_html":"class HasStart seg p | seg -> p where","name":"HasStart start","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasStart"},{"display_html":"class HasEnd seg p | seg -> p where","name":"HasEnd end","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasEnd"},{"display_html":"class HasStartPoint seg p | seg -> p where","name":"HasStartPoint startPoint","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasStartPoint"},{"display_html":"class HasEndPoint seg p | seg -> p where","name":"HasEndPoint endPoint","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasEndPoint"},{"display_html":"type family StartPointOf interval","name":"StartPointOf","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:StartPointOf"},{"display_html":"type family EndPointOf interval","name":"EndPointOf","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:EndPointOf"},{"display_html":"ordAtY :: (Num r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> lineSegment -> Ordering","name":"ordAtY","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:ordAtY"},{"display_html":"ordAtX :: (Num r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> lineSegment -> Ordering","name":"ordAtX","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:ordAtX"},{"display_html":"xCoordAt :: (Fractional r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> r","name":"xCoordAt","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:xCoordAt"},{"display_html":"yCoordAt :: (Fractional r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> r","name":"yCoordAt","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:yCoordAt"},{"display_html":"orientLR :: forall lineSegment point (d :: Nat) r. (LineSegment_ lineSegment point, Point_ point d r, 1 <= d, Ord r) => lineSegment -> lineSegment","name":"orientLR","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:orientLR"},{"display_html":"orientBT :: forall lineSegment point (d :: Nat) r. (LineSegment_ lineSegment point, Point_ point d r, 2 <= d, Ord r) => lineSegment -> lineSegment","name":"orientBT","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:orientBT"},{"display_html":"class (r ~ NumType matrix, Ixed matrix, IxValue matrix ~ r, Index matrix ~ (Int, Int), HasElements matrix matrix) => Matrix_ matrix (n :: Nat) (m :: Nat) r | matrix -> n, matrix -> m, matrix -> r where","name":"Matrix_ !!* !* !*! *!! column generateMatrix matrixFromRows rows identityMatrix matrixFromList row $dm!!* $dm!* $dm!*! $dm*!! $dmcolumn $dmidentityMatrix $dmmatrixFromList $dmrow","module":"HGeometry.Matrix.Class","link":"hgeometry/kernel/HGeometry-Matrix-Class.html#t:Matrix_"},{"display_html":"class HasElements matrix matrix' where","name":"HasElements elements","module":"HGeometry.Matrix.Class","link":"hgeometry/kernel/HGeometry-Matrix-Class.html#t:HasElements"},{"display_html":"class HasDeterminant (d :: Nat) where","name":"HasDeterminant det","module":"HGeometry.Matrix.Class","link":"hgeometry/kernel/HGeometry-Matrix-Class.html#t:HasDeterminant"},{"display_html":"class Invertible (n :: Nat) where","name":"Invertible inverseMatrix","module":"HGeometry.Matrix.Class","link":"hgeometry/kernel/HGeometry-Matrix-Class.html#t:Invertible"},{"display_html":"newtype Matrix (n :: Nat) (m :: Nat) r = Matrix (Vector n (Vector m r))","name":"Matrix Matrix","module":"HGeometry.Matrix","link":"hgeometry/kernel/HGeometry-Matrix.html#t:Matrix"},{"display_html":"type OptMatrix_ (d :: Nat) r = (Has_ Additive_ d r, Has_ Vector_ d (Vector d r), Ixed (Vector d r), Ixed (Vector d (Vector d r)))","name":"OptMatrix_","module":"HGeometry.Matrix","link":"hgeometry/kernel/HGeometry-Matrix.html#t:OptMatrix_"},{"display_html":"module HGeometry.Matrix.Class","name":"","module":"HGeometry.Matrix","link":"hgeometry/kernel"},{"display_html":"newtype Transformation (d :: Natural) r = Transformation (Matrix (d + 1) (d + 1) r)","name":"Transformation Transformation","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:Transformation"},{"display_html":"transformationMatrix :: forall (d :: Natural) r s p f. (Profunctor p, Functor f) => p (Matrix (d + 1) (d + 1) r) (f (Matrix (d + 1) (d + 1) s)) -> p (Transformation d r) (f (Transformation d s))","name":"transformationMatrix","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:transformationMatrix"},{"display_html":"(|.|) :: forall r (d :: Natural). (Num r, OptMatrix_ (d + 1) r) => Transformation d r -> Transformation d r -> Transformation d r","name":"|.|","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:-124-.-124-"},{"display_html":"identity :: forall r (d :: Natural). (Num r, OptMatrix_ (d + 1) r) => Transformation d r","name":"identity","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:identity"},{"display_html":"inverseOf :: forall r (d :: Natural). (Fractional r, OptMatrix_ (d + 1) r, Invertible (d + 1)) => Transformation d r -> Transformation d r","name":"inverseOf","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:inverseOf"},{"display_html":"class IsTransformable g where","name":"IsTransformable transformBy $dmtransformBy","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:IsTransformable"},{"display_html":"type TransformationConstraints (d :: Nat) r = (KnownNat d, Has_ Vector_ d r, OptMatrix_ (d + 1) r, HasComponents (Vector (d + 1) r) (Vector (d + 1) (Vector (d + 1) r)), Has_ Additive_ (d + 1) r)","name":"TransformationConstraints","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:TransformationConstraints"},{"display_html":"type DefaultTransformByConstraints g (d :: Nat) r = (d ~ Dimension g, r ~ NumType g, OptMatrix_ (d + 1) r, Fractional r, Has_ Additive_ d r, HasComponents (Vector (1 + d) (Vector (1 + d) r)) (Vector (1 + d) r))","name":"DefaultTransformByConstraints","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:DefaultTransformByConstraints"},{"display_html":"type OptMatrix_ (d :: Nat) r = (Has_ Additive_ d r, Has_ Vector_ d (Vector d r), Ixed (Vector d r), Ixed (Vector d (Vector d r)))","name":"OptMatrix_","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:OptMatrix_"},{"display_html":"translation :: forall (d :: Nat) r vector. (Num r, Vector_ vector d r, TransformationConstraints d r) => vector -> Transformation d r","name":"translation","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:translation"},{"display_html":"scaling :: forall (d :: Nat) r vector. (Num r, Vector_ vector d r, TransformationConstraints d r) => vector -> Transformation d r","name":"scaling","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:scaling"},{"display_html":"uniformScaling :: forall (d :: Nat) r. (Num r, TransformationConstraints d r) => r -> Transformation d r","name":"uniformScaling","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:uniformScaling"},{"display_html":"translateBy :: (IsTransformable g, Num (NumType g), Vector_ vector (Dimension g) (NumType g), TransformationConstraints (Dimension g) (NumType g)) => vector -> g -> g","name":"translateBy","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:translateBy"},{"display_html":"scaleBy :: (IsTransformable g, Num (NumType g), Vector_ vector (Dimension g) (NumType g), TransformationConstraints (Dimension g) (NumType g)) => vector -> g -> g","name":"scaleBy","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:scaleBy"},{"display_html":"scaleUniformlyBy :: (IsTransformable g, Num (NumType g), TransformationConstraints (Dimension g) (NumType g)) => NumType g -> g -> g","name":"scaleUniformlyBy","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:scaleUniformlyBy"},{"display_html":"rotateTo :: Num r => Vector 3 (Vector 3 r) -> Transformation 3 r","name":"rotateTo","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:rotateTo"},{"display_html":"skewX :: Num r => r -> Transformation 2 r","name":"skewX","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:skewX"},{"display_html":"rotation :: Floating r => r -> Transformation 2 r","name":"rotation","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:rotation"},{"display_html":"reflection :: Floating r => r -> Transformation 2 r","name":"reflection","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:reflection"},{"display_html":"reflectionV :: Num r => Transformation 2 r","name":"reflectionV","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:reflectionV"},{"display_html":"reflectionH :: Num r => Transformation 2 r","name":"reflectionH","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:reflectionH"},{"display_html":"fitToBox :: forall box (d :: Nat) g point r. (NumType g ~ r, Dimension g ~ d, IsTransformable g, IsBoxable g, Box_ box point, Point_ point d r, Ord r, Fractional r, TransformationConstraints d r, Functor (Vector d), Zip (Vector d)) => box -> g -> g","name":"fitToBox","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:fitToBox"},{"display_html":"fitToBoxTransform :: forall box (d :: Nat) g point r. (NumType g ~ r, Dimension g ~ d, IsTransformable g, IsBoxable g, Box_ box point, Point_ point d r, Ord r, Fractional r, TransformationConstraints d r, Functor (Vector d), Zip (Vector d)) => box -> g -> Transformation d r","name":"fitToBoxTransform","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:fitToBoxTransform"},{"display_html":"data LineSegment (endPoint :: Type -> Type) point where","name":"LineSegment LineSegment ClosedLineSegment OpenLineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:LineSegment"},{"display_html":"type ClosedLineSegment point = LineSegment (EndPoint 'Closed) point","name":"ClosedLineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:ClosedLineSegment"},{"display_html":"type OpenLineSegment point = LineSegment (EndPoint 'Open) point","name":"OpenLineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:OpenLineSegment"},{"display_html":"newtype EndPoint (et :: EndPointType) r where","name":"EndPoint EndPoint OpenE ClosedE","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:EndPoint"},{"display_html":"data AnEndPoint r where","name":"AnEndPoint AnEndPoint AnOpenE AnClosedE","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:AnEndPoint"},{"display_html":"module HGeometry.LineSegment.Class","name":"","module":"HGeometry.LineSegment","link":"hgeometry/kernel"},{"display_html":"spanIn :: forall point (d :: Nat) r (endPoint :: Type -> Type). (Point_ point d r, Ord r, IxValue (endPoint point) ~ point, EndPoint_ (endPoint point)) => Getter point r -> LineSegment endPoint point -> Interval AnEndPoint r","name":"spanIn","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#v:spanIn"},{"display_html":"class IsEndPoint endPoint endPoint => EndPoint_ endPoint where","name":"EndPoint_ endPointType mkEndPoint","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:EndPoint_"},{"display_html":"data LineLineSegmentIntersection lineSegment","name":"LineLineSegmentIntersection Line_x_LineSegment_Point Line_x_LineSegment_LineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:LineLineSegmentIntersection"},{"display_html":"data LineSegmentLineSegmentIntersection lineSegment","name":"LineSegmentLineSegmentIntersection LineSegment_x_LineSegment_Point LineSegment_x_LineSegment_LineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:LineSegmentLineSegmentIntersection"},{"display_html":"data HalfLineLineSegmentIntersection point segment","name":"HalfLineLineSegmentIntersection HalfLine_x_LineSegment_Point HalfLine_x_LineSegment_LineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:HalfLineLineSegmentIntersection"},{"display_html":"data Ball point where","name":"Ball Ball Disk","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:Ball"},{"display_html":"type Disk = Ball","name":"Disk","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:Disk"},{"display_html":"newtype Sphere point where","name":"Sphere Sphere Circle MkSphere","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:Sphere"},{"display_html":"type Circle = Sphere","name":"Circle","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:Circle"},{"display_html":"_BallSphere :: forall point point' p f. (Profunctor p, Functor f) => p (Sphere point) (f (Sphere point')) -> p (Ball point) (f (Ball point'))","name":"_BallSphere","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#v:_BallSphere"},{"display_html":"_DiskCircle :: forall point point' p f. (Profunctor p, Functor f) => p (Circle point) (f (Circle point')) -> p (Disk point) (f (Disk point'))","name":"_DiskCircle","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#v:_DiskCircle"},{"display_html":"data family IntersectionOf g h","name":"IntersectionOf Line_x_Ball_Point Line_x_Ball_Segment","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:IntersectionOf"},{"display_html":"module HGeometry.Ball.CenterAndRadius","name":"","module":"HGeometry.Ball","link":"hgeometry/kernel"},{"display_html":"module HGeometry.Ball.Class","name":"","module":"HGeometry.Ball","link":"hgeometry/kernel"},{"display_html":"newtype Ellipse r = Ellipse (Transformation 2 r)","name":"Ellipse Ellipse","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#t:Ellipse"},{"display_html":"affineTransformation :: forall r s p f. (Profunctor p, Functor f) => p (Transformation 2 r) (f (Transformation 2 s)) -> p (Ellipse r) (f (Ellipse s))","name":"affineTransformation","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:affineTransformation"},{"display_html":"ellipseMatrix :: forall r s p f. (Profunctor p, Functor f) => p (Matrix 3 3 r) (f (Matrix 3 3 s)) -> p (Ellipse r) (f (Ellipse s))","name":"ellipseMatrix","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:ellipseMatrix"},{"display_html":"unitEllipse :: Num r => Ellipse r","name":"unitEllipse","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:unitEllipse"},{"display_html":"circleToEllipse :: (Radical r, Point_ point 2 r) => Circle point -> Ellipse r","name":"circleToEllipse","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:circleToEllipse"},{"display_html":"ellipseToCircle :: (Num r, Eq r) => Ellipse r -> Maybe (Circle (Point 2 r))","name":"ellipseToCircle","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:ellipseToCircle"},{"display_html":"_EllipseCircle :: (Radical r, Eq r) => Prism' (Ellipse r) (Circle (Point 2 r))","name":"_EllipseCircle","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:_EllipseCircle"},{"display_html":"module HGeometry.Box.Class","name":"","module":"HGeometry.Box","link":"hgeometry/kernel"},{"display_html":"data Box point where","name":"Box Box Rectangle","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:Box"},{"display_html":"type Rectangle = Box","name":"Rectangle","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:Rectangle"},{"display_html":"fromExtent :: forall vector (d :: Nat) interval r. (Vector_ vector d interval, ClosedInterval_ interval r, Has_ Additive_ d r, Has_ Vector_ d interval, HasComponents (Vector d interval) (Vector d r)) => vector -> Box (Point d r)","name":"fromExtent","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:fromExtent"},{"display_html":"data Corners a = Corners !a !a !a !a","name":"Corners Corners","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:Corners"},{"display_html":"northWest :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"northWest","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:northWest"},{"display_html":"northEast :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"northEast","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:northEast"},{"display_html":"southEast :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"southEast","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:southEast"},{"display_html":"southWest :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"southWest","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:southWest"},{"display_html":"corners :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Corners point","name":"corners","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:corners"},{"display_html":"cornersInDirection :: CardinalDirection -> Corners p -> Vector 2 p","name":"cornersInDirection","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:cornersInDirection"},{"display_html":"data Sides a = Sides !a !a !a !a","name":"Sides Sides","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:Sides"},{"display_html":"north :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"north","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:north"},{"display_html":"east :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"east","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:east"},{"display_html":"south :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"south","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:south"},{"display_html":"west :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"west","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:west"},{"display_html":"topSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"topSide","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:topSide"},{"display_html":"bottomSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"bottomSide","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:bottomSide"},{"display_html":"leftSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"leftSide","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:leftSide"},{"display_html":"rightSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"rightSide","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:rightSide"},{"display_html":"sides :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point)","name":"sides","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:sides"},{"display_html":"sides' :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point)","name":"sides'","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:sides-39-"},{"display_html":"sideDirections :: Sides CardinalDirection","name":"sideDirections","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:sideDirections"},{"display_html":"sideValues :: (Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides r","name":"sideValues","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:sideValues"},{"display_html":"class IsBoxable g where","name":"IsBoxable boundingBox $dmboundingBox","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:IsBoxable"},{"display_html":"data LineBoxIntersection (d :: Nat) r","name":"LineBoxIntersection Line_x_Box_Point Line_x_Box_LineSegment","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:LineBoxIntersection"},{"display_html":"data HalfLineBoxIntersection point","name":"HalfLineBoxIntersection HalfLine_x_Box_Point HalfLine_x_Box_LineSegment","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:HalfLineBoxIntersection"},{"display_html":"class HasVector point point' where","name":"HasVector vector","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasVector"},{"display_html":"type Point (d :: Nat) r = PointF (Vector d r)","name":"Point","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Point"},{"display_html":"newtype PointF v where","name":"PointF Point Point2 toVec Point1 Point3 Point4","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:PointF"},{"display_html":"class Point_ point d r => ConstructablePoint_ point (d :: Nat) r where","name":"ConstructablePoint_ fromVector","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:ConstructablePoint_"},{"display_html":"origin :: forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point","name":"origin","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:origin"},{"display_html":"class (Additive_ (Vector d r) d r, HasCoordinates point point, d ~ Dimension point, r ~ NumType point) => Affine_ point (d :: Nat) r | point -> d, point -> r where","name":"Affine_ .+^ .-. .-^","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Affine_"},{"display_html":"cmpInDirection :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cmpInDirection"},{"display_html":"class (Affine_ point d r, HasVector point point) => Point_ point (d :: Nat) r where","name":"Point_ coord'","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Point_"},{"display_html":"squaredEuclideanDist :: forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r","name":"squaredEuclideanDist","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:squaredEuclideanDist"},{"display_html":"pattern Point2_ :: Point_ point 2 r => r -> r -> point","name":"Point2_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:Point2_"},{"display_html":"class (Has_ Vector_ (Dimension point) (NumType point), Has_ Vector_ (Dimension point') (NumType point'), HasComponents (Vector (Dimension point') (NumType point)) (Vector (Dimension point') (NumType point')), Dimension point ~ Dimension point', HasVector point point') => HasCoordinates point point' where","name":"HasCoordinates coordinates","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasCoordinates"},{"display_html":"class HasPoints s t point point' | s -> point, t -> point' where","name":"HasPoints allPoints","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasPoints"},{"display_html":"type HasPoints' s point = HasPoints s s point point","name":"HasPoints'","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasPoints-39-"},{"display_html":"pattern Point1_ :: Point_ point 1 r => r -> point","name":"Point1_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:Point1_"},{"display_html":"pattern Point3_ :: Point_ point 3 r => r -> r -> r -> point","name":"Point3_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:Point3_"},{"display_html":"pattern Point4_ :: Point_ point 4 r => r -> r -> r -> r -> point","name":"Point4_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:Point4_"},{"display_html":"coord :: forall (i :: Natural) point (d :: Natural) r. (1 <= i, i <= d, KnownNat i, Point_ point d r) => IndexedLens' Int point r","name":"coord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:coord"},{"display_html":"dCoord :: forall point (d :: Natural) r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"dCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:dCoord"},{"display_html":"pointFromList :: forall point (d :: Nat) r. (ConstructablePoint_ point d r, Vector_ (Vector d r) d r) => [r] -> Maybe point","name":"pointFromList","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:pointFromList"},{"display_html":"wCoord :: forall (d :: Natural) point r. (4 <= d, Point_ point d r) => IndexedLens' Int point r","name":"wCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:wCoord"},{"display_html":"xCoord :: forall (d :: Natural) point r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"xCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:xCoord"},{"display_html":"yCoord :: forall (d :: Natural) point r. (2 <= d, Point_ point d r) => IndexedLens' Int point r","name":"yCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:yCoord"},{"display_html":"zCoord :: forall (d :: Natural) point r. (3 <= d, Point_ point d r) => IndexedLens' Int point r","name":"zCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:zCoord"},{"display_html":"class Metric_ (Vector (Dimension g) (NumType g)) (Dimension g) (NumType g) => HasSquaredEuclideanDistance g where","name":"HasSquaredEuclideanDistance pointClosestTo pointClosestToWithDistance squaredEuclideanDistTo","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasSquaredEuclideanDistance"},{"display_html":"cmpByDistanceTo :: forall r point (d :: Nat) center. (Ord r, Num r, Point_ point d r, Point_ center d r, Metric_ (Vector d r) d r) => center -> point -> point -> Ordering","name":"cmpByDistanceTo","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cmpByDistanceTo"},{"display_html":"euclideanDist :: forall r point (d :: Nat). (Radical r, Point_ point d r, Metric_ (Vector d r) d r) => point -> point -> r","name":"euclideanDist","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:euclideanDist"},{"display_html":"data CCW where","name":"CCW CCW CW CoLinear","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:CCW"},{"display_html":"ccw :: (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW","name":"ccw","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:ccw"},{"display_html":"ccwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"ccwCmpAround","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:ccwCmpAround"},{"display_html":"ccwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"ccwCmpAroundWith","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:ccwCmpAroundWith"},{"display_html":"cwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"cwCmpAround","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cwCmpAround"},{"display_html":"cwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"cwCmpAroundWith","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cwCmpAroundWith"},{"display_html":"insertIntoCyclicOrder :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> CList point -> CList point","name":"insertIntoCyclicOrder","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:insertIntoCyclicOrder"},{"display_html":"isCoLinear :: (Point_ point 2 r, Num r, Eq r) => point -> point -> point -> Bool","name":"isCoLinear","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:isCoLinear"},{"display_html":"sortAround :: (Point_ center 2 r, Point_ point 2 r, Num r, Ord r) => center -> [point] -> [point]","name":"sortAround","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:sortAround"},{"display_html":"data Quadrant","name":"Quadrant BottomLeft BottomRight TopLeft TopRight","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Quadrant"},{"display_html":"partitionIntoQuadrants :: (Ord r, Point_ point 2 r) => point -> [point] -> ([point], [point], [point], [point])","name":"partitionIntoQuadrants","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:partitionIntoQuadrants"},{"display_html":"quadrant :: (Ord r, Num r, ConstructablePoint_ point 2 r) => point -> Quadrant","name":"quadrant","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:quadrant"},{"display_html":"quadrantWith :: (Ord r, Point_ point 2 r) => point -> point -> Quadrant","name":"quadrantWith","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:quadrantWith"},{"display_html":"asPoint :: forall point (d :: Nat) r. Point_ point d r => Lens' point (Point d r)","name":"asPoint","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:asPoint"},{"display_html":"projectPoint :: forall (i :: Nat) point (d :: Nat) r. (Point_ point d r, i <= d, Has_ Vector_ i r) => point -> Point i r","name":"projectPoint","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:projectPoint"},{"display_html":"generate :: forall vector (d :: Nat) r. Vector_ vector d r => (Int -> r) -> vector","name":"generate","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:generate"},{"display_html":"unit :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => vector","name":"unit","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:unit"},{"display_html":"data family Vector (d :: Nat) r","name":"Vector Vector3 MkVector1 MkVector2 MkVector3 MkVector4 Vector1 Vector2 Vector4","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Vector"},{"display_html":"head :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"head","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:head"},{"display_html":"uncons :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, 0 <= ((d + 1) - 1), d <= Dimension vector) => vector -> (r, vector')","name":"uncons","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:uncons"},{"display_html":"unsnoc :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, d <= ((d + 1) - 1), d <= Dimension vector) => vector -> (vector', r)","name":"unsnoc","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:unsnoc"},{"display_html":"last :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"last","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:last"},{"display_html":"cons :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => r -> vector -> vector'","name":"cons","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cons"},{"display_html":"snoc :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => vector -> r -> vector'","name":"snoc","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:snoc"},{"display_html":"class HasComponents vector vector' where","name":"HasComponents components","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasComponents"},{"display_html":"zero :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector","name":"zero","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:zero"},{"display_html":"class Additive_ vector d r => Metric_ vector (d :: Nat) r where","name":"Metric_ dot norm qd quadrance signorm","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Metric_"},{"display_html":"prefix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"prefix","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:prefix"},{"display_html":"component :: forall (i :: Natural) vector r (d :: Natural). (i <= (d - 1), KnownNat i, Vector_ vector d r) => IndexedLens' Int vector r","name":"component","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:component"},{"display_html":"negated :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> vector","name":"negated","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:negated"},{"display_html":"(*^) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => r -> vector -> vector","name":"*^","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-42--94-"},{"display_html":"(^*) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> r -> vector","name":"^*","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-94--42-"},{"display_html":"(^/) :: forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector","name":"^/","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-94--47-"},{"display_html":"basis :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => [vector]","name":"basis","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:basis"},{"display_html":"sumV :: forall f vector (d :: Nat) r. (Foldable f, Additive_ vector d r, Num r) => f vector -> vector","name":"sumV","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:sumV"},{"display_html":"(^+^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^+^","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-94--43--94-"},{"display_html":"(^-^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^-^","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-94--45--94-"},{"display_html":"lerp :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => r -> vector -> vector -> vector","name":"lerp","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:lerp"},{"display_html":"liftI2 :: forall vector (d :: Nat) r. Additive_ vector d r => (r -> r -> r) -> vector -> vector -> vector","name":"liftI2","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:liftI2"},{"display_html":"class Vector_ vector d r => Additive_ vector (d :: Nat) r where","name":"Additive_ liftU2 liftI2A","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Additive_"},{"display_html":"cross :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r","name":"cross","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cross"},{"display_html":"type Has_ (c :: Type -> Nat -> Type -> k) (d :: Nat) r = c (Vector d r) d r","name":"Has_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Has_"},{"display_html":"class (HasComponents vector vector, AsVector_ vector vector d r r, KnownNat d) => Vector_ vector (d :: Nat) r where","name":"Vector_ generateA component'","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Vector_"},{"display_html":"class (r ~ IxValue vector, s ~ IxValue vector', d ~ Dimension vector, d ~ Dimension vector') => AsVector_ vector vector' (d :: Nat) r s | vector -> d, vector -> r, vector' -> s where","name":"AsVector_ _Vector","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:AsVector_"},{"display_html":"foldMapZip :: forall vector (d :: Nat) r m. (Additive_ vector d r, Semigroup m) => (r -> r -> m) -> vector -> vector -> m","name":"foldMapZip","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:foldMapZip"},{"display_html":"suffix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"suffix","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:suffix"},{"display_html":"vectorFromList :: forall vector (d :: Nat) r. Vector_ vector d r => [r] -> Maybe vector","name":"vectorFromList","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:vectorFromList"},{"display_html":"wComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 4 <= d) => IndexedLens' Int vector r","name":"wComponent","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:wComponent"},{"display_html":"xComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"xComponent","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:xComponent"},{"display_html":"yComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 2 <= d) => IndexedLens' Int vector r","name":"yComponent","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:yComponent"},{"display_html":"zComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 3 <= d) => IndexedLens' Int vector r","name":"zComponent","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:zComponent"},{"display_html":"isScalarMultipleOf :: forall r vector (d :: Nat). (Eq r, Num r, Metric_ vector d r) => vector -> vector -> Bool","name":"isScalarMultipleOf","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:isScalarMultipleOf"},{"display_html":"sameDirection :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r, Eq r) => vector -> vector -> Bool","name":"sameDirection","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:sameDirection"},{"display_html":"scalarMultiple :: forall r vector (d :: Nat). (Eq r, Fractional r, Additive_ vector d r) => vector -> vector -> Maybe r","name":"scalarMultiple","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:scalarMultiple"},{"display_html":"module HGeometry.Line","name":"","module":"HGeometry.Kernel","link":"hgeometry/kernel"},{"display_html":"module HGeometry.LineSegment","name":"","module":"HGeometry.Kernel","link":"hgeometry/kernel"},{"display_html":"module HGeometry.Box","name":"","module":"HGeometry.Kernel","link":"hgeometry/kernel"},{"display_html":"class Point_ point (Dimension point) (NumType point) => Triangle_ triangle point | triangle -> point where","name":"Triangle_ corners mkTriangle","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#t:Triangle_"},{"display_html":"pattern Triangle_ :: Triangle_ triangle point => point -> point -> point -> triangle","name":"Triangle_","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:Triangle_"},{"display_html":"toCounterClockwiseTriangle :: (Num r, Eq r, Point_ point 2 r, Triangle_ triangle point) => triangle -> triangle","name":"toCounterClockwiseTriangle","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:toCounterClockwiseTriangle"},{"display_html":"triangleSignedArea2X :: (Num r, Point_ point 2 r, Triangle_ triangle point) => triangle -> r","name":"triangleSignedArea2X","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:triangleSignedArea2X"},{"display_html":"intersectingHalfPlanes :: (Triangle_ triangle point, Point_ point 2 r, Num r, Ord r) => triangle -> Vector 3 (HalfSpaceF (LinePV 2 r))","name":"intersectingHalfPlanes","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:intersectingHalfPlanes"},{"display_html":"toBarricentric :: (Fractional r, Point_ point 2 r, Triangle_ triangle point) => point -> triangle -> Vector 3 r","name":"toBarricentric","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:toBarricentric"},{"display_html":"fromBarricentric :: forall triangle point (d :: Nat) r. (Triangle_ triangle point, Point_ point d r, Num r) => Vector 3 r -> triangle -> Point d r","name":"fromBarricentric","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:fromBarricentric"},{"display_html":"data Triangle point where","name":"Triangle Triangle","module":"HGeometry.Triangle","link":"hgeometry/kernel/HGeometry-Triangle.html#t:Triangle"},{"display_html":"module HGeometry.Triangle.Class","name":"","module":"HGeometry.Triangle","link":"hgeometry/kernel"},{"display_html":"data Viewport r = Viewport (Rectangle (Point 2 r)) (Transformation 2 r)","name":"Viewport Viewport","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#t:Viewport"},{"display_html":"mkViewport :: (Rectangle_ rectangle point, Point_ point 2 r, Fractional r) => rectangle -> Transformation 2 r -> Viewport r","name":"mkViewport","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:mkViewport"},{"display_html":"viewPort :: forall r f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r))) -> Viewport r -> f (Viewport r)","name":"viewPort","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:viewPort"},{"display_html":"worldToHost :: forall r f. Functor f => (Transformation 2 r -> f (Transformation 2 r)) -> Viewport r -> f (Viewport r)","name":"worldToHost","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:worldToHost"},{"display_html":"hostToWorld :: Fractional r => Getter (Viewport r) (Transformation 2 r)","name":"hostToWorld","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:hostToWorld"},{"display_html":"toWorldIn :: (IsTransformable g, NumType g ~ r, Dimension g ~ 2, Fractional r) => Viewport r -> g -> g","name":"toWorldIn","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:toWorldIn"},{"display_html":"toHostFrom :: (IsTransformable g, NumType g ~ r, Dimension g ~ 2, Num r) => Viewport r -> g -> g","name":"toHostFrom","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:toHostFrom"},{"display_html":"fromSize :: (Num r, Vector_ vector 2 r) => vector -> Viewport r","name":"fromSize","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:fromSize"},{"display_html":"flipY :: (Num r, Vector_ vector 2 r) => vector -> Viewport r","name":"flipY","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:flipY"},{"display_html":"centeredOrigin :: (Fractional r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Viewport r","name":"centeredOrigin","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:centeredOrigin"},{"display_html":"alignedOrigin :: Num r => Rectangle (Point 2 r) -> Viewport r","name":"alignedOrigin","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:alignedOrigin"},{"display_html":"wrtCenter :: Fractional r => Viewport r -> Transformation 2 r -> Transformation 2 r","name":"wrtCenter","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:wrtCenter"},{"display_html":"data ZoomConfig r = ZoomConfig (ClosedInterval r) r","name":"ZoomConfig ZoomConfig","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#t:ZoomConfig"},{"display_html":"range :: forall r f. Functor f => (ClosedInterval r -> f (ClosedInterval r)) -> ZoomConfig r -> f (ZoomConfig r)","name":"range","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:range"},{"display_html":"currentLevel :: Ord r => Lens' (ZoomConfig r) r","name":"currentLevel","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:currentLevel"},{"display_html":"isValidInterval :: (Eq (endPoint r), Ord r, IxValue (endPoint r) ~ r, EndPoint_ (endPoint r)) => endPoint r -> endPoint r -> Bool","name":"isValidInterval","module":"HGeometry.Kernel.Instances","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Instances.html#v:isValidInterval"},{"display_html":"bothClosed :: forall {k} endPoint (r :: k). EndPoint_ (endPoint r) => endPoint r -> endPoint r -> Bool","name":"bothClosed","module":"HGeometry.Kernel.Instances","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Instances.html#v:bothClosed"},{"display_html":"implies :: Bool -> Bool -> Bool","name":"implies","module":"HGeometry.Kernel.Instances","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Instances.html#v:implies"},{"display_html":"arbitraryPointInBoundingBox :: Rectangle (Point 2 Rational) -> Gen (Point 2 Rational)","name":"arbitraryPointInBoundingBox","module":"HGeometry.Kernel.Test.Box","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Test-Box.html#v:arbitraryPointInBoundingBox"},{"display_html":"newtype ZeroToOne = ZeroToOne Rational","name":"ZeroToOne ZeroToOne","module":"HGeometry.Kernel.Test.Box","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Test-Box.html#t:ZeroToOne"},{"display_html":"data WheelDirection","name":"WheelDirection Down Up","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#t:WheelDirection"},{"display_html":"onWheel :: (WheelDirection -> action) -> Attribute action","name":"onWheel","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onWheel"},{"display_html":"data Button","name":"Button LeftButton MiddleButton RightButton","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#t:Button"},{"display_html":"onClickWithButton :: (Button -> action) -> Attribute action","name":"onClickWithButton","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onClickWithButton"},{"display_html":"onRightClick :: action -> Attribute action","name":"onRightClick","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onRightClick"},{"display_html":"onContextMenu :: action -> Attribute action","name":"onContextMenu","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onContextMenu"},{"display_html":"onTouchStart :: action -> Attribute action","name":"onTouchStart","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onTouchStart"},{"display_html":"onTouchMove :: action -> Attribute action","name":"onTouchMove","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onTouchMove"},{"display_html":"onTouchEnd :: action -> Attribute action","name":"onTouchEnd","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onTouchEnd"},{"display_html":"getBoundingClientRect :: JSVal -> JSM JSVal","name":"getBoundingClientRect","module":"HGeometry.Miso.FFI.Extra","link":"hgeometry/miso/HGeometry-Miso-FFI-Extra.html#v:getBoundingClientRect"},{"display_html":"onMouseEnterAt :: (Point 2 Int -> action) -> Attribute action","name":"onMouseEnterAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onMouseEnterAt"},{"display_html":"onMouseMoveAt :: (Point 2 Int -> action) -> Attribute action","name":"onMouseMoveAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onMouseMoveAt"},{"display_html":"onMouseClickAt :: (Point 2 Int -> action) -> Attribute action","name":"onMouseClickAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onMouseClickAt"},{"display_html":"onTouchStartAt :: (Point 2 Int -> action) -> Attribute action","name":"onTouchStartAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onTouchStartAt"},{"display_html":"onTouchMoveAt :: (Point 2 Int -> action) -> Attribute action","name":"onTouchMoveAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onTouchMoveAt"},{"display_html":"onTouchEnd :: action -> Attribute action","name":"onTouchEnd","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onTouchEnd"},{"display_html":"renderOutputToFile :: forall f g face point r (coloured :: Coloured). (Foldable1 f, Foldable1 g, Foldable1 face, Point_ point 3 r, Show r, RenderVtxColour coloured) => OsPath -> f (Int, point :+ VertexAttributes coloured) -> g (face Int) -> IO ()","name":"renderOutputToFile","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#v:renderOutputToFile"},{"display_html":"renderOutput :: forall f g face point r (coloured :: Coloured). (Foldable1 f, Foldable1 g, Foldable1 face, Point_ point 3 r, Show r, RenderVtxColour coloured) => f (Int, point :+ VertexAttributes coloured) -> g (face Int) -> ByteString","name":"renderOutput","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#v:renderOutput"},{"display_html":"data Coloured","name":"Coloured Coloured NotColoured","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#t:Coloured"},{"display_html":"newtype VertexAttributes (coloured :: Coloured) = VertexAttributes (VtxColour coloured)","name":"VertexAttributes VertexAttributes","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#t:VertexAttributes"},{"display_html":"vtxColour :: forall (coloured1 :: Coloured) (coloured2 :: Coloured) p f. (Profunctor p, Functor f) => p (VtxColour coloured1) (f (VtxColour coloured2)) -> p (VertexAttributes coloured1) (f (VertexAttributes coloured2))","name":"vtxColour","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#v:vtxColour"},{"display_html":"class HasVector point point' where","name":"HasVector vector","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:HasVector"},{"display_html":"class (Has_ Vector_ (Dimension point) (NumType point), Has_ Vector_ (Dimension point') (NumType point'), HasComponents (Vector (Dimension point') (NumType point)) (Vector (Dimension point') (NumType point')), Dimension point ~ Dimension point', HasVector point point') => HasCoordinates point point' where","name":"HasCoordinates coordinates $dmcoordinates","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:HasCoordinates"},{"display_html":"class (Additive_ (Vector d r) d r, HasCoordinates point point, d ~ Dimension point, r ~ NumType point) => Affine_ point (d :: Nat) r | point -> d, point -> r where","name":"Affine_ .+^ .-. .-^ $dm.+^ $dm.-. $dm.-^","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:Affine_"},{"display_html":"class (Affine_ point d r, HasVector point point) => Point_ point (d :: Nat) r where","name":"Point_ coord' $dmcoord'","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:Point_"},{"display_html":"pattern Point1_ :: Point_ point 1 r => r -> point","name":"Point1_","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:Point1_"},{"display_html":"pattern Point2_ :: Point_ point 2 r => r -> r -> point","name":"Point2_","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:Point2_"},{"display_html":"pattern Point3_ :: Point_ point 3 r => r -> r -> r -> point","name":"Point3_","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:Point3_"},{"display_html":"pattern Point4_ :: Point_ point 4 r => r -> r -> r -> r -> point","name":"Point4_","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:Point4_"},{"display_html":"class Point_ point d r => ConstructablePoint_ point (d :: Nat) r where","name":"ConstructablePoint_ fromVector","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:ConstructablePoint_"},{"display_html":"origin :: forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point","name":"origin","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:origin"},{"display_html":"pointFromList :: forall point (d :: Nat) r. (ConstructablePoint_ point d r, Vector_ (Vector d r) d r) => [r] -> Maybe point","name":"pointFromList","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:pointFromList"},{"display_html":"coord :: forall (i :: Natural) point (d :: Natural) r. (1 <= i, i <= d, KnownNat i, Point_ point d r) => IndexedLens' Int point r","name":"coord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:coord"},{"display_html":"xCoord :: forall (d :: Natural) point r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"xCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:xCoord"},{"display_html":"yCoord :: forall (d :: Natural) point r. (2 <= d, Point_ point d r) => IndexedLens' Int point r","name":"yCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:yCoord"},{"display_html":"zCoord :: forall (d :: Natural) point r. (3 <= d, Point_ point d r) => IndexedLens' Int point r","name":"zCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:zCoord"},{"display_html":"wCoord :: forall (d :: Natural) point r. (4 <= d, Point_ point d r) => IndexedLens' Int point r","name":"wCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:wCoord"},{"display_html":"dCoord :: forall point (d :: Natural) r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"dCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:dCoord"},{"display_html":"class HasPoints s t point point' | s -> point, t -> point' where","name":"HasPoints allPoints","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:HasPoints"},{"display_html":"type HasPoints' s point = HasPoints s s point point","name":"HasPoints'","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:HasPoints-39-"},{"display_html":"data OriginalOrExtra orig extra","name":"OriginalOrExtra Original Extra","module":"HGeometry.Point.Either","link":"hgeometry/point/HGeometry-Point-Either.html#t:OriginalOrExtra"},{"display_html":"newtype PointF v = Point {}","name":"PointF Point toVec","module":"HGeometry.Point.PointF","link":"hgeometry/point/HGeometry-Point-PointF.html#t:PointF"},{"display_html":"cmpByDistanceTo :: forall r point (d :: Nat) center. (Ord r, Num r, Point_ point d r, Point_ center d r, Metric_ (Vector d r) d r) => center -> point -> point -> Ordering","name":"cmpByDistanceTo","module":"HGeometry.Point.EuclideanDistance","link":"hgeometry/point/HGeometry-Point-EuclideanDistance.html#v:cmpByDistanceTo"},{"display_html":"squaredEuclideanDist :: forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r","name":"squaredEuclideanDist","module":"HGeometry.Point.EuclideanDistance","link":"hgeometry/point/HGeometry-Point-EuclideanDistance.html#v:squaredEuclideanDist"},{"display_html":"euclideanDist :: forall r point (d :: Nat). (Radical r, Point_ point d r, Metric_ (Vector d r) d r) => point -> point -> r","name":"euclideanDist","module":"HGeometry.Point.EuclideanDistance","link":"hgeometry/point/HGeometry-Point-EuclideanDistance.html#v:euclideanDist"},{"display_html":"class Metric_ (Vector (Dimension g) (NumType g)) (Dimension g) (NumType g) => HasSquaredEuclideanDistance g where","name":"HasSquaredEuclideanDistance pointClosestToWithDistance pointClosestTo squaredEuclideanDistTo $dmpointClosestToWithDistance $dmpointClosestTo $dmsquaredEuclideanDistTo","module":"HGeometry.Point.EuclideanDistance","link":"hgeometry/point/HGeometry-Point-EuclideanDistance.html#t:HasSquaredEuclideanDistance"},{"display_html":"data CCW where","name":"CCW CCW CW CoLinear","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#t:CCW"},{"display_html":"ccw :: (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW","name":"ccw","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:ccw"},{"display_html":"isCoLinear :: (Point_ point 2 r, Num r, Eq r) => point -> point -> point -> Bool","name":"isCoLinear","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:isCoLinear"},{"display_html":"sortAround :: (Point_ center 2 r, Point_ point 2 r, Num r, Ord r) => center -> [point] -> [point]","name":"sortAround","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:sortAround"},{"display_html":"ccwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"ccwCmpAroundWith","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:ccwCmpAroundWith"},{"display_html":"cwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"cwCmpAroundWith","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:cwCmpAroundWith"},{"display_html":"ccwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"ccwCmpAround","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:ccwCmpAround"},{"display_html":"cwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"cwCmpAround","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:cwCmpAround"},{"display_html":"insertIntoCyclicOrder :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> CList point -> CList point","name":"insertIntoCyclicOrder","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:insertIntoCyclicOrder"},{"display_html":"cmpInDirection :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:cmpInDirection"},{"display_html":"type Point (d :: Nat) r = PointF (Vector d r)","name":"Point","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:Point"},{"display_html":"newtype PointF v where","name":"PointF Point toVec Point1 Point2 Point3 Point4","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:PointF"},{"display_html":"class (Affine_ point d r, HasVector point point) => Point_ point (d :: Nat) r where","name":"Point_ coord' $dmcoord'","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:Point_"},{"display_html":"pattern Point1_ :: Point_ point 1 r => r -> point","name":"Point1_","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:Point1_"},{"display_html":"pattern Point2_ :: Point_ point 2 r => r -> r -> point","name":"Point2_","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:Point2_"},{"display_html":"pattern Point3_ :: Point_ point 3 r => r -> r -> r -> point","name":"Point3_","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:Point3_"},{"display_html":"pattern Point4_ :: Point_ point 4 r => r -> r -> r -> r -> point","name":"Point4_","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:Point4_"},{"display_html":"class Point_ point d r => ConstructablePoint_ point (d :: Nat) r where","name":"ConstructablePoint_ fromVector","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:ConstructablePoint_"},{"display_html":"class HasVector point point' where","name":"HasVector vector","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasVector"},{"display_html":"class (Has_ Vector_ (Dimension point) (NumType point), Has_ Vector_ (Dimension point') (NumType point'), HasComponents (Vector (Dimension point') (NumType point)) (Vector (Dimension point') (NumType point')), Dimension point ~ Dimension point', HasVector point point') => HasCoordinates point point' where","name":"HasCoordinates coordinates $dmcoordinates","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasCoordinates"},{"display_html":"asPoint :: forall point (d :: Nat) r. Point_ point d r => Lens' point (Point d r)","name":"asPoint","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:asPoint"},{"display_html":"origin :: forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point","name":"origin","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:origin"},{"display_html":"pointFromList :: forall point (d :: Nat) r. (ConstructablePoint_ point d r, Vector_ (Vector d r) d r) => [r] -> Maybe point","name":"pointFromList","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:pointFromList"},{"display_html":"coord :: forall (i :: Natural) point (d :: Natural) r. (1 <= i, i <= d, KnownNat i, Point_ point d r) => IndexedLens' Int point r","name":"coord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:coord"},{"display_html":"xCoord :: forall (d :: Natural) point r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"xCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:xCoord"},{"display_html":"yCoord :: forall (d :: Natural) point r. (2 <= d, Point_ point d r) => IndexedLens' Int point r","name":"yCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:yCoord"},{"display_html":"zCoord :: forall (d :: Natural) point r. (3 <= d, Point_ point d r) => IndexedLens' Int point r","name":"zCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:zCoord"},{"display_html":"wCoord :: forall (d :: Natural) point r. (4 <= d, Point_ point d r) => IndexedLens' Int point r","name":"wCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:wCoord"},{"display_html":"dCoord :: forall point (d :: Natural) r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"dCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:dCoord"},{"display_html":"projectPoint :: forall (i :: Nat) point (d :: Nat) r. (Point_ point d r, i <= d, Has_ Vector_ i r) => point -> Point i r","name":"projectPoint","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:projectPoint"},{"display_html":"class (Additive_ (Vector d r) d r, HasCoordinates point point, d ~ Dimension point, r ~ NumType point) => Affine_ point (d :: Nat) r | point -> d, point -> r where","name":"Affine_ .+^ .-. .-^ $dm.+^ $dm.-. $dm.-^","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:Affine_"},{"display_html":"data CCW where","name":"CCW CCW CW CoLinear","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:CCW"},{"display_html":"ccw :: (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW","name":"ccw","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:ccw"},{"display_html":"isCoLinear :: (Point_ point 2 r, Num r, Eq r) => point -> point -> point -> Bool","name":"isCoLinear","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:isCoLinear"},{"display_html":"ccwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"ccwCmpAround","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:ccwCmpAround"},{"display_html":"cwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"cwCmpAround","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:cwCmpAround"},{"display_html":"ccwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"ccwCmpAroundWith","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:ccwCmpAroundWith"},{"display_html":"cwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"cwCmpAroundWith","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:cwCmpAroundWith"},{"display_html":"sortAround :: (Point_ center 2 r, Point_ point 2 r, Num r, Ord r) => center -> [point] -> [point]","name":"sortAround","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:sortAround"},{"display_html":"insertIntoCyclicOrder :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> CList point -> CList point","name":"insertIntoCyclicOrder","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:insertIntoCyclicOrder"},{"display_html":"data Quadrant","name":"Quadrant TopRight TopLeft BottomLeft BottomRight","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:Quadrant"},{"display_html":"quadrantWith :: (Ord r, Point_ point 2 r) => point -> point -> Quadrant","name":"quadrantWith","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:quadrantWith"},{"display_html":"quadrant :: (Ord r, Num r, ConstructablePoint_ point 2 r) => point -> Quadrant","name":"quadrant","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:quadrant"},{"display_html":"partitionIntoQuadrants :: (Ord r, Point_ point 2 r) => point -> [point] -> ([point], [point], [point], [point])","name":"partitionIntoQuadrants","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:partitionIntoQuadrants"},{"display_html":"cmpByDistanceTo :: forall r point (d :: Nat) center. (Ord r, Num r, Point_ point d r, Point_ center d r, Metric_ (Vector d r) d r) => center -> point -> point -> Ordering","name":"cmpByDistanceTo","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:cmpByDistanceTo"},{"display_html":"cmpInDirection :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:cmpInDirection"},{"display_html":"squaredEuclideanDist :: forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r","name":"squaredEuclideanDist","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:squaredEuclideanDist"},{"display_html":"euclideanDist :: forall r point (d :: Nat). (Radical r, Point_ point d r, Metric_ (Vector d r) d r) => point -> point -> r","name":"euclideanDist","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:euclideanDist"},{"display_html":"class Metric_ (Vector (Dimension g) (NumType g)) (Dimension g) (NumType g) => HasSquaredEuclideanDistance g where","name":"HasSquaredEuclideanDistance pointClosestToWithDistance pointClosestTo squaredEuclideanDistTo $dmpointClosestToWithDistance $dmpointClosestTo $dmsquaredEuclideanDistTo","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasSquaredEuclideanDistance"},{"display_html":"class HasPoints s t point point' | s -> point, t -> point' where","name":"HasPoints allPoints","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasPoints"},{"display_html":"type HasPoints' s point = HasPoints s s point point","name":"HasPoints'","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasPoints-39-"},{"display_html":"arbitraryPlaneGraph :: forall {k} proxy (s :: k) r. (Ord r, Fractional r, Arbitrary r, Show r) => proxy s -> Gen (CPlaneGraph s (Point 2 r) () ())","name":"arbitraryPlaneGraph","module":"HGeometry.PlaneGraph.Instances","link":"hgeometry/quickcheck/HGeometry-PlaneGraph-Instances.html#v:arbitraryPlaneGraph"},{"display_html":"data QuickCheckWorld","name":"QuickCheckWorld","module":"HGeometry.PlaneGraph.Instances","link":"hgeometry/quickcheck/HGeometry-PlaneGraph-Instances.html#t:QuickCheckWorld"},{"display_html":"allSimplePolygons :: [SimplePolygon (Point 2 Double)]","name":"allSimplePolygons","module":"HGeometry.Polygon.Instances","link":"hgeometry/quickcheck/HGeometry-Polygon-Instances.html#v:allSimplePolygons"},{"display_html":"shrinkPolygon :: (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)]","name":"shrinkPolygon","module":"HGeometry.Polygon.Instances","link":"hgeometry/quickcheck/HGeometry-Polygon-Instances.html#v:shrinkPolygon"},{"display_html":"data ZoomDirection","name":"ZoomDirection ZoomIn ZoomOut","module":"HGeometry.Miso.Canvas.Zoom","link":"hgeometry/svg/HGeometry-Miso-Canvas-Zoom.html#t:ZoomDirection"},{"display_html":"class HasZoomLevel canvas r | canvas -> r where","name":"HasZoomLevel zoomLevel","module":"HGeometry.Miso.Canvas.Zoom","link":"hgeometry/svg/HGeometry-Miso-Canvas-Zoom.html#t:HasZoomLevel"},{"display_html":"newtype ZoomAction = ZoomAction ZoomDirection","name":"ZoomAction ZoomAction","module":"HGeometry.Miso.Canvas.Zoom","link":"hgeometry/svg/HGeometry-Miso-Canvas-Zoom.html#t:ZoomAction"},{"display_html":"update :: (Fractional r, Ord r, HasZoomLevel canvas r) => canvas -> ZoomAction -> Effect action canvas","name":"update","module":"HGeometry.Miso.Canvas.Zoom","link":"hgeometry/svg/HGeometry-Miso-Canvas-Zoom.html#v:update"},{"display_html":"renderSvgToFile :: OsPath -> View action -> IO ()","name":"renderSvgToFile","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:renderSvgToFile"},{"display_html":"renderAsSvgText :: View action -> Text","name":"renderAsSvgText","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:renderAsSvgText"},{"display_html":"renderAsSvgByteString :: View action -> ByteString","name":"renderAsSvgByteString","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:renderAsSvgByteString"},{"display_html":"withAts :: ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> View action","name":"withAts","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:withAts"},{"display_html":"withAts' :: ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> [View action] -> View action","name":"withAts'","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:withAts-39-"},{"display_html":"class Drawable t where","name":"Drawable draw drawWith $dmdraw $dmdrawWith","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#t:Drawable"},{"display_html":"dPoint :: (Point_ point 2 r, ToMisoString r) => point -> [Attribute action] -> View action","name":"dPoint","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dPoint"},{"display_html":"dLineSegment :: (LineSegment_ lineSegment point, Point_ point 2 r, ToMisoString r) => lineSegment -> [Attribute action] -> View action","name":"dLineSegment","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dLineSegment"},{"display_html":"dRectangle :: (Rectangle_ rectangle point, Point_ point 2 r, ToMisoString r, Num r) => rectangle -> [Attribute action] -> View action","name":"dRectangle","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dRectangle"},{"display_html":"dCircle :: (Point_ point 2 r, ToMisoString r) => Circle point -> [Attribute action] -> View action","name":"dCircle","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dCircle"},{"display_html":"dDisk :: (Disk_ disk point, Point_ point 2 r, ToMisoString r, Floating r) => disk -> [Attribute action] -> View action","name":"dDisk","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dDisk"},{"display_html":"dPolyLine :: (PolyLine_ polyLine point, Point_ point 2 r, ToMisoString r) => polyLine -> [Attribute action] -> View action","name":"dPolyLine","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dPolyLine"},{"display_html":"dSimplePolygon :: (SimplePolygon_ simplePolygon point r, ToMisoString r) => simplePolygon -> [Attribute action] -> View action","name":"dSimplePolygon","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dSimplePolygon"},{"display_html":"module HGeometry.Miso.Svg","name":"","module":"HGeometry.Svg","link":"hgeometry/svg"},{"display_html":"data StaticCanvas r","name":"StaticCanvas","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#t:StaticCanvas"},{"display_html":"staticCanvas :: Num r => Int -> Int -> StaticCanvas r","name":"staticCanvas","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#v:staticCanvas"},{"display_html":"class HasDimensions s a | s -> a where","name":"HasDimensions dimensions","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#t:HasDimensions"},{"display_html":"staticCanvas_ :: (RealFrac r, ToSvgCoordinate r) => StaticCanvas r -> [Attribute action] -> [View action] -> View action","name":"staticCanvas_","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#v:staticCanvas_"},{"display_html":"type ToSvgCoordinate = ToMisoString","name":"ToSvgCoordinate","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#t:ToSvgCoordinate"},{"display_html":"matrixToMisoString :: ToSvgCoordinate r => Matrix 3 3 r -> MisoString","name":"matrixToMisoString","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#v:matrixToMisoString"},{"display_html":"data Canvas r","name":"Canvas","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#t:Canvas"},{"display_html":"theViewport :: forall r s f. Functor f => (Viewport r -> f (Viewport s)) -> Canvas r -> f (Canvas s)","name":"theViewport","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:theViewport"},{"display_html":"blankCanvas :: Num r => Int -> Int -> Canvas r","name":"blankCanvas","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:blankCanvas"},{"display_html":"class HasDimensions s a | s -> a where","name":"HasDimensions dimensions","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#t:HasDimensions"},{"display_html":"class HasMousePosition s a | s -> a where","name":"HasMousePosition mousePosition","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#t:HasMousePosition"},{"display_html":"mouseCoordinates :: Fractional r => Getter (Canvas r) (Maybe (Point 2 r))","name":"mouseCoordinates","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:mouseCoordinates"},{"display_html":"data InternalCanvasAction","name":"InternalCanvasAction","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#t:InternalCanvasAction"},{"display_html":"handleInternalCanvasAction :: Canvas r -> InternalCanvasAction -> Effect action (Canvas r)","name":"handleInternalCanvasAction","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:handleInternalCanvasAction"},{"display_html":"withCanvasEvents :: Map MisoString Bool -> Map MisoString Bool","name":"withCanvasEvents","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:withCanvasEvents"},{"display_html":"svgCanvas_ :: (RealFrac r, ToSvgCoordinate r) => Canvas r -> [Attribute action] -> [View action] -> View (Either InternalCanvasAction action)","name":"svgCanvas_","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:svgCanvas_"},{"display_html":"type family Dimension t :: Nat","name":"Dimension","module":"HGeometry.Properties","link":"hgeometry/vector/HGeometry-Properties.html#t:Dimension"},{"display_html":"type family NumType t","name":"NumType","module":"HGeometry.Properties","link":"hgeometry/vector/HGeometry-Properties.html#t:NumType"},{"display_html":"class (r ~ IxValue vector, s ~ IxValue vector', d ~ Dimension vector, d ~ Dimension vector') => AsVector_ vector vector' (d :: Nat) r s | vector -> d, vector -> r, vector' -> s where","name":"AsVector_ _Vector","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:AsVector_"},{"display_html":"class (HasComponents vector vector, AsVector_ vector vector d r r, KnownNat d) => Vector_ vector (d :: Nat) r where","name":"Vector_ generateA component' $dmcomponent'","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:Vector_"},{"display_html":"type Has_ (c :: Type -> Nat -> Type -> k) (d :: Nat) r = c (Vector d r) d r","name":"Has_","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:Has_"},{"display_html":"generate :: forall vector (d :: Nat) r. Vector_ vector d r => (Int -> r) -> vector","name":"generate","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:generate"},{"display_html":"vectorFromList :: forall vector (d :: Nat) r. Vector_ vector d r => [r] -> Maybe vector","name":"vectorFromList","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:vectorFromList"},{"display_html":"component :: forall (i :: Natural) vector r (d :: Natural). (i <= (d - 1), KnownNat i, Vector_ vector d r) => IndexedLens' Int vector r","name":"component","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:component"},{"display_html":"xComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"xComponent","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:xComponent"},{"display_html":"yComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 2 <= d) => IndexedLens' Int vector r","name":"yComponent","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:yComponent"},{"display_html":"zComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 3 <= d) => IndexedLens' Int vector r","name":"zComponent","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:zComponent"},{"display_html":"wComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 4 <= d) => IndexedLens' Int vector r","name":"wComponent","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:wComponent"},{"display_html":"head :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"head","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:head"},{"display_html":"last :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"last","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:last"},{"display_html":"prefix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"prefix","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:prefix"},{"display_html":"suffix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"suffix","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:suffix"},{"display_html":"cons :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => r -> vector -> vector'","name":"cons","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:cons"},{"display_html":"snoc :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => vector -> r -> vector'","name":"snoc","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:snoc"},{"display_html":"uncons :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, 0 <= ((d + 1) - 1), d <= Dimension vector) => vector -> (r, vector')","name":"uncons","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:uncons"},{"display_html":"unsnoc :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, d <= ((d + 1) - 1), d <= Dimension vector) => vector -> (vector', r)","name":"unsnoc","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:unsnoc"},{"display_html":"class Vector_ vector d r => Additive_ vector (d :: Nat) r where","name":"Additive_ liftU2 liftI2A","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:Additive_"},{"display_html":"zero :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector","name":"zero","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:zero"},{"display_html":"liftI2 :: forall vector (d :: Nat) r. Additive_ vector d r => (r -> r -> r) -> vector -> vector -> vector","name":"liftI2","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:liftI2"},{"display_html":"lerp :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => r -> vector -> vector -> vector","name":"lerp","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:lerp"},{"display_html":"(^+^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^+^","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-94--43--94-"},{"display_html":"(^-^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^-^","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-94--45--94-"},{"display_html":"negated :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> vector","name":"negated","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:negated"},{"display_html":"(*^) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => r -> vector -> vector","name":"*^","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-42--94-"},{"display_html":"(^*) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> r -> vector","name":"^*","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-94--42-"},{"display_html":"(^/) :: forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector","name":"^/","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-94--47-"},{"display_html":"sumV :: forall f vector (d :: Nat) r. (Foldable f, Additive_ vector d r, Num r) => f vector -> vector","name":"sumV","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:sumV"},{"display_html":"basis :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => [vector]","name":"basis","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:basis"},{"display_html":"unit :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => vector","name":"unit","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:unit"},{"display_html":"foldMapZip :: forall vector (d :: Nat) r m. (Additive_ vector d r, Semigroup m) => (r -> r -> m) -> vector -> vector -> m","name":"foldMapZip","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:foldMapZip"},{"display_html":"class Additive_ vector d r => Metric_ vector (d :: Nat) r where","name":"Metric_ dot norm qd quadrance signorm $dmdot $dmnorm $dmqd $dmquadrance $dmsignorm","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:Metric_"},{"display_html":"data family Vector (d :: Nat) r","name":"Vector Vector1 Vector2 Vector3 Vector4 MkVector1 MkVector2 MkVector3 MkVector4","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#t:Vector"},{"display_html":"class HasComponents vector vector' where","name":"HasComponents components","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#t:HasComponents"},{"display_html":"module HGeometry.Vector.Class","name":"","module":"HGeometry.Vector","link":"hgeometry/vector"},{"display_html":"isScalarMultipleOf :: forall r vector (d :: Nat). (Eq r, Num r, Metric_ vector d r) => vector -> vector -> Bool","name":"isScalarMultipleOf","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#v:isScalarMultipleOf"},{"display_html":"scalarMultiple :: forall r vector (d :: Nat). (Eq r, Fractional r, Additive_ vector d r) => vector -> vector -> Maybe r","name":"scalarMultiple","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#v:scalarMultiple"},{"display_html":"sameDirection :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r, Eq r) => vector -> vector -> Bool","name":"sameDirection","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#v:sameDirection"},{"display_html":"cross :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r","name":"cross","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#v:cross"},{"display_html":"binarySearchFirst :: Integral a => (a -> Bool) -> a -> a -> a","name":"binarySearchFirst","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchFirst"},{"display_html":"binarySearchLast :: Integral a => (a -> Bool) -> a -> a -> a","name":"binarySearchLast","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchLast"},{"display_html":"binarySearchUntil :: (Fractional r, Ord r) => r -> (r -> Bool) -> r -> r -> r","name":"binarySearchUntil","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchUntil"},{"display_html":"data BinarySearchResult a","name":"BinarySearchResult AllFalse AllTrue FlipsAt","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#t:BinarySearchResult"},{"display_html":"firstTrue :: BinarySearchResult a -> Maybe a","name":"firstTrue","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:firstTrue"},{"display_html":"lastFalse :: BinarySearchResult a -> Maybe a","name":"lastFalse","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:lastFalse"},{"display_html":"class BinarySearch v where","name":"BinarySearch Index Elem binarySearchIn binarySearchIdxIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#t:BinarySearch"},{"display_html":"binarySearchFirstIn :: BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Elem v)","name":"binarySearchFirstIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchFirstIn"},{"display_html":"binarySearchFirstIdxIn :: BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Index v)","name":"binarySearchFirstIdxIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchFirstIdxIn"},{"display_html":"binarySearchLastIn :: BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Elem v)","name":"binarySearchLastIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchLastIn"},{"display_html":"binarySearchLastIdxIn :: BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Index v)","name":"binarySearchLastIdxIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchLastIdxIn"},{"display_html":"divideAndConquer :: (Foldable f, Monoid s) => (a -> s) -> f a -> s","name":"divideAndConquer","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:divideAndConquer"},{"display_html":"divideAndConquer1 :: (Foldable1 f, Semigroup s) => (a -> s) -> f a -> s","name":"divideAndConquer1","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:divideAndConquer1"},{"display_html":"divideAndConquer1With :: Foldable1 f => (s -> s -> s) -> (a -> s) -> f a -> s","name":"divideAndConquer1With","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:divideAndConquer1With"},{"display_html":"mergeSorted :: Ord a => NonEmpty a -> NonEmpty a -> NonEmpty a","name":"mergeSorted","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:mergeSorted"},{"display_html":"mergeSortedLists :: Ord a => [a] -> [a] -> [a]","name":"mergeSortedLists","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:mergeSortedLists"},{"display_html":"mergeSortedBy :: (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a -> NonEmpty a","name":"mergeSortedBy","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:mergeSortedBy"},{"display_html":"mergeSortedListsBy :: (a -> a -> Ordering) -> [a] -> [a] -> [a]","name":"mergeSortedListsBy","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:mergeSortedListsBy"},{"display_html":"newtype InsertionOnly (static :: k -> Type) (a :: k) = InsertionOnly [Maybe (static a)]","name":"InsertionOnly InsertionOnly","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#t:InsertionOnly"},{"display_html":"empty :: forall {k} (static :: k -> Type) (a :: k). InsertionOnly static a","name":"empty","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#v:empty"},{"display_html":"class LogarithmicMethodDS (static :: Type -> Type) a where","name":"LogarithmicMethodDS singleton build merge $dmsingleton $dmmerge","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#t:LogarithmicMethodDS"},{"display_html":"insert :: forall (static :: Type -> Type) a. LogarithmicMethodDS static a => a -> InsertionOnly static a -> InsertionOnly static a","name":"insert","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#v:insert"},{"display_html":"queryWith :: forall {k} m static (a :: k). Monoid m => (static a -> m) -> InsertionOnly static a -> m","name":"queryWith","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#v:queryWith"},{"display_html":"insertOrd :: Ord a => a -> CList a -> CList a","name":"insertOrd","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:insertOrd"},{"display_html":"insertOrdBy :: (a -> a -> Ordering) -> a -> CList a -> CList a","name":"insertOrdBy","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:insertOrdBy"},{"display_html":"insertOrdBy' :: (a -> a -> Ordering) -> a -> [a] -> [a]","name":"insertOrdBy'","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:insertOrdBy-39-"},{"display_html":"splitIncr :: (a -> a -> Ordering) -> [a] -> ([a], [a])","name":"splitIncr","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:splitIncr"},{"display_html":"isShiftOf :: Eq a => CList a -> CList a -> Bool","name":"isShiftOf","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:isShiftOf"},{"display_html":"data STR a b c = STR !a !b !c","name":"STR STR","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#t:STR"},{"display_html":"type Three = V3","name":"Three","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#t:Three"},{"display_html":"pattern Three :: a -> a -> a -> Three a","name":"Three","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:Three"},{"display_html":"uniqueTriplets :: Foldable f => f a -> [Three a]","name":"uniqueTriplets","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:uniqueTriplets"},{"display_html":"data SP a b = SP !a !b","name":"SP SP","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#t:SP"},{"display_html":"type Two = V2","name":"Two","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#t:Two"},{"display_html":"pattern Two :: a -> a -> Two a","name":"Two","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:Two"},{"display_html":"uniquePairs :: Foldable f => f a -> [Two a]","name":"uniquePairs","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:uniquePairs"},{"display_html":"nonEmptyTails :: [a] -> [[a]]","name":"nonEmptyTails","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:nonEmptyTails"},{"display_html":"data core :+ extra = core :+ extra","name":":+ :+","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#t::-43-"},{"display_html":"_core :: (core :+ extra) -> core","name":"_core","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:_core"},{"display_html":"_extra :: (core :+ extra) -> extra","name":"_extra","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:_extra"},{"display_html":"core :: forall core extra core' f. Functor f => (core -> f core') -> (core :+ extra) -> f (core' :+ extra)","name":"core","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:core"},{"display_html":"extra :: forall core extra extra' f. Functor f => (extra -> f extra') -> (core :+ extra) -> f (core :+ extra')","name":"extra","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:extra"},{"display_html":"ext :: a -> a :+ ()","name":"ext","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:ext"},{"display_html":"class AsA t c | t -> c where","name":"AsA asCore","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#t:AsA"},{"display_html":"type (:~) t c = AsA t c","name":":~","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#t::-126-"},{"display_html":"pattern AsA :: t :~ c => c -> t","name":"AsA","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:AsA"},{"display_html":"class AsExt t where","name":"AsExt ExtraOf CoreOf _Ext","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#t:AsExt"},{"display_html":"asIndexedExt :: (Indexable i p, Functor f) => p (s :+ i) (f (t :+ j)) -> Indexed i s (f t)","name":"asIndexedExt","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:asIndexedExt"},{"display_html":"sortBy :: forall vector f a. (Foldable f, Vector vector a) => (a -> a -> Ordering) -> f a -> vector a","name":"sortBy","module":"HGeometry.Foldable.Sort","link":"hgeometry-combinatorial/HGeometry-Foldable-Sort.html#v:sortBy"},{"display_html":"sort :: forall vector f a. (Foldable f, Vector vector a, Ord a) => f a -> vector a","name":"sort","module":"HGeometry.Foldable.Sort","link":"hgeometry-combinatorial/HGeometry-Foldable-Sort.html#v:sort"},{"display_html":"sortOnCheap :: forall vector f a b. (Foldable f, Vector vector a, Ord b) => (a -> b) -> f a -> vector a","name":"sortOnCheap","module":"HGeometry.Foldable.Sort","link":"hgeometry-combinatorial/HGeometry-Foldable-Sort.html#v:sortOnCheap"},{"display_html":"class HasFromFoldable (f :: Type -> Type) where","name":"HasFromFoldable fromList fromFoldable $dmfromFoldable","module":"HGeometry.Foldable.Util","link":"hgeometry-combinatorial/HGeometry-Foldable-Util.html#t:HasFromFoldable"},{"display_html":"class HasFromFoldable1 (f :: Type -> Type) where","name":"HasFromFoldable1 fromNonEmpty fromFoldable1 $dmfromFoldable1","module":"HGeometry.Foldable.Util","link":"hgeometry-combinatorial/HGeometry-Foldable-Util.html#t:HasFromFoldable1"},{"display_html":"class HasIndex a where","name":"HasIndex sosIndex","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#t:HasIndex"},{"display_html":"type Index = Int","name":"Index","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#t:Index"},{"display_html":"data WithIndex a = WithIndex !Index a","name":"WithIndex WithIndex","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#t:WithIndex"},{"display_html":"theValue :: forall a b f. Functor f => (a -> f b) -> WithIndex a -> f (WithIndex b)","name":"theValue","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#v:theValue"},{"display_html":"labelWithIndex :: Traversable t => t a -> t (WithIndex a)","name":"labelWithIndex","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#v:labelWithIndex"},{"display_html":"labelWith :: Traversable t => (Index -> a -> b) -> t a -> t b","name":"labelWith","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#v:labelWith"},{"display_html":"labelWith' :: Traversable t => (Index -> a -> b) -> t a -> (t b, Int)","name":"labelWith'","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#v:labelWith-39-"},{"display_html":"folding1 :: Foldable1 f => (s -> f a) -> Fold1 s a","name":"folding1","module":"HGeometry.Lens.Util","link":"hgeometry-combinatorial/HGeometry-Lens-Util.html#v:folding1"},{"display_html":"ifolding1 :: (Foldable1 f, Indexable i p, Contravariant g, Apply g) => (s -> f (i, a)) -> Over p g s t a b","name":"ifolding1","module":"HGeometry.Lens.Util","link":"hgeometry-combinatorial/HGeometry-Lens-Util.html#v:ifolding1"},{"display_html":"itoNonEmptyOf :: IndexedGetting i (NonEmptyDList (i, a)) s a -> s -> NonEmpty (i, a)","name":"itoNonEmptyOf","module":"HGeometry.Lens.Util","link":"hgeometry-combinatorial/HGeometry-Lens-Util.html#v:itoNonEmptyOf"},{"display_html":"data Zipper a = Zipper [a] [a]","name":"Zipper Zipper","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#t:Zipper"},{"display_html":"fromList :: [a] -> Zipper a","name":"fromList","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:fromList"},{"display_html":"goNext :: Zipper a -> Maybe (Zipper a)","name":"goNext","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:goNext"},{"display_html":"goPrev :: Zipper a -> Maybe (Zipper a)","name":"goPrev","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:goPrev"},{"display_html":"allNexts :: Zipper a -> [Zipper a]","name":"allNexts","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:allNexts"},{"display_html":"extractNext :: Zipper a -> Maybe (a, Zipper a)","name":"extractNext","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:extractNext"},{"display_html":"dropNext :: Zipper a -> Maybe (Zipper a)","name":"dropNext","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:dropNext"},{"display_html":"allNonEmptyNexts :: Zipper a -> [Zipper a]","name":"allNonEmptyNexts","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:allNonEmptyNexts"},{"display_html":"class Measured (f :: Type -> Type) a where","name":"Measured measure","module":"HGeometry.Measured.Class","link":"hgeometry-combinatorial/HGeometry-Measured-Class.html#t:Measured"},{"display_html":"class Measured f a => CanInsert (f :: Type -> Type) a where","name":"CanInsert insertMeasure $dminsertMeasure","module":"HGeometry.Measured.Class","link":"hgeometry-combinatorial/HGeometry-Measured-Class.html#t:CanInsert"},{"display_html":"class Measured f a => CanDelete (f :: Type -> Type) a where","name":"CanDelete deleteMeasure","module":"HGeometry.Measured.Class","link":"hgeometry-combinatorial/HGeometry-Measured-Class.html#t:CanDelete"},{"display_html":"module HGeometry.Measured.Class","name":"","module":"HGeometry.Measured","link":"hgeometry-combinatorial"},{"display_html":"newtype Count (a :: k) = Count Word","name":"Count Count","module":"HGeometry.Measured.Size","link":"hgeometry-combinatorial/HGeometry-Measured-Size.html#t:Count"},{"display_html":"data Sized a = Sized !(Count a) a","name":"Sized Sized","module":"HGeometry.Measured.Size","link":"hgeometry-combinatorial/HGeometry-Measured-Size.html#t:Sized"},{"display_html":"extractMinimaBy :: (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a :+ [a]","name":"extractMinimaBy","module":"HGeometry.NonEmpty.Util","link":"hgeometry-combinatorial/HGeometry-NonEmpty-Util.html#v:extractMinimaBy"},{"display_html":"leaveOutOne :: [a] -> [(a, [a])]","name":"leaveOutOne","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:leaveOutOne"},{"display_html":"minimumMaybe :: Ord a => [a] -> Maybe a","name":"minimumMaybe","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:minimumMaybe"},{"display_html":"maximumMaybe :: Ord a => [a] -> Maybe a","name":"maximumMaybe","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:maximumMaybe"},{"display_html":"minimumMaybeBy :: (a -> a -> Ordering) -> [a] -> Maybe a","name":"minimumMaybeBy","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:minimumMaybeBy"},{"display_html":"minimaOn :: Ord b => (a -> b) -> [a] -> [a]","name":"minimaOn","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:minimaOn"},{"display_html":"minimaBy :: (a -> a -> Ordering) -> [a] -> [a]","name":"minimaBy","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:minimaBy"},{"display_html":"extractMinimaBy :: (a -> a -> Ordering) -> [a] -> [a] :+ [a]","name":"extractMinimaBy","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:extractMinimaBy"},{"display_html":"partition3 :: Foldable f => (a -> Ordering) -> f a -> ([a], [a], [a])","name":"partition3","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:partition3"},{"display_html":"groupBy' :: (a -> a -> Ordering) -> [a] -> [NonEmpty a]","name":"groupBy'","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:groupBy-39-"},{"display_html":"class Num r => Radical r where","name":"Radical sqrt $dmsqrt","module":"HGeometry.Number.Radical","link":"hgeometry-combinatorial/HGeometry-Number-Radical.html#t:Radical"},{"display_html":"data GRatio a","name":"GRatio","module":"HGeometry.Number.Ratio.Generalized","link":"hgeometry-combinatorial/HGeometry-Number-Ratio-Generalized.html#t:GRatio"},{"display_html":"(%) :: (Eq a, Num a) => a -> a -> GRatio a","name":"%","module":"HGeometry.Number.Ratio.Generalized","link":"hgeometry-combinatorial/HGeometry-Number-Ratio-Generalized.html#v:-37-"},{"display_html":"numerator :: GRatio a -> a","name":"numerator","module":"HGeometry.Number.Ratio.Generalized","link":"hgeometry-combinatorial/HGeometry-Number-Ratio-Generalized.html#v:numerator"},{"display_html":"denominator :: GRatio a -> a","name":"denominator","module":"HGeometry.Number.Ratio.Generalized","link":"hgeometry-combinatorial/HGeometry-Number-Ratio-Generalized.html#v:denominator"},{"display_html":"newtype RealNumber (p :: Nat) = RealNumber Rational","name":"RealNumber RealNumber","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#t:RealNumber"},{"display_html":"data AsFixed (p :: k)","name":"AsFixed Exact Lossy","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#t:AsFixed"},{"display_html":"asFixed :: forall (p :: Nat). KnownNat p => RealNumber p -> AsFixed (NatPrec p)","name":"asFixed","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#v:asFixed"},{"display_html":"toFixed :: forall (p :: Nat). KnownNat p => RealNumber p -> Fixed (NatPrec p)","name":"toFixed","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#v:toFixed"},{"display_html":"fromFixed :: forall (p :: Nat). KnownNat p => Fixed (NatPrec p) -> RealNumber p","name":"fromFixed","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#v:fromFixed"},{"display_html":"type Nat = Natural","name":"Nat","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#t:Nat"},{"display_html":"newtype O s a = O {}","name":"O runO O","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#t:O"},{"display_html":"newtype OrdDict a = OrdDict {}","name":"OrdDict compare_ OrdDict","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#t:OrdDict"},{"display_html":"withOrd :: (a -> a -> Ordering) -> (forall s. Reifies s (OrdDict a) => O s b) -> b","name":"withOrd","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:withOrd"},{"display_html":"extractOrd1 :: f (O s a) -> O s (f a)","name":"extractOrd1","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:extractOrd1"},{"display_html":"introOrd1 :: f a -> f (O s a)","name":"introOrd1","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:introOrd1"},{"display_html":"liftOrd1 :: (f (O s a) -> g (O s a)) -> f a -> O s (g a)","name":"liftOrd1","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:liftOrd1"},{"display_html":"extractOrd2 :: forall {k1} f s k2 (v :: k1). f (O s k2) v -> O s (f k2 v)","name":"extractOrd2","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:extractOrd2"},{"display_html":"introOrd2 :: forall {k1} f k2 (v :: k1) s. f k2 v -> f (O s k2) v","name":"introOrd2","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:introOrd2"},{"display_html":"data Alternating (f :: Type -> Type) sep a = Alternating a (f (sep, a))","name":"Alternating Alternating","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#t:Alternating"},{"display_html":"fromNonEmptyWith :: forall (g :: Type -> Type) f sep a. (HasFromFoldable g, Foldable1 f) => sep -> f a -> Alternating g sep a","name":"fromNonEmptyWith","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:fromNonEmptyWith"},{"display_html":"mapF :: (f (sep, a) -> g (sep', a)) -> Alternating f sep a -> Alternating g sep' a","name":"mapF","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:mapF"},{"display_html":"firstWithNeighbors :: forall (f :: Type -> Type) a sep sep'. Traversable f => (a -> sep -> a -> sep') -> Alternating f sep a -> Alternating f sep' a","name":"firstWithNeighbors","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:firstWithNeighbors"},{"display_html":"withNeighbours :: forall (f :: Type -> Type) sep a. Foldable f => Alternating f sep a -> [(a, sep, a)]","name":"withNeighbours","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:withNeighbours"},{"display_html":"mergeAlternating :: Ord t => (t -> a -> b -> c) -> Alternating [] t a -> Alternating [] t b -> [(t, c)]","name":"mergeAlternating","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:mergeAlternating"},{"display_html":"insertBreakPoints :: Ord t => [t] -> Alternating [] t a -> Alternating [] t a","name":"insertBreakPoints","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:insertBreakPoints"},{"display_html":"reverse :: Alternating [] b a -> Alternating [] b a","name":"reverse","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:reverse"},{"display_html":"consElemWith :: forall (f :: Type -> Type) sep a. Cons (f (sep, a)) (f (sep, a)) (sep, a) (sep, a) => (a -> a -> sep) -> a -> Alternating f sep a -> Alternating f sep a","name":"consElemWith","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:consElemWith"},{"display_html":"unconsAlt :: forall (f :: Type -> Type) sep a. Cons (f (sep, a)) (f (sep, a)) (sep, a) (sep, a) => Alternating f sep a -> Either a ((a, sep), Alternating f sep a)","name":"unconsAlt","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:unconsAlt"},{"display_html":"snocElemWith :: forall (f :: Type -> Type) sep a. Snoc (f (sep, a)) (f (sep, a)) (sep, a) (sep, a) => (a -> a -> sep) -> Alternating f sep a -> a -> Alternating f sep a","name":"snocElemWith","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:snocElemWith"},{"display_html":"separators :: Functor f => Alternating f sep a -> f sep","name":"separators","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:separators"},{"display_html":"data ViewL1 a = a :<< (Seq a)","name":"ViewL1 :<<","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#t:ViewL1"},{"display_html":"data ViewR1 a = (Seq a) :>> a","name":"ViewR1 :>>","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#t:ViewR1"},{"display_html":"viewl1 :: ViewR1 a -> ViewL1 a","name":"viewl1","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:viewl1"},{"display_html":"viewr1 :: ViewL1 a -> ViewR1 a","name":"viewr1","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:viewr1"},{"display_html":"(|>>) :: ViewR1 a -> a -> ViewR1 a","name":"|>>","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:-124--62--62-"},{"display_html":"(<>>) :: ViewR1 a -> Seq a -> ViewR1 a","name":"<>>","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:-60--62--62-"},{"display_html":"splitL1At :: Int -> ViewL1 a -> Maybe (Seq a, a, Seq a)","name":"splitL1At","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:splitL1At"},{"display_html":"splitR1At :: Int -> ViewR1 a -> Maybe (Seq a, a, Seq a)","name":"splitR1At","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:splitR1At"},{"display_html":"toggle :: Ord a => a -> Set a -> Set a","name":"toggle","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:toggle"},{"display_html":"splitOn :: Ord b => (a -> b) -> b -> Set a -> (Set a, Set a, Set a)","name":"splitOn","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:splitOn"},{"display_html":"splitBy :: (a -> Ordering) -> Set a -> (Set a, Set a, Set a)","name":"splitBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:splitBy"},{"display_html":"fromListBy :: (a -> a -> Ordering) -> [a] -> Set a","name":"fromListBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:fromListBy"},{"display_html":"join :: Set a -> Set a -> Set a","name":"join","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:join"},{"display_html":"insertBy :: (a -> a -> Ordering) -> a -> Set a -> Set a","name":"insertBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:insertBy"},{"display_html":"deleteAllBy :: (a -> a -> Ordering) -> a -> Set a -> Set a","name":"deleteAllBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:deleteAllBy"},{"display_html":"queryBy :: (a -> a -> Ordering) -> (forall b. Ord b => b -> Set b -> t b) -> a -> Set a -> t a","name":"queryBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:queryBy"},{"display_html":"toggleBy :: (a -> a -> Ordering) -> a -> Set a -> Set a","name":"toggleBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:toggleBy"},{"display_html":"data Sign","name":"Sign Negative Positive","module":"HGeometry.Sign","link":"hgeometry-combinatorial/HGeometry-Sign.html#t:Sign"},{"display_html":"flipSign :: Sign -> Sign","name":"flipSign","module":"HGeometry.Sign","link":"hgeometry-combinatorial/HGeometry-Sign.html#v:flipSign"},{"display_html":"signFromTerms :: (Num r, Eq r, Foldable1 f) => f r -> Maybe Sign","name":"signFromTerms","module":"HGeometry.Sign","link":"hgeometry-combinatorial/HGeometry-Sign.html#v:signFromTerms"},{"display_html":"data EpsFold i","name":"EpsFold","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#t:EpsFold"},{"display_html":"eps :: i -> EpsFold i","name":"eps","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:eps"},{"display_html":"mkEpsFold :: Ord i => [i] -> EpsFold i","name":"mkEpsFold","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:mkEpsFold"},{"display_html":"evalEps :: (Fractional r, Integral i, Integral j) => j -> r -> EpsFold i -> r","name":"evalEps","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:evalEps"},{"display_html":"hasNoPertubation :: EpsFold i -> Bool","name":"hasNoPertubation","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:hasNoPertubation"},{"display_html":"factors :: EpsFold i -> Bag i","name":"factors","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:factors"},{"display_html":"suitableBase :: EpsFold i -> Int","name":"suitableBase","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:suitableBase"},{"display_html":"data Term i r = Term !r (EpsFold i)","name":"Term Term","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#t:Term"},{"display_html":"term :: r -> i -> Term i r","name":"term","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:term"},{"display_html":"constantFactor :: forall i r f. Functor f => (r -> f r) -> Term i r -> f (Term i r)","name":"constantFactor","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:constantFactor"},{"display_html":"data Symbolic i r","name":"Symbolic","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#t:Symbolic"},{"display_html":"constant :: Ord i => r -> Symbolic i r","name":"constant","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:constant"},{"display_html":"symbolic :: Ord i => r -> i -> Symbolic i r","name":"symbolic","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:symbolic"},{"display_html":"perturb :: (Num r, Ord i) => r -> i -> Symbolic i r","name":"perturb","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:perturb"},{"display_html":"toTerms :: Symbolic i r -> [Term i r]","name":"toTerms","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:toTerms"},{"display_html":"signOf :: (Num r, Eq r) => Symbolic i r -> Maybe Sign","name":"signOf","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:signOf"},{"display_html":"roundToConstant :: Num r => Symbolic i r -> r","name":"roundToConstant","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:roundToConstant"},{"display_html":"type SoSRational i r = GRatio (Symbolic i r)","name":"SoSRational","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#t:SoSRational"},{"display_html":"sosRational :: (Ord i, Eq r, Num r) => Symbolic i r -> Symbolic i r -> SoSRational i r","name":"sosRational","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:sosRational"},{"display_html":"isSubStringOf :: (Eq a, Foldable p, Foldable t) => p a -> t a -> Maybe Int","name":"isSubStringOf","module":"HGeometry.StringSearch.KMP","link":"hgeometry-combinatorial/HGeometry-StringSearch-KMP.html#v:isSubStringOf"},{"display_html":"kmpMatch :: Eq a => Vector a -> Vector a -> Maybe Int","name":"kmpMatch","module":"HGeometry.StringSearch.KMP","link":"hgeometry-combinatorial/HGeometry-StringSearch-KMP.html#v:kmpMatch"},{"display_html":"buildFailureFunction :: Eq a => Vector a -> Vector Int","name":"buildFailureFunction","module":"HGeometry.StringSearch.KMP","link":"hgeometry-combinatorial/HGeometry-StringSearch-KMP.html#v:buildFailureFunction"},{"display_html":"data TreeNode v a","name":"TreeNode LeafNode InternalNode","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#t:TreeNode"},{"display_html":"_TreeNodeEither :: forall v p1 p2 f. (Profunctor p2, Functor f) => p2 (Either v p1) (f (Either v p1)) -> p2 (TreeNode v p1) (f (TreeNode v p1))","name":"_TreeNodeEither","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:_TreeNodeEither"},{"display_html":"data Zipper a = Zipper {}","name":"Zipper ancestors Zipper focus","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#t:Zipper"},{"display_html":"root :: Tree a -> Zipper a","name":"root","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:root"},{"display_html":"up :: Zipper a -> Maybe (Zipper a)","name":"up","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:up"},{"display_html":"firstChild :: Zipper a -> Maybe (Zipper a)","name":"firstChild","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:firstChild"},{"display_html":"nextSibling :: Zipper a -> Maybe (Zipper a)","name":"nextSibling","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:nextSibling"},{"display_html":"prevSibling :: Zipper a -> Maybe (Zipper a)","name":"prevSibling","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:prevSibling"},{"display_html":"allChildren :: Zipper a -> [Zipper a]","name":"allChildren","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:allChildren"},{"display_html":"allTrees :: Zipper a -> [Zipper a]","name":"allTrees","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:allTrees"},{"display_html":"unZipperLocal :: Zipper a -> Tree a","name":"unZipperLocal","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:unZipperLocal"},{"display_html":"constructTree :: [([Tree a], a, [Tree a])] -> Maybe (Tree a)","name":"constructTree","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:constructTree"},{"display_html":"findEvert :: (a -> Bool) -> Tree a -> Maybe (Tree a)","name":"findEvert","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findEvert"},{"display_html":"findEvert' :: (Tree a -> Bool) -> Tree a -> Maybe (Tree a)","name":"findEvert'","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findEvert-39-"},{"display_html":"findPath :: (a -> Bool) -> (a -> Bool) -> Tree a -> Maybe [a]","name":"findPath","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findPath"},{"display_html":"findNode :: (a -> Bool) -> Tree a -> Maybe [a]","name":"findNode","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findNode"},{"display_html":"findNodes :: (Tree a -> Bool) -> Tree a -> [[a]]","name":"findNodes","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findNodes"},{"display_html":"levels :: Tree a -> NonEmpty (NonEmpty a)","name":"levels","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:levels"},{"display_html":"data BinLeafTree v a","name":"BinLeafTree Node Leaf","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#t:BinLeafTree"},{"display_html":"node :: (Measured f a, Semigroup (f a)) => BinLeafTree (f a) a -> BinLeafTree (f a) a -> BinLeafTree (f a) a","name":"node","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:node"},{"display_html":"asBalancedBinLeafTree :: Foldable1 f => f a -> BinLeafTree (Count a) a","name":"asBalancedBinLeafTree","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:asBalancedBinLeafTree"},{"display_html":"foldUp :: (b -> v -> b -> b) -> (a -> b) -> BinLeafTree v a -> b","name":"foldUp","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:foldUp"},{"display_html":"foldUpData :: (w -> v -> w -> w) -> (a -> w) -> BinLeafTree v a -> BinLeafTree w a","name":"foldUpData","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:foldUpData"},{"display_html":"zipExactWith :: (u -> v -> w) -> (a -> b -> c) -> BinLeafTree u a -> BinLeafTree v b -> BinLeafTree w c","name":"zipExactWith","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:zipExactWith"},{"display_html":"toRoseTree :: BinLeafTree v a -> Tree (TreeNode v a)","name":"toRoseTree","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:toRoseTree"},{"display_html":"drawTree :: (Show v, Show a) => BinLeafTree v a -> String","name":"drawTree","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:drawTree"},{"display_html":"data BinaryTree a","name":"BinaryTree Internal Nil","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#t:BinaryTree"},{"display_html":"asBalancedBinTree :: Foldable f => f a -> BinaryTree a","name":"asBalancedBinTree","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:asBalancedBinTree"},{"display_html":"access :: BinaryTree a -> Maybe a","name":"access","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:access"},{"display_html":"foldBinaryUp :: b -> (a -> b -> b -> b) -> BinaryTree a -> BinaryTree (a, b)","name":"foldBinaryUp","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:foldBinaryUp"},{"display_html":"toRoseTree' :: BinaryTree a -> Maybe (Tree a)","name":"toRoseTree'","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:toRoseTree-39-"},{"display_html":"drawTree' :: Show a => BinaryTree a -> String","name":"drawTree'","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:drawTree-39-"},{"display_html":"newtype Report a where","name":"Report Report MkReport","module":"HGeometry.Measured.Report","link":"hgeometry-combinatorial/HGeometry-Measured-Report.html#t:Report"},{"display_html":"newtype Report1 a = Report1 (BinLeafTree (Const () a) a)","name":"Report1 Report1","module":"HGeometry.Measured.Report","link":"hgeometry-combinatorial/HGeometry-Measured-Report.html#t:Report1"},{"display_html":"newtype ReportList a = ReportList [a]","name":"ReportList ReportList","module":"HGeometry.Measured.Report","link":"hgeometry-combinatorial/HGeometry-Measured-Report.html#t:ReportList"},{"display_html":"data Top a where","name":"Top ValT Top","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#t:Top"},{"display_html":"topToMaybe :: Top a -> Maybe a","name":"topToMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:topToMaybe"},{"display_html":"_ValT :: forall a b p f. (Choice p, Applicative f) => p a (f b) -> p (Top a) (f (Top b))","name":"_ValT","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_ValT"},{"display_html":"_Top :: forall a p f. (Choice p, Applicative f) => p () (f ()) -> p (Top a) (f (Top a))","name":"_Top","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_Top"},{"display_html":"_TopMaybe :: forall a p f. (Profunctor p, Functor f) => p (Maybe a) (f (Maybe a)) -> p (Top a) (f (Top a))","name":"_TopMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_TopMaybe"},{"display_html":"data Bottom a where","name":"Bottom Bottom ValB","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#t:Bottom"},{"display_html":"bottomToMaybe :: Bottom a -> Maybe a","name":"bottomToMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:bottomToMaybe"},{"display_html":"_ValB :: forall a b p f. (Choice p, Applicative f) => p a (f b) -> p (Bottom a) (f (Bottom b))","name":"_ValB","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_ValB"},{"display_html":"_Bottom :: forall a p f. (Choice p, Applicative f) => p () (f ()) -> p (Bottom a) (f (Bottom a))","name":"_Bottom","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_Bottom"},{"display_html":"_BottomMaybe :: forall a p f. (Profunctor p, Functor f) => p (Maybe a) (f (Maybe a)) -> p (Bottom a) (f (Bottom a))","name":"_BottomMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_BottomMaybe"},{"display_html":"data UnBounded a","name":"UnBounded MaxInfinity MinInfinity Val _unUnBounded","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#t:UnBounded"},{"display_html":"_Val :: forall a b p f. (Choice p, Applicative f) => p a (f b) -> p (UnBounded a) (f (UnBounded b))","name":"_Val","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_Val"},{"display_html":"unBoundedToMaybe :: UnBounded a -> Maybe a","name":"unBoundedToMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:unBoundedToMaybe"},{"display_html":"data Permutation a = Permutation (NonEmptyVector (Orbit a)) (Vector (Int, Int))","name":"Permutation Permutation","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#t:Permutation"},{"display_html":"orbits :: forall a b f. Functor f => (NonEmptyVector (Orbit a) -> f (NonEmptyVector (Orbit b))) -> Permutation a -> f (Permutation b)","name":"orbits","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:orbits"},{"display_html":"indices :: (Indexable i p, Applicative f) => (i -> Bool) -> Optical' p (Indexed i) f a a","name":"indices","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:indices"},{"display_html":"type Orbit a = NonEmptyVector a","name":"Orbit","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#t:Orbit"},{"display_html":"elems :: Permutation a -> NonEmptyVector a","name":"elems","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:elems"},{"display_html":"size :: Permutation a -> Int","name":"size","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:size"},{"display_html":"cycleOf :: Enum a => Permutation a -> a -> Orbit a","name":"cycleOf","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:cycleOf"},{"display_html":"next :: NonEmptyVector a -> Int -> a","name":"next","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:next"},{"display_html":"previous :: NonEmptyVector a -> Int -> a","name":"previous","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:previous"},{"display_html":"lookupIdx :: Enum a => Permutation a -> a -> (Int, Int)","name":"lookupIdx","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:lookupIdx"},{"display_html":"apply :: Enum a => Permutation a -> a -> a","name":"apply","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:apply"},{"display_html":"orbitFrom :: Eq a => a -> (a -> a) -> NonEmpty a","name":"orbitFrom","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:orbitFrom"},{"display_html":"cycleRep :: (Enum a, Eq a) => NonEmptyVector a -> (a -> a) -> Permutation a","name":"cycleRep","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:cycleRep"},{"display_html":"toCycleRep :: Enum a => Int -> NonEmpty (NonEmpty a) -> Permutation a","name":"toCycleRep","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:toCycleRep"},{"display_html":"newtype Cyclic (v :: k -> Type) (a :: k) = Cyclic (v a)","name":"Cyclic Cyclic","module":"HGeometry.Cyclic","link":"hgeometry-combinatorial/HGeometry-Cyclic.html#t:Cyclic"},{"display_html":"class HasDirectedTraversals (v :: Type -> Type) where","name":"HasDirectedTraversals traverseRightFrom traverseLeftFrom","module":"HGeometry.Cyclic","link":"hgeometry-combinatorial/HGeometry-Cyclic.html#t:HasDirectedTraversals"},{"display_html":"class ShiftedEq t where","name":"ShiftedEq isShiftOf ElemCyclic","module":"HGeometry.Cyclic","link":"hgeometry-combinatorial/HGeometry-Cyclic.html#t:ShiftedEq"},{"display_html":"encodeYAML :: ToYAML a => a -> ByteString","name":"encodeYAML","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:encodeYAML"},{"display_html":"encodeYAMLFile :: ToYAML a => OsPath -> a -> IO ()","name":"encodeYAMLFile","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:encodeYAMLFile"},{"display_html":"decodeYAML :: FromYAML a => ByteString -> Either (Pos, String) a","name":"decodeYAML","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:decodeYAML"},{"display_html":"decodeYAMLFile :: FromYAML a => OsPath -> IO (Either (Pos, String) a)","name":"decodeYAMLFile","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:decodeYAMLFile"},{"display_html":"printYAML :: ToYAML a => a -> IO ()","name":"printYAML","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:printYAML"},{"display_html":"data Versioned a = Versioned Version a","name":"Versioned Versioned","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#t:Versioned"},{"display_html":"unversioned :: Versioned a -> a","name":"unversioned","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:unversioned"}] \ No newline at end of file +[{"display_html":"class HasVector point point' where","name":"HasVector vector","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasVector"},{"display_html":"generate :: forall vector (d :: Nat) r. Vector_ vector d r => (Int -> r) -> vector","name":"generate","module":"HGeometry","link":"hgeometry/HGeometry.html#v:generate"},{"display_html":"unit :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => vector","name":"unit","module":"HGeometry","link":"hgeometry/HGeometry.html#v:unit"},{"display_html":"size :: forall box (d :: Nat) point r. (Box_ box point, Point_ point d r, Num r, Functor (Vector d)) => box -> Vector d r","name":"size","module":"HGeometry","link":"hgeometry/HGeometry.html#v:size"},{"display_html":"data family Vector (d :: Nat) r","name":"Vector Vector2 MkVector1 MkVector2 MkVector3 MkVector4 Vector1 Vector3 Vector4","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Vector"},{"display_html":"head :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"head","module":"HGeometry","link":"hgeometry/HGeometry.html#v:head"},{"display_html":"uncons :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, 0 <= ((d + 1) - 1), d <= Dimension vector) => vector -> (r, vector')","name":"uncons","module":"HGeometry","link":"hgeometry/HGeometry.html#v:uncons"},{"display_html":"unsnoc :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, d <= ((d + 1) - 1), d <= Dimension vector) => vector -> (vector', r)","name":"unsnoc","module":"HGeometry","link":"hgeometry/HGeometry.html#v:unsnoc"},{"display_html":"last :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"last","module":"HGeometry","link":"hgeometry/HGeometry.html#v:last"},{"display_html":"cons :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => r -> vector -> vector'","name":"cons","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cons"},{"display_html":"snoc :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => vector -> r -> vector'","name":"snoc","module":"HGeometry","link":"hgeometry/HGeometry.html#v:snoc"},{"display_html":"class HasComponents vector vector' where","name":"HasComponents components","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasComponents"},{"display_html":"zero :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector","name":"zero","module":"HGeometry","link":"hgeometry/HGeometry.html#v:zero"},{"display_html":"class Additive_ vector d r => Metric_ vector (d :: Nat) r where","name":"Metric_ dot norm qd quadrance signorm","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Metric_"},{"display_html":"data SideTestUpDown","name":"SideTestUpDown On Above Below","module":"HGeometry","link":"hgeometry/HGeometry.html#t:SideTestUpDown"},{"display_html":"type Point (d :: Nat) r = PointF (Vector d r)","name":"Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Point"},{"display_html":"newtype PointF v where","name":"PointF Point Point1 Point2 Point3 Point4 toVec","module":"HGeometry","link":"hgeometry/HGeometry.html#t:PointF"},{"display_html":"prefix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"prefix","module":"HGeometry","link":"hgeometry/HGeometry.html#v:prefix"},{"display_html":"data Box point where","name":"Box Box Rectangle","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Box"},{"display_html":"class HasDirection t where","name":"HasDirection direction","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasDirection"},{"display_html":"component :: forall (i :: Natural) vector r (d :: Natural). (i <= (d - 1), KnownNat i, Vector_ vector d r) => IndexedLens' Int vector r","name":"component","module":"HGeometry","link":"hgeometry/HGeometry.html#v:component"},{"display_html":"negated :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> vector","name":"negated","module":"HGeometry","link":"hgeometry/HGeometry.html#v:negated"},{"display_html":"(*^) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => r -> vector -> vector","name":"*^","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-42--94-"},{"display_html":"(^*) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> r -> vector","name":"^*","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-94--42-"},{"display_html":"(^/) :: forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector","name":"^/","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-94--47-"},{"display_html":"basis :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => [vector]","name":"basis","module":"HGeometry","link":"hgeometry/HGeometry.html#v:basis"},{"display_html":"sumV :: forall f vector (d :: Nat) r. (Foldable f, Additive_ vector d r, Num r) => f vector -> vector","name":"sumV","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sumV"},{"display_html":"(^+^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^+^","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-94--43--94-"},{"display_html":"(^-^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^-^","module":"HGeometry","link":"hgeometry/HGeometry.html#v:-94--45--94-"},{"display_html":"lerp :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => r -> vector -> vector -> vector","name":"lerp","module":"HGeometry","link":"hgeometry/HGeometry.html#v:lerp"},{"display_html":"liftI2 :: forall vector (d :: Nat) r. Additive_ vector d r => (r -> r -> r) -> vector -> vector -> vector","name":"liftI2","module":"HGeometry","link":"hgeometry/HGeometry.html#v:liftI2"},{"display_html":"class Vector_ vector d r => Additive_ vector (d :: Nat) r where","name":"Additive_ liftU2 liftI2A","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Additive_"},{"display_html":"class Point_ point d r => ConstructablePoint_ point (d :: Nat) r where","name":"ConstructablePoint_ fromVector","module":"HGeometry","link":"hgeometry/HGeometry.html#t:ConstructablePoint_"},{"display_html":"cross :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r","name":"cross","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cross"},{"display_html":"origin :: forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point","name":"origin","module":"HGeometry","link":"hgeometry/HGeometry.html#v:origin"},{"display_html":"class (Additive_ (Vector d r) d r, HasCoordinates point point, d ~ Dimension point, r ~ NumType point) => Affine_ point (d :: Nat) r | point -> d, point -> r where","name":"Affine_ .+^ .-. .-^","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Affine_"},{"display_html":"class (HasMinPoint box point, HasMaxPoint box point, Point_ point (Dimension box) (NumType box)) => Box_ box point | box -> point where","name":"Box_ extent","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Box_"},{"display_html":"data LineSegment (endPoint :: Type -> Type) point where","name":"LineSegment LineSegment ClosedLineSegment OpenLineSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineSegment"},{"display_html":"data LinePV (d :: Nat) r = LinePV {}","name":"LinePV LinePV _anchorPoint _direction","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LinePV"},{"display_html":"centerPoint :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, Fractional r) => box -> point","name":"centerPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#v:centerPoint"},{"display_html":"height :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, 2 <= d, Functor (Vector d), Num r) => box -> r","name":"height","module":"HGeometry","link":"hgeometry/HGeometry.html#v:height"},{"display_html":"width :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, 1 <= d, Functor (Vector d), Num r) => box -> r","name":"width","module":"HGeometry","link":"hgeometry/HGeometry.html#v:width"},{"display_html":"corners :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Corners point","name":"corners","module":"HGeometry","link":"hgeometry/HGeometry.html#v:corners"},{"display_html":"cornersInDirection :: CardinalDirection -> Corners p -> Vector 2 p","name":"cornersInDirection","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cornersInDirection"},{"display_html":"northEast :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"northEast","module":"HGeometry","link":"hgeometry/HGeometry.html#v:northEast"},{"display_html":"northWest :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"northWest","module":"HGeometry","link":"hgeometry/HGeometry.html#v:northWest"},{"display_html":"southEast :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"southEast","module":"HGeometry","link":"hgeometry/HGeometry.html#v:southEast"},{"display_html":"southWest :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"southWest","module":"HGeometry","link":"hgeometry/HGeometry.html#v:southWest"},{"display_html":"fromExtent :: forall vector (d :: Nat) interval r. (Vector_ vector d interval, ClosedInterval_ interval r, Has_ Additive_ d r, Has_ Vector_ d interval, HasComponents (Vector d interval) (Vector d r)) => vector -> Box (Point d r)","name":"fromExtent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:fromExtent"},{"display_html":"bottomSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"bottomSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:bottomSide"},{"display_html":"east :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"east","module":"HGeometry","link":"hgeometry/HGeometry.html#v:east"},{"display_html":"leftSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"leftSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:leftSide"},{"display_html":"north :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"north","module":"HGeometry","link":"hgeometry/HGeometry.html#v:north"},{"display_html":"rightSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"rightSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:rightSide"},{"display_html":"sideDirections :: Sides CardinalDirection","name":"sideDirections","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sideDirections"},{"display_html":"sideValues :: (Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides r","name":"sideValues","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sideValues"},{"display_html":"sides :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point)","name":"sides","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sides"},{"display_html":"sides' :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point)","name":"sides'","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sides-39-"},{"display_html":"south :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"south","module":"HGeometry","link":"hgeometry/HGeometry.html#v:south"},{"display_html":"topSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"topSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:topSide"},{"display_html":"west :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"west","module":"HGeometry","link":"hgeometry/HGeometry.html#v:west"},{"display_html":"horizontalLine :: forall r line. (Line_ line 2 r, Num r) => r -> line","name":"horizontalLine","module":"HGeometry","link":"hgeometry/HGeometry.html#v:horizontalLine"},{"display_html":"lineThrough :: forall line point (d :: Nat) r. (Line_ line d r, Point_ point d r, Num r) => point -> point -> line","name":"lineThrough","module":"HGeometry","link":"hgeometry/HGeometry.html#v:lineThrough"},{"display_html":"verticalLine :: forall r line. (Line_ line 2 r, Num r) => r -> line","name":"verticalLine","module":"HGeometry","link":"hgeometry/HGeometry.html#v:verticalLine"},{"display_html":"evalAt' :: Num r => r -> LineEQ r -> r","name":"evalAt'","module":"HGeometry","link":"hgeometry/HGeometry.html#v:evalAt-39-"},{"display_html":"type NVLine2_ line r = (Line_ line 2 r, NonVerticalHyperPlane_ line 2 r)","name":"NVLine2_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:NVLine2_"},{"display_html":"pattern NVLine2_ :: NonVerticalHyperPlane_ line 2 r => r -> r -> line","name":"NVLine2_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:NVLine2_"},{"display_html":"intercept :: NonVerticalHyperPlane_ line 2 r => Lens' line r","name":"intercept","module":"HGeometry","link":"hgeometry/HGeometry.html#v:intercept"},{"display_html":"slope :: NonVerticalHyperPlane_ line 2 r => Lens' line r","name":"slope","module":"HGeometry","link":"hgeometry/HGeometry.html#v:slope"},{"display_html":"anchorPoint :: forall (d :: Nat) r f. Functor f => (Point d r -> f (Point d r)) -> LinePV d r -> f (LinePV d r)","name":"anchorPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#v:anchorPoint"},{"display_html":"bisector :: (Fractional r, Point_ point 2 r) => point -> point -> LinePV 2 r","name":"bisector","module":"HGeometry","link":"hgeometry/HGeometry.html#v:bisector"},{"display_html":"cmpSlope :: (Num r, Ord r) => LinePV 2 r -> LinePV 2 r -> Ordering","name":"cmpSlope","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cmpSlope"},{"display_html":"fromLinearFunction :: Num r => r -> r -> LinePV 2 r","name":"fromLinearFunction","module":"HGeometry","link":"hgeometry/HGeometry.html#v:fromLinearFunction"},{"display_html":"isIdenticalTo :: forall (d :: Nat) r. Eq (Vector d r) => LinePV d r -> LinePV d r -> Bool","name":"isIdenticalTo","module":"HGeometry","link":"hgeometry/HGeometry.html#v:isIdenticalTo"},{"display_html":"isPerpendicularTo :: (Num r, Eq r) => Vector 2 r -> LinePV 2 r -> Bool","name":"isPerpendicularTo","module":"HGeometry","link":"hgeometry/HGeometry.html#v:isPerpendicularTo"},{"display_html":"leftHalfPlane :: (Num r, Ord r) => LinePV 2 r -> HalfSpaceF (LinePV 2 r)","name":"leftHalfPlane","module":"HGeometry","link":"hgeometry/HGeometry.html#v:leftHalfPlane"},{"display_html":"liesAbove :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool","name":"liesAbove","module":"HGeometry","link":"hgeometry/HGeometry.html#v:liesAbove"},{"display_html":"liesBelow :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool","name":"liesBelow","module":"HGeometry","link":"hgeometry/HGeometry.html#v:liesBelow"},{"display_html":"onSide :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> SideTest","name":"onSide","module":"HGeometry","link":"hgeometry/HGeometry.html#v:onSide"},{"display_html":"perpendicularTo :: Num r => LinePV 2 r -> LinePV 2 r","name":"perpendicularTo","module":"HGeometry","link":"hgeometry/HGeometry.html#v:perpendicularTo"},{"display_html":"rightHalfPlane :: (Num r, Ord r) => LinePV 2 r -> HalfSpaceF (LinePV 2 r)","name":"rightHalfPlane","module":"HGeometry","link":"hgeometry/HGeometry.html#v:rightHalfPlane"},{"display_html":"toLinearFunction :: (Fractional r, Ord r) => LinePV 2 r -> Maybe (LineEQ r)","name":"toLinearFunction","module":"HGeometry","link":"hgeometry/HGeometry.html#v:toLinearFunction"},{"display_html":"class (IntervalLike_ lineSegment point, Point_ point (Dimension lineSegment) (NumType lineSegment)) => LineSegment_ lineSegment point | lineSegment -> point","name":"LineSegment_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineSegment_"},{"display_html":"pattern LineSegment_ :: LineSegment_ lineSegment point => point -> point -> lineSegment","name":"LineSegment_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:LineSegment_"},{"display_html":"interpolate :: forall lineSegment (d :: Nat) point r. (Fractional r, LineSegment_ lineSegment point, ConstructablePoint_ point d r) => r -> lineSegment -> point","name":"interpolate","module":"HGeometry","link":"hgeometry/HGeometry.html#v:interpolate"},{"display_html":"ordAtX :: (Num r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> lineSegment -> Ordering","name":"ordAtX","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ordAtX"},{"display_html":"ordAtY :: (Num r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> lineSegment -> Ordering","name":"ordAtY","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ordAtY"},{"display_html":"orientBT :: forall lineSegment point (d :: Nat) r. (LineSegment_ lineSegment point, Point_ point d r, 2 <= d, Ord r) => lineSegment -> lineSegment","name":"orientBT","module":"HGeometry","link":"hgeometry/HGeometry.html#v:orientBT"},{"display_html":"orientLR :: forall lineSegment point (d :: Nat) r. (LineSegment_ lineSegment point, Point_ point d r, 1 <= d, Ord r) => lineSegment -> lineSegment","name":"orientLR","module":"HGeometry","link":"hgeometry/HGeometry.html#v:orientLR"},{"display_html":"xCoordAt :: (Fractional r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> r","name":"xCoordAt","module":"HGeometry","link":"hgeometry/HGeometry.html#v:xCoordAt"},{"display_html":"yCoordAt :: (Fractional r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> r","name":"yCoordAt","module":"HGeometry","link":"hgeometry/HGeometry.html#v:yCoordAt"},{"display_html":"spanIn :: forall point (d :: Nat) r (endPoint :: Type -> Type). (Point_ point d r, Ord r, IxValue (endPoint point) ~ point, EndPoint_ (endPoint point)) => Getter point r -> LineSegment endPoint point -> Interval AnEndPoint r","name":"spanIn","module":"HGeometry","link":"hgeometry/HGeometry.html#v:spanIn"},{"display_html":"asPoint :: forall point (d :: Nat) r. Point_ point d r => Lens' point (Point d r)","name":"asPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#v:asPoint"},{"display_html":"projectPoint :: forall (i :: Nat) point (d :: Nat) r. (Point_ point d r, i <= d, Has_ Vector_ i r) => point -> Point i r","name":"projectPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#v:projectPoint"},{"display_html":"pattern Point1_ :: Point_ point 1 r => r -> point","name":"Point1_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:Point1_"},{"display_html":"pattern Point2_ :: Point_ point 2 r => r -> r -> point","name":"Point2_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:Point2_"},{"display_html":"pattern Point3_ :: Point_ point 3 r => r -> r -> r -> point","name":"Point3_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:Point3_"},{"display_html":"pattern Point4_ :: Point_ point 4 r => r -> r -> r -> r -> point","name":"Point4_","module":"HGeometry","link":"hgeometry/HGeometry.html#v:Point4_"},{"display_html":"coord :: forall (i :: Natural) point (d :: Natural) r. (1 <= i, i <= d, KnownNat i, Point_ point d r) => IndexedLens' Int point r","name":"coord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:coord"},{"display_html":"dCoord :: forall point (d :: Natural) r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"dCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:dCoord"},{"display_html":"pointFromList :: forall point (d :: Nat) r. (ConstructablePoint_ point d r, Vector_ (Vector d r) d r) => [r] -> Maybe point","name":"pointFromList","module":"HGeometry","link":"hgeometry/HGeometry.html#v:pointFromList"},{"display_html":"wCoord :: forall (d :: Natural) point r. (4 <= d, Point_ point d r) => IndexedLens' Int point r","name":"wCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:wCoord"},{"display_html":"xCoord :: forall (d :: Natural) point r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"xCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:xCoord"},{"display_html":"yCoord :: forall (d :: Natural) point r. (2 <= d, Point_ point d r) => IndexedLens' Int point r","name":"yCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:yCoord"},{"display_html":"zCoord :: forall (d :: Natural) point r. (3 <= d, Point_ point d r) => IndexedLens' Int point r","name":"zCoord","module":"HGeometry","link":"hgeometry/HGeometry.html#v:zCoord"},{"display_html":"cmpByDistanceTo :: forall r point (d :: Nat) center. (Ord r, Num r, Point_ point d r, Point_ center d r, Metric_ (Vector d r) d r) => center -> point -> point -> Ordering","name":"cmpByDistanceTo","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cmpByDistanceTo"},{"display_html":"euclideanDist :: forall r point (d :: Nat). (Radical r, Point_ point d r, Metric_ (Vector d r) d r) => point -> point -> r","name":"euclideanDist","module":"HGeometry","link":"hgeometry/HGeometry.html#v:euclideanDist"},{"display_html":"squaredEuclideanDist :: forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r","name":"squaredEuclideanDist","module":"HGeometry","link":"hgeometry/HGeometry.html#v:squaredEuclideanDist"},{"display_html":"cmpInDirection :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cmpInDirection"},{"display_html":"ccw :: (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW","name":"ccw","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ccw"},{"display_html":"ccwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"ccwCmpAround","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ccwCmpAround"},{"display_html":"ccwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"ccwCmpAroundWith","module":"HGeometry","link":"hgeometry/HGeometry.html#v:ccwCmpAroundWith"},{"display_html":"cwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"cwCmpAround","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cwCmpAround"},{"display_html":"cwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"cwCmpAroundWith","module":"HGeometry","link":"hgeometry/HGeometry.html#v:cwCmpAroundWith"},{"display_html":"insertIntoCyclicOrder :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> CList point -> CList point","name":"insertIntoCyclicOrder","module":"HGeometry","link":"hgeometry/HGeometry.html#v:insertIntoCyclicOrder"},{"display_html":"isCoLinear :: (Point_ point 2 r, Num r, Eq r) => point -> point -> point -> Bool","name":"isCoLinear","module":"HGeometry","link":"hgeometry/HGeometry.html#v:isCoLinear"},{"display_html":"sortAround :: (Point_ center 2 r, Point_ point 2 r, Num r, Ord r) => center -> [point] -> [point]","name":"sortAround","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sortAround"},{"display_html":"partitionIntoQuadrants :: (Ord r, Point_ point 2 r) => point -> [point] -> ([point], [point], [point], [point])","name":"partitionIntoQuadrants","module":"HGeometry","link":"hgeometry/HGeometry.html#v:partitionIntoQuadrants"},{"display_html":"quadrant :: (Ord r, Num r, ConstructablePoint_ point 2 r) => point -> Quadrant","name":"quadrant","module":"HGeometry","link":"hgeometry/HGeometry.html#v:quadrant"},{"display_html":"quadrantWith :: (Ord r, Point_ point 2 r) => point -> point -> Quadrant","name":"quadrantWith","module":"HGeometry","link":"hgeometry/HGeometry.html#v:quadrantWith"},{"display_html":"isScalarMultipleOf :: forall r vector (d :: Nat). (Eq r, Num r, Metric_ vector d r) => vector -> vector -> Bool","name":"isScalarMultipleOf","module":"HGeometry","link":"hgeometry/HGeometry.html#v:isScalarMultipleOf"},{"display_html":"sameDirection :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r, Eq r) => vector -> vector -> Bool","name":"sameDirection","module":"HGeometry","link":"hgeometry/HGeometry.html#v:sameDirection"},{"display_html":"scalarMultiple :: forall r vector (d :: Nat). (Eq r, Fractional r, Additive_ vector d r) => vector -> vector -> Maybe r","name":"scalarMultiple","module":"HGeometry","link":"hgeometry/HGeometry.html#v:scalarMultiple"},{"display_html":"foldMapZip :: forall vector (d :: Nat) r m. (Additive_ vector d r, Semigroup m) => (r -> r -> m) -> vector -> vector -> m","name":"foldMapZip","module":"HGeometry","link":"hgeometry/HGeometry.html#v:foldMapZip"},{"display_html":"suffix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"suffix","module":"HGeometry","link":"hgeometry/HGeometry.html#v:suffix"},{"display_html":"vectorFromList :: forall vector (d :: Nat) r. Vector_ vector d r => [r] -> Maybe vector","name":"vectorFromList","module":"HGeometry","link":"hgeometry/HGeometry.html#v:vectorFromList"},{"display_html":"wComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 4 <= d) => IndexedLens' Int vector r","name":"wComponent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:wComponent"},{"display_html":"xComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"xComponent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:xComponent"},{"display_html":"yComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 2 <= d) => IndexedLens' Int vector r","name":"yComponent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:yComponent"},{"display_html":"zComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 3 <= d) => IndexedLens' Int vector r","name":"zComponent","module":"HGeometry","link":"hgeometry/HGeometry.html#v:zComponent"},{"display_html":"data HalfLineBoxIntersection point","name":"HalfLineBoxIntersection HalfLine_x_Box_LineSegment HalfLine_x_Box_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HalfLineBoxIntersection"},{"display_html":"data LineBoxIntersection (d :: Nat) r","name":"LineBoxIntersection Line_x_Box_LineSegment Line_x_Box_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineBoxIntersection"},{"display_html":"class IsBoxable g where","name":"IsBoxable boundingBox","module":"HGeometry","link":"hgeometry/HGeometry.html#t:IsBoxable"},{"display_html":"class HasMaxPoint box point | box -> point where","name":"HasMaxPoint maxPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasMaxPoint"},{"display_html":"class HasMinPoint box point | box -> point where","name":"HasMinPoint minPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasMinPoint"},{"display_html":"type Rectangle_ rectangle point = (Box_ rectangle point, Dimension rectangle ~ 2)","name":"Rectangle_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Rectangle_"},{"display_html":"data Corners a = Corners !a !a !a !a","name":"Corners Corners","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Corners"},{"display_html":"type Rectangle = Box","name":"Rectangle","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Rectangle"},{"display_html":"data Sides a = Sides !a !a !a !a","name":"Sides Sides","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Sides"},{"display_html":"type family EndPointOf interval","name":"EndPointOf","module":"HGeometry","link":"hgeometry/HGeometry.html#t:EndPointOf"},{"display_html":"class HasEnd seg p | seg -> p where","name":"HasEnd end","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasEnd"},{"display_html":"class HasEndPoint seg p | seg -> p where","name":"HasEndPoint endPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasEndPoint"},{"display_html":"class HasStart seg p | seg -> p where","name":"HasStart start","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasStart"},{"display_html":"class HasStartPoint seg p | seg -> p where","name":"HasStartPoint startPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasStartPoint"},{"display_html":"type family StartPointOf interval","name":"StartPointOf","module":"HGeometry","link":"hgeometry/HGeometry.html#t:StartPointOf"},{"display_html":"data AnEndPoint r where","name":"AnEndPoint AnEndPoint AnClosedE AnOpenE","module":"HGeometry","link":"hgeometry/HGeometry.html#t:AnEndPoint"},{"display_html":"newtype EndPoint (et :: EndPointType) r where","name":"EndPoint EndPoint ClosedE OpenE","module":"HGeometry","link":"hgeometry/HGeometry.html#t:EndPoint"},{"display_html":"class IsEndPoint endPoint endPoint => EndPoint_ endPoint where","name":"EndPoint_ endPointType mkEndPoint","module":"HGeometry","link":"hgeometry/HGeometry.html#t:EndPoint_"},{"display_html":"class HasOnLine line (d :: Nat) | line -> d where","name":"HasOnLine onLine","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasOnLine"},{"display_html":"type Line2_ line r = (Line_ line 2 r, HyperPlane_ line 2 r)","name":"Line2_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Line2_"},{"display_html":"class Line_ line (d :: Nat) r | line -> d, line -> r where","name":"Line_ fromPointAndVec","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Line_"},{"display_html":"type LineLineIntersection line = LineLineIntersectionG (NumType line) line","name":"LineLineIntersection","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineLineIntersection"},{"display_html":"data LineLineIntersectionG r line","name":"LineLineIntersectionG Line_x_Line_Line Line_x_Line_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineLineIntersectionG"},{"display_html":"newtype LineEQ r where","name":"LineEQ LineEQ MkLineEQ","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineEQ"},{"display_html":"class HasSupportingLine t where","name":"HasSupportingLine supportingLine","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasSupportingLine"},{"display_html":"class OnSideUpDownTest t where","name":"OnSideUpDownTest onSideUpDown","module":"HGeometry","link":"hgeometry/HGeometry.html#t:OnSideUpDownTest"},{"display_html":"data SideTest","name":"SideTest LeftSide OnLine RightSide","module":"HGeometry","link":"hgeometry/HGeometry.html#t:SideTest"},{"display_html":"class (LineSegment_ lineSegment point, StartPointOf lineSegment ~ EndPoint 'Closed point, EndPointOf lineSegment ~ EndPoint 'Closed point) => ClosedLineSegment_ lineSegment point","name":"ClosedLineSegment_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:ClosedLineSegment_"},{"display_html":"class LineSegment_ lineSegment point => ConstructableLineSegment_ lineSegment point where","name":"ConstructableLineSegment_ mkLineSegment uncheckedLineSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:ConstructableLineSegment_"},{"display_html":"class HasOnSegment lineSegment (d :: Nat) | lineSegment -> d where","name":"HasOnSegment onSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasOnSegment"},{"display_html":"class (LineSegment_ lineSegment point, StartPointOf lineSegment ~ EndPoint 'Open point, EndPointOf lineSegment ~ EndPoint 'Open point) => OpenLineSegment_ lineSegment point","name":"OpenLineSegment_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:OpenLineSegment_"},{"display_html":"type ClosedLineSegment point = LineSegment (EndPoint 'Closed) point","name":"ClosedLineSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:ClosedLineSegment"},{"display_html":"type OpenLineSegment point = LineSegment (EndPoint 'Open) point","name":"OpenLineSegment","module":"HGeometry","link":"hgeometry/HGeometry.html#t:OpenLineSegment"},{"display_html":"data HalfLineLineSegmentIntersection point segment","name":"HalfLineLineSegmentIntersection HalfLine_x_LineSegment_LineSegment HalfLine_x_LineSegment_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HalfLineLineSegmentIntersection"},{"display_html":"data LineLineSegmentIntersection lineSegment","name":"LineLineSegmentIntersection Line_x_LineSegment_LineSegment Line_x_LineSegment_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineLineSegmentIntersection"},{"display_html":"data LineSegmentLineSegmentIntersection lineSegment","name":"LineSegmentLineSegmentIntersection LineSegment_x_LineSegment_LineSegment LineSegment_x_LineSegment_Point","module":"HGeometry","link":"hgeometry/HGeometry.html#t:LineSegmentLineSegmentIntersection"},{"display_html":"class (Has_ Vector_ (Dimension point) (NumType point), Has_ Vector_ (Dimension point') (NumType point'), HasComponents (Vector (Dimension point') (NumType point)) (Vector (Dimension point') (NumType point')), Dimension point ~ Dimension point', HasVector point point') => HasCoordinates point point' where","name":"HasCoordinates coordinates","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasCoordinates"},{"display_html":"class HasPoints s t point point' | s -> point, t -> point' where","name":"HasPoints allPoints","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasPoints"},{"display_html":"type HasPoints' s point = HasPoints s s point point","name":"HasPoints'","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasPoints-39-"},{"display_html":"class (Affine_ point d r, HasVector point point) => Point_ point (d :: Nat) r where","name":"Point_ coord'","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Point_"},{"display_html":"class Metric_ (Vector (Dimension g) (NumType g)) (Dimension g) (NumType g) => HasSquaredEuclideanDistance g where","name":"HasSquaredEuclideanDistance pointClosestTo pointClosestToWithDistance squaredEuclideanDistTo","module":"HGeometry","link":"hgeometry/HGeometry.html#t:HasSquaredEuclideanDistance"},{"display_html":"data CCW where","name":"CCW CCW CW CoLinear","module":"HGeometry","link":"hgeometry/HGeometry.html#t:CCW"},{"display_html":"data Quadrant","name":"Quadrant BottomLeft BottomRight TopLeft TopRight","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Quadrant"},{"display_html":"class (r ~ IxValue vector, s ~ IxValue vector', d ~ Dimension vector, d ~ Dimension vector') => AsVector_ vector vector' (d :: Nat) r s | vector -> d, vector -> r, vector' -> s where","name":"AsVector_ _Vector","module":"HGeometry","link":"hgeometry/HGeometry.html#t:AsVector_"},{"display_html":"type Has_ (c :: Type -> Nat -> Type -> k) (d :: Nat) r = c (Vector d r) d r","name":"Has_","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Has_"},{"display_html":"class (HasComponents vector vector, AsVector_ vector vector d r r, KnownNat d) => Vector_ vector (d :: Nat) r where","name":"Vector_ component' generateA","module":"HGeometry","link":"hgeometry/HGeometry.html#t:Vector_"},{"display_html":"newtype BezierSplineF (f :: Type -> Type) point where","name":"BezierSplineF Bezier2 Bezier3 BezierSpline","module":"HGeometry.BezierSpline","link":"hgeometry/HGeometry-BezierSpline.html#t:BezierSplineF"},{"display_html":"type BezierSpline = BezierSplineF NonEmptyVector","name":"BezierSpline","module":"HGeometry.BezierSpline","link":"hgeometry/HGeometry-BezierSpline.html#t:BezierSpline"},{"display_html":"type QuadraticBezier = BezierSplineF (Vector 3)","name":"QuadraticBezier","module":"HGeometry.BezierSpline","link":"hgeometry/HGeometry-BezierSpline.html#t:QuadraticBezier"},{"display_html":"type CubicBezier = BezierSplineF (Vector 4)","name":"CubicBezier","module":"HGeometry.BezierSpline","link":"hgeometry/HGeometry-BezierSpline.html#t:CubicBezier"},{"display_html":"closestPair :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> Vector 2 point","name":"closestPair","module":"HGeometry.ClosestPair.DivideAndConquer","link":"hgeometry/HGeometry-ClosestPair-DivideAndConquer.html#v:closestPair"},{"display_html":"type CP point = Top (SP (Two point) (NumType point))","name":"CP","module":"HGeometry.ClosestPair.DivideAndConquer","link":"hgeometry/HGeometry-ClosestPair-DivideAndConquer.html#t:CP"},{"display_html":"data CCP point = CCP (NonEmpty point) !(CP point)","name":"CCP CCP","module":"HGeometry.ClosestPair.DivideAndConquer","link":"hgeometry/HGeometry-ClosestPair-DivideAndConquer.html#t:CCP"},{"display_html":"mergePairs :: forall point r. (Ord r, Num r, Point_ point 2 r) => CP point -> NonEmpty point -> NonEmpty point -> CP point","name":"mergePairs","module":"HGeometry.ClosestPair.DivideAndConquer","link":"hgeometry/HGeometry-ClosestPair-DivideAndConquer.html#v:mergePairs"},{"display_html":"closestPair :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> Vector 2 point","name":"closestPair","module":"HGeometry.ClosestPair","link":"hgeometry/HGeometry-ClosestPair.html#v:closestPair"},{"display_html":"closestPair :: forall r point (d :: Nat) f. (Ord r, Num r, Point_ point d r, Foldable1 f, Has_ Metric_ d r) => f point -> Vector 2 point","name":"closestPair","module":"HGeometry.ClosestPair.Naive","link":"hgeometry/HGeometry-ClosestPair-Naive.html#v:closestPair"},{"display_html":"closestPairWith :: forall r point (d :: Nat) f. (Ord r, Point_ point d r, Foldable1 f) => DistanceFunction point -> f point -> SP (Vector 2 point) r","name":"closestPairWith","module":"HGeometry.ClosestPair.Naive","link":"hgeometry/HGeometry-ClosestPair-Naive.html#v:closestPairWith"},{"display_html":"type DistanceFunction g = g -> g -> NumType g","name":"DistanceFunction","module":"HGeometry.ClosestPair.Naive","link":"hgeometry/HGeometry-ClosestPair-Naive.html#t:DistanceFunction"},{"display_html":"data Camera r = Camera !(Point 3 r) !(Vector 3 r) !(Vector 3 r) !r !r !r !(Vector 2 r)","name":"Camera Camera","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#t:Camera"},{"display_html":"cameraPosition :: forall r f. Functor f => (Point 3 r -> f (Point 3 r)) -> Camera r -> f (Camera r)","name":"cameraPosition","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:cameraPosition"},{"display_html":"rawCameraNormal :: forall r f. Functor f => (Vector 3 r -> f (Vector 3 r)) -> Camera r -> f (Camera r)","name":"rawCameraNormal","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:rawCameraNormal"},{"display_html":"rawViewUp :: forall r f. Functor f => (Vector 3 r -> f (Vector 3 r)) -> Camera r -> f (Camera r)","name":"rawViewUp","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:rawViewUp"},{"display_html":"viewPlaneDepth :: forall r f. Functor f => (r -> f r) -> Camera r -> f (Camera r)","name":"viewPlaneDepth","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:viewPlaneDepth"},{"display_html":"nearDist :: forall r f. Functor f => (r -> f r) -> Camera r -> f (Camera r)","name":"nearDist","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:nearDist"},{"display_html":"farDist :: forall r f. Functor f => (r -> f r) -> Camera r -> f (Camera r)","name":"farDist","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:farDist"},{"display_html":"screenDimensions :: forall r f. Functor f => (Vector 2 r -> f (Vector 2 r)) -> Camera r -> f (Camera r)","name":"screenDimensions","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:screenDimensions"},{"display_html":"cameraNormal :: (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r)","name":"cameraNormal","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:cameraNormal"},{"display_html":"viewUp :: (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r)","name":"viewUp","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:viewUp"},{"display_html":"cameraTransform :: Fractional r => Camera r -> Transformation 3 r","name":"cameraTransform","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:cameraTransform"},{"display_html":"worldToView :: Fractional r => Camera r -> Transformation 3 r","name":"worldToView","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:worldToView"},{"display_html":"toViewPort :: Fractional r => Camera r -> Transformation 3 r","name":"toViewPort","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:toViewPort"},{"display_html":"perspectiveProjection :: Fractional r => Camera r -> Transformation 3 r","name":"perspectiveProjection","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:perspectiveProjection"},{"display_html":"rotateCoordSystem :: Num r => Camera r -> Transformation 3 r","name":"rotateCoordSystem","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:rotateCoordSystem"},{"display_html":"flipAxes :: Num r => Transformation 3 r","name":"flipAxes","module":"HGeometry.Graphics.Camera","link":"hgeometry/HGeometry-Graphics-Camera.html#v:flipAxes"},{"display_html":"data IntervalTree interval r","name":"IntervalTree","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#t:IntervalTree"},{"display_html":"createTree :: (Foldable f, Ord r) => f r -> IntervalTree interval r","name":"createTree","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:createTree"},{"display_html":"fromIntervals :: (Foldable f, Ord r, ClosedInterval_ interval r) => f interval -> IntervalTree interval r","name":"fromIntervals","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:fromIntervals"},{"display_html":"insert :: (Ord r, ClosedInterval_ interval r) => interval -> IntervalTree interval r -> IntervalTree interval r","name":"insert","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:insert"},{"display_html":"delete :: (Ord r, ClosedInterval_ interval r, Eq interval) => interval -> IntervalTree interval r -> IntervalTree interval r","name":"delete","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:delete"},{"display_html":"stab :: Ord r => r -> IntervalTree interval r -> [interval]","name":"stab","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:stab"},{"display_html":"search :: Ord r => r -> IntervalTree interval r -> [interval]","name":"search","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:search"},{"display_html":"listIntervals :: IntervalTree interval r -> [interval]","name":"listIntervals","module":"HGeometry.IntervalTree","link":"hgeometry/HGeometry-IntervalTree.html#v:listIntervals"},{"display_html":"intersections :: (Ord r, Fractional r, LineSegment_ lineSegment point, Eq lineSegment, Point_ point 2 r, IntersectConstraints lineSegment, Foldable f) => f lineSegment -> Intersections r lineSegment","name":"intersections","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:intersections"},{"display_html":"type Intersections r lineSegment = Map (Point 2 r) (Associated lineSegment)","name":"Intersections","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:Intersections"},{"display_html":"data Associated lineSegment","name":"Associated","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:Associated"},{"display_html":"startPointOf :: forall lineSegment f. Functor f => (Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"startPointOf","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:startPointOf"},{"display_html":"endPointOf :: forall lineSegment f. Functor f => (Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"endPointOf","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:endPointOf"},{"display_html":"interiorTo :: forall lineSegment f. Functor f => (Set (AroundIntersection lineSegment) -> f (Set (AroundIntersection lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"interiorTo","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:interiorTo"},{"display_html":"associatedSegments :: forall lineSegment f. (Contravariant f, Applicative f) => (lineSegment -> f lineSegment) -> Associated lineSegment -> f (Associated lineSegment)","name":"associatedSegments","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:associatedSegments"},{"display_html":"data AroundEnd a","name":"AroundEnd","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:AroundEnd"},{"display_html":"data AroundStart a","name":"AroundStart","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:AroundStart"},{"display_html":"data AroundIntersection a","name":"AroundIntersection","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:AroundIntersection"},{"display_html":"isInteriorIntersection :: Associated lineSegment -> Bool","name":"isInteriorIntersection","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:isInteriorIntersection"},{"display_html":"data IntersectionPoint point lineSegment","name":"IntersectionPoint","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:IntersectionPoint"},{"display_html":"intersectionPointOf :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, IntersectConstraints lineSegment) => lineSegment -> lineSegment -> Maybe (IntersectionPoint (Point 2 r) lineSegment)","name":"intersectionPointOf","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:intersectionPointOf"},{"display_html":"intersectionPoint :: forall point lineSegment point' f. Functor f => (point -> f point') -> IntersectionPoint point lineSegment -> f (IntersectionPoint point' lineSegment)","name":"intersectionPoint","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:intersectionPoint"},{"display_html":"associatedSegs :: forall point lineSegment lineSegment' f. Functor f => (Associated lineSegment -> f (Associated lineSegment')) -> IntersectionPoint point lineSegment -> f (IntersectionPoint point lineSegment')","name":"associatedSegs","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#v:associatedSegs"},{"display_html":"type IntersectConstraints lineSegment = (OrdArounds lineSegment, IsIntersectableWith lineSegment lineSegment, Intersection lineSegment lineSegment ~ Maybe (LineSegmentLineSegmentIntersection lineSegment))","name":"IntersectConstraints","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:IntersectConstraints"},{"display_html":"type OrdArounds lineSegment = (Ord (AroundStart lineSegment), Ord (AroundIntersection lineSegment), Ord (AroundEnd lineSegment))","name":"OrdArounds","module":"HGeometry.LineSegment.Intersection.Naive","link":"hgeometry/HGeometry-LineSegment-Intersection-Naive.html#t:OrdArounds"},{"display_html":"intersections :: (LineSegment_ lineSegment point, Point_ point 2 r, Eq lineSegment, Ord r, Fractional r, HasOnSegment lineSegment 2, IntersectConstraints lineSegment, Foldable f, Functor f, StartPointOf lineSegment ~ EndPointOf lineSegment) => f lineSegment -> Intersections r lineSegment","name":"intersections","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:intersections"},{"display_html":"interiorIntersections :: (LineSegment_ lineSegment point, Point_ point 2 r, Eq lineSegment, Ord r, Fractional r, IntersectConstraints lineSegment, StartPointOf lineSegment ~ EndPointOf lineSegment, HasOnSegment lineSegment 2, Foldable f, Functor f) => f lineSegment -> Intersections r lineSegment","name":"interiorIntersections","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:interiorIntersections"},{"display_html":"type Intersections r lineSegment = Map (Point 2 r) (Associated lineSegment)","name":"Intersections","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:Intersections"},{"display_html":"intersectionPoints :: Intersections r lineSegment -> Set (Point 2 r)","name":"intersectionPoints","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:intersectionPoints"},{"display_html":"data Associated lineSegment","name":"Associated","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:Associated"},{"display_html":"startPointOf :: forall lineSegment f. Functor f => (Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"startPointOf","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:startPointOf"},{"display_html":"endPointOf :: forall lineSegment f. Functor f => (Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"endPointOf","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:endPointOf"},{"display_html":"interiorTo :: forall lineSegment f. Functor f => (Set (AroundIntersection lineSegment) -> f (Set (AroundIntersection lineSegment))) -> Associated lineSegment -> f (Associated lineSegment)","name":"interiorTo","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:interiorTo"},{"display_html":"associatedSegments :: forall lineSegment f. (Contravariant f, Applicative f) => (lineSegment -> f lineSegment) -> Associated lineSegment -> f (Associated lineSegment)","name":"associatedSegments","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:associatedSegments"},{"display_html":"data AroundEnd a","name":"AroundEnd","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:AroundEnd"},{"display_html":"data AroundStart a","name":"AroundStart","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:AroundStart"},{"display_html":"data AroundIntersection a","name":"AroundIntersection","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:AroundIntersection"},{"display_html":"isInteriorIntersection :: Associated lineSegment -> Bool","name":"isInteriorIntersection","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:isInteriorIntersection"},{"display_html":"data IntersectionPoint point lineSegment","name":"IntersectionPoint","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:IntersectionPoint"},{"display_html":"intersectionPointOf :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, IntersectConstraints lineSegment) => lineSegment -> lineSegment -> Maybe (IntersectionPoint (Point 2 r) lineSegment)","name":"intersectionPointOf","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:intersectionPointOf"},{"display_html":"intersectionPoint :: forall point lineSegment point' f. Functor f => (point -> f point') -> IntersectionPoint point lineSegment -> f (IntersectionPoint point' lineSegment)","name":"intersectionPoint","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:intersectionPoint"},{"display_html":"associatedSegs :: forall point lineSegment lineSegment' f. Functor f => (Associated lineSegment -> f (Associated lineSegment')) -> IntersectionPoint point lineSegment -> f (IntersectionPoint point lineSegment')","name":"associatedSegs","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#v:associatedSegs"},{"display_html":"type IntersectConstraints lineSegment = (OrdArounds lineSegment, IsIntersectableWith lineSegment lineSegment, Intersection lineSegment lineSegment ~ Maybe (LineSegmentLineSegmentIntersection lineSegment))","name":"IntersectConstraints","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:IntersectConstraints"},{"display_html":"type OrdArounds lineSegment = (Ord (AroundStart lineSegment), Ord (AroundIntersection lineSegment), Ord (AroundEnd lineSegment))","name":"OrdArounds","module":"HGeometry.LineSegment.Intersection.BentleyOttmann","link":"hgeometry/HGeometry-LineSegment-Intersection-BentleyOttmann.html#t:OrdArounds"},{"display_html":"class (HasVertices polyLine polyLine, HasPoints' polyLine point, HasStart polyLine point, HasEnd polyLine point, Vertex polyLine ~ point, Point_ point (Dimension point) (NumType point), NumType polyLine ~ NumType point, Dimension polyLine ~ Dimension point) => PolyLine_ polyLine point | polyLine -> point","name":"PolyLine_","module":"HGeometry.PolyLine.Class","link":"hgeometry/HGeometry-PolyLine-Class.html#t:PolyLine_"},{"display_html":"class PolyLine_ polyLine point => ConstructablePolyLine_ polyLine point where","name":"ConstructablePolyLine_ polyLineFromPoints","module":"HGeometry.PolyLine.Class","link":"hgeometry/HGeometry-PolyLine-Class.html#t:ConstructablePolyLine_"},{"display_html":"_PolyLineLineSegment :: (ConstructableLineSegment_ lineSegment point, ConstructablePolyLine_ polyLine point) => Prism' polyLine lineSegment","name":"_PolyLineLineSegment","module":"HGeometry.PolyLine.Class","link":"hgeometry/HGeometry-PolyLine-Class.html#v:_PolyLineLineSegment"},{"display_html":"newtype PolyLineF (f :: k -> Type) (point :: k) = PolyLine (f point)","name":"PolyLineF PolyLine","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#t:PolyLineF"},{"display_html":"type PolyLine = PolyLineF NonEmptyVector","name":"PolyLine","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#t:PolyLine"},{"display_html":"_PolyLineF :: forall {k1} {k2} f1 (point :: k1) f' (point' :: k2) p f2. (Profunctor p, Functor f2) => p (f1 point) (f2 (f' point')) -> p (PolyLineF f1 point) (f2 (PolyLineF f' point'))","name":"_PolyLineF","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#v:_PolyLineF"},{"display_html":"module HGeometry.PolyLine.Class","name":"","module":"HGeometry.PolyLine","link":"hgeometry"},{"display_html":"class HasVertices' graph => HasVertices graph graph' where","name":"HasVertices vertices","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#t:HasVertices"},{"display_html":"class HasEdges' graph => HasEdges graph graph' where","name":"HasEdges edges","module":"HGeometry.PolyLine","link":"hgeometry/HGeometry-PolyLine.html#t:HasEdges"},{"display_html":"frechetDistanceWith :: (HasVertices' polyLine, HasVertices' polyLine', Ord r, VertexIx polyLine ~ Int, VertexIx polyLine' ~ Int) => (Vertex polyLine -> Vertex polyLine' -> r) -> polyLine -> polyLine' -> r","name":"frechetDistanceWith","module":"HGeometry.PolyLine.Frechet.Discrete","link":"hgeometry/HGeometry-PolyLine-Frechet-Discrete.html#v:frechetDistanceWith"},{"display_html":"douglasPeucker :: forall polyLine point (d :: Nat) r. (PolyLine_ polyLine point, Point_ point d r, Ord r, Fractional r, HasSquaredEuclideanDistance point) => r -> polyLine -> PolyLineF ViewR1 point","name":"douglasPeucker","module":"HGeometry.PolyLine.Simplification.DouglasPeucker","link":"hgeometry/HGeometry-PolyLine-Simplification-DouglasPeucker.html#v:douglasPeucker"},{"display_html":"simplify :: forall polyLine point (d :: Nat) r. (PolyLine_ polyLine point, Point_ point d r, Ord r, Fractional r, HasSquaredEuclideanDistance point) => r -> polyLine -> PolyLine point","name":"simplify","module":"HGeometry.PolyLine.Simplification.ImaiIri","link":"hgeometry/HGeometry-PolyLine-Simplification-ImaiIri.html#v:simplify"},{"display_html":"simplifyWith :: forall polyLine point (d :: Nat) r. (PolyLine_ polyLine point, Point_ point d r, Ord r, Fractional r) => (ClosedLineSegment point -> PolyLine point -> Bool) -> polyLine -> PolyLine point","name":"simplifyWith","module":"HGeometry.PolyLine.Simplification.ImaiIri","link":"hgeometry/HGeometry-PolyLine-Simplification-ImaiIri.html#v:simplifyWith"},{"display_html":"class HasVertices polygon polygon => HasOuterBoundary polygon where","name":"HasOuterBoundary outerBoundaryVertexAt ccwOuterBoundaryFrom cwOuterBoundaryFrom outerBoundary outerBoundaryEdgeAt outerBoundaryEdges $dmouterBoundary $dmouterBoundaryEdgeAt $dmouterBoundaryEdges","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasOuterBoundary"},{"display_html":"signedArea2X :: (Num r, HasOuterBoundary simplePolygon, Point_ point 2 r, Vertex simplePolygon ~ point) => simplePolygon -> r","name":"signedArea2X","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:signedArea2X"},{"display_html":"minimumVertexBy :: HasOuterBoundary polygon => (Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon)","name":"minimumVertexBy","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:minimumVertexBy"},{"display_html":"maximumVertexBy :: HasOuterBoundary polygon => (Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon)","name":"maximumVertexBy","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:maximumVertexBy"},{"display_html":"outerBoundaryEdgeSegmentAt :: (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r) => VertexIx polygon -> IndexedGetter (VertexIx polygon, VertexIx polygon) polygon (ClosedLineSegment point)","name":"outerBoundaryEdgeSegmentAt","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:outerBoundaryEdgeSegmentAt"},{"display_html":"outerBoundaryEdgeSegments :: (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r) => IndexedFold1 (VertexIx polygon, VertexIx polygon) polygon (ClosedLineSegment point)","name":"outerBoundaryEdgeSegments","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:outerBoundaryEdgeSegments"},{"display_html":"outerBoundaryWithNeighbours :: (HasOuterBoundary polygon, VertexIx polygon ~ Int) => IndexedFold1 (VertexIx polygon, (VertexIx polygon, VertexIx polygon)) polygon (Vertex polygon, (Vertex polygon, Vertex polygon))","name":"outerBoundaryWithNeighbours","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#v:outerBoundaryWithNeighbours"},{"display_html":"type Hole polygon = SimplePolygonF (HoleF polygon) (Vertex polygon)","name":"Hole","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:Hole"},{"display_html":"class VertexContainer (HoleF polygon) (Vertex polygon) => HasHoles polygon where","name":"HasHoles holes HoleF HoleIx holeAt $dmholes $dmholeAt","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasHoles"},{"display_html":"class (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r, NumType polygon ~ r, Dimension polygon ~ 2, HasHoles polygon) => Polygon_ polygon point r where","name":"Polygon_ ccwPredecessorOf ccwSuccessorOf extremes $dmextremes","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:Polygon_"},{"display_html":"class HasVertices' graph => HasVertices graph graph' where","name":"HasVertices vertices","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasVertices"},{"display_html":"class HasVertices' graph where","name":"HasVertices' Vertex VertexIx vertexAt numVertices $dmnumVertices","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasVertices-39-"},{"display_html":"class HasEdges' graph => HasEdges graph graph' where","name":"HasEdges edges","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasEdges"},{"display_html":"class HasEdges' graph where","name":"HasEdges' Edge EdgeIx edgeAt numEdges $dmnumEdges","module":"HGeometry.Polygon.Class","link":"hgeometry/HGeometry-Polygon-Class.html#t:HasEdges-39-"},{"display_html":"class (Polygon_ simplePolygon point r, VertexIx simplePolygon ~ Int, Point_ point 2 r) => SimplePolygon_ simplePolygon point r where","name":"SimplePolygon_ uncheckedFromCCWPoints fromPoints ConstructableSimplePolygon centroid $dmcentroid","module":"HGeometry.Polygon.Simple.Class","link":"hgeometry/HGeometry-Polygon-Simple-Class.html#t:SimplePolygon_"},{"display_html":"class SimplePolygon_ convexPolygon point r => ConvexPolygon_ convexPolygon point r","name":"ConvexPolygon_","module":"HGeometry.Polygon.Convex.Class","link":"hgeometry/HGeometry-Polygon-Convex-Class.html#t:ConvexPolygon_"},{"display_html":"class (Polygon_ simplePolygon point r, VertexIx simplePolygon ~ Int, Point_ point 2 r) => SimplePolygon_ simplePolygon point r where","name":"SimplePolygon_ uncheckedFromCCWPoints fromPoints ConstructableSimplePolygon centroid $dmcentroid","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:SimplePolygon_"},{"display_html":"type SimplePolygon = SimplePolygonF (Cyclic NonEmptyVector)","name":"SimplePolygon","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:SimplePolygon"},{"display_html":"newtype SimplePolygonF (f :: k -> Type) (point :: k) = MkSimplePolygon (f point)","name":"SimplePolygonF MkSimplePolygon","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:SimplePolygonF"},{"display_html":"toCyclic :: forall {k} (v :: k -> Type) (point :: k). SimplePolygonF (Cyclic v) point -> Cyclic v point","name":"toCyclic","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#v:toCyclic"},{"display_html":"type VertexContainer (f :: Type -> Type) point = (IxValue (f point) ~ point, Index (f point) ~ Int, TraversableWithIndex Int f, Traversable1 f, Ixed (f point), HasDirectedTraversals f)","name":"VertexContainer","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:VertexContainer"},{"display_html":"class HasInPolygon polygon point r | polygon -> point, point -> r where","name":"HasInPolygon inPolygon $dminPolygon","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#t:HasInPolygon"},{"display_html":"inSimplePolygon :: forall queryPoint simplePolygon point r. (Num r, Ord r, Point_ point 2 r, Point_ queryPoint 2 r, SimplePolygon_ simplePolygon point r) => queryPoint -> simplePolygon -> PointLocationResultWith (VertexIx simplePolygon)","name":"inSimplePolygon","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#v:inSimplePolygon"},{"display_html":"hasNoSelfIntersections :: (Foldable1 f, Functor f, Point_ point 2 r, Ord r, Real r) => f point -> Bool","name":"hasNoSelfIntersections","module":"HGeometry.Polygon.Simple","link":"hgeometry/HGeometry-Polygon-Simple.html#v:hasNoSelfIntersections"},{"display_html":"module HGeometry.Polygon.Simple.Class","name":"","module":"HGeometry.Polygon.Simple","link":"hgeometry"},{"display_html":"class (PlanarGraph_ planeGraph, vertex ~ Vertex planeGraph, Point_ vertex 2 (NumType vertex), NumType vertex ~ NumType planeGraph, HasEdges planeGraph planeGraph) => PlaneGraph_ planeGraph vertex | planeGraph -> vertex where","name":"PlaneGraph_ fromEmbedding interiorFaces outerFace outerFaceDart outerFaceId $dminteriorFaces $dmouterFace $dmouterFaceDart $dmouterFaceId","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#t:PlaneGraph_"},{"display_html":"dartSegmentAt :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => DartIx planeGraph -> IndexedFold (DartIx planeGraph) planeGraph (ClosedLineSegment vertex)","name":"dartSegmentAt","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:dartSegmentAt"},{"display_html":"edgeSegmentAt :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => EdgeIx planeGraph -> IndexedFold (EdgeIx planeGraph) planeGraph (ClosedLineSegment vertex)","name":"edgeSegmentAt","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:edgeSegmentAt"},{"display_html":"dartSegments :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => IndexedFold (DartIx planeGraph) planeGraph (ClosedLineSegment vertex)","name":"dartSegments","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:dartSegments"},{"display_html":"edgeSegments :: (HasEdges planeGraph planeGraph, BidirGraph_ planeGraph, vertex ~ Vertex planeGraph, Point_ vertex 2 (NumType vertex)) => IndexedFold (EdgeIx planeGraph) planeGraph (ClosedLineSegment vertex)","name":"edgeSegments","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:edgeSegments"},{"display_html":"interiorFacePolygonAt :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => FaceIx planeGraph -> IndexedFold (FaceIx planeGraph) planeGraph (SimplePolygon (vertex :+ VertexIx planeGraph))","name":"interiorFacePolygonAt","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:interiorFacePolygonAt"},{"display_html":"interiorFacePolygons :: (PlaneGraph_ planeGraph vertex, Point_ vertex 2 r, Ord r, Num r, Eq (FaceIx planeGraph)) => IndexedFold (FaceIx planeGraph) planeGraph (SimplePolygon (vertex :+ VertexIx planeGraph))","name":"interiorFacePolygons","module":"HGeometry.PlaneGraph.Class","link":"hgeometry/HGeometry-PlaneGraph-Class.html#v:interiorFacePolygons"},{"display_html":"module Hiraffe.Graph.Class","name":"","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry"},{"display_html":"module HGeometry.PlaneGraph.Class","name":"","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry"},{"display_html":"module Hiraffe.PlanarGraph.Class","name":"","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry"},{"display_html":"newtype CPlaneGraph (s :: k) v e f = CPlaneGraph (CPlanarGraph 'Primal s v e f)","name":"CPlaneGraph CPlaneGraph","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry/HGeometry-PlaneGraph-Connected.html#t:CPlaneGraph"},{"display_html":"fromAdjacencyRep :: forall {k} vertex r i (f :: Type -> Type) proxy (s :: k) e. (Point_ vertex 2 r, Ord i, Foldable1 f) => proxy s -> GGraph f i vertex e -> CPlaneGraph s vertex e ()","name":"fromAdjacencyRep","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry/HGeometry-PlaneGraph-Connected.html#v:fromAdjacencyRep"},{"display_html":"fromConnectedSegments :: forall {k} f r lineSegment point (s :: k). (Foldable1 f, Ord r, Num r, LineSegment_ lineSegment point, Point_ point 2 r) => f lineSegment -> CPlaneGraph s (NonEmpty point) lineSegment ()","name":"fromConnectedSegments","module":"HGeometry.PlaneGraph.Connected","link":"hgeometry/HGeometry-PlaneGraph-Connected.html#v:fromConnectedSegments"},{"display_html":"module Hiraffe.Graph.Class","name":"","module":"HGeometry.PlaneGraph","link":"hgeometry"},{"display_html":"module HGeometry.PlaneGraph.Class","name":"","module":"HGeometry.PlaneGraph","link":"hgeometry"},{"display_html":"module Hiraffe.PlanarGraph.Class","name":"","module":"HGeometry.PlaneGraph","link":"hgeometry"},{"display_html":"newtype CPlaneGraph (s :: k) v e f = CPlaneGraph (CPlanarGraph 'Primal s v e f)","name":"CPlaneGraph CPlaneGraph","module":"HGeometry.PlaneGraph","link":"hgeometry/HGeometry-PlaneGraph.html#t:CPlaneGraph"},{"display_html":"fromAdjacencyRep :: forall {k} vertex r i (f :: Type -> Type) proxy (s :: k) e. (Point_ vertex 2 r, Ord i, Foldable1 f) => proxy s -> GGraph f i vertex e -> CPlaneGraph s vertex e ()","name":"fromAdjacencyRep","module":"HGeometry.PlaneGraph","link":"hgeometry/HGeometry-PlaneGraph.html#v:fromAdjacencyRep"},{"display_html":"fromConnectedSegments :: forall {k} f r lineSegment point (s :: k). (Foldable1 f, Ord r, Num r, LineSegment_ lineSegment point, Point_ point 2 r) => f lineSegment -> CPlaneGraph s (NonEmpty point) lineSegment ()","name":"fromConnectedSegments","module":"HGeometry.PlaneGraph","link":"hgeometry/HGeometry-PlaneGraph.html#v:fromConnectedSegments"},{"display_html":"type MonotonePolygon point = MonotonePolygonF (SimplePolygon point)","name":"MonotonePolygon","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#t:MonotonePolygon"},{"display_html":"data MonotonePolygonF simplePolygon","name":"MonotonePolygonF","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#t:MonotonePolygonF"},{"display_html":"monotoneDirection :: MonotonePolygonF simplePolygon -> Vector 2 (NumType simplePolygon)","name":"monotoneDirection","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:monotoneDirection"},{"display_html":"toSimplePolygon :: MonotonePolygonF simplePolygon -> simplePolygon","name":"toSimplePolygon","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:toSimplePolygon"},{"display_html":"asMonotonePolygon :: (SimplePolygon_ simplePolygon point r, Num r, Ord r) => Vector 2 r -> simplePolygon -> Maybe (MonotonePolygonF simplePolygon)","name":"asMonotonePolygon","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:asMonotonePolygon"},{"display_html":"uncheckedMontonePolygon :: SimplePolygon_ simplePolygon point r => Vector 2 r -> simplePolygon -> MonotonePolygonF simplePolygon","name":"uncheckedMontonePolygon","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:uncheckedMontonePolygon"},{"display_html":"randomMonotone :: (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) => Int -> m (MonotonePolygon (Point 2 r))","name":"randomMonotone","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:randomMonotone"},{"display_html":"randomMonotoneDirected :: (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) => Int -> Vector 2 r -> m (MonotonePolygon (Point 2 r))","name":"randomMonotoneDirected","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:randomMonotoneDirected"},{"display_html":"isMonotone :: (SimplePolygon_ simplePolygon point r, Num r, Ord r) => Vector 2 r -> simplePolygon -> Bool","name":"isMonotone","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:isMonotone"},{"display_html":"randomNonZeroVector :: (MonadState g m, RandomGen g, Uniform r, Eq r, Num r) => m (Vector 2 r)","name":"randomNonZeroVector","module":"HGeometry.Polygon.Monotone","link":"hgeometry/HGeometry-Polygon-Monotone.html#v:randomNonZeroVector"},{"display_html":"leftTangent :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r) => convexPolygon -> point -> point","name":"leftTangent","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:leftTangent"},{"display_html":"rightTangent :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r) => convexPolygon -> point -> point","name":"rightTangent","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:rightTangent"},{"display_html":"lowerTangent :: (Num r, Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) => convexPolygon -> convexPolygon -> ClosedLineSegment point","name":"lowerTangent","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:lowerTangent"},{"display_html":"lowerTangent' :: forall point r f. (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point])","name":"lowerTangent'","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:lowerTangent-39-"},{"display_html":"upperTangent :: forall convexPolygon point r. (Num r, Ord r, ConvexPolygon_ convexPolygon point r) => convexPolygon -> convexPolygon -> ClosedLineSegment point","name":"upperTangent","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:upperTangent"},{"display_html":"upperTangent' :: (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point])","name":"upperTangent'","module":"HGeometry.Polygon.Convex.Tangents","link":"hgeometry/HGeometry-Polygon-Convex-Tangents.html#v:upperTangent-39-"},{"display_html":"randomConvex :: (MonadState g m, RandomGen g) => Int -> Int -> m (ConvexPolygon (Point 2 Rational))","name":"randomConvex","module":"HGeometry.Polygon.Convex.Random","link":"hgeometry/HGeometry-Polygon-Convex-Random.html#v:randomConvex"},{"display_html":"class SimplePolygon_ convexPolygon point r => ConvexPolygon_ convexPolygon point r","name":"ConvexPolygon_","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#t:ConvexPolygon_"},{"display_html":"type ConvexPolygon = ConvexPolygonF (Cyclic NonEmptyVector)","name":"ConvexPolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#t:ConvexPolygon"},{"display_html":"data ConvexPolygonF (f :: k -> Type) (point :: k)","name":"ConvexPolygonF","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#t:ConvexPolygonF"},{"display_html":"fromSimplePolygon :: forall r point (f :: Type -> Type). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Maybe (ConvexPolygonF f point)","name":"fromSimplePolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:fromSimplePolygon"},{"display_html":"toSimplePolygon :: ConvexPolygonF f point -> SimplePolygonF f point","name":"toSimplePolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:toSimplePolygon"},{"display_html":"_ConvexPolygon :: forall (f :: Type -> Type) point r. (Num r, Ord r, Point_ point 2 r, VertexContainer f point) => Prism' (SimplePolygonF f point) (ConvexPolygonF f point)","name":"_ConvexPolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:_ConvexPolygon"},{"display_html":"isStrictlyConvex :: forall r point (f :: Type -> Type). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Bool","name":"isStrictlyConvex","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:isStrictlyConvex"},{"display_html":"isConvex :: forall r point (f :: Type -> Type). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Bool","name":"isConvex","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:isConvex"},{"display_html":"verifyConvex :: forall r point (f :: Type -> Type). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => ConvexPolygonF f point -> Bool","name":"verifyConvex","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:verifyConvex"},{"display_html":"minkowskiSum :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r, ConvexPolygon_ convexPolygon' point' r) => convexPolygon -> convexPolygon' -> ConvexPolygon (point :+ point')","name":"minkowskiSum","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:minkowskiSum"},{"display_html":"maxInDirection :: (Num r, Ord r, ConvexPolygon_ convexPolygon point r) => Vector 2 r -> convexPolygon -> point","name":"maxInDirection","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:maxInDirection"},{"display_html":"_UncheckedConvexPolygon :: forall {k1} {k2} (f1 :: k1 -> Type) (point :: k1) (f' :: k2 -> Type) (point' :: k2) p f2. (Profunctor p, Functor f2) => p (SimplePolygonF f1 point) (f2 (SimplePolygonF f' point')) -> p (ConvexPolygonF f1 point) (f2 (ConvexPolygonF f' point'))","name":"_UncheckedConvexPolygon","module":"HGeometry.Polygon.Convex","link":"hgeometry/HGeometry-Polygon-Convex.html#v:_UncheckedConvexPolygon"},{"display_html":"type PlaneGraph' k v e = GGraph (NEMap e) k v e","name":"PlaneGraph'","module":"HGeometry.Plane.LowerEnvelope.Connected.Graph","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected-Graph.html#t:PlaneGraph-39-"},{"display_html":"newtype E r = E (Vector 2 r)","name":"E E","module":"HGeometry.Plane.LowerEnvelope.Connected.Graph","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected-Graph.html#t:E"},{"display_html":"toTriangulatedPlaneGraph' :: (Plane_ plane r, Num r, Ord r) => MinimizationDiagram r plane -> PlaneGraph' (Point 2 r) (First r) (E r)","name":"toTriangulatedPlaneGraph'","module":"HGeometry.Plane.LowerEnvelope.Connected.Graph","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected-Graph.html#v:toTriangulatedPlaneGraph-39-"},{"display_html":"toPlaneGraph' :: (Plane_ plane r, Num r, Ord r) => MinimizationDiagram r plane -> PlaneGraph' (Point 2 r) (First r) (E r)","name":"toPlaneGraph'","module":"HGeometry.Plane.LowerEnvelope.Connected.Graph","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected-Graph.html#v:toPlaneGraph-39-"},{"display_html":"newtype MinimizationDiagram r plane = MinimizationDiagram (NEMap plane (Region r (Point 2 r)))","name":"MinimizationDiagram MinimizationDiagram","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#t:MinimizationDiagram"},{"display_html":"asMap :: MinimizationDiagram r plane -> NEMap plane (Region r (Point 2 r))","name":"asMap","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:asMap"},{"display_html":"data Region r point","name":"Region Bounded Unbounded","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#t:Region"},{"display_html":"toConvexPolygonIn :: (Rectangle_ rectangle corner, Point_ corner 2 r, Point_ point 2 r, Ord r, Fractional r) => rectangle -> Region r point -> Either (ConvexPolygonF NonEmpty point) (ConvexPolygonF NonEmpty (OriginalOrExtra point (Point 2 r)))","name":"toConvexPolygonIn","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:toConvexPolygonIn"},{"display_html":"intersectionPoint :: (Plane_ plane r, Ord r, Fractional r) => Three plane -> Maybe (Point 3 r)","name":"intersectionPoint","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:intersectionPoint"},{"display_html":"intersectionLine :: (Plane_ plane r, Fractional r, Eq r) => plane -> plane -> Maybe (VerticalOrLineEQ r)","name":"intersectionLine","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:intersectionLine"},{"display_html":"intersectionVector :: (Plane_ plane r, Ord r, Fractional r) => plane -> plane -> Maybe (Vector 2 r)","name":"intersectionVector","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:intersectionVector"},{"display_html":"type VertexForm r plane = Map (Point 3 r) (Definers plane)","name":"VertexForm","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#t:VertexForm"},{"display_html":"data Definers plane","name":"Definers","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#t:Definers"},{"display_html":"fromCCWList :: NonEmpty plane -> Definers plane","name":"fromCCWList","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:fromCCWList"},{"display_html":"definers :: (Plane_ plane r, Ord r, Fractional r) => Three plane -> Maybe (Point 3 r, Definers plane)","name":"definers","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:definers"},{"display_html":"fromVertexForm :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Show r, Show plane) => VertexForm r plane -> MinimizationDiagram r plane","name":"fromVertexForm","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:fromVertexForm"},{"display_html":"mergeDefiners :: (Plane_ plane r, Eq plane, Ord r, Fractional r, Show plane, Show r) => Point 3 r -> Definers plane -> Definers plane -> Definers plane","name":"mergeDefiners","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:mergeDefiners"},{"display_html":"bruteForceLowerEnvelope :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Foldable set, Show r, Show plane) => set plane -> MinimizationDiagram r plane","name":"bruteForceLowerEnvelope","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:bruteForceLowerEnvelope"},{"display_html":"computeVertexForm :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Foldable set, Show plane, Show r) => set plane -> VertexForm r plane","name":"computeVertexForm","module":"HGeometry.Plane.LowerEnvelope.Connected","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Connected.html#v:computeVertexForm"},{"display_html":"convexHull :: (Ord r, Fractional r, Show r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.QuickHull","link":"hgeometry/HGeometry-ConvexHull-QuickHull.html#v:convexHull"},{"display_html":"convexHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:convexHull"},{"display_html":"upperHull :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHull","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:upperHull"},{"display_html":"upperHull' :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHull'","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:upperHull-39-"},{"display_html":"lowerHull :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"lowerHull","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:lowerHull"},{"display_html":"lowerHull' :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"lowerHull'","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:lowerHull-39-"},{"display_html":"steepestCcwFrom :: (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point","name":"steepestCcwFrom","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:steepestCcwFrom"},{"display_html":"steepestCwFrom :: (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point","name":"steepestCwFrom","module":"HGeometry.ConvexHull.JarvisMarch","link":"hgeometry/HGeometry-ConvexHull-JarvisMarch.html#v:steepestCwFrom"},{"display_html":"convexHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:convexHull"},{"display_html":"upperHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHull","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:upperHull"},{"display_html":"upperHull' :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> NonEmpty point","name":"upperHull'","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:upperHull-39-"},{"display_html":"lowerHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"lowerHull","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:lowerHull"},{"display_html":"lowerHull' :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> NonEmpty point","name":"lowerHull'","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:lowerHull-39-"},{"display_html":"upperHullFromSorted :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHullFromSorted","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:upperHullFromSorted"},{"display_html":"upperHullFromSorted' :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHullFromSorted'","module":"HGeometry.ConvexHull.GrahamScan","link":"hgeometry/HGeometry-ConvexHull-GrahamScan.html#v:upperHullFromSorted-39-"},{"display_html":"newtype LowerEnvelopeF (f :: Type -> Type) vertex line = LowerEnvelope (Alternating f vertex line)","name":"LowerEnvelopeF LowerEnvelope","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#t:LowerEnvelopeF"},{"display_html":"type LowerEnvelope = LowerEnvelopeF Vector","name":"LowerEnvelope","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#t:LowerEnvelope"},{"display_html":"_Alternating :: forall (f1 :: Type -> Type) vertex line (f' :: Type -> Type) vertex' line' p f2. (Profunctor p, Functor f2) => p (Alternating f1 vertex line) (f2 (Alternating f' vertex' line')) -> p (LowerEnvelopeF f1 vertex line) (f2 (LowerEnvelopeF f' vertex' line'))","name":"_Alternating","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#v:_Alternating"},{"display_html":"lowerEnvelope :: forall (g :: Type -> Type) f line r. (NonVerticalHyperPlane_ line 2 r, Fractional r, Ord r, Foldable1 f, Functor f, IsIntersectableWith line line, Intersection line line ~ Maybe (LineLineIntersection line), HasFromFoldable g) => f line -> LowerEnvelopeF g (Point 2 r) line","name":"lowerEnvelope","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#v:lowerEnvelope"},{"display_html":"lineAt :: forall r vertex (d :: Nat) (f :: Type -> Type) line. (Ord r, Point_ vertex d r, 1 <= d, BinarySearch (f (vertex, line)), Elem (f (vertex, line)) ~ (vertex, line)) => r -> LowerEnvelopeF f vertex line -> line","name":"lineAt","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#v:lineAt"},{"display_html":"lookupLEVertex :: forall r vertex (d :: Nat) (f :: Type -> Type) line. (Ord r, Point_ vertex d r, 1 <= d, BinarySearch (f (vertex, line)), Elem (f (vertex, line)) ~ (vertex, line)) => r -> LowerEnvelopeF f vertex line -> Maybe (vertex, line)","name":"lookupLEVertex","module":"HGeometry.Line.LowerEnvelope","link":"hgeometry/HGeometry-Line-LowerEnvelope.html#v:lookupLEVertex"},{"display_html":"lowerEnvelope :: (Plane_ plane r, Ord r, Fractional r, Foldable1 f, Functor f, Ord plane, Show plane, Show r) => f plane -> LowerEnvelope plane","name":"lowerEnvelope","module":"HGeometry.Plane.LowerEnvelope.Naive","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Naive.html#v:lowerEnvelope"},{"display_html":"lowerEnvelopeWith :: forall nonEmpty plane r. (Plane_ plane r, Ord r, Fractional r, Foldable1 nonEmpty) => (NonEmpty plane -> MinimizationDiagram r plane) -> nonEmpty plane -> LowerEnvelope plane","name":"lowerEnvelopeWith","module":"HGeometry.Plane.LowerEnvelope.Naive","link":"hgeometry/HGeometry-Plane-LowerEnvelope-Naive.html#v:lowerEnvelopeWith"},{"display_html":"module HGeometry.Plane.LowerEnvelope.Naive","name":"","module":"HGeometry.Plane.LowerEnvelope","link":"hgeometry"},{"display_html":"data LowerEnvelope plane","name":"LowerEnvelope ConnectedEnvelope ParallelStrips","module":"HGeometry.Plane.LowerEnvelope","link":"hgeometry/HGeometry-Plane-LowerEnvelope.html#t:LowerEnvelope"},{"display_html":"pointLocateParallel :: (Plane_ plane r, Point_ point 2 r, Ord r, Num r) => point -> Alternating Vector (VerticalOrLineEQ r) plane -> plane","name":"pointLocateParallel","module":"HGeometry.Plane.LowerEnvelope","link":"hgeometry/HGeometry-Plane-LowerEnvelope.html#v:pointLocateParallel"},{"display_html":"module HGeometry.Plane.LowerEnvelope.Connected","name":"","module":"HGeometry.Plane.LowerEnvelope","link":"hgeometry"},{"display_html":"type UpperHull point = LowerEnvelope (NonVerticalHyperPlane 3 (NumType point) :+ point)","name":"UpperHull","module":"HGeometry.ConvexHull.R3.Naive.Dual","link":"hgeometry/HGeometry-ConvexHull-R3-Naive-Dual.html#t:UpperHull"},{"display_html":"upperHull :: (Point_ point 3 r, Ord r, Fractional r, Foldable1 f, Functor f, Show point, Show r, Ord point) => f point -> UpperHull point","name":"upperHull","module":"HGeometry.ConvexHull.R3.Naive.Dual","link":"hgeometry/HGeometry-ConvexHull-R3-Naive-Dual.html#v:upperHull"},{"display_html":"type Facet point = NonEmpty point","name":"Facet","module":"HGeometry.ConvexHull.R3.Naive.Dual","link":"hgeometry/HGeometry-ConvexHull-R3-Naive-Dual.html#t:Facet"},{"display_html":"facets :: Ord (NumType point) => UpperHull point -> [Facet point]","name":"facets","module":"HGeometry.ConvexHull.R3.Naive.Dual","link":"hgeometry/HGeometry-ConvexHull-R3-Naive-Dual.html#v:facets"},{"display_html":"data CommonIntersection halfPlane r","name":"CommonIntersection BoundedRegion EmptyIntersection InSubLine SingletonPoint Slab UnboundedRegion","module":"HGeometry.HalfPlane.CommonIntersection","link":"hgeometry/HGeometry-HalfPlane-CommonIntersection.html#t:CommonIntersection"},{"display_html":"data SubLine halfPlane r","name":"SubLine EntireLine InHalfLine InSegment","module":"HGeometry.HalfPlane.CommonIntersection","link":"hgeometry/HGeometry-HalfPlane-CommonIntersection.html#t:SubLine"},{"display_html":"newtype Chain (f :: Type -> Type) halfPlane r = Chain (Alternating f (Point 2 r) halfPlane)","name":"Chain Chain","module":"HGeometry.HalfPlane.CommonIntersection","link":"hgeometry/HGeometry-HalfPlane-CommonIntersection.html#t:Chain"},{"display_html":"commonIntersection :: (Foldable1 f, Functor f, HalfPlane_ halfPlane r, Fractional r, Ord r, Show halfPlane, Show r) => f halfPlane -> CommonIntersection halfPlane r","name":"commonIntersection","module":"HGeometry.HalfPlane.CommonIntersection","link":"hgeometry/HGeometry-HalfPlane-CommonIntersection.html#v:commonIntersection"},{"display_html":"convexHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull","link":"hgeometry/HGeometry-ConvexHull.html#v:convexHull"},{"display_html":"convexHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.DivideAndConquer","link":"hgeometry/HGeometry-ConvexHull-DivideAndConquer.html#v:convexHull"},{"display_html":"upperHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"upperHull","module":"HGeometry.ConvexHull.DivideAndConquer","link":"hgeometry/HGeometry-ConvexHull-DivideAndConquer.html#v:upperHull"},{"display_html":"lowerHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point","name":"lowerHull","module":"HGeometry.ConvexHull.DivideAndConquer","link":"hgeometry/HGeometry-ConvexHull-DivideAndConquer.html#v:lowerHull"},{"display_html":"module HGeometry.Polygon.Class","name":"","module":"HGeometry.Polygon","link":"hgeometry"},{"display_html":"asTriangle :: Polygon_ polygon point r => polygon -> Maybe (Triangle point)","name":"asTriangle","module":"HGeometry.Polygon","link":"hgeometry/HGeometry-Polygon.html#v:asTriangle"},{"display_html":"area2X :: (Polygon_ polygon point r, Num r, Point_ point 2 r, SimplePolygon_ (Hole polygon) point r) => polygon -> r","name":"area2X","module":"HGeometry.Polygon","link":"hgeometry/HGeometry-Polygon.html#v:area2X"},{"display_html":"area :: (Polygon_ polygon point r, SimplePolygon_ (Hole polygon) point r, Fractional r) => polygon -> r","name":"area","module":"HGeometry.Polygon","link":"hgeometry/HGeometry-Polygon.html#v:area"},{"display_html":"convexHull :: (Polygon_ polygon point r, Ord r, Num r) => polygon -> ConvexPolygon point","name":"convexHull","module":"HGeometry.ConvexHull.Melkman","link":"hgeometry/HGeometry-ConvexHull-Melkman.html#v:convexHull"},{"display_html":"type YMonotonePolygon_ = SimplePolygon_","name":"YMonotonePolygon_","module":"HGeometry.Polygon.Triangulation.TriangulateMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-TriangulateMonotone.html#t:YMonotonePolygon_"},{"display_html":"triangulate :: forall {k} (s :: k) yMonotonePolygon point r. (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r) => yMonotonePolygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData","name":"triangulate","module":"HGeometry.Polygon.Triangulation.TriangulateMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-TriangulateMonotone.html#v:triangulate"},{"display_html":"computeDiagonals :: (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r) => yMonotonePolygon -> [Diagonal yMonotonePolygon]","name":"computeDiagonals","module":"HGeometry.Polygon.Triangulation.TriangulateMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-TriangulateMonotone.html#v:computeDiagonals"},{"display_html":"makeMonotone :: forall {k} (s :: k) polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData","name":"makeMonotone","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#v:makeMonotone"},{"display_html":"computeDiagonals :: (Polygon_ polygon point r, Point_ point 2 r, Ord r, Num r, Ord (VertexIx polygon)) => polygon -> [Diagonal polygon]","name":"computeDiagonals","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#v:computeDiagonals"},{"display_html":"classifyVertices :: (Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) => polygon -> [(VertexIx polygon, VertexType)]","name":"classifyVertices","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#v:classifyVertices"},{"display_html":"data VertexType","name":"VertexType Start Split End Merge Regular","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#t:VertexType"},{"display_html":"cmpX :: (Point_ point 2 r, LineSegment_ lineSegment point', Point_ point' 2 r, Ord r, Num r) => point -> lineSegment -> Ordering","name":"cmpX","module":"HGeometry.Polygon.Triangulation.MakeMonotone","link":"hgeometry/HGeometry-Polygon-Triangulation-MakeMonotone.html#v:cmpX"},{"display_html":"triangulate :: forall {k} (s :: k) polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData","name":"triangulate","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#v:triangulate"},{"display_html":"computeDiagonals :: (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> [Diagonal polygon]","name":"computeDiagonals","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#v:computeDiagonals"},{"display_html":"data PolygonEdgeType","name":"PolygonEdgeType Diagonal Original","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#t:PolygonEdgeType"},{"display_html":"data PolygonFaceData","name":"PolygonFaceData Outside Inside","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#t:PolygonFaceData"},{"display_html":"type Diagonal polygon = Vector 2 (VertexIx polygon)","name":"Diagonal","module":"HGeometry.Polygon.Triangulation","link":"hgeometry/HGeometry-Polygon-Triangulation.html#t:Diagonal"},{"display_html":"samplePolygon :: (SimplePolygon_ polygon point r, Ord r, Real r, UniformRange r, StatefulGen g m) => polygon -> g -> m (Point 2 Double)","name":"samplePolygon","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#v:samplePolygon"},{"display_html":"samplePolygons :: (SimplePolygon_ polygon point r, StatefulGen g m, Foldable1 nonEmpty, Real r, Ord r, UniformRange r) => nonEmpty polygon -> g -> m (Point 2 Double)","name":"samplePolygons","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#v:samplePolygons"},{"display_html":"data Sampler w v","name":"Sampler","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#t:Sampler"},{"display_html":"samplePoint :: (Point_ point 2 r, StatefulGen g m, Real r, Ord r, UniformRange r) => Sampler r (Triangle point) -> g -> m (Point 2 Double)","name":"samplePoint","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#v:samplePoint"},{"display_html":"triangleSampler :: (SimplePolygon_ polygon point r, Num r, Ord r, Foldable1 nonEmpty) => nonEmpty polygon -> Sampler r (Triangle point)","name":"triangleSampler","module":"HGeometry.Polygon.Simple.Sample","link":"hgeometry/HGeometry-Polygon-Simple-Sample.html#v:triangleSampler"},{"display_html":"visibilityGraph :: (SimplePolygon_ simplePolygon point r, HasIntersectionWith point simplePolygon, Ord r, Num r) => simplePolygon -> [Vector 2 (VertexIx simplePolygon)]","name":"visibilityGraph","module":"HGeometry.Polygon.Visibility.Naive","link":"hgeometry/HGeometry-Polygon-Visibility-Naive.html#v:visibilityGraph"},{"display_html":"visibilityGraphWith :: (SimplePolygon_ simplePolygon point r, HasIntersectionWith point simplePolygon, Ord r, Num r) => simplePolygon -> [Vector 2 (point :+ VertexIx simplePolygon)] -> [Vector 2 (VertexIx simplePolygon)]","name":"visibilityGraphWith","module":"HGeometry.Polygon.Visibility.Naive","link":"hgeometry/HGeometry-Polygon-Visibility-Naive.html#v:visibilityGraphWith"},{"display_html":"data PolygonalDomainF (h :: Type -> Type) (f :: Type -> Type) point = PolygonalDomain (SimplePolygonF f point) (h (SimplePolygonF f point))","name":"PolygonalDomainF PolygonalDomain","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#t:PolygonalDomainF"},{"display_html":"type PolygonalDomain point = PolygonalDomainF Vector (Cyclic NonEmptyVector) point","name":"PolygonalDomain","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#t:PolygonalDomain"},{"display_html":"asSimplePolygon :: forall (h :: Type -> Type) (f :: Type -> Type) point. (HasFromFoldable h, HoleContainer h f point) => Prism' (PolygonalDomainF h f point) (SimplePolygonF f point)","name":"asSimplePolygon","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#v:asSimplePolygon"},{"display_html":"outerBoundaryPolygon :: forall (h :: Type -> Type) (f1 :: Type -> Type) point f2. Functor f2 => (SimplePolygonF f1 point -> f2 (SimplePolygonF f1 point)) -> PolygonalDomainF h f1 point -> f2 (PolygonalDomainF h f1 point)","name":"outerBoundaryPolygon","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#v:outerBoundaryPolygon"},{"display_html":"theHoles :: forall h (f1 :: Type -> Type) point h' f2. Functor f2 => (h (SimplePolygonF f1 point) -> f2 (h' (SimplePolygonF f1 point))) -> PolygonalDomainF h f1 point -> f2 (PolygonalDomainF h' f1 point)","name":"theHoles","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#v:theHoles"},{"display_html":"type HoleContainer (h :: Type -> Type) (f :: Type -> Type) point = (TraversableWithIndex Int h, Index (h (SimplePolygonF f point)) ~ Int, IxValue (h (SimplePolygonF f point)) ~ SimplePolygonF f point, Ixed (h (SimplePolygonF f point)), VertexContainer f point)","name":"HoleContainer","module":"HGeometry.Polygon.WithHoles","link":"hgeometry/HGeometry-Polygon-WithHoles.html#t:HoleContainer"},{"display_html":"class HasCanonicalSubSet s t (a :: k) (f :: k -> Type) (g :: k -> Type) | s -> f, t -> g where","name":"HasCanonicalSubSet canonicalSubSet","module":"HGeometry.SegmentTree.CanonicalSubSet","link":"hgeometry/HGeometry-SegmentTree-CanonicalSubSet.html#t:HasCanonicalSubSet"},{"display_html":"data SegmentTree (f :: Type -> Type) interval","name":"SegmentTree","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#t:SegmentTree"},{"display_html":"buildSegmentTree :: forall (f :: Type -> Type) interval r g. (ClosedInterval_ interval r, Ord r, Monoid (f interval), CanInsert f interval, Foldable1 g) => g interval -> SegmentTree f interval","name":"buildSegmentTree","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:buildSegmentTree"},{"display_html":"buildSkeleton :: forall (f :: Type -> Type) interval r g. (ClosedInterval_ interval r, Ord r, Monoid (f interval), Foldable1 g) => g r -> SegmentTree f interval","name":"buildSkeleton","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:buildSkeleton"},{"display_html":"stab :: (Ord r, ClosedInterval_ interval r) => r -> SegmentTree f interval -> [f interval]","name":"stab","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:stab"},{"display_html":"query :: (Ord r, ClosedInterval_ interval r, Monoid (f interval)) => r -> SegmentTree f interval -> f interval","name":"query","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:query"},{"display_html":"insert :: forall interval r (f :: Type -> Type). (ClosedInterval_ interval r, Ord r, CanInsert f interval) => interval -> SegmentTree f interval -> SegmentTree f interval","name":"insert","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:insert"},{"display_html":"ascEndPoints :: forall (f :: Type -> Type) interval. SegmentTree f interval -> [NumType interval]","name":"ascEndPoints","module":"HGeometry.SegmentTree.Base","link":"hgeometry/HGeometry-SegmentTree-Base.html#v:ascEndPoints"},{"display_html":"data SegmentTree (f :: Type -> Type) interval","name":"SegmentTree","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#t:SegmentTree"},{"display_html":"buildSegmentTree :: forall (f :: Type -> Type) interval r g. (ClosedInterval_ interval r, Ord r, Monoid (f interval), CanInsert f interval, Foldable1 g) => g interval -> SegmentTree f interval","name":"buildSegmentTree","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:buildSegmentTree"},{"display_html":"buildSkeleton :: forall (f :: Type -> Type) interval r g. (ClosedInterval_ interval r, Ord r, Monoid (f interval), Foldable1 g) => g r -> SegmentTree f interval","name":"buildSkeleton","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:buildSkeleton"},{"display_html":"stab :: (Ord r, ClosedInterval_ interval r) => r -> SegmentTree f interval -> [f interval]","name":"stab","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:stab"},{"display_html":"query :: (Ord r, ClosedInterval_ interval r, Monoid (f interval)) => r -> SegmentTree f interval -> f interval","name":"query","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:query"},{"display_html":"insert :: forall interval r (f :: Type -> Type). (ClosedInterval_ interval r, Ord r, CanInsert f interval) => interval -> SegmentTree f interval -> SegmentTree f interval","name":"insert","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:insert"},{"display_html":"ascEndPoints :: forall (f :: Type -> Type) interval. SegmentTree f interval -> [NumType interval]","name":"ascEndPoints","module":"HGeometry.SegmentTree","link":"hgeometry/HGeometry-SegmentTree.html#v:ascEndPoints"},{"display_html":"data RangeTree (f :: Type -> Type) point","name":"RangeTree","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#t:RangeTree"},{"display_html":"buildRangeTree :: forall g point (d :: Nat) r (f :: Type -> Type). (Foldable1 g, Point_ point d r, Ord r, 1 <= d, Semigroup (f point), Measured f point) => g point -> RangeTree f point","name":"buildRangeTree","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:buildRangeTree"},{"display_html":"fromAscList :: forall g point (d :: Nat) r (f :: Type -> Type). (Foldable1 g, Functor g, Point_ point d r, 1 <= d, Semigroup (f point), Measured f point) => g point -> RangeTree f point","name":"fromAscList","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:fromAscList"},{"display_html":"fromGroupedAscList :: forall g h point (d :: Nat) r (f :: Type -> Type). (Foldable1 g, Foldable1 h, Point_ point d r, 1 <= d, Semigroup (f point), Measured f point) => g (h point) -> RangeTree f point","name":"fromGroupedAscList","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:fromGroupedAscList"},{"display_html":"rangeQuery :: forall interval r point (d :: Nat) f. (Interval_ interval r, Point_ point d r, 1 <= d, Ord r) => interval -> RangeTree f point -> [f point]","name":"rangeQuery","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:rangeQuery"},{"display_html":"query :: forall interval r point (d :: Nat) f. (Interval_ interval r, Point_ point d r, 1 <= d, Ord r, Monoid (f point)) => interval -> RangeTree f point -> f point","name":"query","module":"HGeometry.RangeTree.Base","link":"hgeometry/HGeometry-RangeTree-Base.html#v:query"},{"display_html":"module HGeometry.RangeTree.Base","name":"","module":"HGeometry.RangeTree","link":"hgeometry"},{"display_html":"type VerticalRayShootingStructure lineSegment = VerticalRayShootingStructure' (NumType lineSegment) lineSegment","name":"VerticalRayShootingStructure","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#t:VerticalRayShootingStructure"},{"display_html":"type StatusStructure lineSegment = Set lineSegment","name":"StatusStructure","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#t:StatusStructure"},{"display_html":"verticalRayShootingStructure :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, Foldable1 f) => f lineSegment -> VerticalRayShootingStructure lineSegment","name":"verticalRayShootingStructure","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:verticalRayShootingStructure"},{"display_html":"segmentAbove :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe lineSegment","name":"segmentAbove","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:segmentAbove"},{"display_html":"segmentAboveOrOn :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe lineSegment","name":"segmentAboveOrOn","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:segmentAboveOrOn"},{"display_html":"findSlab :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe (StatusStructure lineSegment)","name":"findSlab","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:findSlab"},{"display_html":"lookupAbove :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment","name":"lookupAbove","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:lookupAbove"},{"display_html":"lookupAboveOrOn :: (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment","name":"lookupAboveOrOn","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:lookupAboveOrOn"},{"display_html":"searchInSlab :: (LineSegment_ lineSegment point, Point_ point 2 r, HasSupportingLine lineSegment, Num r) => (LinePV 2 r -> Bool) -> StatusStructure lineSegment -> Maybe lineSegment","name":"searchInSlab","module":"HGeometry.VerticalRayShooting.PersistentSweep","link":"hgeometry/HGeometry-VerticalRayShooting-PersistentSweep.html#v:searchInSlab"},{"display_html":"module HGeometry.VerticalRayShooting.PersistentSweep","name":"","module":"HGeometry.VerticalRayShooting","link":"hgeometry"},{"display_html":"data VoronoiDiagram point","name":"VoronoiDiagram AllColinear ConnectedVD","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#t:VoronoiDiagram"},{"display_html":"newtype VoronoiDiagram' point = VoronoiDiagram (MinimizationDiagram (NumType point) point)","name":"VoronoiDiagram' VoronoiDiagram","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#t:VoronoiDiagram-39-"},{"display_html":"asMap :: (Point_ point 2 r, Ord point) => VoronoiDiagram' point -> NEMap point (Region r (Point 2 r))","name":"asMap","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#v:asMap"},{"display_html":"voronoiDiagram :: (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r) => f point -> VoronoiDiagram point","name":"voronoiDiagram","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#v:voronoiDiagram"},{"display_html":"voronoiVertices :: (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r, Ord point) => f point -> Set (Point 2 r)","name":"voronoiVertices","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#v:voronoiVertices"},{"display_html":"pointToPlane :: (Point_ point 2 r, Num r) => point -> Plane r","name":"pointToPlane","module":"HGeometry.VoronoiDiagram.ViaLowerEnvelope","link":"hgeometry/HGeometry-VoronoiDiagram-ViaLowerEnvelope.html#v:pointToPlane"},{"display_html":"data VoronoiDiagram point","name":"VoronoiDiagram AllColinear ConnectedVD","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#t:VoronoiDiagram"},{"display_html":"newtype VoronoiDiagram' point = VoronoiDiagram (MinimizationDiagram (NumType point) point)","name":"VoronoiDiagram' VoronoiDiagram","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#t:VoronoiDiagram-39-"},{"display_html":"voronoiDiagram :: (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r) => f point -> VoronoiDiagram point","name":"voronoiDiagram","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#v:voronoiDiagram"},{"display_html":"voronoiVertices :: (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r, Ord point) => f point -> Set (Point 2 r)","name":"voronoiVertices","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#v:voronoiVertices"},{"display_html":"asMap :: (Point_ point 2 r, Ord point) => VoronoiDiagram' point -> NEMap point (Region r (Point 2 r))","name":"asMap","module":"HGeometry.VoronoiDiagram","link":"hgeometry/HGeometry-VoronoiDiagram.html#v:asMap"},{"display_html":"type GeoPositionWithoutCRS' = PointXY :+ Maybe RestGeoPosition","name":"GeoPositionWithoutCRS'","module":"HGeometry.GeoJSON","link":"hgeometry/geojson/HGeometry-GeoJSON.html#t:GeoPositionWithoutCRS-39-"},{"display_html":"data RestGeoPosition","name":"RestGeoPosition Z ZM","module":"HGeometry.GeoJSON","link":"hgeometry/geojson/HGeometry-GeoJSON.html#t:RestGeoPosition"},{"display_html":"_GeoPositionWithoutCRS :: Prism' GeoPositionWithoutCRS (PointXY :+ Maybe RestGeoPosition)","name":"_GeoPositionWithoutCRS","module":"HGeometry.GeoJSON","link":"hgeometry/geojson/HGeometry-GeoJSON.html#v:_GeoPositionWithoutCRS"},{"display_html":"_GeoPolygonPolygonalDomain :: Iso' GeoPolygon GeoPolygonalDomain","name":"_GeoPolygonPolygonalDomain","module":"HGeometry.GeoJSON","link":"hgeometry/geojson/HGeometry-GeoJSON.html#v:_GeoPolygonPolygonalDomain"},{"display_html":"ipeRenderWith :: Options -> FileType -> OsPath -> OsPath -> IO ()","name":"ipeRenderWith","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#v:ipeRenderWith"},{"display_html":"ipeRender :: FileType -> OsPath -> OsPath -> IO ()","name":"ipeRender","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#v:ipeRender"},{"display_html":"data FileType","name":"FileType SVG PDF PNG EPS","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#t:FileType"},{"display_html":"data Options = Options {}","name":"Options crop viewNumber pageNumber transparent resolution Options","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#t:Options"},{"display_html":"defaultOptions :: Options","name":"defaultOptions","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#v:defaultOptions"},{"display_html":"data Background","name":"Background OpaqueBackground TransparentBackground","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#t:Background"},{"display_html":"data Crop","name":"Crop Crop NoCrop","module":"Ipe.IpeRender","link":"hgeometry/ipe/Ipe-IpeRender.html#t:Crop"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe.Layer","link":"hgeometry/ipe/Ipe-Layer.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe.Layer","link":"hgeometry/ipe/Ipe-Layer.html#v:layerName"},{"display_html":"literally :: String -> Q Exp","name":"literally","module":"Ipe.Literal","link":"hgeometry/ipe/Ipe-Literal.html#v:literally"},{"display_html":"lit :: QuasiQuoter","name":"lit","module":"Ipe.Literal","link":"hgeometry/ipe/Ipe-Literal.html#v:lit"},{"display_html":"litFile :: QuasiQuoter","name":"litFile","module":"Ipe.Literal","link":"hgeometry/ipe/Ipe-Literal.html#v:litFile"},{"display_html":"xmlLiteral :: String -> Node Text Text","name":"xmlLiteral","module":"Ipe.Literal","link":"hgeometry/ipe/Ipe-Literal.html#v:xmlLiteral"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#t:PathSegment"},{"display_html":"_PolyLineSegment :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_PolyLineSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_PolyLineSegment"},{"display_html":"_PolygonPath :: forall r p f. (Choice p, Applicative f) => p (Orientation, SimplePolygon (Point 2 r)) (f (Orientation, SimplePolygon (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_PolygonPath","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_PolygonPath"},{"display_html":"_CubicBezierSegment :: forall r p f. (Choice p, Applicative f) => p (CubicBezier (Point 2 r)) (f (CubicBezier (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_CubicBezierSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_CubicBezierSegment"},{"display_html":"_QuadraticBezierSegment :: forall r p f. (Choice p, Applicative f) => p (QuadraticBezier (Point 2 r)) (f (QuadraticBezier (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_QuadraticBezierSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_QuadraticBezierSegment"},{"display_html":"_EllipseSegment :: forall r p f. (Choice p, Applicative f) => p (Ellipse r) (f (Ellipse r)) -> p (PathSegment r) (f (PathSegment r))","name":"_EllipseSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_EllipseSegment"},{"display_html":"_ArcSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_ArcSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ArcSegment"},{"display_html":"_SplineSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_SplineSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_SplineSegment"},{"display_html":"_ClosedSplineSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_ClosedSplineSegment","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ClosedSplineSegment"},{"display_html":"data Orientation","name":"Orientation Reversed AsIs","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#t:Orientation"},{"display_html":"data Operation r","name":"Operation Ellipse MoveTo LineTo ArcTo Spline ClosedSpline ClosePath CurveTo QCurveTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#t:Operation"},{"display_html":"_MoveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_MoveTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_MoveTo"},{"display_html":"_LineTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_LineTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_LineTo"},{"display_html":"_CurveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r, Point 2 r, Point 2 r) (f (Point 2 r, Point 2 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_CurveTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_CurveTo"},{"display_html":"_QCurveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r, Point 2 r) (f (Point 2 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_QCurveTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_QCurveTo"},{"display_html":"_Ellipse :: forall r p f. (Choice p, Applicative f) => p (Matrix 3 3 r) (f (Matrix 3 3 r)) -> p (Operation r) (f (Operation r))","name":"_Ellipse","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_Ellipse"},{"display_html":"_ArcTo :: forall r p f. (Choice p, Applicative f) => p (Matrix 3 3 r, Point 2 r) (f (Matrix 3 3 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_ArcTo","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ArcTo"},{"display_html":"_Spline :: forall r p f. (Choice p, Applicative f) => p [Point 2 r] (f [Point 2 r]) -> p (Operation r) (f (Operation r))","name":"_Spline","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_Spline"},{"display_html":"_ClosedSpline :: forall r p f. (Choice p, Applicative f) => p [Point 2 r] (f [Point 2 r]) -> p (Operation r) (f (Operation r))","name":"_ClosedSpline","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ClosedSpline"},{"display_html":"_ClosePath :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (Operation r) (f (Operation r))","name":"_ClosePath","module":"Ipe.Path","link":"hgeometry/ipe/Ipe-Path.html#v:_ClosePath"},{"display_html":"class Fractional r => Coordinate r where","name":"Coordinate fromSeq $dmfromSeq","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#t:Coordinate"},{"display_html":"readCoordinate :: Coordinate r => Text -> Either Text r","name":"readCoordinate","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readCoordinate"},{"display_html":"readPoint :: Coordinate r => Text -> Either Text (Point 2 r)","name":"readPoint","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readPoint"},{"display_html":"readMatrix :: Coordinate r => Text -> Either Text (Matrix 3 3 r)","name":"readMatrix","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readMatrix"},{"display_html":"readRectangle :: Coordinate r => Text -> Either Text (Rectangle (Point 2 r))","name":"readRectangle","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readRectangle"},{"display_html":"runParser :: Parser a -> Text -> Either Text a","name":"runParser","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:runParser"},{"display_html":"readPathOperations :: Coordinate r => Text -> Either Text [Operation r]","name":"readPathOperations","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:readPathOperations"},{"display_html":"pOperation :: Coordinate r => Parser (Operation r)","name":"pOperation","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:pOperation"},{"display_html":"pPoint :: Coordinate r => Parser (Point 2 r)","name":"pPoint","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:pPoint"},{"display_html":"pCoordinate :: Coordinate r => Parser r","name":"pCoordinate","module":"Ipe.PathParser","link":"hgeometry/ipe/Ipe-PathParser.html#v:pCoordinate"},{"display_html":"data IpeValue v","name":"IpeValue Valued Named","module":"Ipe.Value","link":"hgeometry/ipe/Ipe-Value.html#t:IpeValue"},{"display_html":"newtype IpeColor r = IpeColor (IpeValue (RGB r))","name":"IpeColor IpeColor","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#t:IpeColor"},{"display_html":"named :: Text -> IpeColor r","name":"named","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:named"},{"display_html":"basicNamedColors :: [IpeColor r]","name":"basicNamedColors","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:basicNamedColors"},{"display_html":"black :: IpeColor r","name":"black","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:black"},{"display_html":"white :: IpeColor r","name":"white","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:white"},{"display_html":"red :: IpeColor r","name":"red","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:red"},{"display_html":"green :: IpeColor r","name":"green","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:green"},{"display_html":"blue :: IpeColor r","name":"blue","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:blue"},{"display_html":"yellow :: IpeColor r","name":"yellow","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:yellow"},{"display_html":"orange :: IpeColor r","name":"orange","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:orange"},{"display_html":"gold :: IpeColor r","name":"gold","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:gold"},{"display_html":"purple :: IpeColor r","name":"purple","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:purple"},{"display_html":"gray :: IpeColor r","name":"gray","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:gray"},{"display_html":"brown :: IpeColor r","name":"brown","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:brown"},{"display_html":"navy :: IpeColor r","name":"navy","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:navy"},{"display_html":"pink :: IpeColor r","name":"pink","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:pink"},{"display_html":"seagreen :: IpeColor r","name":"seagreen","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:seagreen"},{"display_html":"turquoise :: IpeColor r","name":"turquoise","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:turquoise"},{"display_html":"violet :: IpeColor r","name":"violet","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:violet"},{"display_html":"darkblue :: IpeColor r","name":"darkblue","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkblue"},{"display_html":"darkcyan :: IpeColor r","name":"darkcyan","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkcyan"},{"display_html":"darkgray :: IpeColor r","name":"darkgray","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkgray"},{"display_html":"darkgreen :: IpeColor r","name":"darkgreen","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkgreen"},{"display_html":"darkmagenta :: IpeColor r","name":"darkmagenta","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkmagenta"},{"display_html":"darkorange :: IpeColor r","name":"darkorange","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkorange"},{"display_html":"darkred :: IpeColor r","name":"darkred","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:darkred"},{"display_html":"lightblue :: IpeColor r","name":"lightblue","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightblue"},{"display_html":"lightcyan :: IpeColor r","name":"lightcyan","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightcyan"},{"display_html":"lightgray :: IpeColor r","name":"lightgray","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightgray"},{"display_html":"lightgreen :: IpeColor r","name":"lightgreen","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightgreen"},{"display_html":"lightyellow :: IpeColor r","name":"lightyellow","module":"Ipe.Color","link":"hgeometry/ipe/Ipe-Color.html#v:lightyellow"},{"display_html":"data AttributeUniverse","name":"AttributeUniverse HAlign VAlign Height Gradient Tiling Opacity StrokeOpacity RArrow FillRule LineJoin LineCap Dash Pen Fill Stroke Transformations Pin Clip Layer Matrix Width Depth Style Size Arrow","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:AttributeUniverse"},{"display_html":"data SAttributeUniverse (a :: AttributeUniverse) where","name":"SAttributeUniverse SClip SStyle SHAlign SVAlign SDepth SHeight SWidth SGradient STiling SOpacity SStrokeOpacity SRArrow SArrow SFillRule SLineJoin SLineCap SDash SSize SPen SFill SStroke STransformations SPin SMatrix SLayer","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:SAttributeUniverse"},{"display_html":"type family ClipSym0 :: AttributeUniverse where ...","name":"ClipSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:ClipSym0"},{"display_html":"type family StyleSym0 :: AttributeUniverse where ...","name":"StyleSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:StyleSym0"},{"display_html":"type family HAlignSym0 :: AttributeUniverse where ...","name":"HAlignSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:HAlignSym0"},{"display_html":"type family VAlignSym0 :: AttributeUniverse where ...","name":"VAlignSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:VAlignSym0"},{"display_html":"type family DepthSym0 :: AttributeUniverse where ...","name":"DepthSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:DepthSym0"},{"display_html":"type family HeightSym0 :: AttributeUniverse where ...","name":"HeightSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:HeightSym0"},{"display_html":"type family WidthSym0 :: AttributeUniverse where ...","name":"WidthSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:WidthSym0"},{"display_html":"type family GradientSym0 :: AttributeUniverse where ...","name":"GradientSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:GradientSym0"},{"display_html":"type family TilingSym0 :: AttributeUniverse where ...","name":"TilingSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TilingSym0"},{"display_html":"type family OpacitySym0 :: AttributeUniverse where ...","name":"OpacitySym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:OpacitySym0"},{"display_html":"type family StrokeOpacitySym0 :: AttributeUniverse where ...","name":"StrokeOpacitySym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:StrokeOpacitySym0"},{"display_html":"type family RArrowSym0 :: AttributeUniverse where ...","name":"RArrowSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:RArrowSym0"},{"display_html":"type family ArrowSym0 :: AttributeUniverse where ...","name":"ArrowSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:ArrowSym0"},{"display_html":"type family FillRuleSym0 :: AttributeUniverse where ...","name":"FillRuleSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:FillRuleSym0"},{"display_html":"type family LineJoinSym0 :: AttributeUniverse where ...","name":"LineJoinSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:LineJoinSym0"},{"display_html":"type family LineCapSym0 :: AttributeUniverse where ...","name":"LineCapSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:LineCapSym0"},{"display_html":"type family DashSym0 :: AttributeUniverse where ...","name":"DashSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:DashSym0"},{"display_html":"type family SizeSym0 :: AttributeUniverse where ...","name":"SizeSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:SizeSym0"},{"display_html":"type family PenSym0 :: AttributeUniverse where ...","name":"PenSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:PenSym0"},{"display_html":"type family FillSym0 :: AttributeUniverse where ...","name":"FillSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:FillSym0"},{"display_html":"type family StrokeSym0 :: AttributeUniverse where ...","name":"StrokeSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:StrokeSym0"},{"display_html":"type family TransformationsSym0 :: AttributeUniverse where ...","name":"TransformationsSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TransformationsSym0"},{"display_html":"type family PinSym0 :: AttributeUniverse where ...","name":"PinSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:PinSym0"},{"display_html":"type family MatrixSym0 :: AttributeUniverse where ...","name":"MatrixSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:MatrixSym0"},{"display_html":"type family LayerSym0 :: AttributeUniverse where ...","name":"LayerSym0","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:LayerSym0"},{"display_html":"type CommonAttributes = '['Layer, 'Matrix, 'Pin, 'Transformations]","name":"CommonAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:CommonAttributes"},{"display_html":"type TextAttributes = CommonAttributes ++ '['Stroke, 'Size, 'Width, 'Height, 'Depth, 'VAlign, 'HAlign, 'Style, 'Opacity]","name":"TextAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TextAttributes"},{"display_html":"type TextLabelAttributes = TextAttributes","name":"TextLabelAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TextLabelAttributes"},{"display_html":"type MiniPageAttributes = TextAttributes","name":"MiniPageAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:MiniPageAttributes"},{"display_html":"type ImageAttributes = CommonAttributes","name":"ImageAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:ImageAttributes"},{"display_html":"type SymbolAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Pen, 'Size]","name":"SymbolAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:SymbolAttributes"},{"display_html":"type PathAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Dash, 'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow, 'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]","name":"PathAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:PathAttributes"},{"display_html":"type GroupAttributes = CommonAttributes ++ '['Clip]","name":"GroupAttributes","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:GroupAttributes"},{"display_html":"newtype Attr (f :: TyFun u Type -> Type) (label :: u) = GAttr {}","name":"Attr _getAttr GAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:Attr"},{"display_html":"getAttr :: forall u1 (f1 :: TyFun u1 Type -> Type) (label1 :: u1) u2 (f2 :: TyFun u2 Type -> Type) (label2 :: u2) p f3. (Profunctor p, Functor f3) => p (Maybe (Apply f1 label1)) (f3 (Maybe (Apply f2 label2))) -> p (Attr f1 label1) (f3 (Attr f2 label2))","name":"getAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:getAttr"},{"display_html":"pattern Attr :: Apply f label -> Attr f label","name":"Attr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:Attr"},{"display_html":"pattern NoAttr :: Attr f label","name":"NoAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:NoAttr"},{"display_html":"traverseAttr :: forall {u} h (f :: u ~> Type) (label :: u) (g :: u ~> Type). Applicative h => (Apply f label -> h (Apply g label)) -> Attr f label -> h (Attr g label)","name":"traverseAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:traverseAttr"},{"display_html":"pureAttr :: forall {u} h (f :: u ~> Type) (a :: u) (g :: u ~> Type). (Applicative h, Apply f a ~ Apply g a) => Attr f a -> h (Attr g a)","name":"pureAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:pureAttr"},{"display_html":"newtype Attributes (f :: TyFun u Type -> Type) (ats :: [u]) = Attrs (Rec (Attr f) ats)","name":"Attributes Attrs","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:Attributes"},{"display_html":"unAttrs :: forall {u1} {u2} (f1 :: TyFun u1 Type -> Type) (ats :: [u1]) (f' :: TyFun u2 Type -> Type) (ats' :: [u2]) f2. Functor f2 => (Rec (Attr f1) ats -> f2 (Rec (Attr f') ats')) -> Attributes f1 ats -> f2 (Attributes f' ats')","name":"unAttrs","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:unAttrs"},{"display_html":"traverseAttrs :: forall {u} h (f :: TyFun u Type -> Type) (g :: TyFun u Type -> Type) (ats :: [u]). Applicative h => (forall (label :: u). Attr f label -> h (Attr g label)) -> Attributes f ats -> h (Attributes g ats)","name":"traverseAttrs","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:traverseAttrs"},{"display_html":"zipRecsWith :: forall {u} f g h (as :: [u]). (forall (a :: u). f a -> g a -> h a) -> Rec f as -> Rec g as -> Rec h as","name":"zipRecsWith","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:zipRecsWith"},{"display_html":"ixAttr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). at ats => proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))","name":"ixAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:ixAttr"},{"display_html":"_Attr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). (at ats, RecApplicative ats) => proxy at -> Prism' (Attributes f ats) (Apply f at)","name":"_Attr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:_Attr"},{"display_html":"lookupAttr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). at ats => proxy at -> Attributes f ats -> Maybe (Apply f at)","name":"lookupAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:lookupAttr"},{"display_html":"setAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: u ~> Type). at ats => proxy at -> Apply f at -> Attributes f ats -> Attributes f ats","name":"setAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:setAttr"},{"display_html":"takeAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: TyFun u Type -> Type). at ats => proxy at -> Attributes f ats -> (Maybe (Apply f at), Attributes f ats)","name":"takeAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:takeAttr"},{"display_html":"unSetAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: TyFun u Type -> Type). at ats => proxy at -> Attributes f ats -> Attributes f ats","name":"unSetAttr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:unSetAttr"},{"display_html":"attr :: forall {u} (at :: u) (ats :: [u]) proxy (f :: u ~> Type). (at ats, RecApplicative ats) => proxy at -> Apply f at -> Attributes f ats","name":"attr","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:attr"},{"display_html":"data PinType","name":"PinType Vertical Horizontal Yes No","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:PinType"},{"display_html":"data TransformationTypes","name":"TransformationTypes Translations Rigid Affine","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TransformationTypes"},{"display_html":"data HorizontalAlignment","name":"HorizontalAlignment AlignRight AlignHCenter AlignLeft","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:HorizontalAlignment"},{"display_html":"data VerticalAlignment","name":"VerticalAlignment AlignBaseline AlignBottom AlignVCenter AlignTop","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:VerticalAlignment"},{"display_html":"type TeXStyle = Text","name":"TeXStyle","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TeXStyle"},{"display_html":"type TextSizeUnit (r :: k) = r","name":"TextSizeUnit","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:TextSizeUnit"},{"display_html":"newtype IpeSize r = IpeSize (IpeValue r)","name":"IpeSize IpeSize","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeSize"},{"display_html":"newtype IpePen r = IpePen (IpeValue r)","name":"IpePen IpePen","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpePen"},{"display_html":"data IpeDash r","name":"IpeDash DashPattern DashNamed","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeDash"},{"display_html":"data FillType","name":"FillType EOFill Wind","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:FillType"},{"display_html":"type IpeOpacity = Text","name":"IpeOpacity","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeOpacity"},{"display_html":"type IpeTiling = Text","name":"IpeTiling","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeTiling"},{"display_html":"type IpeGradient = Text","name":"IpeGradient","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeGradient"},{"display_html":"data IpeArrow r = IpeArrow {}","name":"IpeArrow _arrowSize _arrowName IpeArrow","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeArrow"},{"display_html":"arrowName :: forall r f. Functor f => (Text -> f Text) -> IpeArrow r -> f (IpeArrow r)","name":"arrowName","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:arrowName"},{"display_html":"arrowSize :: forall r1 r2 f. Functor f => (IpeSize r1 -> f (IpeSize r2)) -> IpeArrow r1 -> f (IpeArrow r2)","name":"arrowSize","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:arrowSize"},{"display_html":"normalArrow :: IpeArrow r","name":"normalArrow","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:normalArrow"},{"display_html":"class IpeAttrName (a :: AttributeUniverse) where","name":"IpeAttrName attrName","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#t:IpeAttrName"},{"display_html":"writeAttrNames :: forall (rs :: [AttributeUniverse]) (f :: AttributeUniverse -> Type). AllConstrained IpeAttrName rs => Rec f rs -> Rec (Const Text :: AttributeUniverse -> Type) rs","name":"writeAttrNames","module":"Ipe.Attributes","link":"hgeometry/ipe/Ipe-Attributes.html#v:writeAttrNames"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:rect"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:width"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:symbolName"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:PathSegment"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:groupItems"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:IpeObject"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeGroup"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeImage"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeMiniPage"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpeUse"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:_IpePath"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:ToObject"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260260 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:commonAttributes"},{"display_html":"flattenGroups :: [IpeObject r] -> [IpeObject r]","name":"flattenGroups","module":"Ipe.Content","link":"hgeometry/ipe/Ipe-Content.html#v:flattenGroups"},{"display_html":"data IpeFile r = IpeFile (Maybe IpePreamble) [IpeStyle] (NonEmpty (IpePage r))","name":"IpeFile IpeFile","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeFile"},{"display_html":"preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r)","name":"preamble","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:preamble"},{"display_html":"styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r)","name":"styles","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:styles"},{"display_html":"pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r')","name":"pages","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:pages"},{"display_html":"ipeFile :: NonEmpty (IpePage r) -> IpeFile r","name":"ipeFile","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:ipeFile"},{"display_html":"singlePageFile :: IpePage r -> IpeFile r","name":"singlePageFile","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:singlePageFile"},{"display_html":"singlePageFromContent :: [IpeObject r] -> IpeFile r","name":"singlePageFromContent","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:singlePageFromContent"},{"display_html":"data IpePage r = IpePage [LayerName] [View] [IpeObject r]","name":"IpePage IpePage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpePage"},{"display_html":"layers :: forall r f. Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r)","name":"layers","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:layers"},{"display_html":"views :: forall r f. Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r)","name":"views","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:views"},{"display_html":"content :: forall r r' f. Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r')","name":"content","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:content"},{"display_html":"emptyPage :: IpePage r","name":"emptyPage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:emptyPage"},{"display_html":"fromContent :: [IpeObject r] -> IpePage r","name":"fromContent","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:fromContent"},{"display_html":"onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r)","name":"onLayer","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:onLayer"},{"display_html":"contentInView :: Word -> Getter (IpePage r) [IpeObject r]","name":"contentInView","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:contentInView"},{"display_html":"withDefaults :: IpePage r -> IpePage r","name":"withDefaults","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:withDefaults"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeObject"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeGroup"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeImage"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeMiniPage"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpeUse"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:_IpePath"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:ToObject"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:PathSegment"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:symbolName"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:groupItems"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:width"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:rect"},{"display_html":"type IpeBitmap = Text","name":"IpeBitmap","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeBitmap"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260260 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:commonAttributes"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:layerName"},{"display_html":"data View = View [LayerName] LayerName","name":"View View","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:View"},{"display_html":"layerNames :: Lens' View [LayerName]","name":"layerNames","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:layerNames"},{"display_html":"activeLayer :: Lens' View LayerName","name":"activeLayer","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:activeLayer"},{"display_html":"addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r","name":"addStyleSheet","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:addStyleSheet"},{"display_html":"data IpeStyle = IpeStyle (Maybe Text) (Node Text Text)","name":"IpeStyle IpeStyle","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpeStyle"},{"display_html":"styleName :: Lens' IpeStyle (Maybe Text)","name":"styleName","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:styleName"},{"display_html":"styleData :: Lens' IpeStyle (Node Text Text)","name":"styleData","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:styleData"},{"display_html":"basicIpeStyle :: IpeStyle","name":"basicIpeStyle","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:basicIpeStyle"},{"display_html":"opacitiesStyle :: IpeStyle","name":"opacitiesStyle","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:opacitiesStyle"},{"display_html":"data IpePreamble = IpePreamble (Maybe Text) Text","name":"IpePreamble IpePreamble","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#t:IpePreamble"},{"display_html":"encoding :: Lens' IpePreamble (Maybe Text)","name":"encoding","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:encoding"},{"display_html":"preambleData :: Lens' IpePreamble Text","name":"preambleData","module":"Ipe.Types","link":"hgeometry/ipe/Ipe-Types.html#v:preambleData"},{"display_html":"applyMatrix' :: (IsTransformable (i r), 'Matrix AttributesOf i, Dimension (i r) ~ 2, r ~ NumType (i r)) => IpeObject' i r -> IpeObject' i r","name":"applyMatrix'","module":"Ipe.Matrix","link":"hgeometry/ipe/Ipe-Matrix.html#v:applyMatrix-39-"},{"display_html":"applyMatrix :: (Fractional r, Eq r) => IpeObject r -> IpeObject r","name":"applyMatrix","module":"Ipe.Matrix","link":"hgeometry/ipe/Ipe-Matrix.html#v:applyMatrix"},{"display_html":"applyMatrices :: (Fractional r, Eq r) => IpeFile r -> IpeFile r","name":"applyMatrices","module":"Ipe.Matrix","link":"hgeometry/ipe/Ipe-Matrix.html#v:applyMatrices"},{"display_html":"applyMatricesPage :: (Fractional r, Eq r) => IpePage r -> IpePage r","name":"applyMatricesPage","module":"Ipe.Matrix","link":"hgeometry/ipe/Ipe-Matrix.html#v:applyMatricesPage"},{"display_html":"readRawIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readRawIpeFile","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readRawIpeFile"},{"display_html":"readIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readIpeFile","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readIpeFile"},{"display_html":"readSinglePageFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r))","name":"readSinglePageFile","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readSinglePageFile"},{"display_html":"readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r)","name":"readSinglePageFileThrow","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readSinglePageFileThrow"},{"display_html":"type ConversionError = Text","name":"ConversionError","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:ConversionError"},{"display_html":"readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle)","name":"readIpeStylesheet","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readIpeStylesheet"},{"display_html":"addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r)","name":"addStyleSheetFrom","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:addStyleSheetFrom"},{"display_html":"fromIpeXML :: forall {k} t (r :: k). IpeRead (t r) => ByteString -> Either ConversionError (t r)","name":"fromIpeXML","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:fromIpeXML"},{"display_html":"readXML :: ByteString -> Either ConversionError (Node Text Text)","name":"readXML","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:readXML"},{"display_html":"class IpeReadText t where","name":"IpeReadText ipeReadText","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:IpeReadText"},{"display_html":"class IpeRead t where","name":"IpeRead ipeRead","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:IpeRead"},{"display_html":"class IpeReadAttr t where","name":"IpeReadAttr ipeReadAttr","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:IpeReadAttr"},{"display_html":"ipeReadTextWith :: (Text -> Either t v) -> Text -> Either ConversionError (IpeValue v)","name":"ipeReadTextWith","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:ipeReadTextWith"},{"display_html":"ipeReadObject :: forall i r (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]) proxy. (IpeRead (i r), f ~ AttrMapSym1 r, ats ~ AttributesOf i, RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => Proxy i -> proxy r -> Node Text Text -> Either ConversionError (i r :+ IpeAttributes i r)","name":"ipeReadObject","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:ipeReadObject"},{"display_html":"ipeReadAttrs :: forall proxy proxy' (i :: Type -> Type) r (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]). (f ~ AttrMapSym1 r, ats ~ AttributesOf i, ReifyConstraint IpeReadAttr (Attr f) ats, RecApplicative ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => proxy i -> proxy' r -> Node Text Text -> Either ConversionError (IpeAttributes i r)","name":"ipeReadAttrs","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:ipeReadAttrs"},{"display_html":"ipeReadRec :: forall (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]). (RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => Proxy f -> Proxy ats -> Node Text Text -> Either ConversionError (Rec (Attr f) ats)","name":"ipeReadRec","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#v:ipeReadRec"},{"display_html":"class Fractional r => Coordinate r where","name":"Coordinate fromSeq $dmfromSeq","module":"Ipe.Reader","link":"hgeometry/ipe/Ipe-Reader.html#t:Coordinate"},{"display_html":"_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r))","name":"_asPoint","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asPoint"},{"display_html":"_asLineSegment :: forall r p f. (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asLineSegment","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asLineSegment"},{"display_html":"_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asClosedLineSegment","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asClosedLineSegment"},{"display_html":"_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r))","name":"_asRectangle","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asRectangle"},{"display_html":"_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asTriangle","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asTriangle"},{"display_html":"_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolyLine","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asPolyLine"},{"display_html":"_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asSimplePolygon","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asSimplePolygon"},{"display_html":"_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r))","name":"_asConvexPolygon","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asConvexPolygon"},{"display_html":"_asPolygonalDomain :: forall r p f. (Choice p, Applicative f) => p (PolygonalDomain (Point 2 r)) (f (PolygonalDomain (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolygonalDomain","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_asPolygonalDomain"},{"display_html":"toPolygonalDomain :: Path r -> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r))","name":"toPolygonalDomain","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:toPolygonalDomain"},{"display_html":"_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r)","name":"_withAttrs","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:_withAttrs"},{"display_html":"class HasDefaultFromIpe g where","name":"HasDefaultFromIpe DefaultFromIpe defaultFromIpe","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#t:HasDefaultFromIpe"},{"display_html":"readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAll","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:readAll"},{"display_html":"readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllDeep","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:readAllDeep"},{"display_html":"readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllFrom","module":"Ipe.FromIpe","link":"hgeometry/ipe/Ipe-FromIpe.html#v:readAllFrom"},{"display_html":"type IpeOut g (i :: Type -> Type) r = g -> IpeObject' i r","name":"IpeOut","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#t:IpeOut"},{"display_html":"type IpeOut' (f :: Type -> Type) g (i :: Type -> Type) r = g -> f (IpeObject' i r)","name":"IpeOut'","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#t:IpeOut-39-"},{"display_html":"(!) :: IpeObject' i r -> IpeAttributes i r -> IpeObject' i r","name":"!","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:-33-"},{"display_html":"iO :: ToObject i => IpeObject' i r -> IpeObject r","name":"iO","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:iO"},{"display_html":"iO'' :: forall g r (i :: Type -> Type). (HasDefaultIpeOut g, NumType g ~ r, DefaultIpeOut g ~ i, ToObject i) => g -> IpeAttributes i r -> IpeObject r","name":"iO''","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:iO-39--39-"},{"display_html":"iO' :: HasDefaultIpeOut g => g -> IpeObject (NumType g)","name":"iO'","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:iO-39-"},{"display_html":"class ToObject (DefaultIpeOut g) => HasDefaultIpeOut g where","name":"HasDefaultIpeOut defIO DefaultIpeOut","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#t:HasDefaultIpeOut"},{"display_html":"ipeMark :: Text -> IpeOut (Point 2 r) IpeSymbol r","name":"ipeMark","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeMark"},{"display_html":"ipeDiskMark :: IpeOut (Point 2 r) IpeSymbol r","name":"ipeDiskMark","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeDiskMark"},{"display_html":"defaultBox :: Num r => Rectangle (Point 2 r)","name":"defaultBox","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:defaultBox"},{"display_html":"ipeLine :: (Ord r, Fractional r, Show r) => IpeOut (LinePV 2 r) Path r","name":"ipeLine","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeLine"},{"display_html":"ipeLineIn :: (Ord r, Fractional r, Show r) => Rectangle (Point 2 r) -> IpeOut (LinePV 2 r) Path r","name":"ipeLineIn","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeLineIn"},{"display_html":"ipeHalfLine :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r","name":"ipeHalfLine","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeHalfLine"},{"display_html":"ipeRay :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r","name":"ipeRay","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeRay"},{"display_html":"ipeHalfLineIn :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => Rectangle point -> IpeOut (HalfLine point) Path r","name":"ipeHalfLineIn","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeHalfLineIn"},{"display_html":"ipeLineSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) => IpeOut lineSegment Path r","name":"ipeLineSegment","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeLineSegment"},{"display_html":"ipePolyLine :: IpeOut (PolyLine (Point 2 r)) Path r","name":"ipePolyLine","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipePolyLine"},{"display_html":"ipeEllipse :: IpeOut (Ellipse r) Path r","name":"ipeEllipse","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeEllipse"},{"display_html":"ipeCircle :: Radical r => IpeOut (Circle (Point 2 r)) Path r","name":"ipeCircle","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeCircle"},{"display_html":"ipeDisk :: Radical r => IpeOut (Disk (Point 2 r)) Path r","name":"ipeDisk","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeDisk"},{"display_html":"ipeBezier :: IpeOut (CubicBezier (Point 2 r)) Path r","name":"ipeBezier","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeBezier"},{"display_html":"path :: PathSegment r -> Path r","name":"path","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:path"},{"display_html":"pathSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) => lineSegment -> PathSegment r","name":"pathSegment","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:pathSegment"},{"display_html":"ipePolygon :: Polygon_ polygon point r => IpeOut polygon Path r","name":"ipePolygon","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipePolygon"},{"display_html":"toPolygonPathSegment :: (HasOuterBoundary polygon, Point_ point 2 r, Vertex polygon ~ point) => polygon -> PathSegment r","name":"toPolygonPathSegment","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:toPolygonPathSegment"},{"display_html":"ipeSimplePolygon :: IpeOut (SimplePolygon (Point 2 r)) Path r","name":"ipeSimplePolygon","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeSimplePolygon"},{"display_html":"ipeRectangle :: Num r => IpeOut (Rectangle (Point 2 r)) Path r","name":"ipeRectangle","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeRectangle"},{"display_html":"ipeGroup :: Foldable f => IpeOut (f (IpeObject r)) Group r","name":"ipeGroup","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeGroup"},{"display_html":"ipeLabel :: IpeOut (Text :+ Point 2 r) TextLabel r","name":"ipeLabel","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:ipeLabel"},{"display_html":"labelled :: (Show lbl, NumType g ~ r, ToObject i) => (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r","name":"labelled","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:labelled"},{"display_html":"labelledWith :: (Show lbl, NumType g ~ r, ToObject i) => IpeAttributes TextLabel r -> (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r","name":"labelledWith","module":"Ipe.IpeOut","link":"hgeometry/ipe/Ipe-IpeOut.html#v:labelledWith"},{"display_html":"writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFile","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:writeIpeFile"},{"display_html":"writeIpeFile' :: IpeWrite t => t -> OsPath -> IO ()","name":"writeIpeFile'","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:writeIpeFile-39-"},{"display_html":"writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO ()","name":"writeIpePage","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:writeIpePage"},{"display_html":"toIpeXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeXML","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:toIpeXML"},{"display_html":"printAsIpeSelection :: IpeWrite t => t -> IO ()","name":"printAsIpeSelection","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:printAsIpeSelection"},{"display_html":"toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeSelectionXML","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:toIpeSelectionXML"},{"display_html":"class IpeWrite t where","name":"IpeWrite ipeWrite","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#t:IpeWrite"},{"display_html":"class IpeWriteText t where","name":"IpeWriteText ipeWriteText","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#t:IpeWriteText"},{"display_html":"ipeWriteAttrs :: forall (rs :: [AttributeUniverse]) (f :: TyFun AttributeUniverse Type -> Type). (RecordToList rs, RMap rs, ReifyConstraint IpeWriteText (Attr f) rs, AllConstrained IpeAttrName rs, RecAll (Attr f) rs IpeWriteText) => Attributes f rs -> [(Text, Text)]","name":"ipeWriteAttrs","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:ipeWriteAttrs"},{"display_html":"writeAttrValues :: forall {u} (rs :: [u]) (f :: u -> Type). (RMap rs, ReifyConstraint IpeWriteText f rs, RecAll f rs IpeWriteText) => Rec f rs -> Rec (Const (Maybe Text) :: u -> Type) rs","name":"writeAttrValues","module":"Ipe.Writer","link":"hgeometry/ipe/Ipe-Writer.html#v:writeAttrValues"},{"display_html":"ipeToIpeWith :: Options -> FileType -> OsPath -> OsPath -> IO ()","name":"ipeToIpeWith","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#v:ipeToIpeWith"},{"display_html":"ipeToIpe :: FileType -> OsPath -> OsPath -> IO ()","name":"ipeToIpe","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#v:ipeToIpe"},{"display_html":"writeIpeFileAsPdf :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFileAsPdf","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#v:writeIpeFileAsPdf"},{"display_html":"data FileType","name":"FileType XML PDF","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:FileType"},{"display_html":"data Export","name":"Export RetainIpeInfo Export","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:Export"},{"display_html":"type PageNumber = Int","name":"PageNumber","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:PageNumber"},{"display_html":"type ViewNumber = Int","name":"ViewNumber","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:ViewNumber"},{"display_html":"data MarkedView","name":"MarkedView OnlyMarkedViews All","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:MarkedView"},{"display_html":"data NoZip","name":"NoZip NoZip Zip","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:NoZip"},{"display_html":"data PageRange","name":"PageRange EntireFile PageRange","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:PageRange"},{"display_html":"data Options = Options {}","name":"Options markedView nozip runLatex singleView pages export Options","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#t:Options"},{"display_html":"defaultOptions :: Options","name":"defaultOptions","module":"Ipe.IpeToIpe","link":"hgeometry/ipe/Ipe-IpeToIpe.html#v:defaultOptions"},{"display_html":"data IpeFile r = IpeFile (Maybe IpePreamble) [IpeStyle] (NonEmpty (IpePage r))","name":"IpeFile IpeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeFile"},{"display_html":"preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r)","name":"preamble","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:preamble"},{"display_html":"styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r)","name":"styles","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:styles"},{"display_html":"pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r')","name":"pages","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:pages"},{"display_html":"ipeFile :: NonEmpty (IpePage r) -> IpeFile r","name":"ipeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:ipeFile"},{"display_html":"singlePageFile :: IpePage r -> IpeFile r","name":"singlePageFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:singlePageFile"},{"display_html":"singlePageFromContent :: [IpeObject r] -> IpeFile r","name":"singlePageFromContent","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:singlePageFromContent"},{"display_html":"readIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readIpeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readIpeFile"},{"display_html":"readSinglePageFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r))","name":"readSinglePageFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readSinglePageFile"},{"display_html":"readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r)","name":"readSinglePageFileThrow","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readSinglePageFileThrow"},{"display_html":"readRawIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readRawIpeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readRawIpeFile"},{"display_html":"type ConversionError = Text","name":"ConversionError","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:ConversionError"},{"display_html":"readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAll","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readAll"},{"display_html":"readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllDeep","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readAllDeep"},{"display_html":"readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllFrom","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readAllFrom"},{"display_html":"writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFile","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:writeIpeFile"},{"display_html":"writeIpeFile' :: IpeWrite t => t -> OsPath -> IO ()","name":"writeIpeFile'","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:writeIpeFile-39-"},{"display_html":"writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO ()","name":"writeIpePage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:writeIpePage"},{"display_html":"toIpeXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeXML","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:toIpeXML"},{"display_html":"printAsIpeSelection :: IpeWrite t => t -> IO ()","name":"printAsIpeSelection","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:printAsIpeSelection"},{"display_html":"toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeSelectionXML","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:toIpeSelectionXML"},{"display_html":"data IpePage r = IpePage [LayerName] [View] [IpeObject r]","name":"IpePage IpePage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpePage"},{"display_html":"layers :: forall r f. Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r)","name":"layers","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:layers"},{"display_html":"views :: forall r f. Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r)","name":"views","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:views"},{"display_html":"content :: forall r r' f. Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r')","name":"content","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:content"},{"display_html":"emptyPage :: IpePage r","name":"emptyPage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:emptyPage"},{"display_html":"fromContent :: [IpeObject r] -> IpePage r","name":"fromContent","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:fromContent"},{"display_html":"onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r)","name":"onLayer","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:onLayer"},{"display_html":"contentInView :: Word -> Getter (IpePage r) [IpeObject r]","name":"contentInView","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:contentInView"},{"display_html":"withDefaults :: IpePage r -> IpePage r","name":"withDefaults","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:withDefaults"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeObject"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpePath"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeUse"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeGroup"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeMiniPage"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_IpeImage"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:ToObject"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:PathSegment"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:symbolName"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:groupItems"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:width"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:rect"},{"display_html":"type IpeBitmap = Text","name":"IpeBitmap","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeBitmap"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260260 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:commonAttributes"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:layerName"},{"display_html":"data View = View [LayerName] LayerName","name":"View View","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:View"},{"display_html":"layerNames :: Lens' View [LayerName]","name":"layerNames","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:layerNames"},{"display_html":"activeLayer :: Lens' View LayerName","name":"activeLayer","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:activeLayer"},{"display_html":"data IpeStyle = IpeStyle (Maybe Text) (Node Text Text)","name":"IpeStyle IpeStyle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeStyle"},{"display_html":"styleName :: Lens' IpeStyle (Maybe Text)","name":"styleName","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:styleName"},{"display_html":"styleData :: Lens' IpeStyle (Node Text Text)","name":"styleData","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:styleData"},{"display_html":"basicIpeStyle :: IpeStyle","name":"basicIpeStyle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:basicIpeStyle"},{"display_html":"opacitiesStyle :: IpeStyle","name":"opacitiesStyle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:opacitiesStyle"},{"display_html":"readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle)","name":"readIpeStylesheet","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:readIpeStylesheet"},{"display_html":"addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r","name":"addStyleSheet","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:addStyleSheet"},{"display_html":"addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r)","name":"addStyleSheetFrom","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:addStyleSheetFrom"},{"display_html":"data IpePreamble = IpePreamble (Maybe Text) Text","name":"IpePreamble IpePreamble","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpePreamble"},{"display_html":"encoding :: Lens' IpePreamble (Maybe Text)","name":"encoding","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:encoding"},{"display_html":"preambleData :: Lens' IpePreamble Text","name":"preambleData","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:preambleData"},{"display_html":"class IpeRead t where","name":"IpeRead ipeRead","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeRead"},{"display_html":"_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r))","name":"_asPoint","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asPoint"},{"display_html":"_asLineSegment :: forall r p f. (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asLineSegment","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asLineSegment"},{"display_html":"_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asClosedLineSegment","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asClosedLineSegment"},{"display_html":"_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r))","name":"_asRectangle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asRectangle"},{"display_html":"_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asTriangle","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asTriangle"},{"display_html":"_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolyLine","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asPolyLine"},{"display_html":"_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asSimplePolygon","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asSimplePolygon"},{"display_html":"_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r))","name":"_asConvexPolygon","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asConvexPolygon"},{"display_html":"_asPolygonalDomain :: forall r p f. (Choice p, Applicative f) => p (PolygonalDomain (Point 2 r)) (f (PolygonalDomain (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolygonalDomain","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_asPolygonalDomain"},{"display_html":"_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r)","name":"_withAttrs","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:_withAttrs"},{"display_html":"class HasDefaultFromIpe g where","name":"HasDefaultFromIpe DefaultFromIpe defaultFromIpe","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:HasDefaultFromIpe"},{"display_html":"class IpeWrite t where","name":"IpeWrite ipeWrite","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeWrite"},{"display_html":"class IpeWriteText t where","name":"IpeWriteText ipeWriteText","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeWriteText"},{"display_html":"module Ipe.IpeOut","name":"","module":"Ipe","link":"hgeometry/ipe"},{"display_html":"module Ipe.Attributes","name":"","module":"Ipe","link":"hgeometry/ipe"},{"display_html":"module Ipe.Value","name":"","module":"Ipe","link":"hgeometry/ipe"},{"display_html":"newtype IpeColor r = IpeColor (IpeValue (RGB r))","name":"IpeColor IpeColor","module":"Ipe","link":"hgeometry/ipe/Ipe.html#t:IpeColor"},{"display_html":"named :: Text -> IpeColor r","name":"named","module":"Ipe","link":"hgeometry/ipe/Ipe.html#v:named"},{"display_html":"class (HasCenter ball point, NumType ball ~ NumType point, Point_ point (Dimension ball) (NumType ball)) => Ball_ ball point | ball -> point where","name":"Ball_ squaredRadius fromCenterAndSquaredRadius unitBall radius $dmunitBall $dmradius","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#t:Ball_"},{"display_html":"pattern Ball_ :: Ball_ ball point => point -> NumType ball -> ball","name":"Ball_","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:Ball_"},{"display_html":"class HasCenter geom point | geom -> point where","name":"HasCenter center","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#t:HasCenter"},{"display_html":"fromDiametralPair :: forall r point (d :: Nat) ball. (Fractional r, Point_ point d r, Ball_ ball point, Has_ Metric_ d r) => point -> point -> ball","name":"fromDiametralPair","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:fromDiametralPair"},{"display_html":"fromCenterAndPoint :: forall r point (d :: Nat) ball. (Num r, Point_ point d r, Ball_ ball point, Has_ Metric_ d r) => point -> point -> ball","name":"fromCenterAndPoint","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:fromCenterAndPoint"},{"display_html":"class (Ball_ disk point, Dimension disk ~ 2) => Disk_ disk point","name":"Disk_","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#t:Disk_"},{"display_html":"fromBoundaryPoints :: (Disk_ disk (Point 2 r), Point_ point 2 r, Fractional r) => Vector 3 point -> disk","name":"fromBoundaryPoints","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:fromBoundaryPoints"},{"display_html":"pattern Disk_ :: Disk_ ball point => point -> NumType ball -> ball","name":"Disk_","module":"HGeometry.Ball.Class","link":"hgeometry/kernel/HGeometry-Ball-Class.html#v:Disk_"},{"display_html":"newtype Boundary g = Boundary g","name":"Boundary Boundary","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#t:Boundary"},{"display_html":"_Boundary :: forall g h p f. (Profunctor p, Functor f) => p (Boundary g) (f (Boundary h)) -> p g (f h)","name":"_Boundary","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#v:_Boundary"},{"display_html":"data PointLocationResult","name":"PointLocationResult Inside OnBoundary Outside","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#t:PointLocationResult"},{"display_html":"data PointLocationResultWith edge","name":"PointLocationResultWith StrictlyInside OnBoundaryEdge StrictlyOutside","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#t:PointLocationResultWith"},{"display_html":"asPointLocationResult :: PointLocationResultWith edge -> PointLocationResult","name":"asPointLocationResult","module":"HGeometry.Boundary","link":"hgeometry/kernel/HGeometry-Boundary.html#v:asPointLocationResult"},{"display_html":"data CardinalDirection","name":"CardinalDirection North East South West","module":"HGeometry.Direction","link":"hgeometry/kernel/HGeometry-Direction.html#t:CardinalDirection"},{"display_html":"oppositeDirection :: CardinalDirection -> CardinalDirection","name":"oppositeDirection","module":"HGeometry.Direction","link":"hgeometry/kernel/HGeometry-Direction.html#v:oppositeDirection"},{"display_html":"data InterCardinalDirection","name":"InterCardinalDirection NorthWest NorthEast SouthEast SouthWest","module":"HGeometry.Direction","link":"hgeometry/kernel/HGeometry-Direction.html#t:InterCardinalDirection"},{"display_html":"interCardinalsOf :: CardinalDirection -> Vector 2 InterCardinalDirection","name":"interCardinalsOf","module":"HGeometry.Direction","link":"hgeometry/kernel/HGeometry-Direction.html#v:interCardinalsOf"},{"display_html":"class (NumType hyperPlane ~ r, Dimension hyperPlane ~ d, Has_ Vector_ d r, Has_ Vector_ (1 + d) r) => HyperPlane_ hyperPlane (d :: Natural) r | hyperPlane -> d, hyperPlane -> r where","name":"HyperPlane_ evalHyperPlaneEquation hyperPlaneEquation normalVector onHyperPlane onSideTest $dmevalHyperPlaneEquation $dmhyperPlaneEquation $dmnormalVector $dmonHyperPlane $dmonSideTest","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#t:HyperPlane_"},{"display_html":"class HyperPlane_ hyperPlane d r => ConstructableHyperPlane_ hyperPlane (d :: Natural) r where","name":"ConstructableHyperPlane_ HyperPlaneFromEquationConstraint hyperPlaneFromEquation fromPointAndNormal $dmfromPointAndNormal","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#t:ConstructableHyperPlane_"},{"display_html":"class HyperPlane_ hyperPlane d r => NonVerticalHyperPlane_ hyperPlane (d :: Natural) r where","name":"NonVerticalHyperPlane_ hyperPlaneCoefficients evalAt verticalSideTest $dmevalAt $dmverticalSideTest","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#t:NonVerticalHyperPlane_"},{"display_html":"isParallelTo :: forall hyperPlane (d :: Natural) r hyperPlane'. (HyperPlane_ hyperPlane d r, HyperPlane_ hyperPlane' d r, Has_ Metric_ d r, Num r, Eq r, 1 <= d) => hyperPlane -> hyperPlane' -> Bool","name":"isParallelTo","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#v:isParallelTo"},{"display_html":"pointOn :: forall hyperPlane (d :: Natural) r. (HyperPlane_ hyperPlane d r, Eq r, Fractional r, Has_ Additive_ d r, FoldableWithIndex Int (Vector d)) => hyperPlane -> Point d r","name":"pointOn","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#v:pointOn"},{"display_html":"class HyperPlaneFromPoints hyperPlane where","name":"HyperPlaneFromPoints hyperPlaneThrough","module":"HGeometry.HyperPlane.Class","link":"hgeometry/kernel/HGeometry-HyperPlane-Class.html#t:HyperPlaneFromPoints"},{"display_html":"class (HyperPlane_ (BoundingHyperPlane halfSpace d r) d r, Dimension halfSpace ~ d, Dimension (BoundingHyperPlane halfSpace d r) ~ d, NumType halfSpace ~ r, NumType (BoundingHyperPlane halfSpace d r) ~ r) => HalfSpace_ halfSpace (d :: Natural) r | halfSpace -> d, halfSpace -> r where","name":"HalfSpace_ BoundingHyperPlane boundingHyperPlane halfSpaceSign","module":"HGeometry.HalfSpace.Class","link":"hgeometry/kernel/HGeometry-HalfSpace-Class.html#t:HalfSpace_"},{"display_html":"type HalfPlane_ halfPlane r = HalfSpace_ halfPlane 2 r","name":"HalfPlane_","module":"HGeometry.HalfSpace.Class","link":"hgeometry/kernel/HGeometry-HalfSpace-Class.html#t:HalfPlane_"},{"display_html":"newtype NonVerticalHyperPlane (d :: Nat) r where","name":"NonVerticalHyperPlane NonVerticalHyperPlane Plane","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#t:NonVerticalHyperPlane"},{"display_html":"asNonVerticalHyperPlane :: forall hyperPlane (d :: Natural) r. (HyperPlane_ hyperPlane d r, Fractional r, Eq r, 1 <= d) => hyperPlane -> Maybe (NonVerticalHyperPlane d r)","name":"asNonVerticalHyperPlane","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#v:asNonVerticalHyperPlane"},{"display_html":"type Plane = NonVerticalHyperPlane 3","name":"Plane","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#t:Plane"},{"display_html":"type Plane_ plane = NonVerticalHyperPlane_ plane 3","name":"Plane_","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#t:Plane_"},{"display_html":"pattern Plane_ :: Plane_ plane r => r -> r -> r -> plane","name":"Plane_","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel/HGeometry-HyperPlane-NonVertical.html#v:Plane_"},{"display_html":"module HGeometry.HyperPlane.Class","name":"","module":"HGeometry.HyperPlane.NonVertical","link":"hgeometry/kernel"},{"display_html":"module HGeometry.HyperPlane.Class","name":"","module":"HGeometry.HyperPlane","link":"hgeometry/kernel"},{"display_html":"newtype HyperPlane (d :: Natural) r where","name":"HyperPlane HyperPlane HyperPlane2 HyperPlane3","module":"HGeometry.HyperPlane","link":"hgeometry/kernel/HGeometry-HyperPlane.html#t:HyperPlane"},{"display_html":"type MkHyperPlaneConstraints (d :: Natural) r = (d < (d + 1), KnownNat d, Has_ Metric_ d r, Has_ Metric_ (d + 1) r, Has_ Vector_ d r, Has_ Vector_ (d + 1) r)","name":"MkHyperPlaneConstraints","module":"HGeometry.HyperPlane","link":"hgeometry/kernel/HGeometry-HyperPlane.html#t:MkHyperPlaneConstraints"},{"display_html":"cmpInDirection :: forall point (d :: Natural) r. (Ord r, Num r, Has_ Metric_ (d + 1) r, Has_ Metric_ d r, Point_ point d r, d < (d + 1)) => Vector d r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry.HyperPlane","link":"hgeometry/kernel/HGeometry-HyperPlane.html#v:cmpInDirection"},{"display_html":"module HGeometry.HyperPlane.NonVertical","name":"","module":"HGeometry.HyperPlane","link":"hgeometry/kernel"},{"display_html":"type family Intersection g h","name":"Intersection","module":"HGeometry.Intersection","link":"hgeometry/kernel/HGeometry-Intersection.html#t:Intersection"},{"display_html":"data family IntersectionOf g h","name":"IntersectionOf","module":"HGeometry.Intersection","link":"hgeometry/kernel/HGeometry-Intersection.html#t:IntersectionOf"},{"display_html":"class HasIntersectionWith g h where","name":"HasIntersectionWith intersects $dmintersects","module":"HGeometry.Intersection","link":"hgeometry/kernel/HGeometry-Intersection.html#t:HasIntersectionWith"},{"display_html":"class HasIntersectionWith g h => IsIntersectableWith g h where","name":"IsIntersectableWith intersect","module":"HGeometry.Intersection","link":"hgeometry/kernel/HGeometry-Intersection.html#t:IsIntersectableWith"},{"display_html":"data HalfSpaceF boundingHyperPlane = HalfSpace !Sign boundingHyperPlane","name":"HalfSpaceF HalfSpace","module":"HGeometry.HalfSpace","link":"hgeometry/kernel/HGeometry-HalfSpace.html#t:HalfSpaceF"},{"display_html":"type HalfSpace (d :: Natural) r = HalfSpaceF (HyperPlane d r)","name":"HalfSpace","module":"HGeometry.HalfSpace","link":"hgeometry/kernel/HGeometry-HalfSpace.html#t:HalfSpace"},{"display_html":"data Sign","name":"Sign Negative Positive","module":"HGeometry.HalfSpace","link":"hgeometry/kernel/HGeometry-HalfSpace.html#t:Sign"},{"display_html":"module HGeometry.HalfSpace.Class","name":"","module":"HGeometry.HalfSpace","link":"hgeometry/kernel"},{"display_html":"class IsEndPoint endPoint endPoint => EndPoint_ endPoint where","name":"EndPoint_ endPointType mkEndPoint","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:EndPoint_"},{"display_html":"class IsEndPoint endPoint endPoint' where","name":"IsEndPoint _endPoint","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:IsEndPoint"},{"display_html":"data EndPointType","name":"EndPointType Open Closed","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:EndPointType"},{"display_html":"newtype EndPoint (et :: EndPointType) r where","name":"EndPoint EndPoint OpenE ClosedE","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:EndPoint"},{"display_html":"data AnEndPoint r where","name":"AnEndPoint AnOpenE AnClosedE AnEndPoint","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#t:AnEndPoint"},{"display_html":"asAnEndPoint :: EndPoint_ endPoint => endPoint -> AnEndPoint (IxValue endPoint)","name":"asAnEndPoint","module":"HGeometry.Interval.EndPoint","link":"hgeometry/kernel/HGeometry-Interval-EndPoint.html#v:asAnEndPoint"},{"display_html":"class (IntervalLike_ interval r, NumType interval ~ r) => Interval_ interval r | interval -> r","name":"Interval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:Interval_"},{"display_html":"pattern Interval_ :: Interval_ interval r => StartPointOf interval -> EndPointOf interval -> interval","name":"Interval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:Interval_"},{"display_html":"class (HasStart interval point, HasStartPoint interval (StartPointOf interval), HasEnd interval point, HasEndPoint interval (EndPointOf interval), EndPoint_ (EndPointOf interval), IxValue (EndPointOf interval) ~ point, EndPoint_ (StartPointOf interval), IxValue (StartPointOf interval) ~ point) => IntervalLike_ interval point | interval -> point","name":"IntervalLike_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:IntervalLike_"},{"display_html":"class Interval_ interval point => ConstructableInterval_ interval point where","name":"ConstructableInterval_ mkInterval buildInterval $dmbuildInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:ConstructableInterval_"},{"display_html":"class (Interval_ interval r, StartPointOf interval ~ EndPoint 'Closed r, EndPointOf interval ~ EndPoint 'Closed r) => ClosedInterval_ interval r","name":"ClosedInterval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:ClosedInterval_"},{"display_html":"pattern ClosedInterval_ :: ClosedInterval_ interval r => r -> r -> interval","name":"ClosedInterval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:ClosedInterval_"},{"display_html":"class (ClosedInterval_ interval r, ConstructableInterval_ interval r) => ConstructableClosedInterval_ interval r where","name":"ConstructableClosedInterval_ mkClosedInterval buildClosedInterval $dmmkClosedInterval $dmbuildClosedInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:ConstructableClosedInterval_"},{"display_html":"clampTo :: (ClosedInterval_ interval r, Ord r) => interval -> r -> r","name":"clampTo","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:clampTo"},{"display_html":"class (Interval_ interval r, StartPointOf interval ~ EndPoint 'Open r, EndPointOf interval ~ EndPoint 'Open r) => OpenInterval_ interval r | interval -> r","name":"OpenInterval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:OpenInterval_"},{"display_html":"pattern OpenInterval_ :: OpenInterval_ interval r => r -> r -> interval","name":"OpenInterval_","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:OpenInterval_"},{"display_html":"class (OpenInterval_ interval r, ConstructableInterval_ interval r) => ConstructableOpenInterval_ interval r | interval -> r where","name":"ConstructableOpenInterval_ mkOpenInterval $dmmkOpenInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:ConstructableOpenInterval_"},{"display_html":"class HasStart seg p | seg -> p where","name":"HasStart start","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:HasStart"},{"display_html":"class HasEnd seg p | seg -> p where","name":"HasEnd end","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:HasEnd"},{"display_html":"startAndEnd :: (HasStart seg p, HasEnd seg p) => seg -> (p, p)","name":"startAndEnd","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:startAndEnd"},{"display_html":"type family StartPointOf interval","name":"StartPointOf","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:StartPointOf"},{"display_html":"type family EndPointOf interval","name":"EndPointOf","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:EndPointOf"},{"display_html":"class HasStartPoint seg p | seg -> p where","name":"HasStartPoint startPoint","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:HasStartPoint"},{"display_html":"class HasEndPoint seg p | seg -> p where","name":"HasEndPoint endPoint","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:HasEndPoint"},{"display_html":"startAndEndPoint :: (HasStartPoint seg s, HasEndPoint seg e) => seg -> (s, e)","name":"startAndEndPoint","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:startAndEndPoint"},{"display_html":"inInterval :: forall interval r. (Ord r, Interval_ interval r) => r -> interval -> PointLocationResult","name":"inInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:inInterval"},{"display_html":"stabsInterval :: forall interval r. (Ord r, Interval_ interval r) => r -> interval -> Bool","name":"stabsInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:stabsInterval"},{"display_html":"compareInterval :: (Ord r, Interval_ interval r) => r -> interval -> Ordering","name":"compareInterval","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:compareInterval"},{"display_html":"compareIntervalExact :: (Ord r, Interval_ interval r) => r -> interval -> CompareInterval","name":"compareIntervalExact","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:compareIntervalExact"},{"display_html":"data CompareInterval","name":"CompareInterval Before OnStart Interior OnEnd After","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#t:CompareInterval"},{"display_html":"shiftLeft :: (Num r, Interval_ interval r) => r -> interval -> interval","name":"shiftLeft","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:shiftLeft"},{"display_html":"shiftRight :: (Num r, Interval_ interval r) => r -> interval -> interval","name":"shiftRight","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:shiftRight"},{"display_html":"duration :: (Interval_ interval r, Num r) => interval -> r","name":"duration","module":"HGeometry.Interval.Class","link":"hgeometry/kernel/HGeometry-Interval-Class.html#v:duration"},{"display_html":"module HGeometry.Interval.EndPoint","name":"","module":"HGeometry.Interval.Class","link":"hgeometry/kernel"},{"display_html":"data Interval (endPoint :: k -> Type) (r :: k) where","name":"Interval Interval ClosedInterval OpenInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:Interval"},{"display_html":"type ClosedInterval r = Interval (EndPoint 'Closed) r","name":"ClosedInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:ClosedInterval"},{"display_html":"type OpenInterval r = Interval (EndPoint 'Open) r","name":"OpenInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:OpenInterval"},{"display_html":"data HalfOpenInterval r = HalfOpenInterval !(EndPoint 'Open r) !(EndPoint 'Closed r)","name":"HalfOpenInterval HalfOpenInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:HalfOpenInterval"},{"display_html":"module HGeometry.Interval.Class","name":"","module":"HGeometry.Interval","link":"hgeometry/kernel"},{"display_html":"asClosedInterval :: Interval_ interval r => interval -> Maybe (ClosedInterval r)","name":"asClosedInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#v:asClosedInterval"},{"display_html":"asOpenInterval :: Interval_ interval r => interval -> Maybe (OpenInterval r)","name":"asOpenInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#v:asOpenInterval"},{"display_html":"asAnInterval :: Interval_ interval r => interval -> Interval AnEndPoint r","name":"asAnInterval","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#v:asAnInterval"},{"display_html":"data Interval_x_IntervalIntersection r interval","name":"Interval_x_IntervalIntersection Interval_x_Interval_Point Interval_x_Interval_Contained Interval_x_Interval_Partial","module":"HGeometry.Interval","link":"hgeometry/kernel/HGeometry-Interval.html#t:Interval_x_IntervalIntersection"},{"display_html":"class (HasMinPoint box point, HasMaxPoint box point, Point_ point (Dimension box) (NumType box)) => Box_ box point | box -> point where","name":"Box_ extent","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#t:Box_"},{"display_html":"class HasMinPoint box point | box -> point where","name":"HasMinPoint minPoint","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#t:HasMinPoint"},{"display_html":"class HasMaxPoint box point | box -> point where","name":"HasMaxPoint maxPoint","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#t:HasMaxPoint"},{"display_html":"centerPoint :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, Fractional r) => box -> point","name":"centerPoint","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#v:centerPoint"},{"display_html":"type Rectangle_ rectangle point = (Box_ rectangle point, Dimension rectangle ~ 2)","name":"Rectangle_","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#t:Rectangle_"},{"display_html":"width :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, 1 <= d, Functor (Vector d), Num r) => box -> r","name":"width","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#v:width"},{"display_html":"height :: forall box point (d :: Nat) r. (Box_ box point, Point_ point d r, 2 <= d, Functor (Vector d), Num r) => box -> r","name":"height","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#v:height"},{"display_html":"size :: forall box (d :: Nat) point r. (Box_ box point, Point_ point d r, Num r, Functor (Vector d)) => box -> Vector d r","name":"size","module":"HGeometry.Box.Class","link":"hgeometry/kernel/HGeometry-Box-Class.html#v:size"},{"display_html":"class Line_ line (d :: Nat) r | line -> d, line -> r where","name":"Line_ fromPointAndVec","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#t:Line_"},{"display_html":"type Line2_ line r = (Line_ line 2 r, HyperPlane_ line 2 r)","name":"Line2_","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#t:Line2_"},{"display_html":"lineThrough :: forall line point (d :: Nat) r. (Line_ line d r, Point_ point d r, Num r) => point -> point -> line","name":"lineThrough","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#v:lineThrough"},{"display_html":"verticalLine :: forall r line. (Line_ line 2 r, Num r) => r -> line","name":"verticalLine","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#v:verticalLine"},{"display_html":"horizontalLine :: forall r line. (Line_ line 2 r, Num r) => r -> line","name":"horizontalLine","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#v:horizontalLine"},{"display_html":"class HasOnLine line (d :: Nat) | line -> d where","name":"HasOnLine onLine","module":"HGeometry.Line.Class","link":"hgeometry/kernel/HGeometry-Line-Class.html#t:HasOnLine"},{"display_html":"type NVLine2_ line r = (Line_ line 2 r, NonVerticalHyperPlane_ line 2 r)","name":"NVLine2_","module":"HGeometry.Line.NonVertical.Class","link":"hgeometry/kernel/HGeometry-Line-NonVertical-Class.html#t:NVLine2_"},{"display_html":"pattern NVLine2_ :: NonVerticalHyperPlane_ line 2 r => r -> r -> line","name":"NVLine2_","module":"HGeometry.Line.NonVertical.Class","link":"hgeometry/kernel/HGeometry-Line-NonVertical-Class.html#v:NVLine2_"},{"display_html":"slope :: NonVerticalHyperPlane_ line 2 r => Lens' line r","name":"slope","module":"HGeometry.Line.NonVertical.Class","link":"hgeometry/kernel/HGeometry-Line-NonVertical-Class.html#v:slope"},{"display_html":"intercept :: NonVerticalHyperPlane_ line 2 r => Lens' line r","name":"intercept","module":"HGeometry.Line.NonVertical.Class","link":"hgeometry/kernel/HGeometry-Line-NonVertical-Class.html#v:intercept"},{"display_html":"newtype LineEQ r where","name":"LineEQ LineEQ MkLineEQ","module":"HGeometry.Line.LineEQ","link":"hgeometry/kernel/HGeometry-Line-LineEQ.html#t:LineEQ"},{"display_html":"evalAt' :: Num r => r -> LineEQ r -> r","name":"evalAt'","module":"HGeometry.Line.LineEQ","link":"hgeometry/kernel/HGeometry-Line-LineEQ.html#v:evalAt-39-"},{"display_html":"module HGeometry.Line.NonVertical.Class","name":"","module":"HGeometry.Line.LineEQ","link":"hgeometry/kernel"},{"display_html":"data VerticalOrLineEQ r","name":"VerticalOrLineEQ NonVertical VerticalLineThrough","module":"HGeometry.Line.General","link":"hgeometry/kernel/HGeometry-Line-General.html#t:VerticalOrLineEQ"},{"display_html":"dualPoint :: forall hyperPlane (d :: Natural) r. (NonVerticalHyperPlane_ hyperPlane d r, Num r, 1 <= d) => hyperPlane -> Point d r","name":"dualPoint","module":"HGeometry.Duality","link":"hgeometry/kernel/HGeometry-Duality.html#v:dualPoint"},{"display_html":"dualHyperPlane :: forall point (d :: Nat) r. (Point_ point d r, Num r, 1 <= d) => point -> NonVerticalHyperPlane d r","name":"dualHyperPlane","module":"HGeometry.Duality","link":"hgeometry/kernel/HGeometry-Duality.html#v:dualHyperPlane"},{"display_html":"dualLine :: (Point_ point 2 r, Num r) => point -> LineEQ r","name":"dualLine","module":"HGeometry.Duality","link":"hgeometry/kernel/HGeometry-Duality.html#v:dualLine"},{"display_html":"liftPointToPlane :: (Point_ point 2 r, Num r) => point -> NonVerticalHyperPlane 3 r","name":"liftPointToPlane","module":"HGeometry.Duality","link":"hgeometry/kernel/HGeometry-Duality.html#v:liftPointToPlane"},{"display_html":"data LinePV (d :: Nat) r = LinePV {}","name":"LinePV LinePV _anchorPoint _direction","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:LinePV"},{"display_html":"anchorPoint :: forall (d :: Nat) r f. Functor f => (Point d r -> f (Point d r)) -> LinePV d r -> f (LinePV d r)","name":"anchorPoint","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:anchorPoint"},{"display_html":"class HasDirection t where","name":"HasDirection direction","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:HasDirection"},{"display_html":"isIdenticalTo :: forall (d :: Nat) r. Eq (Vector d r) => LinePV d r -> LinePV d r -> Bool","name":"isIdenticalTo","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:isIdenticalTo"},{"display_html":"class HasSupportingLine t where","name":"HasSupportingLine supportingLine","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:HasSupportingLine"},{"display_html":"fromLinearFunction :: Num r => r -> r -> LinePV 2 r","name":"fromLinearFunction","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:fromLinearFunction"},{"display_html":"toLinearFunction :: (Fractional r, Ord r) => LinePV 2 r -> Maybe (LineEQ r)","name":"toLinearFunction","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:toLinearFunction"},{"display_html":"data SideTestUpDown","name":"SideTestUpDown On Above Below","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:SideTestUpDown"},{"display_html":"class OnSideUpDownTest t where","name":"OnSideUpDownTest onSideUpDown","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:OnSideUpDownTest"},{"display_html":"liesAbove :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool","name":"liesAbove","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:liesAbove"},{"display_html":"liesBelow :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool","name":"liesBelow","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:liesBelow"},{"display_html":"data SideTest","name":"SideTest LeftSide OnLine RightSide","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#t:SideTest"},{"display_html":"onSide :: (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> SideTest","name":"onSide","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:onSide"},{"display_html":"leftHalfPlane :: (Num r, Ord r) => LinePV 2 r -> HalfSpaceF (LinePV 2 r)","name":"leftHalfPlane","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:leftHalfPlane"},{"display_html":"rightHalfPlane :: (Num r, Ord r) => LinePV 2 r -> HalfSpaceF (LinePV 2 r)","name":"rightHalfPlane","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:rightHalfPlane"},{"display_html":"bisector :: (Fractional r, Point_ point 2 r) => point -> point -> LinePV 2 r","name":"bisector","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:bisector"},{"display_html":"perpendicularTo :: Num r => LinePV 2 r -> LinePV 2 r","name":"perpendicularTo","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:perpendicularTo"},{"display_html":"isPerpendicularTo :: (Num r, Eq r) => Vector 2 r -> LinePV 2 r -> Bool","name":"isPerpendicularTo","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:isPerpendicularTo"},{"display_html":"cmpSlope :: (Num r, Ord r) => LinePV 2 r -> LinePV 2 r -> Ordering","name":"cmpSlope","module":"HGeometry.Line.PointAndVector","link":"hgeometry/kernel/HGeometry-Line-PointAndVector.html#v:cmpSlope"},{"display_html":"module HGeometry.Line.Class","name":"","module":"HGeometry.Line","link":"hgeometry/kernel"},{"display_html":"module HGeometry.Line.LineEQ","name":"","module":"HGeometry.Line","link":"hgeometry/kernel"},{"display_html":"module HGeometry.Line.PointAndVector","name":"","module":"HGeometry.Line","link":"hgeometry/kernel"},{"display_html":"type LineLineIntersection line = LineLineIntersectionG (NumType line) line","name":"LineLineIntersection","module":"HGeometry.Line","link":"hgeometry/kernel/HGeometry-Line.html#t:LineLineIntersection"},{"display_html":"data LineLineIntersectionG r line","name":"LineLineIntersectionG Line_x_Line_Point Line_x_Line_Line","module":"HGeometry.Line","link":"hgeometry/kernel/HGeometry-Line.html#t:LineLineIntersectionG"},{"display_html":"data HalfLine point = HalfLine !point !(Vector (Dimension point) (NumType point))","name":"HalfLine HalfLine","module":"HGeometry.HalfLine","link":"hgeometry/kernel/HGeometry-HalfLine.html#t:HalfLine"},{"display_html":"halfLineThrough :: forall point (d :: Nat) r. (Point_ point d r, Num r) => point -> point -> HalfLine point","name":"halfLineThrough","module":"HGeometry.HalfLine","link":"hgeometry/kernel/HGeometry-HalfLine.html#v:halfLineThrough"},{"display_html":"data LineHalfLineIntersection point halfLine","name":"LineHalfLineIntersection Line_x_HalfLine_Point Line_x_HalfLine_HalfLine","module":"HGeometry.HalfLine","link":"hgeometry/kernel/HGeometry-HalfLine.html#t:LineHalfLineIntersection"},{"display_html":"class (IntervalLike_ lineSegment point, Point_ point (Dimension lineSegment) (NumType lineSegment)) => LineSegment_ lineSegment point | lineSegment -> point","name":"LineSegment_","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:LineSegment_"},{"display_html":"pattern LineSegment_ :: LineSegment_ lineSegment point => point -> point -> lineSegment","name":"LineSegment_","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:LineSegment_"},{"display_html":"class LineSegment_ lineSegment point => ConstructableLineSegment_ lineSegment point where","name":"ConstructableLineSegment_ uncheckedLineSegment mkLineSegment $dmmkLineSegment","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:ConstructableLineSegment_"},{"display_html":"class (LineSegment_ lineSegment point, StartPointOf lineSegment ~ EndPoint 'Closed point, EndPointOf lineSegment ~ EndPoint 'Closed point) => ClosedLineSegment_ lineSegment point","name":"ClosedLineSegment_","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:ClosedLineSegment_"},{"display_html":"class (LineSegment_ lineSegment point, StartPointOf lineSegment ~ EndPoint 'Open point, EndPointOf lineSegment ~ EndPoint 'Open point) => OpenLineSegment_ lineSegment point","name":"OpenLineSegment_","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:OpenLineSegment_"},{"display_html":"interpolate :: forall lineSegment (d :: Nat) point r. (Fractional r, LineSegment_ lineSegment point, ConstructablePoint_ point d r) => r -> lineSegment -> point","name":"interpolate","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:interpolate"},{"display_html":"class HasOnSegment lineSegment (d :: Nat) | lineSegment -> d where","name":"HasOnSegment onSegment","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasOnSegment"},{"display_html":"class HasStart seg p | seg -> p where","name":"HasStart start","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasStart"},{"display_html":"class HasEnd seg p | seg -> p where","name":"HasEnd end","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasEnd"},{"display_html":"class HasStartPoint seg p | seg -> p where","name":"HasStartPoint startPoint","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasStartPoint"},{"display_html":"class HasEndPoint seg p | seg -> p where","name":"HasEndPoint endPoint","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:HasEndPoint"},{"display_html":"type family StartPointOf interval","name":"StartPointOf","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:StartPointOf"},{"display_html":"type family EndPointOf interval","name":"EndPointOf","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#t:EndPointOf"},{"display_html":"ordAtY :: (Num r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> lineSegment -> Ordering","name":"ordAtY","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:ordAtY"},{"display_html":"ordAtX :: (Num r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> lineSegment -> Ordering","name":"ordAtX","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:ordAtX"},{"display_html":"xCoordAt :: (Fractional r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> r","name":"xCoordAt","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:xCoordAt"},{"display_html":"yCoordAt :: (Fractional r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> r","name":"yCoordAt","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:yCoordAt"},{"display_html":"orientLR :: forall lineSegment point (d :: Nat) r. (LineSegment_ lineSegment point, Point_ point d r, 1 <= d, Ord r) => lineSegment -> lineSegment","name":"orientLR","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:orientLR"},{"display_html":"orientBT :: forall lineSegment point (d :: Nat) r. (LineSegment_ lineSegment point, Point_ point d r, 2 <= d, Ord r) => lineSegment -> lineSegment","name":"orientBT","module":"HGeometry.LineSegment.Class","link":"hgeometry/kernel/HGeometry-LineSegment-Class.html#v:orientBT"},{"display_html":"class (r ~ NumType matrix, Ixed matrix, IxValue matrix ~ r, Index matrix ~ (Int, Int), HasElements matrix matrix) => Matrix_ matrix (n :: Nat) (m :: Nat) r | matrix -> n, matrix -> m, matrix -> r where","name":"Matrix_ !!* !* !*! *!! column generateMatrix matrixFromRows rows identityMatrix matrixFromList row $dm!!* $dm!* $dm!*! $dm*!! $dmcolumn $dmidentityMatrix $dmmatrixFromList $dmrow","module":"HGeometry.Matrix.Class","link":"hgeometry/kernel/HGeometry-Matrix-Class.html#t:Matrix_"},{"display_html":"class HasElements matrix matrix' where","name":"HasElements elements","module":"HGeometry.Matrix.Class","link":"hgeometry/kernel/HGeometry-Matrix-Class.html#t:HasElements"},{"display_html":"class HasDeterminant (d :: Nat) where","name":"HasDeterminant det","module":"HGeometry.Matrix.Class","link":"hgeometry/kernel/HGeometry-Matrix-Class.html#t:HasDeterminant"},{"display_html":"class Invertible (n :: Nat) where","name":"Invertible inverseMatrix","module":"HGeometry.Matrix.Class","link":"hgeometry/kernel/HGeometry-Matrix-Class.html#t:Invertible"},{"display_html":"newtype Matrix (n :: Nat) (m :: Nat) r = Matrix (Vector n (Vector m r))","name":"Matrix Matrix","module":"HGeometry.Matrix","link":"hgeometry/kernel/HGeometry-Matrix.html#t:Matrix"},{"display_html":"type OptMatrix_ (d :: Nat) r = (Has_ Additive_ d r, Has_ Vector_ d (Vector d r), Ixed (Vector d r), Ixed (Vector d (Vector d r)))","name":"OptMatrix_","module":"HGeometry.Matrix","link":"hgeometry/kernel/HGeometry-Matrix.html#t:OptMatrix_"},{"display_html":"module HGeometry.Matrix.Class","name":"","module":"HGeometry.Matrix","link":"hgeometry/kernel"},{"display_html":"newtype Transformation (d :: Natural) r = Transformation (Matrix (d + 1) (d + 1) r)","name":"Transformation Transformation","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:Transformation"},{"display_html":"transformationMatrix :: forall (d :: Natural) r s p f. (Profunctor p, Functor f) => p (Matrix (d + 1) (d + 1) r) (f (Matrix (d + 1) (d + 1) s)) -> p (Transformation d r) (f (Transformation d s))","name":"transformationMatrix","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:transformationMatrix"},{"display_html":"(|.|) :: forall r (d :: Natural). (Num r, OptMatrix_ (d + 1) r) => Transformation d r -> Transformation d r -> Transformation d r","name":"|.|","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:-124-.-124-"},{"display_html":"identity :: forall r (d :: Natural). (Num r, OptMatrix_ (d + 1) r) => Transformation d r","name":"identity","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:identity"},{"display_html":"inverseOf :: forall r (d :: Natural). (Fractional r, OptMatrix_ (d + 1) r, Invertible (d + 1)) => Transformation d r -> Transformation d r","name":"inverseOf","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:inverseOf"},{"display_html":"class IsTransformable g where","name":"IsTransformable transformBy $dmtransformBy","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:IsTransformable"},{"display_html":"type TransformationConstraints (d :: Nat) r = (KnownNat d, Has_ Vector_ d r, OptMatrix_ (d + 1) r, HasComponents (Vector (d + 1) r) (Vector (d + 1) (Vector (d + 1) r)), Has_ Additive_ (d + 1) r)","name":"TransformationConstraints","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:TransformationConstraints"},{"display_html":"type DefaultTransformByConstraints g (d :: Nat) r = (d ~ Dimension g, r ~ NumType g, OptMatrix_ (d + 1) r, Fractional r, Has_ Additive_ d r, HasComponents (Vector (1 + d) (Vector (1 + d) r)) (Vector (1 + d) r))","name":"DefaultTransformByConstraints","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:DefaultTransformByConstraints"},{"display_html":"type OptMatrix_ (d :: Nat) r = (Has_ Additive_ d r, Has_ Vector_ d (Vector d r), Ixed (Vector d r), Ixed (Vector d (Vector d r)))","name":"OptMatrix_","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#t:OptMatrix_"},{"display_html":"translation :: forall (d :: Nat) r vector. (Num r, Vector_ vector d r, TransformationConstraints d r) => vector -> Transformation d r","name":"translation","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:translation"},{"display_html":"scaling :: forall (d :: Nat) r vector. (Num r, Vector_ vector d r, TransformationConstraints d r) => vector -> Transformation d r","name":"scaling","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:scaling"},{"display_html":"uniformScaling :: forall (d :: Nat) r. (Num r, TransformationConstraints d r) => r -> Transformation d r","name":"uniformScaling","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:uniformScaling"},{"display_html":"translateBy :: (IsTransformable g, Num (NumType g), Vector_ vector (Dimension g) (NumType g), TransformationConstraints (Dimension g) (NumType g)) => vector -> g -> g","name":"translateBy","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:translateBy"},{"display_html":"scaleBy :: (IsTransformable g, Num (NumType g), Vector_ vector (Dimension g) (NumType g), TransformationConstraints (Dimension g) (NumType g)) => vector -> g -> g","name":"scaleBy","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:scaleBy"},{"display_html":"scaleUniformlyBy :: (IsTransformable g, Num (NumType g), TransformationConstraints (Dimension g) (NumType g)) => NumType g -> g -> g","name":"scaleUniformlyBy","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:scaleUniformlyBy"},{"display_html":"rotateTo :: Num r => Vector 3 (Vector 3 r) -> Transformation 3 r","name":"rotateTo","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:rotateTo"},{"display_html":"skewX :: Num r => r -> Transformation 2 r","name":"skewX","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:skewX"},{"display_html":"rotation :: Floating r => r -> Transformation 2 r","name":"rotation","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:rotation"},{"display_html":"reflection :: Floating r => r -> Transformation 2 r","name":"reflection","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:reflection"},{"display_html":"reflectionV :: Num r => Transformation 2 r","name":"reflectionV","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:reflectionV"},{"display_html":"reflectionH :: Num r => Transformation 2 r","name":"reflectionH","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:reflectionH"},{"display_html":"fitToBox :: forall box (d :: Nat) g point r. (NumType g ~ r, Dimension g ~ d, IsTransformable g, IsBoxable g, Box_ box point, Point_ point d r, Ord r, Fractional r, TransformationConstraints d r, Functor (Vector d), Zip (Vector d)) => box -> g -> g","name":"fitToBox","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:fitToBox"},{"display_html":"fitToBoxTransform :: forall box (d :: Nat) g point r. (NumType g ~ r, Dimension g ~ d, IsTransformable g, IsBoxable g, Box_ box point, Point_ point d r, Ord r, Fractional r, TransformationConstraints d r, Functor (Vector d), Zip (Vector d)) => box -> g -> Transformation d r","name":"fitToBoxTransform","module":"HGeometry.Transformation","link":"hgeometry/kernel/HGeometry-Transformation.html#v:fitToBoxTransform"},{"display_html":"data LineSegment (endPoint :: Type -> Type) point where","name":"LineSegment LineSegment ClosedLineSegment OpenLineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:LineSegment"},{"display_html":"type ClosedLineSegment point = LineSegment (EndPoint 'Closed) point","name":"ClosedLineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:ClosedLineSegment"},{"display_html":"type OpenLineSegment point = LineSegment (EndPoint 'Open) point","name":"OpenLineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:OpenLineSegment"},{"display_html":"newtype EndPoint (et :: EndPointType) r where","name":"EndPoint EndPoint OpenE ClosedE","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:EndPoint"},{"display_html":"data AnEndPoint r where","name":"AnEndPoint AnEndPoint AnOpenE AnClosedE","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:AnEndPoint"},{"display_html":"module HGeometry.LineSegment.Class","name":"","module":"HGeometry.LineSegment","link":"hgeometry/kernel"},{"display_html":"spanIn :: forall point (d :: Nat) r (endPoint :: Type -> Type). (Point_ point d r, Ord r, IxValue (endPoint point) ~ point, EndPoint_ (endPoint point)) => Getter point r -> LineSegment endPoint point -> Interval AnEndPoint r","name":"spanIn","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#v:spanIn"},{"display_html":"class IsEndPoint endPoint endPoint => EndPoint_ endPoint where","name":"EndPoint_ endPointType mkEndPoint","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:EndPoint_"},{"display_html":"data LineLineSegmentIntersection lineSegment","name":"LineLineSegmentIntersection Line_x_LineSegment_Point Line_x_LineSegment_LineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:LineLineSegmentIntersection"},{"display_html":"data LineSegmentLineSegmentIntersection lineSegment","name":"LineSegmentLineSegmentIntersection LineSegment_x_LineSegment_Point LineSegment_x_LineSegment_LineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:LineSegmentLineSegmentIntersection"},{"display_html":"data HalfLineLineSegmentIntersection point segment","name":"HalfLineLineSegmentIntersection HalfLine_x_LineSegment_Point HalfLine_x_LineSegment_LineSegment","module":"HGeometry.LineSegment","link":"hgeometry/kernel/HGeometry-LineSegment.html#t:HalfLineLineSegmentIntersection"},{"display_html":"data Ball point where","name":"Ball Ball Disk","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:Ball"},{"display_html":"type Disk = Ball","name":"Disk","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:Disk"},{"display_html":"newtype Sphere point where","name":"Sphere Sphere Circle MkSphere","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:Sphere"},{"display_html":"type Circle = Sphere","name":"Circle","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:Circle"},{"display_html":"_BallSphere :: forall point point' p f. (Profunctor p, Functor f) => p (Sphere point) (f (Sphere point')) -> p (Ball point) (f (Ball point'))","name":"_BallSphere","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#v:_BallSphere"},{"display_html":"_DiskCircle :: forall point point' p f. (Profunctor p, Functor f) => p (Circle point) (f (Circle point')) -> p (Disk point) (f (Disk point'))","name":"_DiskCircle","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#v:_DiskCircle"},{"display_html":"data family IntersectionOf g h","name":"IntersectionOf Line_x_Ball_Point Line_x_Ball_Segment","module":"HGeometry.Ball.CenterAndRadius","link":"hgeometry/kernel/HGeometry-Ball-CenterAndRadius.html#t:IntersectionOf"},{"display_html":"module HGeometry.Ball.CenterAndRadius","name":"","module":"HGeometry.Ball","link":"hgeometry/kernel"},{"display_html":"module HGeometry.Ball.Class","name":"","module":"HGeometry.Ball","link":"hgeometry/kernel"},{"display_html":"newtype Ellipse r = Ellipse (Transformation 2 r)","name":"Ellipse Ellipse","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#t:Ellipse"},{"display_html":"affineTransformation :: forall r s p f. (Profunctor p, Functor f) => p (Transformation 2 r) (f (Transformation 2 s)) -> p (Ellipse r) (f (Ellipse s))","name":"affineTransformation","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:affineTransformation"},{"display_html":"ellipseMatrix :: forall r s p f. (Profunctor p, Functor f) => p (Matrix 3 3 r) (f (Matrix 3 3 s)) -> p (Ellipse r) (f (Ellipse s))","name":"ellipseMatrix","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:ellipseMatrix"},{"display_html":"unitEllipse :: Num r => Ellipse r","name":"unitEllipse","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:unitEllipse"},{"display_html":"circleToEllipse :: (Radical r, Point_ point 2 r) => Circle point -> Ellipse r","name":"circleToEllipse","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:circleToEllipse"},{"display_html":"ellipseToCircle :: (Num r, Eq r) => Ellipse r -> Maybe (Circle (Point 2 r))","name":"ellipseToCircle","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:ellipseToCircle"},{"display_html":"_EllipseCircle :: (Radical r, Eq r) => Prism' (Ellipse r) (Circle (Point 2 r))","name":"_EllipseCircle","module":"HGeometry.Ellipse","link":"hgeometry/kernel/HGeometry-Ellipse.html#v:_EllipseCircle"},{"display_html":"module HGeometry.Box.Class","name":"","module":"HGeometry.Box","link":"hgeometry/kernel"},{"display_html":"data Box point where","name":"Box Box Rectangle","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:Box"},{"display_html":"type Rectangle = Box","name":"Rectangle","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:Rectangle"},{"display_html":"fromExtent :: forall vector (d :: Nat) interval r. (Vector_ vector d interval, ClosedInterval_ interval r, Has_ Additive_ d r, Has_ Vector_ d interval, HasComponents (Vector d interval) (Vector d r)) => vector -> Box (Point d r)","name":"fromExtent","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:fromExtent"},{"display_html":"data Corners a = Corners !a !a !a !a","name":"Corners Corners","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:Corners"},{"display_html":"northWest :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"northWest","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:northWest"},{"display_html":"northEast :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"northEast","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:northEast"},{"display_html":"southEast :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"southEast","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:southEast"},{"display_html":"southWest :: forall a f. Functor f => (a -> f a) -> Corners a -> f (Corners a)","name":"southWest","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:southWest"},{"display_html":"corners :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Corners point","name":"corners","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:corners"},{"display_html":"cornersInDirection :: CardinalDirection -> Corners p -> Vector 2 p","name":"cornersInDirection","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:cornersInDirection"},{"display_html":"data Sides a = Sides !a !a !a !a","name":"Sides Sides","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:Sides"},{"display_html":"north :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"north","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:north"},{"display_html":"east :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"east","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:east"},{"display_html":"south :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"south","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:south"},{"display_html":"west :: forall a f. Functor f => (a -> f a) -> Sides a -> f (Sides a)","name":"west","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:west"},{"display_html":"topSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"topSide","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:topSide"},{"display_html":"bottomSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"bottomSide","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:bottomSide"},{"display_html":"leftSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"leftSide","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:leftSide"},{"display_html":"rightSide :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> ClosedLineSegment point","name":"rightSide","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:rightSide"},{"display_html":"sides :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point)","name":"sides","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:sides"},{"display_html":"sides' :: (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point)","name":"sides'","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:sides-39-"},{"display_html":"sideDirections :: Sides CardinalDirection","name":"sideDirections","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:sideDirections"},{"display_html":"sideValues :: (Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides r","name":"sideValues","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#v:sideValues"},{"display_html":"class IsBoxable g where","name":"IsBoxable boundingBox $dmboundingBox","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:IsBoxable"},{"display_html":"data LineBoxIntersection (d :: Nat) r","name":"LineBoxIntersection Line_x_Box_Point Line_x_Box_LineSegment","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:LineBoxIntersection"},{"display_html":"data HalfLineBoxIntersection point","name":"HalfLineBoxIntersection HalfLine_x_Box_Point HalfLine_x_Box_LineSegment","module":"HGeometry.Box","link":"hgeometry/kernel/HGeometry-Box.html#t:HalfLineBoxIntersection"},{"display_html":"class HasVector point point' where","name":"HasVector vector","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasVector"},{"display_html":"type Point (d :: Nat) r = PointF (Vector d r)","name":"Point","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Point"},{"display_html":"newtype PointF v where","name":"PointF Point Point2 toVec Point1 Point3 Point4","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:PointF"},{"display_html":"class Point_ point d r => ConstructablePoint_ point (d :: Nat) r where","name":"ConstructablePoint_ fromVector","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:ConstructablePoint_"},{"display_html":"origin :: forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point","name":"origin","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:origin"},{"display_html":"class (Additive_ (Vector d r) d r, HasCoordinates point point, d ~ Dimension point, r ~ NumType point) => Affine_ point (d :: Nat) r | point -> d, point -> r where","name":"Affine_ .+^ .-. .-^","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Affine_"},{"display_html":"cmpInDirection :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cmpInDirection"},{"display_html":"class (Affine_ point d r, HasVector point point) => Point_ point (d :: Nat) r where","name":"Point_ coord'","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Point_"},{"display_html":"squaredEuclideanDist :: forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r","name":"squaredEuclideanDist","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:squaredEuclideanDist"},{"display_html":"pattern Point2_ :: Point_ point 2 r => r -> r -> point","name":"Point2_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:Point2_"},{"display_html":"class (Has_ Vector_ (Dimension point) (NumType point), Has_ Vector_ (Dimension point') (NumType point'), HasComponents (Vector (Dimension point') (NumType point)) (Vector (Dimension point') (NumType point')), Dimension point ~ Dimension point', HasVector point point') => HasCoordinates point point' where","name":"HasCoordinates coordinates","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasCoordinates"},{"display_html":"class HasPoints s t point point' | s -> point, t -> point' where","name":"HasPoints allPoints","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasPoints"},{"display_html":"type HasPoints' s point = HasPoints s s point point","name":"HasPoints'","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasPoints-39-"},{"display_html":"pattern Point1_ :: Point_ point 1 r => r -> point","name":"Point1_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:Point1_"},{"display_html":"pattern Point3_ :: Point_ point 3 r => r -> r -> r -> point","name":"Point3_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:Point3_"},{"display_html":"pattern Point4_ :: Point_ point 4 r => r -> r -> r -> r -> point","name":"Point4_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:Point4_"},{"display_html":"coord :: forall (i :: Natural) point (d :: Natural) r. (1 <= i, i <= d, KnownNat i, Point_ point d r) => IndexedLens' Int point r","name":"coord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:coord"},{"display_html":"dCoord :: forall point (d :: Natural) r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"dCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:dCoord"},{"display_html":"pointFromList :: forall point (d :: Nat) r. (ConstructablePoint_ point d r, Vector_ (Vector d r) d r) => [r] -> Maybe point","name":"pointFromList","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:pointFromList"},{"display_html":"wCoord :: forall (d :: Natural) point r. (4 <= d, Point_ point d r) => IndexedLens' Int point r","name":"wCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:wCoord"},{"display_html":"xCoord :: forall (d :: Natural) point r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"xCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:xCoord"},{"display_html":"yCoord :: forall (d :: Natural) point r. (2 <= d, Point_ point d r) => IndexedLens' Int point r","name":"yCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:yCoord"},{"display_html":"zCoord :: forall (d :: Natural) point r. (3 <= d, Point_ point d r) => IndexedLens' Int point r","name":"zCoord","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:zCoord"},{"display_html":"class Metric_ (Vector (Dimension g) (NumType g)) (Dimension g) (NumType g) => HasSquaredEuclideanDistance g where","name":"HasSquaredEuclideanDistance pointClosestTo pointClosestToWithDistance squaredEuclideanDistTo","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasSquaredEuclideanDistance"},{"display_html":"cmpByDistanceTo :: forall r point (d :: Nat) center. (Ord r, Num r, Point_ point d r, Point_ center d r, Metric_ (Vector d r) d r) => center -> point -> point -> Ordering","name":"cmpByDistanceTo","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cmpByDistanceTo"},{"display_html":"euclideanDist :: forall r point (d :: Nat). (Radical r, Point_ point d r, Metric_ (Vector d r) d r) => point -> point -> r","name":"euclideanDist","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:euclideanDist"},{"display_html":"data CCW where","name":"CCW CCW CW CoLinear","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:CCW"},{"display_html":"ccw :: (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW","name":"ccw","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:ccw"},{"display_html":"ccwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"ccwCmpAround","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:ccwCmpAround"},{"display_html":"ccwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"ccwCmpAroundWith","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:ccwCmpAroundWith"},{"display_html":"cwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"cwCmpAround","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cwCmpAround"},{"display_html":"cwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"cwCmpAroundWith","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cwCmpAroundWith"},{"display_html":"insertIntoCyclicOrder :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> CList point -> CList point","name":"insertIntoCyclicOrder","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:insertIntoCyclicOrder"},{"display_html":"isCoLinear :: (Point_ point 2 r, Num r, Eq r) => point -> point -> point -> Bool","name":"isCoLinear","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:isCoLinear"},{"display_html":"sortAround :: (Point_ center 2 r, Point_ point 2 r, Num r, Ord r) => center -> [point] -> [point]","name":"sortAround","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:sortAround"},{"display_html":"data Quadrant","name":"Quadrant BottomLeft BottomRight TopLeft TopRight","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Quadrant"},{"display_html":"partitionIntoQuadrants :: (Ord r, Point_ point 2 r) => point -> [point] -> ([point], [point], [point], [point])","name":"partitionIntoQuadrants","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:partitionIntoQuadrants"},{"display_html":"quadrant :: (Ord r, Num r, ConstructablePoint_ point 2 r) => point -> Quadrant","name":"quadrant","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:quadrant"},{"display_html":"quadrantWith :: (Ord r, Point_ point 2 r) => point -> point -> Quadrant","name":"quadrantWith","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:quadrantWith"},{"display_html":"asPoint :: forall point (d :: Nat) r. Point_ point d r => Lens' point (Point d r)","name":"asPoint","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:asPoint"},{"display_html":"projectPoint :: forall (i :: Nat) point (d :: Nat) r. (Point_ point d r, i <= d, Has_ Vector_ i r) => point -> Point i r","name":"projectPoint","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:projectPoint"},{"display_html":"generate :: forall vector (d :: Nat) r. Vector_ vector d r => (Int -> r) -> vector","name":"generate","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:generate"},{"display_html":"unit :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => vector","name":"unit","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:unit"},{"display_html":"data family Vector (d :: Nat) r","name":"Vector Vector3 MkVector1 MkVector2 MkVector3 MkVector4 Vector1 Vector2 Vector4","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Vector"},{"display_html":"head :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"head","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:head"},{"display_html":"uncons :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, 0 <= ((d + 1) - 1), d <= Dimension vector) => vector -> (r, vector')","name":"uncons","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:uncons"},{"display_html":"unsnoc :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, d <= ((d + 1) - 1), d <= Dimension vector) => vector -> (vector', r)","name":"unsnoc","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:unsnoc"},{"display_html":"last :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"last","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:last"},{"display_html":"cons :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => r -> vector -> vector'","name":"cons","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cons"},{"display_html":"snoc :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => vector -> r -> vector'","name":"snoc","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:snoc"},{"display_html":"class HasComponents vector vector' where","name":"HasComponents components","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:HasComponents"},{"display_html":"zero :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector","name":"zero","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:zero"},{"display_html":"class Additive_ vector d r => Metric_ vector (d :: Nat) r where","name":"Metric_ dot norm qd quadrance signorm","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Metric_"},{"display_html":"prefix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"prefix","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:prefix"},{"display_html":"component :: forall (i :: Natural) vector r (d :: Natural). (i <= (d - 1), KnownNat i, Vector_ vector d r) => IndexedLens' Int vector r","name":"component","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:component"},{"display_html":"negated :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> vector","name":"negated","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:negated"},{"display_html":"(*^) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => r -> vector -> vector","name":"*^","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-42--94-"},{"display_html":"(^*) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> r -> vector","name":"^*","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-94--42-"},{"display_html":"(^/) :: forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector","name":"^/","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-94--47-"},{"display_html":"basis :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => [vector]","name":"basis","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:basis"},{"display_html":"sumV :: forall f vector (d :: Nat) r. (Foldable f, Additive_ vector d r, Num r) => f vector -> vector","name":"sumV","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:sumV"},{"display_html":"(^+^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^+^","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-94--43--94-"},{"display_html":"(^-^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^-^","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:-94--45--94-"},{"display_html":"lerp :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => r -> vector -> vector -> vector","name":"lerp","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:lerp"},{"display_html":"liftI2 :: forall vector (d :: Nat) r. Additive_ vector d r => (r -> r -> r) -> vector -> vector -> vector","name":"liftI2","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:liftI2"},{"display_html":"class Vector_ vector d r => Additive_ vector (d :: Nat) r where","name":"Additive_ liftU2 liftI2A","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Additive_"},{"display_html":"cross :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r","name":"cross","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:cross"},{"display_html":"type Has_ (c :: Type -> Nat -> Type -> k) (d :: Nat) r = c (Vector d r) d r","name":"Has_","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Has_"},{"display_html":"class (HasComponents vector vector, AsVector_ vector vector d r r, KnownNat d) => Vector_ vector (d :: Nat) r where","name":"Vector_ generateA component'","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:Vector_"},{"display_html":"class (r ~ IxValue vector, s ~ IxValue vector', d ~ Dimension vector, d ~ Dimension vector') => AsVector_ vector vector' (d :: Nat) r s | vector -> d, vector -> r, vector' -> s where","name":"AsVector_ _Vector","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#t:AsVector_"},{"display_html":"foldMapZip :: forall vector (d :: Nat) r m. (Additive_ vector d r, Semigroup m) => (r -> r -> m) -> vector -> vector -> m","name":"foldMapZip","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:foldMapZip"},{"display_html":"suffix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"suffix","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:suffix"},{"display_html":"vectorFromList :: forall vector (d :: Nat) r. Vector_ vector d r => [r] -> Maybe vector","name":"vectorFromList","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:vectorFromList"},{"display_html":"wComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 4 <= d) => IndexedLens' Int vector r","name":"wComponent","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:wComponent"},{"display_html":"xComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"xComponent","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:xComponent"},{"display_html":"yComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 2 <= d) => IndexedLens' Int vector r","name":"yComponent","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:yComponent"},{"display_html":"zComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 3 <= d) => IndexedLens' Int vector r","name":"zComponent","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:zComponent"},{"display_html":"isScalarMultipleOf :: forall r vector (d :: Nat). (Eq r, Num r, Metric_ vector d r) => vector -> vector -> Bool","name":"isScalarMultipleOf","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:isScalarMultipleOf"},{"display_html":"sameDirection :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r, Eq r) => vector -> vector -> Bool","name":"sameDirection","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:sameDirection"},{"display_html":"scalarMultiple :: forall r vector (d :: Nat). (Eq r, Fractional r, Additive_ vector d r) => vector -> vector -> Maybe r","name":"scalarMultiple","module":"HGeometry.Kernel","link":"hgeometry/kernel/HGeometry-Kernel.html#v:scalarMultiple"},{"display_html":"module HGeometry.Line","name":"","module":"HGeometry.Kernel","link":"hgeometry/kernel"},{"display_html":"module HGeometry.LineSegment","name":"","module":"HGeometry.Kernel","link":"hgeometry/kernel"},{"display_html":"module HGeometry.Box","name":"","module":"HGeometry.Kernel","link":"hgeometry/kernel"},{"display_html":"class Point_ point (Dimension point) (NumType point) => Triangle_ triangle point | triangle -> point where","name":"Triangle_ corners mkTriangle","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#t:Triangle_"},{"display_html":"pattern Triangle_ :: Triangle_ triangle point => point -> point -> point -> triangle","name":"Triangle_","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:Triangle_"},{"display_html":"toCounterClockwiseTriangle :: (Num r, Eq r, Point_ point 2 r, Triangle_ triangle point) => triangle -> triangle","name":"toCounterClockwiseTriangle","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:toCounterClockwiseTriangle"},{"display_html":"triangleSignedArea2X :: (Num r, Point_ point 2 r, Triangle_ triangle point) => triangle -> r","name":"triangleSignedArea2X","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:triangleSignedArea2X"},{"display_html":"intersectingHalfPlanes :: (Triangle_ triangle point, Point_ point 2 r, Num r, Ord r) => triangle -> Vector 3 (HalfSpaceF (LinePV 2 r))","name":"intersectingHalfPlanes","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:intersectingHalfPlanes"},{"display_html":"toBarricentric :: (Fractional r, Point_ point 2 r, Triangle_ triangle point) => point -> triangle -> Vector 3 r","name":"toBarricentric","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:toBarricentric"},{"display_html":"fromBarricentric :: forall triangle point (d :: Nat) r. (Triangle_ triangle point, Point_ point d r, Num r) => Vector 3 r -> triangle -> Point d r","name":"fromBarricentric","module":"HGeometry.Triangle.Class","link":"hgeometry/kernel/HGeometry-Triangle-Class.html#v:fromBarricentric"},{"display_html":"data Triangle point where","name":"Triangle Triangle","module":"HGeometry.Triangle","link":"hgeometry/kernel/HGeometry-Triangle.html#t:Triangle"},{"display_html":"module HGeometry.Triangle.Class","name":"","module":"HGeometry.Triangle","link":"hgeometry/kernel"},{"display_html":"data Viewport r = Viewport (Rectangle (Point 2 r)) (Transformation 2 r)","name":"Viewport Viewport","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#t:Viewport"},{"display_html":"mkViewport :: (Rectangle_ rectangle point, Point_ point 2 r, Fractional r) => rectangle -> Transformation 2 r -> Viewport r","name":"mkViewport","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:mkViewport"},{"display_html":"viewPort :: forall r f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r))) -> Viewport r -> f (Viewport r)","name":"viewPort","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:viewPort"},{"display_html":"worldToHost :: forall r f. Functor f => (Transformation 2 r -> f (Transformation 2 r)) -> Viewport r -> f (Viewport r)","name":"worldToHost","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:worldToHost"},{"display_html":"hostToWorld :: Fractional r => Getter (Viewport r) (Transformation 2 r)","name":"hostToWorld","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:hostToWorld"},{"display_html":"toWorldIn :: (IsTransformable g, NumType g ~ r, Dimension g ~ 2, Fractional r) => Viewport r -> g -> g","name":"toWorldIn","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:toWorldIn"},{"display_html":"toHostFrom :: (IsTransformable g, NumType g ~ r, Dimension g ~ 2, Num r) => Viewport r -> g -> g","name":"toHostFrom","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:toHostFrom"},{"display_html":"fromSize :: (Num r, Vector_ vector 2 r) => vector -> Viewport r","name":"fromSize","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:fromSize"},{"display_html":"flipY :: (Num r, Vector_ vector 2 r) => vector -> Viewport r","name":"flipY","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:flipY"},{"display_html":"centeredOrigin :: (Fractional r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Viewport r","name":"centeredOrigin","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:centeredOrigin"},{"display_html":"alignedOrigin :: Num r => Rectangle (Point 2 r) -> Viewport r","name":"alignedOrigin","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:alignedOrigin"},{"display_html":"wrtCenter :: Fractional r => Viewport r -> Transformation 2 r -> Transformation 2 r","name":"wrtCenter","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:wrtCenter"},{"display_html":"data ZoomConfig r = ZoomConfig (ClosedInterval r) r","name":"ZoomConfig ZoomConfig","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#t:ZoomConfig"},{"display_html":"range :: forall r f. Functor f => (ClosedInterval r -> f (ClosedInterval r)) -> ZoomConfig r -> f (ZoomConfig r)","name":"range","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:range"},{"display_html":"currentLevel :: Ord r => Lens' (ZoomConfig r) r","name":"currentLevel","module":"HGeometry.Viewport","link":"hgeometry/kernel/HGeometry-Viewport.html#v:currentLevel"},{"display_html":"isValidInterval :: (Eq (endPoint r), Ord r, IxValue (endPoint r) ~ r, EndPoint_ (endPoint r)) => endPoint r -> endPoint r -> Bool","name":"isValidInterval","module":"HGeometry.Kernel.Instances","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Instances.html#v:isValidInterval"},{"display_html":"bothClosed :: forall {k} endPoint (r :: k). EndPoint_ (endPoint r) => endPoint r -> endPoint r -> Bool","name":"bothClosed","module":"HGeometry.Kernel.Instances","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Instances.html#v:bothClosed"},{"display_html":"implies :: Bool -> Bool -> Bool","name":"implies","module":"HGeometry.Kernel.Instances","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Instances.html#v:implies"},{"display_html":"arbitraryPointInBoundingBox :: Rectangle (Point 2 Rational) -> Gen (Point 2 Rational)","name":"arbitraryPointInBoundingBox","module":"HGeometry.Kernel.Test.Box","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Test-Box.html#v:arbitraryPointInBoundingBox"},{"display_html":"newtype ZeroToOne = ZeroToOne Rational","name":"ZeroToOne ZeroToOne","module":"HGeometry.Kernel.Test.Box","link":"hgeometry/kernel-quickcheck/HGeometry-Kernel-Test-Box.html#t:ZeroToOne"},{"display_html":"data WheelDirection","name":"WheelDirection Down Up","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#t:WheelDirection"},{"display_html":"onWheel :: (WheelDirection -> action) -> Attribute action","name":"onWheel","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onWheel"},{"display_html":"data Button","name":"Button LeftButton MiddleButton RightButton","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#t:Button"},{"display_html":"onClickWithButton :: (Button -> action) -> Attribute action","name":"onClickWithButton","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onClickWithButton"},{"display_html":"onRightClick :: action -> Attribute action","name":"onRightClick","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onRightClick"},{"display_html":"onContextMenu :: action -> Attribute action","name":"onContextMenu","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onContextMenu"},{"display_html":"onTouchStart :: action -> Attribute action","name":"onTouchStart","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onTouchStart"},{"display_html":"onTouchMove :: action -> Attribute action","name":"onTouchMove","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onTouchMove"},{"display_html":"onTouchEnd :: action -> Attribute action","name":"onTouchEnd","module":"HGeometry.Miso.Event.Extra","link":"hgeometry/miso/HGeometry-Miso-Event-Extra.html#v:onTouchEnd"},{"display_html":"getBoundingClientRect :: JSVal -> JSM JSVal","name":"getBoundingClientRect","module":"HGeometry.Miso.FFI.Extra","link":"hgeometry/miso/HGeometry-Miso-FFI-Extra.html#v:getBoundingClientRect"},{"display_html":"onMouseEnterAt :: (Point 2 Int -> action) -> Attribute action","name":"onMouseEnterAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onMouseEnterAt"},{"display_html":"onMouseMoveAt :: (Point 2 Int -> action) -> Attribute action","name":"onMouseMoveAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onMouseMoveAt"},{"display_html":"onMouseClickAt :: (Point 2 Int -> action) -> Attribute action","name":"onMouseClickAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onMouseClickAt"},{"display_html":"onTouchStartAt :: (Point 2 Int -> action) -> Attribute action","name":"onTouchStartAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onTouchStartAt"},{"display_html":"onTouchMoveAt :: (Point 2 Int -> action) -> Attribute action","name":"onTouchMoveAt","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onTouchMoveAt"},{"display_html":"onTouchEnd :: action -> Attribute action","name":"onTouchEnd","module":"HGeometry.Miso.Subscription.MouseExtra","link":"hgeometry/miso/HGeometry-Miso-Subscription-MouseExtra.html#v:onTouchEnd"},{"display_html":"renderOutputToFile :: forall f g face point r (coloured :: Coloured). (Foldable1 f, Foldable1 g, Foldable1 face, Point_ point 3 r, Show r, RenderVtxColour coloured) => OsPath -> f (Int, point :+ VertexAttributes coloured) -> g (face Int) -> IO ()","name":"renderOutputToFile","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#v:renderOutputToFile"},{"display_html":"renderOutput :: forall f g face point r (coloured :: Coloured). (Foldable1 f, Foldable1 g, Foldable1 face, Point_ point 3 r, Show r, RenderVtxColour coloured) => f (Int, point :+ VertexAttributes coloured) -> g (face Int) -> ByteString","name":"renderOutput","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#v:renderOutput"},{"display_html":"data Coloured","name":"Coloured Coloured NotColoured","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#t:Coloured"},{"display_html":"newtype VertexAttributes (coloured :: Coloured) = VertexAttributes (VtxColour coloured)","name":"VertexAttributes VertexAttributes","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#t:VertexAttributes"},{"display_html":"vtxColour :: forall (coloured1 :: Coloured) (coloured2 :: Coloured) p f. (Profunctor p, Functor f) => p (VtxColour coloured1) (f (VtxColour coloured2)) -> p (VertexAttributes coloured1) (f (VertexAttributes coloured2))","name":"vtxColour","module":"PLY.Writer","link":"hgeometry/ply-writer/PLY-Writer.html#v:vtxColour"},{"display_html":"class HasVector point point' where","name":"HasVector vector","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:HasVector"},{"display_html":"class (Has_ Vector_ (Dimension point) (NumType point), Has_ Vector_ (Dimension point') (NumType point'), HasComponents (Vector (Dimension point') (NumType point)) (Vector (Dimension point') (NumType point')), Dimension point ~ Dimension point', HasVector point point') => HasCoordinates point point' where","name":"HasCoordinates coordinates $dmcoordinates","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:HasCoordinates"},{"display_html":"class (Additive_ (Vector d r) d r, HasCoordinates point point, d ~ Dimension point, r ~ NumType point) => Affine_ point (d :: Nat) r | point -> d, point -> r where","name":"Affine_ .+^ .-. .-^ $dm.+^ $dm.-. $dm.-^","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:Affine_"},{"display_html":"class (Affine_ point d r, HasVector point point) => Point_ point (d :: Nat) r where","name":"Point_ coord' $dmcoord'","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:Point_"},{"display_html":"pattern Point1_ :: Point_ point 1 r => r -> point","name":"Point1_","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:Point1_"},{"display_html":"pattern Point2_ :: Point_ point 2 r => r -> r -> point","name":"Point2_","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:Point2_"},{"display_html":"pattern Point3_ :: Point_ point 3 r => r -> r -> r -> point","name":"Point3_","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:Point3_"},{"display_html":"pattern Point4_ :: Point_ point 4 r => r -> r -> r -> r -> point","name":"Point4_","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:Point4_"},{"display_html":"class Point_ point d r => ConstructablePoint_ point (d :: Nat) r where","name":"ConstructablePoint_ fromVector","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:ConstructablePoint_"},{"display_html":"origin :: forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point","name":"origin","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:origin"},{"display_html":"pointFromList :: forall point (d :: Nat) r. (ConstructablePoint_ point d r, Vector_ (Vector d r) d r) => [r] -> Maybe point","name":"pointFromList","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:pointFromList"},{"display_html":"coord :: forall (i :: Natural) point (d :: Natural) r. (1 <= i, i <= d, KnownNat i, Point_ point d r) => IndexedLens' Int point r","name":"coord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:coord"},{"display_html":"xCoord :: forall (d :: Natural) point r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"xCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:xCoord"},{"display_html":"yCoord :: forall (d :: Natural) point r. (2 <= d, Point_ point d r) => IndexedLens' Int point r","name":"yCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:yCoord"},{"display_html":"zCoord :: forall (d :: Natural) point r. (3 <= d, Point_ point d r) => IndexedLens' Int point r","name":"zCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:zCoord"},{"display_html":"wCoord :: forall (d :: Natural) point r. (4 <= d, Point_ point d r) => IndexedLens' Int point r","name":"wCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:wCoord"},{"display_html":"dCoord :: forall point (d :: Natural) r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"dCoord","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#v:dCoord"},{"display_html":"class HasPoints s t point point' | s -> point, t -> point' where","name":"HasPoints allPoints","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:HasPoints"},{"display_html":"type HasPoints' s point = HasPoints s s point point","name":"HasPoints'","module":"HGeometry.Point.Class","link":"hgeometry/point/HGeometry-Point-Class.html#t:HasPoints-39-"},{"display_html":"data OriginalOrExtra orig extra","name":"OriginalOrExtra Original Extra","module":"HGeometry.Point.Either","link":"hgeometry/point/HGeometry-Point-Either.html#t:OriginalOrExtra"},{"display_html":"newtype PointF v = Point {}","name":"PointF Point toVec","module":"HGeometry.Point.PointF","link":"hgeometry/point/HGeometry-Point-PointF.html#t:PointF"},{"display_html":"cmpByDistanceTo :: forall r point (d :: Nat) center. (Ord r, Num r, Point_ point d r, Point_ center d r, Metric_ (Vector d r) d r) => center -> point -> point -> Ordering","name":"cmpByDistanceTo","module":"HGeometry.Point.EuclideanDistance","link":"hgeometry/point/HGeometry-Point-EuclideanDistance.html#v:cmpByDistanceTo"},{"display_html":"squaredEuclideanDist :: forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r","name":"squaredEuclideanDist","module":"HGeometry.Point.EuclideanDistance","link":"hgeometry/point/HGeometry-Point-EuclideanDistance.html#v:squaredEuclideanDist"},{"display_html":"euclideanDist :: forall r point (d :: Nat). (Radical r, Point_ point d r, Metric_ (Vector d r) d r) => point -> point -> r","name":"euclideanDist","module":"HGeometry.Point.EuclideanDistance","link":"hgeometry/point/HGeometry-Point-EuclideanDistance.html#v:euclideanDist"},{"display_html":"class Metric_ (Vector (Dimension g) (NumType g)) (Dimension g) (NumType g) => HasSquaredEuclideanDistance g where","name":"HasSquaredEuclideanDistance pointClosestToWithDistance pointClosestTo squaredEuclideanDistTo $dmpointClosestToWithDistance $dmpointClosestTo $dmsquaredEuclideanDistTo","module":"HGeometry.Point.EuclideanDistance","link":"hgeometry/point/HGeometry-Point-EuclideanDistance.html#t:HasSquaredEuclideanDistance"},{"display_html":"data CCW where","name":"CCW CCW CW CoLinear","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#t:CCW"},{"display_html":"ccw :: (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW","name":"ccw","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:ccw"},{"display_html":"isCoLinear :: (Point_ point 2 r, Num r, Eq r) => point -> point -> point -> Bool","name":"isCoLinear","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:isCoLinear"},{"display_html":"sortAround :: (Point_ center 2 r, Point_ point 2 r, Num r, Ord r) => center -> [point] -> [point]","name":"sortAround","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:sortAround"},{"display_html":"ccwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"ccwCmpAroundWith","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:ccwCmpAroundWith"},{"display_html":"cwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"cwCmpAroundWith","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:cwCmpAroundWith"},{"display_html":"ccwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"ccwCmpAround","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:ccwCmpAround"},{"display_html":"cwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"cwCmpAround","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:cwCmpAround"},{"display_html":"insertIntoCyclicOrder :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> CList point -> CList point","name":"insertIntoCyclicOrder","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:insertIntoCyclicOrder"},{"display_html":"cmpInDirection :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry.Point.Orientation","link":"hgeometry/point/HGeometry-Point-Orientation.html#v:cmpInDirection"},{"display_html":"type Point (d :: Nat) r = PointF (Vector d r)","name":"Point","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:Point"},{"display_html":"newtype PointF v where","name":"PointF Point toVec Point1 Point2 Point3 Point4","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:PointF"},{"display_html":"class (Affine_ point d r, HasVector point point) => Point_ point (d :: Nat) r where","name":"Point_ coord' $dmcoord'","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:Point_"},{"display_html":"pattern Point1_ :: Point_ point 1 r => r -> point","name":"Point1_","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:Point1_"},{"display_html":"pattern Point2_ :: Point_ point 2 r => r -> r -> point","name":"Point2_","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:Point2_"},{"display_html":"pattern Point3_ :: Point_ point 3 r => r -> r -> r -> point","name":"Point3_","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:Point3_"},{"display_html":"pattern Point4_ :: Point_ point 4 r => r -> r -> r -> r -> point","name":"Point4_","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:Point4_"},{"display_html":"class Point_ point d r => ConstructablePoint_ point (d :: Nat) r where","name":"ConstructablePoint_ fromVector","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:ConstructablePoint_"},{"display_html":"class HasVector point point' where","name":"HasVector vector","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasVector"},{"display_html":"class (Has_ Vector_ (Dimension point) (NumType point), Has_ Vector_ (Dimension point') (NumType point'), HasComponents (Vector (Dimension point') (NumType point)) (Vector (Dimension point') (NumType point')), Dimension point ~ Dimension point', HasVector point point') => HasCoordinates point point' where","name":"HasCoordinates coordinates $dmcoordinates","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasCoordinates"},{"display_html":"asPoint :: forall point (d :: Nat) r. Point_ point d r => Lens' point (Point d r)","name":"asPoint","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:asPoint"},{"display_html":"origin :: forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point","name":"origin","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:origin"},{"display_html":"pointFromList :: forall point (d :: Nat) r. (ConstructablePoint_ point d r, Vector_ (Vector d r) d r) => [r] -> Maybe point","name":"pointFromList","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:pointFromList"},{"display_html":"coord :: forall (i :: Natural) point (d :: Natural) r. (1 <= i, i <= d, KnownNat i, Point_ point d r) => IndexedLens' Int point r","name":"coord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:coord"},{"display_html":"xCoord :: forall (d :: Natural) point r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"xCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:xCoord"},{"display_html":"yCoord :: forall (d :: Natural) point r. (2 <= d, Point_ point d r) => IndexedLens' Int point r","name":"yCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:yCoord"},{"display_html":"zCoord :: forall (d :: Natural) point r. (3 <= d, Point_ point d r) => IndexedLens' Int point r","name":"zCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:zCoord"},{"display_html":"wCoord :: forall (d :: Natural) point r. (4 <= d, Point_ point d r) => IndexedLens' Int point r","name":"wCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:wCoord"},{"display_html":"dCoord :: forall point (d :: Natural) r. (1 <= d, Point_ point d r) => IndexedLens' Int point r","name":"dCoord","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:dCoord"},{"display_html":"projectPoint :: forall (i :: Nat) point (d :: Nat) r. (Point_ point d r, i <= d, Has_ Vector_ i r) => point -> Point i r","name":"projectPoint","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:projectPoint"},{"display_html":"class (Additive_ (Vector d r) d r, HasCoordinates point point, d ~ Dimension point, r ~ NumType point) => Affine_ point (d :: Nat) r | point -> d, point -> r where","name":"Affine_ .+^ .-. .-^ $dm.+^ $dm.-. $dm.-^","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:Affine_"},{"display_html":"data CCW where","name":"CCW CCW CW CoLinear","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:CCW"},{"display_html":"ccw :: (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW","name":"ccw","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:ccw"},{"display_html":"isCoLinear :: (Point_ point 2 r, Num r, Eq r) => point -> point -> point -> Bool","name":"isCoLinear","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:isCoLinear"},{"display_html":"ccwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"ccwCmpAround","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:ccwCmpAround"},{"display_html":"cwCmpAround :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering","name":"cwCmpAround","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:cwCmpAround"},{"display_html":"ccwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"ccwCmpAroundWith","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:ccwCmpAroundWith"},{"display_html":"cwCmpAroundWith :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering","name":"cwCmpAroundWith","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:cwCmpAroundWith"},{"display_html":"sortAround :: (Point_ center 2 r, Point_ point 2 r, Num r, Ord r) => center -> [point] -> [point]","name":"sortAround","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:sortAround"},{"display_html":"insertIntoCyclicOrder :: (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> CList point -> CList point","name":"insertIntoCyclicOrder","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:insertIntoCyclicOrder"},{"display_html":"data Quadrant","name":"Quadrant TopRight TopLeft BottomLeft BottomRight","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:Quadrant"},{"display_html":"quadrantWith :: (Ord r, Point_ point 2 r) => point -> point -> Quadrant","name":"quadrantWith","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:quadrantWith"},{"display_html":"quadrant :: (Ord r, Num r, ConstructablePoint_ point 2 r) => point -> Quadrant","name":"quadrant","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:quadrant"},{"display_html":"partitionIntoQuadrants :: (Ord r, Point_ point 2 r) => point -> [point] -> ([point], [point], [point], [point])","name":"partitionIntoQuadrants","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:partitionIntoQuadrants"},{"display_html":"cmpByDistanceTo :: forall r point (d :: Nat) center. (Ord r, Num r, Point_ point d r, Point_ center d r, Metric_ (Vector d r) d r) => center -> point -> point -> Ordering","name":"cmpByDistanceTo","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:cmpByDistanceTo"},{"display_html":"cmpInDirection :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering","name":"cmpInDirection","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:cmpInDirection"},{"display_html":"squaredEuclideanDist :: forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r","name":"squaredEuclideanDist","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:squaredEuclideanDist"},{"display_html":"euclideanDist :: forall r point (d :: Nat). (Radical r, Point_ point d r, Metric_ (Vector d r) d r) => point -> point -> r","name":"euclideanDist","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#v:euclideanDist"},{"display_html":"class Metric_ (Vector (Dimension g) (NumType g)) (Dimension g) (NumType g) => HasSquaredEuclideanDistance g where","name":"HasSquaredEuclideanDistance pointClosestToWithDistance pointClosestTo squaredEuclideanDistTo $dmpointClosestToWithDistance $dmpointClosestTo $dmsquaredEuclideanDistTo","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasSquaredEuclideanDistance"},{"display_html":"class HasPoints s t point point' | s -> point, t -> point' where","name":"HasPoints allPoints","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasPoints"},{"display_html":"type HasPoints' s point = HasPoints s s point point","name":"HasPoints'","module":"HGeometry.Point","link":"hgeometry/point/HGeometry-Point.html#t:HasPoints-39-"},{"display_html":"arbitraryPlaneGraph :: forall {k} proxy (s :: k) r. (Ord r, Fractional r, Arbitrary r, Show r) => proxy s -> Gen (CPlaneGraph s (Point 2 r) () ())","name":"arbitraryPlaneGraph","module":"HGeometry.PlaneGraph.Instances","link":"hgeometry/quickcheck/HGeometry-PlaneGraph-Instances.html#v:arbitraryPlaneGraph"},{"display_html":"data QuickCheckWorld","name":"QuickCheckWorld","module":"HGeometry.PlaneGraph.Instances","link":"hgeometry/quickcheck/HGeometry-PlaneGraph-Instances.html#t:QuickCheckWorld"},{"display_html":"allSimplePolygons :: [SimplePolygon (Point 2 Double)]","name":"allSimplePolygons","module":"HGeometry.Polygon.Instances","link":"hgeometry/quickcheck/HGeometry-Polygon-Instances.html#v:allSimplePolygons"},{"display_html":"shrinkPolygon :: (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)]","name":"shrinkPolygon","module":"HGeometry.Polygon.Instances","link":"hgeometry/quickcheck/HGeometry-Polygon-Instances.html#v:shrinkPolygon"},{"display_html":"data ZoomDirection","name":"ZoomDirection ZoomIn ZoomOut","module":"HGeometry.Miso.Canvas.Zoom","link":"hgeometry/svg/HGeometry-Miso-Canvas-Zoom.html#t:ZoomDirection"},{"display_html":"class HasZoomLevel canvas r | canvas -> r where","name":"HasZoomLevel zoomLevel","module":"HGeometry.Miso.Canvas.Zoom","link":"hgeometry/svg/HGeometry-Miso-Canvas-Zoom.html#t:HasZoomLevel"},{"display_html":"newtype ZoomAction = ZoomAction ZoomDirection","name":"ZoomAction ZoomAction","module":"HGeometry.Miso.Canvas.Zoom","link":"hgeometry/svg/HGeometry-Miso-Canvas-Zoom.html#t:ZoomAction"},{"display_html":"update :: (Fractional r, Ord r, HasZoomLevel canvas r) => canvas -> ZoomAction -> Effect action canvas","name":"update","module":"HGeometry.Miso.Canvas.Zoom","link":"hgeometry/svg/HGeometry-Miso-Canvas-Zoom.html#v:update"},{"display_html":"renderSvgToFile :: OsPath -> View action -> IO ()","name":"renderSvgToFile","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:renderSvgToFile"},{"display_html":"renderAsSvgText :: View action -> Text","name":"renderAsSvgText","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:renderAsSvgText"},{"display_html":"renderAsSvgByteString :: View action -> ByteString","name":"renderAsSvgByteString","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:renderAsSvgByteString"},{"display_html":"withAts :: ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> View action","name":"withAts","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:withAts"},{"display_html":"withAts' :: ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> [View action] -> View action","name":"withAts'","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:withAts-39-"},{"display_html":"class Drawable t where","name":"Drawable draw drawWith $dmdraw $dmdrawWith","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#t:Drawable"},{"display_html":"dPoint :: (Point_ point 2 r, ToMisoString r) => point -> [Attribute action] -> View action","name":"dPoint","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dPoint"},{"display_html":"dLineSegment :: (LineSegment_ lineSegment point, Point_ point 2 r, ToMisoString r) => lineSegment -> [Attribute action] -> View action","name":"dLineSegment","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dLineSegment"},{"display_html":"dRectangle :: (Rectangle_ rectangle point, Point_ point 2 r, ToMisoString r, Num r) => rectangle -> [Attribute action] -> View action","name":"dRectangle","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dRectangle"},{"display_html":"dCircle :: (Point_ point 2 r, ToMisoString r) => Circle point -> [Attribute action] -> View action","name":"dCircle","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dCircle"},{"display_html":"dDisk :: (Disk_ disk point, Point_ point 2 r, ToMisoString r, Floating r) => disk -> [Attribute action] -> View action","name":"dDisk","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dDisk"},{"display_html":"dPolyLine :: (PolyLine_ polyLine point, Point_ point 2 r, ToMisoString r) => polyLine -> [Attribute action] -> View action","name":"dPolyLine","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dPolyLine"},{"display_html":"dSimplePolygon :: (SimplePolygon_ simplePolygon point r, ToMisoString r) => simplePolygon -> [Attribute action] -> View action","name":"dSimplePolygon","module":"HGeometry.Miso.Svg","link":"hgeometry/svg/HGeometry-Miso-Svg.html#v:dSimplePolygon"},{"display_html":"module HGeometry.Miso.Svg","name":"","module":"HGeometry.Svg","link":"hgeometry/svg"},{"display_html":"data StaticCanvas r","name":"StaticCanvas","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#t:StaticCanvas"},{"display_html":"staticCanvas :: Num r => Int -> Int -> StaticCanvas r","name":"staticCanvas","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#v:staticCanvas"},{"display_html":"class HasDimensions s a | s -> a where","name":"HasDimensions dimensions","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#t:HasDimensions"},{"display_html":"staticCanvas_ :: (RealFrac r, ToSvgCoordinate r) => StaticCanvas r -> [Attribute action] -> [View action] -> View action","name":"staticCanvas_","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#v:staticCanvas_"},{"display_html":"type ToSvgCoordinate = ToMisoString","name":"ToSvgCoordinate","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#t:ToSvgCoordinate"},{"display_html":"matrixToMisoString :: ToSvgCoordinate r => Matrix 3 3 r -> MisoString","name":"matrixToMisoString","module":"HGeometry.Miso.Svg.StaticCanvas","link":"hgeometry/svg/HGeometry-Miso-Svg-StaticCanvas.html#v:matrixToMisoString"},{"display_html":"data Canvas r","name":"Canvas","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#t:Canvas"},{"display_html":"theViewport :: forall r s f. Functor f => (Viewport r -> f (Viewport s)) -> Canvas r -> f (Canvas s)","name":"theViewport","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:theViewport"},{"display_html":"blankCanvas :: Num r => Int -> Int -> Canvas r","name":"blankCanvas","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:blankCanvas"},{"display_html":"class HasDimensions s a | s -> a where","name":"HasDimensions dimensions","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#t:HasDimensions"},{"display_html":"class HasMousePosition s a | s -> a where","name":"HasMousePosition mousePosition","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#t:HasMousePosition"},{"display_html":"mouseCoordinates :: Fractional r => Getter (Canvas r) (Maybe (Point 2 r))","name":"mouseCoordinates","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:mouseCoordinates"},{"display_html":"data InternalCanvasAction","name":"InternalCanvasAction","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#t:InternalCanvasAction"},{"display_html":"handleInternalCanvasAction :: Canvas r -> InternalCanvasAction -> Effect action (Canvas r)","name":"handleInternalCanvasAction","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:handleInternalCanvasAction"},{"display_html":"withCanvasEvents :: Map MisoString Bool -> Map MisoString Bool","name":"withCanvasEvents","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:withCanvasEvents"},{"display_html":"svgCanvas_ :: (RealFrac r, ToSvgCoordinate r) => Canvas r -> [Attribute action] -> [View action] -> View (Either InternalCanvasAction action)","name":"svgCanvas_","module":"HGeometry.Miso.Svg.Canvas","link":"hgeometry/svg/HGeometry-Miso-Svg-Canvas.html#v:svgCanvas_"},{"display_html":"type family Dimension t :: Nat","name":"Dimension","module":"HGeometry.Properties","link":"hgeometry/vector/HGeometry-Properties.html#t:Dimension"},{"display_html":"type family NumType t","name":"NumType","module":"HGeometry.Properties","link":"hgeometry/vector/HGeometry-Properties.html#t:NumType"},{"display_html":"class (r ~ IxValue vector, s ~ IxValue vector', d ~ Dimension vector, d ~ Dimension vector') => AsVector_ vector vector' (d :: Nat) r s | vector -> d, vector -> r, vector' -> s where","name":"AsVector_ _Vector","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:AsVector_"},{"display_html":"class (HasComponents vector vector, AsVector_ vector vector d r r, KnownNat d) => Vector_ vector (d :: Nat) r where","name":"Vector_ generateA component' $dmcomponent'","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:Vector_"},{"display_html":"type Has_ (c :: Type -> Nat -> Type -> k) (d :: Nat) r = c (Vector d r) d r","name":"Has_","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:Has_"},{"display_html":"generate :: forall vector (d :: Nat) r. Vector_ vector d r => (Int -> r) -> vector","name":"generate","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:generate"},{"display_html":"vectorFromList :: forall vector (d :: Nat) r. Vector_ vector d r => [r] -> Maybe vector","name":"vectorFromList","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:vectorFromList"},{"display_html":"component :: forall (i :: Natural) vector r (d :: Natural). (i <= (d - 1), KnownNat i, Vector_ vector d r) => IndexedLens' Int vector r","name":"component","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:component"},{"display_html":"xComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"xComponent","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:xComponent"},{"display_html":"yComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 2 <= d) => IndexedLens' Int vector r","name":"yComponent","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:yComponent"},{"display_html":"zComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 3 <= d) => IndexedLens' Int vector r","name":"zComponent","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:zComponent"},{"display_html":"wComponent :: forall vector (d :: Nat) r. (Vector_ vector d r, 4 <= d) => IndexedLens' Int vector r","name":"wComponent","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:wComponent"},{"display_html":"head :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"head","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:head"},{"display_html":"last :: forall vector (d :: Nat) r. (Vector_ vector d r, 1 <= d) => IndexedLens' Int vector r","name":"last","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:last"},{"display_html":"prefix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"prefix","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:prefix"},{"display_html":"suffix :: forall (i :: Nat) (d :: Nat) vector vector' r. (i <= d, Vector_ vector d r, Vector_ vector' i r) => vector -> vector'","name":"suffix","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:suffix"},{"display_html":"cons :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => r -> vector -> vector'","name":"cons","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:cons"},{"display_html":"snoc :: forall vector' vector (d :: Nat) r. (Vector_ vector d r, Vector_ vector' (d + 1) r) => vector -> r -> vector'","name":"snoc","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:snoc"},{"display_html":"uncons :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, 0 <= ((d + 1) - 1), d <= Dimension vector) => vector -> (r, vector')","name":"uncons","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:uncons"},{"display_html":"unsnoc :: forall vector' vector (d :: Natural) r. (Vector_ vector (d + 1) r, Vector_ vector' d r, d <= ((d + 1) - 1), d <= Dimension vector) => vector -> (vector', r)","name":"unsnoc","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:unsnoc"},{"display_html":"class Vector_ vector d r => Additive_ vector (d :: Nat) r where","name":"Additive_ liftU2 liftI2A","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:Additive_"},{"display_html":"zero :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector","name":"zero","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:zero"},{"display_html":"liftI2 :: forall vector (d :: Nat) r. Additive_ vector d r => (r -> r -> r) -> vector -> vector -> vector","name":"liftI2","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:liftI2"},{"display_html":"lerp :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => r -> vector -> vector -> vector","name":"lerp","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:lerp"},{"display_html":"(^+^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^+^","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-94--43--94-"},{"display_html":"(^-^) :: forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector -> vector -> vector","name":"^-^","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-94--45--94-"},{"display_html":"negated :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> vector","name":"negated","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:negated"},{"display_html":"(*^) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => r -> vector -> vector","name":"*^","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-42--94-"},{"display_html":"(^*) :: forall r vector (d :: Nat). (Num r, Vector_ vector d r) => vector -> r -> vector","name":"^*","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-94--42-"},{"display_html":"(^/) :: forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector","name":"^/","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:-94--47-"},{"display_html":"sumV :: forall f vector (d :: Nat) r. (Foldable f, Additive_ vector d r, Num r) => f vector -> vector","name":"sumV","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:sumV"},{"display_html":"basis :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => [vector]","name":"basis","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:basis"},{"display_html":"unit :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r) => vector","name":"unit","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:unit"},{"display_html":"foldMapZip :: forall vector (d :: Nat) r m. (Additive_ vector d r, Semigroup m) => (r -> r -> m) -> vector -> vector -> m","name":"foldMapZip","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#v:foldMapZip"},{"display_html":"class Additive_ vector d r => Metric_ vector (d :: Nat) r where","name":"Metric_ dot norm qd quadrance signorm $dmdot $dmnorm $dmqd $dmquadrance $dmsignorm","module":"HGeometry.Vector.Class","link":"hgeometry/vector/HGeometry-Vector-Class.html#t:Metric_"},{"display_html":"data family Vector (d :: Nat) r","name":"Vector Vector1 Vector2 Vector3 Vector4 MkVector1 MkVector2 MkVector3 MkVector4","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#t:Vector"},{"display_html":"class HasComponents vector vector' where","name":"HasComponents components","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#t:HasComponents"},{"display_html":"module HGeometry.Vector.Class","name":"","module":"HGeometry.Vector","link":"hgeometry/vector"},{"display_html":"isScalarMultipleOf :: forall r vector (d :: Nat). (Eq r, Num r, Metric_ vector d r) => vector -> vector -> Bool","name":"isScalarMultipleOf","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#v:isScalarMultipleOf"},{"display_html":"scalarMultiple :: forall r vector (d :: Nat). (Eq r, Fractional r, Additive_ vector d r) => vector -> vector -> Maybe r","name":"scalarMultiple","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#v:scalarMultiple"},{"display_html":"sameDirection :: forall vector (d :: Nat) r. (Additive_ vector d r, Num r, Eq r) => vector -> vector -> Bool","name":"sameDirection","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#v:sameDirection"},{"display_html":"cross :: Num r => Vector 3 r -> Vector 3 r -> Vector 3 r","name":"cross","module":"HGeometry.Vector","link":"hgeometry/vector/HGeometry-Vector.html#v:cross"},{"display_html":"binarySearchFirst :: Integral a => (a -> Bool) -> a -> a -> a","name":"binarySearchFirst","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchFirst"},{"display_html":"binarySearchLast :: Integral a => (a -> Bool) -> a -> a -> a","name":"binarySearchLast","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchLast"},{"display_html":"binarySearchUntil :: (Fractional r, Ord r) => r -> (r -> Bool) -> r -> r -> r","name":"binarySearchUntil","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchUntil"},{"display_html":"data BinarySearchResult a","name":"BinarySearchResult AllFalse AllTrue FlipsAt","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#t:BinarySearchResult"},{"display_html":"firstTrue :: BinarySearchResult a -> Maybe a","name":"firstTrue","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:firstTrue"},{"display_html":"lastFalse :: BinarySearchResult a -> Maybe a","name":"lastFalse","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:lastFalse"},{"display_html":"class BinarySearch v where","name":"BinarySearch Index Elem binarySearchIn binarySearchIdxIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#t:BinarySearch"},{"display_html":"binarySearchFirstIn :: BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Elem v)","name":"binarySearchFirstIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchFirstIn"},{"display_html":"binarySearchFirstIdxIn :: BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Index v)","name":"binarySearchFirstIdxIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchFirstIdxIn"},{"display_html":"binarySearchLastIn :: BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Elem v)","name":"binarySearchLastIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchLastIn"},{"display_html":"binarySearchLastIdxIn :: BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Index v)","name":"binarySearchLastIdxIn","module":"HGeometry.Algorithms.BinarySearch","link":"hgeometry-combinatorial/HGeometry-Algorithms-BinarySearch.html#v:binarySearchLastIdxIn"},{"display_html":"divideAndConquer :: (Foldable f, Monoid s) => (a -> s) -> f a -> s","name":"divideAndConquer","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:divideAndConquer"},{"display_html":"divideAndConquer1 :: (Foldable1 f, Semigroup s) => (a -> s) -> f a -> s","name":"divideAndConquer1","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:divideAndConquer1"},{"display_html":"divideAndConquer1With :: Foldable1 f => (s -> s -> s) -> (a -> s) -> f a -> s","name":"divideAndConquer1With","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:divideAndConquer1With"},{"display_html":"mergeSorted :: Ord a => NonEmpty a -> NonEmpty a -> NonEmpty a","name":"mergeSorted","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:mergeSorted"},{"display_html":"mergeSortedLists :: Ord a => [a] -> [a] -> [a]","name":"mergeSortedLists","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:mergeSortedLists"},{"display_html":"mergeSortedBy :: (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a -> NonEmpty a","name":"mergeSortedBy","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:mergeSortedBy"},{"display_html":"mergeSortedListsBy :: (a -> a -> Ordering) -> [a] -> [a] -> [a]","name":"mergeSortedListsBy","module":"HGeometry.Algorithms.DivideAndConquer","link":"hgeometry-combinatorial/HGeometry-Algorithms-DivideAndConquer.html#v:mergeSortedListsBy"},{"display_html":"newtype InsertionOnly (static :: k -> Type) (a :: k) = InsertionOnly [Maybe (static a)]","name":"InsertionOnly InsertionOnly","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#t:InsertionOnly"},{"display_html":"empty :: forall {k} (static :: k -> Type) (a :: k). InsertionOnly static a","name":"empty","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#v:empty"},{"display_html":"class LogarithmicMethodDS (static :: Type -> Type) a where","name":"LogarithmicMethodDS singleton build merge $dmsingleton $dmmerge","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#t:LogarithmicMethodDS"},{"display_html":"insert :: forall (static :: Type -> Type) a. LogarithmicMethodDS static a => a -> InsertionOnly static a -> InsertionOnly static a","name":"insert","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#v:insert"},{"display_html":"queryWith :: forall {k} m static (a :: k). Monoid m => (static a -> m) -> InsertionOnly static a -> m","name":"queryWith","module":"HGeometry.Algorithms.LogarithmicMethod","link":"hgeometry-combinatorial/HGeometry-Algorithms-LogarithmicMethod.html#v:queryWith"},{"display_html":"insertOrd :: Ord a => a -> CList a -> CList a","name":"insertOrd","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:insertOrd"},{"display_html":"insertOrdBy :: (a -> a -> Ordering) -> a -> CList a -> CList a","name":"insertOrdBy","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:insertOrdBy"},{"display_html":"insertOrdBy' :: (a -> a -> Ordering) -> a -> [a] -> [a]","name":"insertOrdBy'","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:insertOrdBy-39-"},{"display_html":"splitIncr :: (a -> a -> Ordering) -> [a] -> ([a], [a])","name":"splitIncr","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:splitIncr"},{"display_html":"isShiftOf :: Eq a => CList a -> CList a -> Bool","name":"isShiftOf","module":"HGeometry.CircularList.Util","link":"hgeometry-combinatorial/HGeometry-CircularList-Util.html#v:isShiftOf"},{"display_html":"data STR a b c = STR !a !b !c","name":"STR STR","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#t:STR"},{"display_html":"type Three = V3","name":"Three","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#t:Three"},{"display_html":"pattern Three :: a -> a -> a -> Three a","name":"Three","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:Three"},{"display_html":"uniqueTriplets :: Foldable f => f a -> [Three a]","name":"uniqueTriplets","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:uniqueTriplets"},{"display_html":"data SP a b = SP !a !b","name":"SP SP","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#t:SP"},{"display_html":"type Two = V2","name":"Two","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#t:Two"},{"display_html":"pattern Two :: a -> a -> Two a","name":"Two","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:Two"},{"display_html":"uniquePairs :: Foldable f => f a -> [Two a]","name":"uniquePairs","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:uniquePairs"},{"display_html":"nonEmptyTails :: [a] -> [[a]]","name":"nonEmptyTails","module":"HGeometry.Combinatorial.Util","link":"hgeometry-combinatorial/HGeometry-Combinatorial-Util.html#v:nonEmptyTails"},{"display_html":"data core :+ extra = core :+ extra","name":":+ :+","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#t::-43-"},{"display_html":"_core :: (core :+ extra) -> core","name":"_core","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:_core"},{"display_html":"_extra :: (core :+ extra) -> extra","name":"_extra","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:_extra"},{"display_html":"core :: forall core extra core' f. Functor f => (core -> f core') -> (core :+ extra) -> f (core' :+ extra)","name":"core","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:core"},{"display_html":"extra :: forall core extra extra' f. Functor f => (extra -> f extra') -> (core :+ extra) -> f (core :+ extra')","name":"extra","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:extra"},{"display_html":"ext :: a -> a :+ ()","name":"ext","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:ext"},{"display_html":"class AsA t c | t -> c where","name":"AsA asCore","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#t:AsA"},{"display_html":"type (:~) t c = AsA t c","name":":~","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#t::-126-"},{"display_html":"pattern AsA :: t :~ c => c -> t","name":"AsA","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:AsA"},{"display_html":"class AsExt t where","name":"AsExt ExtraOf CoreOf _Ext","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#t:AsExt"},{"display_html":"asIndexedExt :: (Indexable i p, Functor f) => p (s :+ i) (f (t :+ j)) -> Indexed i s (f t)","name":"asIndexedExt","module":"HGeometry.Ext","link":"hgeometry-combinatorial/HGeometry-Ext.html#v:asIndexedExt"},{"display_html":"sortBy :: forall vector f a. (Foldable f, Vector vector a) => (a -> a -> Ordering) -> f a -> vector a","name":"sortBy","module":"HGeometry.Foldable.Sort","link":"hgeometry-combinatorial/HGeometry-Foldable-Sort.html#v:sortBy"},{"display_html":"sort :: forall vector f a. (Foldable f, Vector vector a, Ord a) => f a -> vector a","name":"sort","module":"HGeometry.Foldable.Sort","link":"hgeometry-combinatorial/HGeometry-Foldable-Sort.html#v:sort"},{"display_html":"sortOnCheap :: forall vector f a b. (Foldable f, Vector vector a, Ord b) => (a -> b) -> f a -> vector a","name":"sortOnCheap","module":"HGeometry.Foldable.Sort","link":"hgeometry-combinatorial/HGeometry-Foldable-Sort.html#v:sortOnCheap"},{"display_html":"class HasFromFoldable (f :: Type -> Type) where","name":"HasFromFoldable fromList fromFoldable $dmfromFoldable","module":"HGeometry.Foldable.Util","link":"hgeometry-combinatorial/HGeometry-Foldable-Util.html#t:HasFromFoldable"},{"display_html":"class HasFromFoldable1 (f :: Type -> Type) where","name":"HasFromFoldable1 fromNonEmpty fromFoldable1 $dmfromFoldable1","module":"HGeometry.Foldable.Util","link":"hgeometry-combinatorial/HGeometry-Foldable-Util.html#t:HasFromFoldable1"},{"display_html":"class HasIndex a where","name":"HasIndex sosIndex","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#t:HasIndex"},{"display_html":"type Index = Int","name":"Index","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#t:Index"},{"display_html":"data WithIndex a = WithIndex !Index a","name":"WithIndex WithIndex","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#t:WithIndex"},{"display_html":"theValue :: forall a b f. Functor f => (a -> f b) -> WithIndex a -> f (WithIndex b)","name":"theValue","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#v:theValue"},{"display_html":"labelWithIndex :: Traversable t => t a -> t (WithIndex a)","name":"labelWithIndex","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#v:labelWithIndex"},{"display_html":"labelWith :: Traversable t => (Index -> a -> b) -> t a -> t b","name":"labelWith","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#v:labelWith"},{"display_html":"labelWith' :: Traversable t => (Index -> a -> b) -> t a -> (t b, Int)","name":"labelWith'","module":"HGeometry.Indexed","link":"hgeometry-combinatorial/HGeometry-Indexed.html#v:labelWith-39-"},{"display_html":"folding1 :: Foldable1 f => (s -> f a) -> Fold1 s a","name":"folding1","module":"HGeometry.Lens.Util","link":"hgeometry-combinatorial/HGeometry-Lens-Util.html#v:folding1"},{"display_html":"ifolding1 :: (Foldable1 f, Indexable i p, Contravariant g, Apply g) => (s -> f (i, a)) -> Over p g s t a b","name":"ifolding1","module":"HGeometry.Lens.Util","link":"hgeometry-combinatorial/HGeometry-Lens-Util.html#v:ifolding1"},{"display_html":"itoNonEmptyOf :: IndexedGetting i (NonEmptyDList (i, a)) s a -> s -> NonEmpty (i, a)","name":"itoNonEmptyOf","module":"HGeometry.Lens.Util","link":"hgeometry-combinatorial/HGeometry-Lens-Util.html#v:itoNonEmptyOf"},{"display_html":"data Zipper a = Zipper [a] [a]","name":"Zipper Zipper","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#t:Zipper"},{"display_html":"fromList :: [a] -> Zipper a","name":"fromList","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:fromList"},{"display_html":"goNext :: Zipper a -> Maybe (Zipper a)","name":"goNext","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:goNext"},{"display_html":"goPrev :: Zipper a -> Maybe (Zipper a)","name":"goPrev","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:goPrev"},{"display_html":"allNexts :: Zipper a -> [Zipper a]","name":"allNexts","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:allNexts"},{"display_html":"extractNext :: Zipper a -> Maybe (a, Zipper a)","name":"extractNext","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:extractNext"},{"display_html":"dropNext :: Zipper a -> Maybe (Zipper a)","name":"dropNext","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:dropNext"},{"display_html":"allNonEmptyNexts :: Zipper a -> [Zipper a]","name":"allNonEmptyNexts","module":"HGeometry.List.Zipper","link":"hgeometry-combinatorial/HGeometry-List-Zipper.html#v:allNonEmptyNexts"},{"display_html":"class Measured (f :: Type -> Type) a where","name":"Measured measure","module":"HGeometry.Measured.Class","link":"hgeometry-combinatorial/HGeometry-Measured-Class.html#t:Measured"},{"display_html":"class Measured f a => CanInsert (f :: Type -> Type) a where","name":"CanInsert insertMeasure $dminsertMeasure","module":"HGeometry.Measured.Class","link":"hgeometry-combinatorial/HGeometry-Measured-Class.html#t:CanInsert"},{"display_html":"class Measured f a => CanDelete (f :: Type -> Type) a where","name":"CanDelete deleteMeasure","module":"HGeometry.Measured.Class","link":"hgeometry-combinatorial/HGeometry-Measured-Class.html#t:CanDelete"},{"display_html":"module HGeometry.Measured.Class","name":"","module":"HGeometry.Measured","link":"hgeometry-combinatorial"},{"display_html":"newtype Count (a :: k) = Count Word","name":"Count Count","module":"HGeometry.Measured.Size","link":"hgeometry-combinatorial/HGeometry-Measured-Size.html#t:Count"},{"display_html":"data Sized a = Sized !(Count a) a","name":"Sized Sized","module":"HGeometry.Measured.Size","link":"hgeometry-combinatorial/HGeometry-Measured-Size.html#t:Sized"},{"display_html":"extractMinimaBy :: (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a :+ [a]","name":"extractMinimaBy","module":"HGeometry.NonEmpty.Util","link":"hgeometry-combinatorial/HGeometry-NonEmpty-Util.html#v:extractMinimaBy"},{"display_html":"leaveOutOne :: [a] -> [(a, [a])]","name":"leaveOutOne","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:leaveOutOne"},{"display_html":"minimumMaybe :: Ord a => [a] -> Maybe a","name":"minimumMaybe","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:minimumMaybe"},{"display_html":"maximumMaybe :: Ord a => [a] -> Maybe a","name":"maximumMaybe","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:maximumMaybe"},{"display_html":"minimumMaybeBy :: (a -> a -> Ordering) -> [a] -> Maybe a","name":"minimumMaybeBy","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:minimumMaybeBy"},{"display_html":"minimaOn :: Ord b => (a -> b) -> [a] -> [a]","name":"minimaOn","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:minimaOn"},{"display_html":"minimaBy :: (a -> a -> Ordering) -> [a] -> [a]","name":"minimaBy","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:minimaBy"},{"display_html":"extractMinimaBy :: (a -> a -> Ordering) -> [a] -> [a] :+ [a]","name":"extractMinimaBy","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:extractMinimaBy"},{"display_html":"partition3 :: Foldable f => (a -> Ordering) -> f a -> ([a], [a], [a])","name":"partition3","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:partition3"},{"display_html":"groupBy' :: (a -> a -> Ordering) -> [a] -> [NonEmpty a]","name":"groupBy'","module":"HGeometry.List.Util","link":"hgeometry-combinatorial/HGeometry-List-Util.html#v:groupBy-39-"},{"display_html":"class Num r => Radical r where","name":"Radical sqrt $dmsqrt","module":"HGeometry.Number.Radical","link":"hgeometry-combinatorial/HGeometry-Number-Radical.html#t:Radical"},{"display_html":"data GRatio a","name":"GRatio","module":"HGeometry.Number.Ratio.Generalized","link":"hgeometry-combinatorial/HGeometry-Number-Ratio-Generalized.html#t:GRatio"},{"display_html":"(%) :: (Eq a, Num a) => a -> a -> GRatio a","name":"%","module":"HGeometry.Number.Ratio.Generalized","link":"hgeometry-combinatorial/HGeometry-Number-Ratio-Generalized.html#v:-37-"},{"display_html":"numerator :: GRatio a -> a","name":"numerator","module":"HGeometry.Number.Ratio.Generalized","link":"hgeometry-combinatorial/HGeometry-Number-Ratio-Generalized.html#v:numerator"},{"display_html":"denominator :: GRatio a -> a","name":"denominator","module":"HGeometry.Number.Ratio.Generalized","link":"hgeometry-combinatorial/HGeometry-Number-Ratio-Generalized.html#v:denominator"},{"display_html":"newtype RealNumber (p :: Nat) = RealNumber Rational","name":"RealNumber RealNumber","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#t:RealNumber"},{"display_html":"data AsFixed (p :: k)","name":"AsFixed Exact Lossy","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#t:AsFixed"},{"display_html":"asFixed :: forall (p :: Nat). KnownNat p => RealNumber p -> AsFixed (NatPrec p)","name":"asFixed","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#v:asFixed"},{"display_html":"toFixed :: forall (p :: Nat). KnownNat p => RealNumber p -> Fixed (NatPrec p)","name":"toFixed","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#v:toFixed"},{"display_html":"fromFixed :: forall (p :: Nat). KnownNat p => Fixed (NatPrec p) -> RealNumber p","name":"fromFixed","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#v:fromFixed"},{"display_html":"type Nat = Natural","name":"Nat","module":"HGeometry.Number.Real.Rational","link":"hgeometry-combinatorial/HGeometry-Number-Real-Rational.html#t:Nat"},{"display_html":"newtype O s a = O {}","name":"O runO O","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#t:O"},{"display_html":"newtype OrdDict a = OrdDict {}","name":"OrdDict compare_ OrdDict","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#t:OrdDict"},{"display_html":"withOrd :: (a -> a -> Ordering) -> (forall s. Reifies s (OrdDict a) => O s b) -> b","name":"withOrd","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:withOrd"},{"display_html":"extractOrd1 :: f (O s a) -> O s (f a)","name":"extractOrd1","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:extractOrd1"},{"display_html":"introOrd1 :: f a -> f (O s a)","name":"introOrd1","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:introOrd1"},{"display_html":"liftOrd1 :: (f (O s a) -> g (O s a)) -> f a -> O s (g a)","name":"liftOrd1","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:liftOrd1"},{"display_html":"extractOrd2 :: forall {k1} f s k2 (v :: k1). f (O s k2) v -> O s (f k2 v)","name":"extractOrd2","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:extractOrd2"},{"display_html":"introOrd2 :: forall {k1} f k2 (v :: k1) s. f k2 v -> f (O s k2) v","name":"introOrd2","module":"HGeometry.Ord.Dynamic","link":"hgeometry-combinatorial/HGeometry-Ord-Dynamic.html#v:introOrd2"},{"display_html":"data Alternating (f :: Type -> Type) sep a = Alternating a (f (sep, a))","name":"Alternating Alternating","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#t:Alternating"},{"display_html":"fromNonEmptyWith :: forall (g :: Type -> Type) f sep a. (HasFromFoldable g, Foldable1 f) => sep -> f a -> Alternating g sep a","name":"fromNonEmptyWith","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:fromNonEmptyWith"},{"display_html":"mapF :: (f (sep, a) -> g (sep', a)) -> Alternating f sep a -> Alternating g sep' a","name":"mapF","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:mapF"},{"display_html":"firstWithNeighbors :: forall (f :: Type -> Type) a sep sep'. Traversable f => (a -> sep -> a -> sep') -> Alternating f sep a -> Alternating f sep' a","name":"firstWithNeighbors","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:firstWithNeighbors"},{"display_html":"withNeighbours :: forall (f :: Type -> Type) sep a. Foldable f => Alternating f sep a -> [(a, sep, a)]","name":"withNeighbours","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:withNeighbours"},{"display_html":"mergeAlternating :: Ord t => (t -> a -> b -> c) -> Alternating [] t a -> Alternating [] t b -> [(t, c)]","name":"mergeAlternating","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:mergeAlternating"},{"display_html":"insertBreakPoints :: Ord t => [t] -> Alternating [] t a -> Alternating [] t a","name":"insertBreakPoints","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:insertBreakPoints"},{"display_html":"reverse :: Alternating [] b a -> Alternating [] b a","name":"reverse","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:reverse"},{"display_html":"consElemWith :: forall (f :: Type -> Type) sep a. Cons (f (sep, a)) (f (sep, a)) (sep, a) (sep, a) => (a -> a -> sep) -> a -> Alternating f sep a -> Alternating f sep a","name":"consElemWith","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:consElemWith"},{"display_html":"unconsAlt :: forall (f :: Type -> Type) sep a. Cons (f (sep, a)) (f (sep, a)) (sep, a) (sep, a) => Alternating f sep a -> Either a ((a, sep), Alternating f sep a)","name":"unconsAlt","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:unconsAlt"},{"display_html":"snocElemWith :: forall (f :: Type -> Type) sep a. Snoc (f (sep, a)) (f (sep, a)) (sep, a) (sep, a) => (a -> a -> sep) -> Alternating f sep a -> a -> Alternating f sep a","name":"snocElemWith","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:snocElemWith"},{"display_html":"separators :: Functor f => Alternating f sep a -> f sep","name":"separators","module":"HGeometry.Sequence.Alternating","link":"hgeometry-combinatorial/HGeometry-Sequence-Alternating.html#v:separators"},{"display_html":"data ViewL1 a = a :<< (Seq a)","name":"ViewL1 :<<","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#t:ViewL1"},{"display_html":"data ViewR1 a = (Seq a) :>> a","name":"ViewR1 :>>","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#t:ViewR1"},{"display_html":"viewl1 :: ViewR1 a -> ViewL1 a","name":"viewl1","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:viewl1"},{"display_html":"viewr1 :: ViewL1 a -> ViewR1 a","name":"viewr1","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:viewr1"},{"display_html":"(|>>) :: ViewR1 a -> a -> ViewR1 a","name":"|>>","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:-124--62--62-"},{"display_html":"(<>>) :: ViewR1 a -> Seq a -> ViewR1 a","name":"<>>","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:-60--62--62-"},{"display_html":"splitL1At :: Int -> ViewL1 a -> Maybe (Seq a, a, Seq a)","name":"splitL1At","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:splitL1At"},{"display_html":"splitR1At :: Int -> ViewR1 a -> Maybe (Seq a, a, Seq a)","name":"splitR1At","module":"HGeometry.Sequence.NonEmpty","link":"hgeometry-combinatorial/HGeometry-Sequence-NonEmpty.html#v:splitR1At"},{"display_html":"toggle :: Ord a => a -> Set a -> Set a","name":"toggle","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:toggle"},{"display_html":"splitOn :: Ord b => (a -> b) -> b -> Set a -> (Set a, Set a, Set a)","name":"splitOn","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:splitOn"},{"display_html":"splitBy :: (a -> Ordering) -> Set a -> (Set a, Set a, Set a)","name":"splitBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:splitBy"},{"display_html":"fromListBy :: (a -> a -> Ordering) -> [a] -> Set a","name":"fromListBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:fromListBy"},{"display_html":"join :: Set a -> Set a -> Set a","name":"join","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:join"},{"display_html":"insertBy :: (a -> a -> Ordering) -> a -> Set a -> Set a","name":"insertBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:insertBy"},{"display_html":"deleteAllBy :: (a -> a -> Ordering) -> a -> Set a -> Set a","name":"deleteAllBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:deleteAllBy"},{"display_html":"queryBy :: (a -> a -> Ordering) -> (forall b. Ord b => b -> Set b -> t b) -> a -> Set a -> t a","name":"queryBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:queryBy"},{"display_html":"toggleBy :: (a -> a -> Ordering) -> a -> Set a -> Set a","name":"toggleBy","module":"HGeometry.Set.Util","link":"hgeometry-combinatorial/HGeometry-Set-Util.html#v:toggleBy"},{"display_html":"data Sign","name":"Sign Negative Positive","module":"HGeometry.Sign","link":"hgeometry-combinatorial/HGeometry-Sign.html#t:Sign"},{"display_html":"flipSign :: Sign -> Sign","name":"flipSign","module":"HGeometry.Sign","link":"hgeometry-combinatorial/HGeometry-Sign.html#v:flipSign"},{"display_html":"signFromTerms :: (Num r, Eq r, Foldable1 f) => f r -> Maybe Sign","name":"signFromTerms","module":"HGeometry.Sign","link":"hgeometry-combinatorial/HGeometry-Sign.html#v:signFromTerms"},{"display_html":"data EpsFold i","name":"EpsFold","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#t:EpsFold"},{"display_html":"eps :: i -> EpsFold i","name":"eps","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:eps"},{"display_html":"mkEpsFold :: Ord i => [i] -> EpsFold i","name":"mkEpsFold","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:mkEpsFold"},{"display_html":"evalEps :: (Fractional r, Integral i, Integral j) => j -> r -> EpsFold i -> r","name":"evalEps","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:evalEps"},{"display_html":"hasNoPertubation :: EpsFold i -> Bool","name":"hasNoPertubation","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:hasNoPertubation"},{"display_html":"factors :: EpsFold i -> Bag i","name":"factors","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:factors"},{"display_html":"suitableBase :: EpsFold i -> Int","name":"suitableBase","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:suitableBase"},{"display_html":"data Term i r = Term !r (EpsFold i)","name":"Term Term","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#t:Term"},{"display_html":"term :: r -> i -> Term i r","name":"term","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:term"},{"display_html":"constantFactor :: forall i r f. Functor f => (r -> f r) -> Term i r -> f (Term i r)","name":"constantFactor","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:constantFactor"},{"display_html":"data Symbolic i r","name":"Symbolic","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#t:Symbolic"},{"display_html":"constant :: Ord i => r -> Symbolic i r","name":"constant","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:constant"},{"display_html":"symbolic :: Ord i => r -> i -> Symbolic i r","name":"symbolic","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:symbolic"},{"display_html":"perturb :: (Num r, Ord i) => r -> i -> Symbolic i r","name":"perturb","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:perturb"},{"display_html":"toTerms :: Symbolic i r -> [Term i r]","name":"toTerms","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:toTerms"},{"display_html":"signOf :: (Num r, Eq r) => Symbolic i r -> Maybe Sign","name":"signOf","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:signOf"},{"display_html":"roundToConstant :: Num r => Symbolic i r -> r","name":"roundToConstant","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:roundToConstant"},{"display_html":"type SoSRational i r = GRatio (Symbolic i r)","name":"SoSRational","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#t:SoSRational"},{"display_html":"sosRational :: (Ord i, Eq r, Num r) => Symbolic i r -> Symbolic i r -> SoSRational i r","name":"sosRational","module":"HGeometry.Number.Real.Symbolic","link":"hgeometry-combinatorial/HGeometry-Number-Real-Symbolic.html#v:sosRational"},{"display_html":"isSubStringOf :: (Eq a, Foldable p, Foldable t) => p a -> t a -> Maybe Int","name":"isSubStringOf","module":"HGeometry.StringSearch.KMP","link":"hgeometry-combinatorial/HGeometry-StringSearch-KMP.html#v:isSubStringOf"},{"display_html":"kmpMatch :: Eq a => Vector a -> Vector a -> Maybe Int","name":"kmpMatch","module":"HGeometry.StringSearch.KMP","link":"hgeometry-combinatorial/HGeometry-StringSearch-KMP.html#v:kmpMatch"},{"display_html":"buildFailureFunction :: Eq a => Vector a -> Vector Int","name":"buildFailureFunction","module":"HGeometry.StringSearch.KMP","link":"hgeometry-combinatorial/HGeometry-StringSearch-KMP.html#v:buildFailureFunction"},{"display_html":"data TreeNode v a","name":"TreeNode LeafNode InternalNode","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#t:TreeNode"},{"display_html":"_TreeNodeEither :: forall v p1 p2 f. (Profunctor p2, Functor f) => p2 (Either v p1) (f (Either v p1)) -> p2 (TreeNode v p1) (f (TreeNode v p1))","name":"_TreeNodeEither","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:_TreeNodeEither"},{"display_html":"data Zipper a = Zipper {}","name":"Zipper ancestors Zipper focus","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#t:Zipper"},{"display_html":"root :: Tree a -> Zipper a","name":"root","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:root"},{"display_html":"up :: Zipper a -> Maybe (Zipper a)","name":"up","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:up"},{"display_html":"firstChild :: Zipper a -> Maybe (Zipper a)","name":"firstChild","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:firstChild"},{"display_html":"nextSibling :: Zipper a -> Maybe (Zipper a)","name":"nextSibling","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:nextSibling"},{"display_html":"prevSibling :: Zipper a -> Maybe (Zipper a)","name":"prevSibling","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:prevSibling"},{"display_html":"allChildren :: Zipper a -> [Zipper a]","name":"allChildren","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:allChildren"},{"display_html":"allTrees :: Zipper a -> [Zipper a]","name":"allTrees","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:allTrees"},{"display_html":"unZipperLocal :: Zipper a -> Tree a","name":"unZipperLocal","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:unZipperLocal"},{"display_html":"constructTree :: [([Tree a], a, [Tree a])] -> Maybe (Tree a)","name":"constructTree","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:constructTree"},{"display_html":"findEvert :: (a -> Bool) -> Tree a -> Maybe (Tree a)","name":"findEvert","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findEvert"},{"display_html":"findEvert' :: (Tree a -> Bool) -> Tree a -> Maybe (Tree a)","name":"findEvert'","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findEvert-39-"},{"display_html":"findPath :: (a -> Bool) -> (a -> Bool) -> Tree a -> Maybe [a]","name":"findPath","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findPath"},{"display_html":"findNode :: (a -> Bool) -> Tree a -> Maybe [a]","name":"findNode","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findNode"},{"display_html":"findNodes :: (Tree a -> Bool) -> Tree a -> [[a]]","name":"findNodes","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:findNodes"},{"display_html":"levels :: Tree a -> NonEmpty (NonEmpty a)","name":"levels","module":"HGeometry.Tree.Util","link":"hgeometry-combinatorial/HGeometry-Tree-Util.html#v:levels"},{"display_html":"data BinLeafTree v a","name":"BinLeafTree Node Leaf","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#t:BinLeafTree"},{"display_html":"node :: (Measured f a, Semigroup (f a)) => BinLeafTree (f a) a -> BinLeafTree (f a) a -> BinLeafTree (f a) a","name":"node","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:node"},{"display_html":"asBalancedBinLeafTree :: Foldable1 f => f a -> BinLeafTree (Count a) a","name":"asBalancedBinLeafTree","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:asBalancedBinLeafTree"},{"display_html":"foldUp :: (b -> v -> b -> b) -> (a -> b) -> BinLeafTree v a -> b","name":"foldUp","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:foldUp"},{"display_html":"foldUpData :: (w -> v -> w -> w) -> (a -> w) -> BinLeafTree v a -> BinLeafTree w a","name":"foldUpData","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:foldUpData"},{"display_html":"zipExactWith :: (u -> v -> w) -> (a -> b -> c) -> BinLeafTree u a -> BinLeafTree v b -> BinLeafTree w c","name":"zipExactWith","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:zipExactWith"},{"display_html":"toRoseTree :: BinLeafTree v a -> Tree (TreeNode v a)","name":"toRoseTree","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:toRoseTree"},{"display_html":"drawTree :: (Show v, Show a) => BinLeafTree v a -> String","name":"drawTree","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:drawTree"},{"display_html":"data BinaryTree a","name":"BinaryTree Internal Nil","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#t:BinaryTree"},{"display_html":"asBalancedBinTree :: Foldable f => f a -> BinaryTree a","name":"asBalancedBinTree","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:asBalancedBinTree"},{"display_html":"access :: BinaryTree a -> Maybe a","name":"access","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:access"},{"display_html":"foldBinaryUp :: b -> (a -> b -> b -> b) -> BinaryTree a -> BinaryTree (a, b)","name":"foldBinaryUp","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:foldBinaryUp"},{"display_html":"toRoseTree' :: BinaryTree a -> Maybe (Tree a)","name":"toRoseTree'","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:toRoseTree-39-"},{"display_html":"drawTree' :: Show a => BinaryTree a -> String","name":"drawTree'","module":"HGeometry.Tree.Binary.Static","link":"hgeometry-combinatorial/HGeometry-Tree-Binary-Static.html#v:drawTree-39-"},{"display_html":"newtype Report a where","name":"Report Report MkReport","module":"HGeometry.Measured.Report","link":"hgeometry-combinatorial/HGeometry-Measured-Report.html#t:Report"},{"display_html":"newtype Report1 a = Report1 (BinLeafTree (Const () a) a)","name":"Report1 Report1","module":"HGeometry.Measured.Report","link":"hgeometry-combinatorial/HGeometry-Measured-Report.html#t:Report1"},{"display_html":"newtype ReportList a = ReportList [a]","name":"ReportList ReportList","module":"HGeometry.Measured.Report","link":"hgeometry-combinatorial/HGeometry-Measured-Report.html#t:ReportList"},{"display_html":"data Top a where","name":"Top ValT Top","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#t:Top"},{"display_html":"topToMaybe :: Top a -> Maybe a","name":"topToMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:topToMaybe"},{"display_html":"_ValT :: forall a b p f. (Choice p, Applicative f) => p a (f b) -> p (Top a) (f (Top b))","name":"_ValT","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_ValT"},{"display_html":"_Top :: forall a p f. (Choice p, Applicative f) => p () (f ()) -> p (Top a) (f (Top a))","name":"_Top","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_Top"},{"display_html":"_TopMaybe :: forall a p f. (Profunctor p, Functor f) => p (Maybe a) (f (Maybe a)) -> p (Top a) (f (Top a))","name":"_TopMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_TopMaybe"},{"display_html":"data Bottom a where","name":"Bottom Bottom ValB","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#t:Bottom"},{"display_html":"bottomToMaybe :: Bottom a -> Maybe a","name":"bottomToMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:bottomToMaybe"},{"display_html":"_ValB :: forall a b p f. (Choice p, Applicative f) => p a (f b) -> p (Bottom a) (f (Bottom b))","name":"_ValB","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_ValB"},{"display_html":"_Bottom :: forall a p f. (Choice p, Applicative f) => p () (f ()) -> p (Bottom a) (f (Bottom a))","name":"_Bottom","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_Bottom"},{"display_html":"_BottomMaybe :: forall a p f. (Profunctor p, Functor f) => p (Maybe a) (f (Maybe a)) -> p (Bottom a) (f (Bottom a))","name":"_BottomMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_BottomMaybe"},{"display_html":"data UnBounded a","name":"UnBounded MaxInfinity MinInfinity Val _unUnBounded","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#t:UnBounded"},{"display_html":"_Val :: forall a b p f. (Choice p, Applicative f) => p a (f b) -> p (UnBounded a) (f (UnBounded b))","name":"_Val","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:_Val"},{"display_html":"unBoundedToMaybe :: UnBounded a -> Maybe a","name":"unBoundedToMaybe","module":"HGeometry.Unbounded","link":"hgeometry-combinatorial/HGeometry-Unbounded.html#v:unBoundedToMaybe"},{"display_html":"data Permutation a = Permutation (NonEmptyVector (Orbit a)) (Vector (Int, Int))","name":"Permutation Permutation","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#t:Permutation"},{"display_html":"orbits :: forall a b f. Functor f => (NonEmptyVector (Orbit a) -> f (NonEmptyVector (Orbit b))) -> Permutation a -> f (Permutation b)","name":"orbits","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:orbits"},{"display_html":"indices :: (Indexable i p, Applicative f) => (i -> Bool) -> Optical' p (Indexed i) f a a","name":"indices","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:indices"},{"display_html":"type Orbit a = NonEmptyVector a","name":"Orbit","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#t:Orbit"},{"display_html":"elems :: Permutation a -> NonEmptyVector a","name":"elems","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:elems"},{"display_html":"size :: Permutation a -> Int","name":"size","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:size"},{"display_html":"cycleOf :: Enum a => Permutation a -> a -> Orbit a","name":"cycleOf","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:cycleOf"},{"display_html":"next :: NonEmptyVector a -> Int -> a","name":"next","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:next"},{"display_html":"previous :: NonEmptyVector a -> Int -> a","name":"previous","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:previous"},{"display_html":"lookupIdx :: Enum a => Permutation a -> a -> (Int, Int)","name":"lookupIdx","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:lookupIdx"},{"display_html":"apply :: Enum a => Permutation a -> a -> a","name":"apply","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:apply"},{"display_html":"orbitFrom :: Eq a => a -> (a -> a) -> NonEmpty a","name":"orbitFrom","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:orbitFrom"},{"display_html":"cycleRep :: (Enum a, Eq a) => NonEmptyVector a -> (a -> a) -> Permutation a","name":"cycleRep","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:cycleRep"},{"display_html":"toCycleRep :: Enum a => Int -> NonEmpty (NonEmpty a) -> Permutation a","name":"toCycleRep","module":"HGeometry.Permutation","link":"hgeometry-combinatorial/HGeometry-Permutation.html#v:toCycleRep"},{"display_html":"newtype Cyclic (v :: k -> Type) (a :: k) = Cyclic (v a)","name":"Cyclic Cyclic","module":"HGeometry.Cyclic","link":"hgeometry-combinatorial/HGeometry-Cyclic.html#t:Cyclic"},{"display_html":"class HasDirectedTraversals (v :: Type -> Type) where","name":"HasDirectedTraversals traverseRightFrom traverseLeftFrom","module":"HGeometry.Cyclic","link":"hgeometry-combinatorial/HGeometry-Cyclic.html#t:HasDirectedTraversals"},{"display_html":"class ShiftedEq t where","name":"ShiftedEq isShiftOf ElemCyclic","module":"HGeometry.Cyclic","link":"hgeometry-combinatorial/HGeometry-Cyclic.html#t:ShiftedEq"},{"display_html":"encodeYAML :: ToYAML a => a -> ByteString","name":"encodeYAML","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:encodeYAML"},{"display_html":"encodeYAMLFile :: ToYAML a => OsPath -> a -> IO ()","name":"encodeYAMLFile","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:encodeYAMLFile"},{"display_html":"decodeYAML :: FromYAML a => ByteString -> Either (Pos, String) a","name":"decodeYAML","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:decodeYAML"},{"display_html":"decodeYAMLFile :: FromYAML a => OsPath -> IO (Either (Pos, String) a)","name":"decodeYAMLFile","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:decodeYAMLFile"},{"display_html":"printYAML :: ToYAML a => a -> IO ()","name":"printYAML","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:printYAML"},{"display_html":"data Versioned a = Versioned Version a","name":"Versioned Versioned","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#t:Versioned"},{"display_html":"unversioned :: Versioned a -> a","name":"unversioned","module":"HGeometry.YAML","link":"hgeometry-combinatorial/HGeometry-YAML.html#v:unversioned"}] \ No newline at end of file diff --git a/haddocks/hgeometry/HGeometry-PolyLine.html b/haddocks/hgeometry/HGeometry-PolyLine.html index c9d6ed7c9..04bbda9bb 100644 --- a/haddocks/hgeometry/HGeometry-PolyLine.html +++ b/haddocks/hgeometry/HGeometry-PolyLine.html @@ -1 +1 @@ -HGeometry.PolyLine
hgeometry
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

HGeometry.PolyLine

Description

A Polyline and some basic functions to interact with them.

Synopsis

Documentation

newtype PolyLineF (f :: k -> Type) (point :: k) Source #

Simple polygons just store their vertices in CCCW order

Constructors

PolyLine (f point) 

Instances

Instances details
Foldable1 f => Foldable1 (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

fold1 :: Semigroup m => PolyLineF f m -> m #

foldMap1 :: Semigroup m => (a -> m) -> PolyLineF f a -> m #

foldMap1' :: Semigroup m => (a -> m) -> PolyLineF f a -> m #

toNonEmpty :: PolyLineF f a -> NonEmpty a #

maximum :: Ord a => PolyLineF f a -> a #

minimum :: Ord a => PolyLineF f a -> a #

head :: PolyLineF f a -> a #

last :: PolyLineF f a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> PolyLineF f a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> PolyLineF f a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> PolyLineF f a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> PolyLineF f a -> b #

Eq1 f => Eq1 (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

liftEq :: (a -> b -> Bool) -> PolyLineF f a -> PolyLineF f b -> Bool #

Ord1 f => Ord1 (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

liftCompare :: (a -> b -> Ordering) -> PolyLineF f a -> PolyLineF f b -> Ordering #

Functor f => Functor (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

fmap :: (a -> b) -> PolyLineF f a -> PolyLineF f b #

(<$) :: a -> PolyLineF f b -> PolyLineF f a #

Foldable f => Foldable (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

fold :: Monoid m => PolyLineF f m -> m #

foldMap :: Monoid m => (a -> m) -> PolyLineF f a -> m #

foldMap' :: Monoid m => (a -> m) -> PolyLineF f a -> m #

foldr :: (a -> b -> b) -> b -> PolyLineF f a -> b #

foldr' :: (a -> b -> b) -> b -> PolyLineF f a -> b #

foldl :: (b -> a -> b) -> b -> PolyLineF f a -> b #

foldl' :: (b -> a -> b) -> b -> PolyLineF f a -> b #

foldr1 :: (a -> a -> a) -> PolyLineF f a -> a #

foldl1 :: (a -> a -> a) -> PolyLineF f a -> a #

toList :: PolyLineF f a -> [a] #

null :: PolyLineF f a -> Bool #

length :: PolyLineF f a -> Int #

elem :: Eq a => a -> PolyLineF f a -> Bool #

maximum :: Ord a => PolyLineF f a -> a #

minimum :: Ord a => PolyLineF f a -> a #

sum :: Num a => PolyLineF f a -> a #

product :: Num a => PolyLineF f a -> a #

Traversable f => Traversable (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

traverse :: Applicative f0 => (a -> f0 b) -> PolyLineF f a -> f0 (PolyLineF f b) #

sequenceA :: Applicative f0 => PolyLineF f (f0 a) -> f0 (PolyLineF f a) #

mapM :: Monad m => (a -> m b) -> PolyLineF f a -> m (PolyLineF f b) #

sequence :: Monad m => PolyLineF f (m a) -> m (PolyLineF f a) #

Traversable1 f => Traversable1 (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

traverse1 :: Apply f0 => (a -> f0 b) -> PolyLineF f a -> f0 (PolyLineF f b) Source #

sequence1 :: Apply f0 => PolyLineF f (f0 b) -> f0 (PolyLineF f b) Source #

NFData (f point) => NFData (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

rnf :: PolyLineF f point -> () #

Generic (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Associated Types

type Rep (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type Rep (PolyLineF f point) = D1 ('MetaData "PolyLineF" "HGeometry.PolyLine" "hgeometry-1.0.0.0-inplace" 'True) (C1 ('MetaCons "PolyLine" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f point))))

Methods

from :: PolyLineF f point -> Rep (PolyLineF f point) x #

to :: Rep (PolyLineF f point) x -> PolyLineF f point #

Read (f point) => Read (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

readsPrec :: Int -> ReadS (PolyLineF f point) #

readList :: ReadS [PolyLineF f point] #

readPrec :: ReadPrec (PolyLineF f point) #

readListPrec :: ReadPrec [PolyLineF f point] #

Show (f point) => Show (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

showsPrec :: Int -> PolyLineF f point -> ShowS #

show :: PolyLineF f point -> String #

showList :: [PolyLineF f point] -> ShowS #

Eq (f point) => Eq (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

(==) :: PolyLineF f point -> PolyLineF f point -> Bool #

(/=) :: PolyLineF f point -> PolyLineF f point -> Bool #

Ord (f point) => Ord (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

compare :: PolyLineF f point -> PolyLineF f point -> Ordering #

(<) :: PolyLineF f point -> PolyLineF f point -> Bool #

(<=) :: PolyLineF f point -> PolyLineF f point -> Bool #

(>) :: PolyLineF f point -> PolyLineF f point -> Bool #

(>=) :: PolyLineF f point -> PolyLineF f point -> Bool #

max :: PolyLineF f point -> PolyLineF f point -> PolyLineF f point #

min :: PolyLineF f point -> PolyLineF f point -> PolyLineF f point #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), Point_ point 2 r) => IsBoxable (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

boundingBox :: forall (d :: Nat) r0. (d ~ Dimension (PolyLineF f point), r0 ~ NumType (PolyLineF f point), Ord r0) => PolyLineF f point -> Box (Point d r0) #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), DefaultTransformByConstraints (PolyLineF f point) 2 r, Point_ point 2 r) => IsTransformable (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

transformBy :: Transformation (Dimension (PolyLineF f point)) (NumType (PolyLineF f point)) -> PolyLineF f point -> PolyLineF f point

(TraversableWithIndex Int f, Traversable1 f, Ixed (f point), IxValue (f point) ~ point, Index (f point) ~ Int) => HasVertices' (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Associated Types

type Vertex (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type Vertex (PolyLineF f point) = point
type VertexIx (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type VertexIx (PolyLineF f point) = Int

Methods

vertexAt :: VertexIx (PolyLineF f point) -> IndexedTraversal' (VertexIx (PolyLineF f point)) (PolyLineF f point) (Vertex (PolyLineF f point)) Source #

numVertices :: PolyLineF f point -> Int Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), HasFromFoldable1 f, Point_ point d r, TraversableWithIndex Int f) => ConstructablePolyLine_ (PolyLineF f point) point Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

polyLineFromPoints :: Foldable1 f0 => f0 point -> PolyLineF f point Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), HasFromFoldable1 f, Point_ point d r, TraversableWithIndex Int f) => PolyLine_ (PolyLineF f point) point Source # 
Instance details

Defined in HGeometry.PolyLine

Traversable1 f => HasEnd (PolyLineF f point) point Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

end :: Lens' (PolyLineF f point) point #

Traversable1 f => HasStart (PolyLineF f point) point Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

start :: Lens' (PolyLineF f point) point #

(TraversableWithIndex Int f, Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (PolyLineF f point) (PolyLineF f point') Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

vertices :: IndexedTraversal1 (VertexIx (PolyLineF f point)) (PolyLineF f point) (PolyLineF f point') (Vertex (PolyLineF f point)) (Vertex (PolyLineF f point')) Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasPoints (PolyLineF f point) (PolyLineF f point') point point' Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

allPoints :: forall (d :: Nat) r r'. (Point_ point d r, Point_ point' d r', NumType (PolyLineF f point) ~ r, NumType (PolyLineF f point') ~ r', Dimension (PolyLineF f point) ~ d, Dimension (PolyLineF f point') ~ d) => Traversal1 (PolyLineF f point) (PolyLineF f point') point point' #

type Rep (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type Rep (PolyLineF f point) = D1 ('MetaData "PolyLineF" "HGeometry.PolyLine" "hgeometry-1.0.0.0-inplace" 'True) (C1 ('MetaCons "PolyLine" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f point))))
type Dimension (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type Dimension (PolyLineF f point) = Dimension point
type NumType (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type NumType (PolyLineF f point) = NumType point
type Vertex (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type Vertex (PolyLineF f point) = point
type VertexIx (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type VertexIx (PolyLineF f point) = Int

type PolyLine = PolyLineF NonEmptyVector Source #

By default we store simple poylline as non-empty vectors.

_PolyLineF :: forall {k1} {k2} f1 (point :: k1) f' (point' :: k2) p f2. (Profunctor p, Functor f2) => p (f1 point) (f2 (f' point')) -> p (PolyLineF f1 point) (f2 (PolyLineF f' point')) Source #

Access the container

class HasVertices' graph => HasVertices graph graph' where Source #

Class that expresses that we have a non-empty type changing traversal of all vertices.

Methods

vertices :: IndexedTraversal1 (VertexIx graph) graph graph' (Vertex graph) (Vertex graph') Source #

Traversal of all vertices in the graph

Instances

Instances details
HasVertices Graph Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasVertices (Triangle point) (Triangle point') 
Instance details

Defined in HGeometry.Triangle

Methods

vertices :: IndexedTraversal1 (VertexIx (Triangle point)) (Triangle point) (Triangle point') (Vertex (Triangle point)) (Vertex (Triangle point')) Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (BezierSplineF f point) (BezierSplineF f point') Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

vertices :: IndexedTraversal1 (VertexIx (BezierSplineF f point)) (BezierSplineF f point) (BezierSplineF f point') (Vertex (BezierSplineF f point)) (Vertex (BezierSplineF f point')) Source #

HasVertices graph graph' => HasVertices (graph :+ extra) (graph' :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Methods

vertices :: IndexedTraversal1 (VertexIx (graph :+ extra)) (graph :+ extra) (graph' :+ extra) (Vertex (graph :+ extra)) (Vertex (graph' :+ extra)) Source #

(TraversableWithIndex Int f, Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (PolyLineF f point) (PolyLineF f point') Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

vertices :: IndexedTraversal1 (VertexIx (PolyLineF f point)) (PolyLineF f point) (PolyLineF f point') (Vertex (PolyLineF f point)) (Vertex (PolyLineF f point')) Source #

HasVertices (SimplePolygonF f point) (SimplePolygonF f point') => HasVertices (ConvexPolygonF f point) (ConvexPolygonF f point') Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

VertexContainer f point => HasVertices (SimplePolygonF f point) (SimplePolygonF f point') Source # 
Instance details

Defined in HGeometry.Polygon.Simple

(HoleContainer h f point, VertexContainer f point) => HasVertices (PolygonalDomainF h f point) (PolygonalDomainF h f point') Source # 
Instance details

Defined in HGeometry.Polygon.WithHoles

Methods

vertices :: IndexedTraversal1 (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (PolygonalDomainF h f point') (Vertex (PolygonalDomainF h f point)) (Vertex (PolygonalDomainF h f point')) Source #

HasVertices (GGraph f v e) (GGraph f v' e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

Methods

vertices :: IndexedTraversal1 (VertexIx (GGraph f v e)) (GGraph f v e) (GGraph f v' e) (Vertex (GGraph f v e)) (Vertex (GGraph f v' e)) Source #

Ord i => HasVertices (GGraph f i v e) (GGraph f i v' e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Methods

vertices :: IndexedTraversal1 (VertexIx (GGraph f i v e)) (GGraph f i v e) (GGraph f i v' e) (Vertex (GGraph f i v e)) (Vertex (GGraph f i v' e)) Source #

HasVertices (CPlaneGraph s v e f) (CPlaneGraph s v' e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Methods

vertices :: IndexedTraversal1 (VertexIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v' e f) (Vertex (CPlaneGraph s v e f)) (Vertex (CPlaneGraph s v' e f)) Source #

class HasEdges' graph => HasEdges graph graph' where Source #

Class for types that have a type changing traversal of the edges

Methods

edges :: IndexedTraversal (EdgeIx graph) graph graph' (Edge graph) (Edge graph') Source #

Traversal of all edges in the graph

Instances

Instances details
HasEdges Graph Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasEdges graph graph' => HasEdges (graph :+ extra) (graph' :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Methods

edges :: IndexedTraversal (EdgeIx (graph :+ extra)) (graph :+ extra) (graph' :+ extra) (Edge (graph :+ extra)) (Edge (graph' :+ extra)) Source #

HasEdges (GGraph f v e) (GGraph f v e') 
Instance details

Defined in Hiraffe.AdjacencyListRep

Methods

edges :: IndexedTraversal (EdgeIx (GGraph f v e)) (GGraph f v e) (GGraph f v e') (Edge (GGraph f v e)) (Edge (GGraph f v e')) Source #

Ord i => HasEdges (GGraph f i v e) (GGraph f i v e') 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Methods

edges :: IndexedTraversal (EdgeIx (GGraph f i v e)) (GGraph f i v e) (GGraph f i v e') (Edge (GGraph f i v e)) (Edge (GGraph f i v e')) Source #

HasEdges (CPlaneGraph s v e f) (CPlaneGraph s v e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Methods

edges :: IndexedTraversal (EdgeIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v e f) (Edge (CPlaneGraph s v e f)) (Edge (CPlaneGraph s v e f)) Source #

\ No newline at end of file +HGeometry.PolyLine
hgeometry
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

HGeometry.PolyLine

Description

A Polyline and some basic functions to interact with them.

Synopsis

Documentation

newtype PolyLineF (f :: k -> Type) (point :: k) Source #

Simple polygons just store their vertices in CCCW order

Constructors

PolyLine (f point) 

Instances

Instances details
Foldable1 f => Foldable1 (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

fold1 :: Semigroup m => PolyLineF f m -> m #

foldMap1 :: Semigroup m => (a -> m) -> PolyLineF f a -> m #

foldMap1' :: Semigroup m => (a -> m) -> PolyLineF f a -> m #

toNonEmpty :: PolyLineF f a -> NonEmpty a #

maximum :: Ord a => PolyLineF f a -> a #

minimum :: Ord a => PolyLineF f a -> a #

head :: PolyLineF f a -> a #

last :: PolyLineF f a -> a #

foldrMap1 :: (a -> b) -> (a -> b -> b) -> PolyLineF f a -> b #

foldlMap1' :: (a -> b) -> (b -> a -> b) -> PolyLineF f a -> b #

foldlMap1 :: (a -> b) -> (b -> a -> b) -> PolyLineF f a -> b #

foldrMap1' :: (a -> b) -> (a -> b -> b) -> PolyLineF f a -> b #

Eq1 f => Eq1 (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

liftEq :: (a -> b -> Bool) -> PolyLineF f a -> PolyLineF f b -> Bool #

Ord1 f => Ord1 (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

liftCompare :: (a -> b -> Ordering) -> PolyLineF f a -> PolyLineF f b -> Ordering #

Functor f => Functor (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

fmap :: (a -> b) -> PolyLineF f a -> PolyLineF f b #

(<$) :: a -> PolyLineF f b -> PolyLineF f a #

Foldable f => Foldable (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

fold :: Monoid m => PolyLineF f m -> m #

foldMap :: Monoid m => (a -> m) -> PolyLineF f a -> m #

foldMap' :: Monoid m => (a -> m) -> PolyLineF f a -> m #

foldr :: (a -> b -> b) -> b -> PolyLineF f a -> b #

foldr' :: (a -> b -> b) -> b -> PolyLineF f a -> b #

foldl :: (b -> a -> b) -> b -> PolyLineF f a -> b #

foldl' :: (b -> a -> b) -> b -> PolyLineF f a -> b #

foldr1 :: (a -> a -> a) -> PolyLineF f a -> a #

foldl1 :: (a -> a -> a) -> PolyLineF f a -> a #

toList :: PolyLineF f a -> [a] #

null :: PolyLineF f a -> Bool #

length :: PolyLineF f a -> Int #

elem :: Eq a => a -> PolyLineF f a -> Bool #

maximum :: Ord a => PolyLineF f a -> a #

minimum :: Ord a => PolyLineF f a -> a #

sum :: Num a => PolyLineF f a -> a #

product :: Num a => PolyLineF f a -> a #

Traversable f => Traversable (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

traverse :: Applicative f0 => (a -> f0 b) -> PolyLineF f a -> f0 (PolyLineF f b) #

sequenceA :: Applicative f0 => PolyLineF f (f0 a) -> f0 (PolyLineF f a) #

mapM :: Monad m => (a -> m b) -> PolyLineF f a -> m (PolyLineF f b) #

sequence :: Monad m => PolyLineF f (m a) -> m (PolyLineF f a) #

Traversable1 f => Traversable1 (PolyLineF f) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

traverse1 :: Apply f0 => (a -> f0 b) -> PolyLineF f a -> f0 (PolyLineF f b) Source #

sequence1 :: Apply f0 => PolyLineF f (f0 b) -> f0 (PolyLineF f b) Source #

NFData (f point) => NFData (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

rnf :: PolyLineF f point -> () #

Generic (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Associated Types

type Rep (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type Rep (PolyLineF f point) = D1 ('MetaData "PolyLineF" "HGeometry.PolyLine" "hgeometry-1.0.0.0-inplace" 'True) (C1 ('MetaCons "PolyLine" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f point))))

Methods

from :: PolyLineF f point -> Rep (PolyLineF f point) x #

to :: Rep (PolyLineF f point) x -> PolyLineF f point #

Read (f point) => Read (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

readsPrec :: Int -> ReadS (PolyLineF f point) #

readList :: ReadS [PolyLineF f point] #

readPrec :: ReadPrec (PolyLineF f point) #

readListPrec :: ReadPrec [PolyLineF f point] #

Show (f point) => Show (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

showsPrec :: Int -> PolyLineF f point -> ShowS #

show :: PolyLineF f point -> String #

showList :: [PolyLineF f point] -> ShowS #

Eq (f point) => Eq (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

(==) :: PolyLineF f point -> PolyLineF f point -> Bool #

(/=) :: PolyLineF f point -> PolyLineF f point -> Bool #

Ord (f point) => Ord (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

compare :: PolyLineF f point -> PolyLineF f point -> Ordering #

(<) :: PolyLineF f point -> PolyLineF f point -> Bool #

(<=) :: PolyLineF f point -> PolyLineF f point -> Bool #

(>) :: PolyLineF f point -> PolyLineF f point -> Bool #

(>=) :: PolyLineF f point -> PolyLineF f point -> Bool #

max :: PolyLineF f point -> PolyLineF f point -> PolyLineF f point #

min :: PolyLineF f point -> PolyLineF f point -> PolyLineF f point #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), Point_ point 2 r) => IsBoxable (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

boundingBox :: forall (d :: Nat) r0. (d ~ Dimension (PolyLineF f point), r0 ~ NumType (PolyLineF f point), Ord r0) => PolyLineF f point -> Box (Point d r0) #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), DefaultTransformByConstraints (PolyLineF f point) 2 r, Point_ point 2 r) => IsTransformable (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

transformBy :: Transformation (Dimension (PolyLineF f point)) (NumType (PolyLineF f point)) -> PolyLineF f point -> PolyLineF f point

(TraversableWithIndex Int f, Traversable1 f, Ixed (f point), IxValue (f point) ~ point, Index (f point) ~ Int) => HasVertices' (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Associated Types

type Vertex (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type Vertex (PolyLineF f point) = point
type VertexIx (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type VertexIx (PolyLineF f point) = Int

Methods

vertexAt :: VertexIx (PolyLineF f point) -> IndexedTraversal' (VertexIx (PolyLineF f point)) (PolyLineF f point) (Vertex (PolyLineF f point)) Source #

numVertices :: PolyLineF f point -> Int Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), HasFromFoldable1 f, Point_ point d r, TraversableWithIndex Int f) => ConstructablePolyLine_ (PolyLineF f point) point Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

polyLineFromPoints :: Foldable1 f0 => f0 point -> PolyLineF f point Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point), HasFromFoldable1 f, Point_ point d r, TraversableWithIndex Int f) => PolyLine_ (PolyLineF f point) point Source # 
Instance details

Defined in HGeometry.PolyLine

Traversable1 f => HasEnd (PolyLineF f point) point Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

end :: Lens' (PolyLineF f point) point #

Traversable1 f => HasStart (PolyLineF f point) point Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

start :: Lens' (PolyLineF f point) point #

(TraversableWithIndex Int f, Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (PolyLineF f point) (PolyLineF f point') Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

vertices :: IndexedTraversal1 (VertexIx (PolyLineF f point)) (PolyLineF f point) (PolyLineF f point') (Vertex (PolyLineF f point)) (Vertex (PolyLineF f point')) Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasPoints (PolyLineF f point) (PolyLineF f point') point point' Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

allPoints :: forall (d :: Nat) r r'. (Point_ point d r, Point_ point' d r', NumType (PolyLineF f point) ~ r, NumType (PolyLineF f point') ~ r', Dimension (PolyLineF f point) ~ d, Dimension (PolyLineF f point') ~ d) => Traversal1 (PolyLineF f point) (PolyLineF f point') point point' #

type Rep (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type Rep (PolyLineF f point) = D1 ('MetaData "PolyLineF" "HGeometry.PolyLine" "hgeometry-1.0.0.0-inplace" 'True) (C1 ('MetaCons "PolyLine" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f point))))
type Dimension (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type Dimension (PolyLineF f point) = Dimension point
type NumType (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type NumType (PolyLineF f point) = NumType point
type Vertex (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type Vertex (PolyLineF f point) = point
type VertexIx (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

type VertexIx (PolyLineF f point) = Int

type PolyLine = PolyLineF NonEmptyVector Source #

By default we store simple poylline as non-empty vectors.

_PolyLineF :: forall {k1} {k2} f1 (point :: k1) f' (point' :: k2) p f2. (Profunctor p, Functor f2) => p (f1 point) (f2 (f' point')) -> p (PolyLineF f1 point) (f2 (PolyLineF f' point')) Source #

Access the container

class HasVertices' graph => HasVertices graph graph' where Source #

Class that expresses that we have a non-empty type changing traversal of all vertices.

Methods

vertices :: IndexedTraversal1 (VertexIx graph) graph graph' (Vertex graph) (Vertex graph') Source #

Traversal of all vertices in the graph

Instances

Instances details
HasVertices Graph Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasVertices (Triangle point) (Triangle point') 
Instance details

Defined in HGeometry.Triangle

Methods

vertices :: IndexedTraversal1 (VertexIx (Triangle point)) (Triangle point) (Triangle point') (Vertex (Triangle point)) (Vertex (Triangle point')) Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (BezierSplineF f point) (BezierSplineF f point') Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

vertices :: IndexedTraversal1 (VertexIx (BezierSplineF f point)) (BezierSplineF f point) (BezierSplineF f point') (Vertex (BezierSplineF f point)) (Vertex (BezierSplineF f point')) Source #

HasVertices graph graph' => HasVertices (graph :+ extra) (graph' :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Methods

vertices :: IndexedTraversal1 (VertexIx (graph :+ extra)) (graph :+ extra) (graph' :+ extra) (Vertex (graph :+ extra)) (Vertex (graph' :+ extra)) Source #

(TraversableWithIndex Int f, Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (PolyLineF f point) (PolyLineF f point') Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

vertices :: IndexedTraversal1 (VertexIx (PolyLineF f point)) (PolyLineF f point) (PolyLineF f point') (Vertex (PolyLineF f point)) (Vertex (PolyLineF f point')) Source #

HasVertices (SimplePolygonF f point) (SimplePolygonF f point') => HasVertices (ConvexPolygonF f point) (ConvexPolygonF f point') Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

VertexContainer f point => HasVertices (SimplePolygonF f point) (SimplePolygonF f point') Source # 
Instance details

Defined in HGeometry.Polygon.Simple

(HoleContainer h f point, VertexContainer f point) => HasVertices (PolygonalDomainF h f point) (PolygonalDomainF h f point') Source # 
Instance details

Defined in HGeometry.Polygon.WithHoles

Methods

vertices :: IndexedTraversal1 (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (PolygonalDomainF h f point') (Vertex (PolygonalDomainF h f point)) (Vertex (PolygonalDomainF h f point')) Source #

HasVertices (GGraph f v e) (GGraph f v' e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

Methods

vertices :: IndexedTraversal1 (VertexIx (GGraph f v e)) (GGraph f v e) (GGraph f v' e) (Vertex (GGraph f v e)) (Vertex (GGraph f v' e)) Source #

Ord i => HasVertices (GGraph f i v e) (GGraph f i v' e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Methods

vertices :: IndexedTraversal1 (VertexIx (GGraph f i v e)) (GGraph f i v e) (GGraph f i v' e) (Vertex (GGraph f i v e)) (Vertex (GGraph f i v' e)) Source #

HasVertices (CPlaneGraph s v e f) (CPlaneGraph s v' e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Methods

vertices :: IndexedTraversal1 (VertexIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v' e f) (Vertex (CPlaneGraph s v e f)) (Vertex (CPlaneGraph s v' e f)) Source #

HasVertices (PlanarGraphF pg s v e f) (PlanarGraphF pg s v' e f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

Methods

vertices :: IndexedTraversal1 (VertexIx (PlanarGraphF pg s v e f)) (PlanarGraphF pg s v e f) (PlanarGraphF pg s v' e f) (Vertex (PlanarGraphF pg s v e f)) (Vertex (PlanarGraphF pg s v' e f)) Source #

class HasEdges' graph => HasEdges graph graph' where Source #

Class for types that have a type changing traversal of the edges

Methods

edges :: IndexedTraversal (EdgeIx graph) graph graph' (Edge graph) (Edge graph') Source #

Traversal of all edges in the graph

Instances

Instances details
HasEdges Graph Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasEdges graph graph' => HasEdges (graph :+ extra) (graph' :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Methods

edges :: IndexedTraversal (EdgeIx (graph :+ extra)) (graph :+ extra) (graph' :+ extra) (Edge (graph :+ extra)) (Edge (graph' :+ extra)) Source #

HasEdges (GGraph f v e) (GGraph f v e') 
Instance details

Defined in Hiraffe.AdjacencyListRep

Methods

edges :: IndexedTraversal (EdgeIx (GGraph f v e)) (GGraph f v e) (GGraph f v e') (Edge (GGraph f v e)) (Edge (GGraph f v e')) Source #

Ord i => HasEdges (GGraph f i v e) (GGraph f i v e') 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Methods

edges :: IndexedTraversal (EdgeIx (GGraph f i v e)) (GGraph f i v e) (GGraph f i v e') (Edge (GGraph f i v e)) (Edge (GGraph f i v e')) Source #

HasEdges (CPlaneGraph s v e f) (CPlaneGraph s v e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Methods

edges :: IndexedTraversal (EdgeIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v e f) (Edge (CPlaneGraph s v e f)) (Edge (CPlaneGraph s v e f)) Source #

HasEdges (PlanarGraphF pg s v e f) (PlanarGraphF pg s v e' f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

Methods

edges :: IndexedTraversal (EdgeIx (PlanarGraphF pg s v e f)) (PlanarGraphF pg s v e f) (PlanarGraphF pg s v e' f) (Edge (PlanarGraphF pg s v e f)) (Edge (PlanarGraphF pg s v e' f)) Source #

\ No newline at end of file diff --git a/haddocks/hgeometry/HGeometry-Polygon-Class.html b/haddocks/hgeometry/HGeometry-Polygon-Class.html index b95aacbc1..c42acac5e 100644 --- a/haddocks/hgeometry/HGeometry-Polygon-Class.html +++ b/haddocks/hgeometry/HGeometry-Polygon-Class.html @@ -8,4 +8,4 @@ if the verices are given in counter clockwise order, the area will be positive.

running time: \(O(n)\)

minimumVertexBy :: HasOuterBoundary polygon => (Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) Source #

Yield the minimum vertex of a polygon according to the given comparison function.

running time \( O(n) \)

Yield the minimum vertex of a polygon according to the given comparison function.

running time \( O(n) \)

maximumVertexBy :: HasOuterBoundary polygon => (Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) Source #

Yield the maximum vertex of a polygon according to the given comparison function.

running time \( O(n) \)

outerBoundaryEdgeSegmentAt :: (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r) => VertexIx polygon -> IndexedGetter (VertexIx polygon, VertexIx polygon) polygon (ClosedLineSegment point) Source #

Get the line segment representing the edge that has the given vertex as its starting edge

running time: \(O(1)\)

outerBoundaryEdgeSegments :: (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r) => IndexedFold1 (VertexIx polygon, VertexIx polygon) polygon (ClosedLineSegment point) Source #

Get the line segments representing the outer boundary of the polygon.

outerBoundaryWithNeighbours :: (HasOuterBoundary polygon, VertexIx polygon ~ Int) => IndexedFold1 (VertexIx polygon, (VertexIx polygon, VertexIx polygon)) polygon (Vertex polygon, (Vertex polygon, Vertex polygon)) Source #

A fold that associates each vertex on the boundary with its predecessor and successor (in that order) along the boundary.

type Hole polygon = SimplePolygonF (HoleF polygon) (Vertex polygon) Source #

A hole is a simple polygon

class VertexContainer (HoleF polygon) (Vertex polygon) => HasHoles polygon where Source #

Accessing the holes in a polygon (if there are any.)

the default implementation assumes there are no holes

Minimal complete definition

Nothing

Associated Types

type HoleIx polygon Source #

Type we use to index holes.

type HoleIx polygon = Void

type HoleF polygon :: Type -> Type Source #

The functor used in the holes

Traversal over the holes in the polygon. Each hole is a simple polygon.

type HoleF polygon = Cyclic NonEmptyVector

Methods

holes :: IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) Source #

holeAt :: HoleIx polygon -> IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) Source #

Instances

Instances details
HasHoles polygon => HasHoles (polygon :+ extra) Source # 
Instance details

Defined in HGeometry.Polygon.Class

Associated Types

type HoleIx (polygon :+ extra) 
Instance details

Defined in HGeometry.Polygon.Class

type HoleIx (polygon :+ extra) = HoleIx polygon
type HoleF (polygon :+ extra) 
Instance details

Defined in HGeometry.Polygon.Class

type HoleF (polygon :+ extra) = HoleF polygon

Methods

holes :: IndexedTraversal' (HoleIx (polygon :+ extra)) (polygon :+ extra) (Hole (polygon :+ extra)) Source #

holeAt :: HoleIx (polygon :+ extra) -> IndexedTraversal' (HoleIx (polygon :+ extra)) (polygon :+ extra) (Hole (polygon :+ extra)) Source #

HasHoles (ConvexPolygonF f point) Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

Associated Types

type HoleIx (ConvexPolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

type HoleIx (ConvexPolygonF f point) = Void
type HoleF (ConvexPolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

HasHoles (SimplePolygonF f point) Source # 
Instance details

Defined in HGeometry.Polygon.Simple

Associated Types

type HoleIx (SimplePolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Simple

type HoleIx (SimplePolygonF f point) = Void
type HoleF (SimplePolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Simple

HoleContainer h f point => HasHoles (PolygonalDomainF h f point) Source # 
Instance details

Defined in HGeometry.Polygon.WithHoles

Associated Types

type HoleIx (PolygonalDomainF h f point) 
Instance details

Defined in HGeometry.Polygon.WithHoles

type HoleIx (PolygonalDomainF h f point) = Int
type HoleF (PolygonalDomainF h f point) 
Instance details

Defined in HGeometry.Polygon.WithHoles

type HoleF (PolygonalDomainF h f point) = f

class (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r, NumType polygon ~ r, Dimension polygon ~ 2, HasHoles polygon) => Polygon_ polygon point r where Source #

A class representing (planar) polygons. The edges of the polygon - may not intersect.

Minimal complete definition

ccwPredecessorOf, ccwSuccessorOf

Methods

extremes :: Vector 2 r -> polygon -> (point, point) Source #

Finds the extreme points, minimum and maximum, in a given direction

running time: \(O(n)\)

ccwPredecessorOf :: VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) Source #

Given a vertexIdx v; get an IndexedLens to access the CCW predecessor of v

ccwSuccessorOf :: VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) Source #

Given a vertexIdx v; get an IndexedLens to access the CCW predecessor of v

Instances

Instances details
Polygon_ polygon point r => Polygon_ (polygon :+ extra) point r Source # 
Instance details

Defined in HGeometry.Polygon.Class

Methods

extremes :: Vector 2 r -> (polygon :+ extra) -> (point, point) Source #

ccwPredecessorOf :: VertexIx (polygon :+ extra) -> IndexedLens' (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) Source #

ccwSuccessorOf :: VertexIx (polygon :+ extra) -> IndexedLens' (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) Source #

(SimplePolygon_ (SimplePolygonF f point) point r, Point_ point 2 r) => Polygon_ (ConvexPolygonF f point) point r Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

(Point_ point 2 r, HasFromFoldable1 f, VertexContainer f point) => Polygon_ (SimplePolygonF f point) point r Source # 
Instance details

Defined in HGeometry.Polygon.Simple

(Point_ point 2 r, HasFromFoldable1 f, HoleContainer h f point) => Polygon_ (PolygonalDomainF h f point) point r Source # 
Instance details

Defined in HGeometry.Polygon.WithHoles

Methods

extremes :: Vector 2 r -> PolygonalDomainF h f point -> (point, point) Source #

ccwPredecessorOf :: VertexIx (PolygonalDomainF h f point) -> IndexedLens' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) Source #

ccwSuccessorOf :: VertexIx (PolygonalDomainF h f point) -> IndexedLens' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) Source #

class HasVertices' graph => HasVertices graph graph' where Source #

Class that expresses that we have a non-empty type changing traversal of all vertices.

Methods

vertices :: IndexedTraversal1 (VertexIx graph) graph graph' (Vertex graph) (Vertex graph') Source #

Traversal of all vertices in the graph

Instances

Instances details
HasVertices Graph Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasVertices (Triangle point) (Triangle point') 
Instance details

Defined in HGeometry.Triangle

Methods

vertices :: IndexedTraversal1 (VertexIx (Triangle point)) (Triangle point) (Triangle point') (Vertex (Triangle point)) (Vertex (Triangle point')) Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (BezierSplineF f point) (BezierSplineF f point') Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

vertices :: IndexedTraversal1 (VertexIx (BezierSplineF f point)) (BezierSplineF f point) (BezierSplineF f point') (Vertex (BezierSplineF f point)) (Vertex (BezierSplineF f point')) Source #

HasVertices graph graph' => HasVertices (graph :+ extra) (graph' :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Methods

vertices :: IndexedTraversal1 (VertexIx (graph :+ extra)) (graph :+ extra) (graph' :+ extra) (Vertex (graph :+ extra)) (Vertex (graph' :+ extra)) Source #

(TraversableWithIndex Int f, Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (PolyLineF f point) (PolyLineF f point') Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

vertices :: IndexedTraversal1 (VertexIx (PolyLineF f point)) (PolyLineF f point) (PolyLineF f point') (Vertex (PolyLineF f point)) (Vertex (PolyLineF f point')) Source #

HasVertices (SimplePolygonF f point) (SimplePolygonF f point') => HasVertices (ConvexPolygonF f point) (ConvexPolygonF f point') Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

VertexContainer f point => HasVertices (SimplePolygonF f point) (SimplePolygonF f point') Source # 
Instance details

Defined in HGeometry.Polygon.Simple

(HoleContainer h f point, VertexContainer f point) => HasVertices (PolygonalDomainF h f point) (PolygonalDomainF h f point') Source # 
Instance details

Defined in HGeometry.Polygon.WithHoles

Methods

vertices :: IndexedTraversal1 (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (PolygonalDomainF h f point') (Vertex (PolygonalDomainF h f point)) (Vertex (PolygonalDomainF h f point')) Source #

HasVertices (GGraph f v e) (GGraph f v' e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

Methods

vertices :: IndexedTraversal1 (VertexIx (GGraph f v e)) (GGraph f v e) (GGraph f v' e) (Vertex (GGraph f v e)) (Vertex (GGraph f v' e)) Source #

Ord i => HasVertices (GGraph f i v e) (GGraph f i v' e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Methods

vertices :: IndexedTraversal1 (VertexIx (GGraph f i v e)) (GGraph f i v e) (GGraph f i v' e) (Vertex (GGraph f i v e)) (Vertex (GGraph f i v' e)) Source #

HasVertices (CPlaneGraph s v e f) (CPlaneGraph s v' e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Methods

vertices :: IndexedTraversal1 (VertexIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v' e f) (Vertex (CPlaneGraph s v e f)) (Vertex (CPlaneGraph s v' e f)) Source #

class HasVertices' graph where Source #

A class representing types that have vertices.

Minimal complete definition

vertexAt

Associated Types

type Vertex graph Source #

Vertices of the graph are of this type

type VertexIx graph Source #

Vertices are indexed by elements of type VertexIx

Methods

vertexAt :: VertexIx graph -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) Source #

Accessor to a given vertex.

numVertices :: graph -> Int Source #

Number of vertices in the graph.

running time: O(1)

default numVertices :: HasVertices graph graph => graph -> Int Source #

Instances

Instances details
HasVertices' Graph 
Instance details

Defined in Hiraffe.Graph.Class

Associated Types

type Vertex Graph 
Instance details

Defined in Hiraffe.Graph.Class

type Vertex Graph = ()
type VertexIx Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasVertices' (Triangle point) 
Instance details

Defined in HGeometry.Triangle

Associated Types

type Vertex (Triangle point) 
Instance details

Defined in HGeometry.Triangle

type Vertex (Triangle point) = point
type VertexIx (Triangle point) 
Instance details

Defined in HGeometry.Triangle

type VertexIx (Triangle point) = Int

Methods

vertexAt :: VertexIx (Triangle point) -> IndexedTraversal' (VertexIx (Triangle point)) (Triangle point) (Vertex (Triangle point)) Source #

numVertices :: Triangle point -> Int Source #

(Traversable1 f, Ixed (f point), IxValue (f point) ~ point, Index (f point) ~ Int) => HasVertices' (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

Associated Types

type Vertex (BezierSplineF f point) 
Instance details

Defined in HGeometry.BezierSpline

type Vertex (BezierSplineF f point) = point
type VertexIx (BezierSplineF f point) 
Instance details

Defined in HGeometry.BezierSpline

type VertexIx (BezierSplineF f point) = Int
HasVertices' graph => HasVertices' (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Associated Types

type Vertex (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

type Vertex (graph :+ extra) = Vertex graph
type VertexIx (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

type VertexIx (graph :+ extra) = VertexIx graph

Methods

vertexAt :: VertexIx (graph :+ extra) -> IndexedTraversal' (VertexIx (graph :+ extra)) (graph :+ extra) (Vertex (graph :+ extra)) Source #

numVertices :: (graph :+ extra) -> Int Source #

(TraversableWithIndex Int f, Traversable1 f, Ixed (f point), IxValue (f point) ~ point, Index (f point) ~ Int) => HasVertices' (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Associated Types

type Vertex (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type Vertex (PolyLineF f point) = point
type VertexIx (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type VertexIx (PolyLineF f point) = Int

Methods

vertexAt :: VertexIx (PolyLineF f point) -> IndexedTraversal' (VertexIx (PolyLineF f point)) (PolyLineF f point) (Vertex (PolyLineF f point)) Source #

numVertices :: PolyLineF f point -> Int Source #

HasVertices' (SimplePolygonF f point) => HasVertices' (ConvexPolygonF f point) Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

Associated Types

type Vertex (ConvexPolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

type Vertex (ConvexPolygonF f point) = Vertex (SimplePolygonF f point)
type VertexIx (ConvexPolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

type VertexIx (ConvexPolygonF f point) = VertexIx (SimplePolygonF f point)
VertexContainer f point => HasVertices' (SimplePolygonF f point) Source # 
Instance details

Defined in HGeometry.Polygon.Simple

Associated Types

type Vertex (SimplePolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Simple

type Vertex (SimplePolygonF f point) = point
type VertexIx (SimplePolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Simple

type VertexIx (SimplePolygonF f point) = Int
HoleContainer h f point => HasVertices' (PolygonalDomainF h f point) Source # 
Instance details

Defined in HGeometry.Polygon.WithHoles

Associated Types

type Vertex (PolygonalDomainF h f point) 
Instance details

Defined in HGeometry.Polygon.WithHoles

type Vertex (PolygonalDomainF h f point) = point
type VertexIx (PolygonalDomainF h f point) 
Instance details

Defined in HGeometry.Polygon.WithHoles

type VertexIx (PolygonalDomainF h f point)
HasVertices' (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

Associated Types

type Vertex (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

type Vertex (GGraph f v e) = v
type VertexIx (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

type VertexIx (GGraph f v e) = Int

Methods

vertexAt :: VertexIx (GGraph f v e) -> IndexedTraversal' (VertexIx (GGraph f v e)) (GGraph f v e) (Vertex (GGraph f v e)) Source #

numVertices :: GGraph f v e -> Int Source #

Ord i => HasVertices' (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Associated Types

type Vertex (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

type Vertex (GGraph f i v e) = v
type VertexIx (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

type VertexIx (GGraph f i v e) = i

Methods

vertexAt :: VertexIx (GGraph f i v e) -> IndexedTraversal' (VertexIx (GGraph f i v e)) (GGraph f i v e) (Vertex (GGraph f i v e)) Source #

numVertices :: GGraph f i v e -> Int Source #

HasVertices' (CPlaneGraph s v e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Associated Types

type Vertex (CPlaneGraph s v e f) 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

type Vertex (CPlaneGraph s v e f) = v
type VertexIx (CPlaneGraph s v e f) 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

type VertexIx (CPlaneGraph s v e f) = VertexId s

class HasEdges' graph => HasEdges graph graph' where Source #

Class for types that have a type changing traversal of the edges

Methods

edges :: IndexedTraversal (EdgeIx graph) graph graph' (Edge graph) (Edge graph') Source #

Traversal of all edges in the graph

Instances

Instances details
HasEdges Graph Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasEdges graph graph' => HasEdges (graph :+ extra) (graph' :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Methods

edges :: IndexedTraversal (EdgeIx (graph :+ extra)) (graph :+ extra) (graph' :+ extra) (Edge (graph :+ extra)) (Edge (graph' :+ extra)) Source #

HasEdges (GGraph f v e) (GGraph f v e') 
Instance details

Defined in Hiraffe.AdjacencyListRep

Methods

edges :: IndexedTraversal (EdgeIx (GGraph f v e)) (GGraph f v e) (GGraph f v e') (Edge (GGraph f v e)) (Edge (GGraph f v e')) Source #

Ord i => HasEdges (GGraph f i v e) (GGraph f i v e') 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Methods

edges :: IndexedTraversal (EdgeIx (GGraph f i v e)) (GGraph f i v e) (GGraph f i v e') (Edge (GGraph f i v e)) (Edge (GGraph f i v e')) Source #

HasEdges (CPlaneGraph s v e f) (CPlaneGraph s v e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Methods

edges :: IndexedTraversal (EdgeIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v e f) (Edge (CPlaneGraph s v e f)) (Edge (CPlaneGraph s v e f)) Source #

class HasEdges' graph where Source #

A class for things that have edges

Minimal complete definition

edgeAt

Associated Types

type Edge graph Source #

The edges of the graph are of this type

type EdgeIx graph Source #

The Edges are indexed by something of type EdgeIx

Methods

edgeAt :: EdgeIx graph -> IndexedTraversal' (EdgeIx graph) graph (Edge graph) Source #

Indexed traversal of a given edge.

numEdges :: graph -> Int Source #

Number of edges in the graph.

running time: O(1)

default numEdges :: HasEdges graph graph => graph -> Int Source #

Instances

Instances details
HasEdges' Graph 
Instance details

Defined in Hiraffe.Graph.Class

Associated Types

type Edge Graph 
Instance details

Defined in Hiraffe.Graph.Class

type EdgeIx Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasEdges' graph => HasEdges' (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Associated Types

type Edge (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

type Edge (graph :+ extra) = Edge graph
type EdgeIx (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

type EdgeIx (graph :+ extra) = EdgeIx graph

Methods

edgeAt :: EdgeIx (graph :+ extra) -> IndexedTraversal' (EdgeIx (graph :+ extra)) (graph :+ extra) (Edge (graph :+ extra)) Source #

numEdges :: (graph :+ extra) -> Int Source #

HasEdges' (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

Associated Types

type Edge (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

type Edge (GGraph f v e) = Dart (GGraph f v e)
type EdgeIx (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

type EdgeIx (GGraph f v e) = DartIx (GGraph f v e)

Methods

edgeAt :: EdgeIx (GGraph f v e) -> IndexedTraversal' (EdgeIx (GGraph f v e)) (GGraph f v e) (Edge (GGraph f v e)) Source #

numEdges :: GGraph f v e -> Int Source #

Ord i => HasEdges' (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Associated Types

type Edge (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

type Edge (GGraph f i v e) = Dart (GGraph f i v e)
type EdgeIx (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

type EdgeIx (GGraph f i v e) = DartIx (GGraph f i v e)

Methods

edgeAt :: EdgeIx (GGraph f i v e) -> IndexedTraversal' (EdgeIx (GGraph f i v e)) (GGraph f i v e) (Edge (GGraph f i v e)) Source #

numEdges :: GGraph f i v e -> Int Source #

HasEdges' (CPlaneGraph s v e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Associated Types

type Edge (CPlaneGraph s v e f) 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

type Edge (CPlaneGraph s v e f) = e
type EdgeIx (CPlaneGraph s v e f) 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

type EdgeIx (CPlaneGraph s v e f) = DartId s

Methods

edgeAt :: EdgeIx (CPlaneGraph s v e f) -> IndexedTraversal' (EdgeIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Edge (CPlaneGraph s v e f)) Source #

numEdges :: CPlaneGraph s v e f -> Int Source #

\ No newline at end of file + may not intersect.

Minimal complete definition

ccwPredecessorOf, ccwSuccessorOf

Methods

extremes :: Vector 2 r -> polygon -> (point, point) Source #

Finds the extreme points, minimum and maximum, in a given direction

running time: \(O(n)\)

ccwPredecessorOf :: VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) Source #

Given a vertexIdx v; get an IndexedLens to access the CCW predecessor of v

ccwSuccessorOf :: VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) Source #

Given a vertexIdx v; get an IndexedLens to access the CCW predecessor of v

Instances

Instances details
Polygon_ polygon point r => Polygon_ (polygon :+ extra) point r Source # 
Instance details

Defined in HGeometry.Polygon.Class

Methods

extremes :: Vector 2 r -> (polygon :+ extra) -> (point, point) Source #

ccwPredecessorOf :: VertexIx (polygon :+ extra) -> IndexedLens' (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) Source #

ccwSuccessorOf :: VertexIx (polygon :+ extra) -> IndexedLens' (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) Source #

(SimplePolygon_ (SimplePolygonF f point) point r, Point_ point 2 r) => Polygon_ (ConvexPolygonF f point) point r Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

(Point_ point 2 r, HasFromFoldable1 f, VertexContainer f point) => Polygon_ (SimplePolygonF f point) point r Source # 
Instance details

Defined in HGeometry.Polygon.Simple

(Point_ point 2 r, HasFromFoldable1 f, HoleContainer h f point) => Polygon_ (PolygonalDomainF h f point) point r Source # 
Instance details

Defined in HGeometry.Polygon.WithHoles

Methods

extremes :: Vector 2 r -> PolygonalDomainF h f point -> (point, point) Source #

ccwPredecessorOf :: VertexIx (PolygonalDomainF h f point) -> IndexedLens' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) Source #

ccwSuccessorOf :: VertexIx (PolygonalDomainF h f point) -> IndexedLens' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) Source #

class HasVertices' graph => HasVertices graph graph' where Source #

Class that expresses that we have a non-empty type changing traversal of all vertices.

Methods

vertices :: IndexedTraversal1 (VertexIx graph) graph graph' (Vertex graph) (Vertex graph') Source #

Traversal of all vertices in the graph

Instances

Instances details
HasVertices Graph Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasVertices (Triangle point) (Triangle point') 
Instance details

Defined in HGeometry.Triangle

Methods

vertices :: IndexedTraversal1 (VertexIx (Triangle point)) (Triangle point) (Triangle point') (Vertex (Triangle point)) (Vertex (Triangle point')) Source #

(Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (BezierSplineF f point) (BezierSplineF f point') Source # 
Instance details

Defined in HGeometry.BezierSpline

Methods

vertices :: IndexedTraversal1 (VertexIx (BezierSplineF f point)) (BezierSplineF f point) (BezierSplineF f point') (Vertex (BezierSplineF f point)) (Vertex (BezierSplineF f point')) Source #

HasVertices graph graph' => HasVertices (graph :+ extra) (graph' :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Methods

vertices :: IndexedTraversal1 (VertexIx (graph :+ extra)) (graph :+ extra) (graph' :+ extra) (Vertex (graph :+ extra)) (Vertex (graph' :+ extra)) Source #

(TraversableWithIndex Int f, Traversable1 f, IxValue (f point) ~ point, Index (f point) ~ Int, Ixed (f point)) => HasVertices (PolyLineF f point) (PolyLineF f point') Source # 
Instance details

Defined in HGeometry.PolyLine

Methods

vertices :: IndexedTraversal1 (VertexIx (PolyLineF f point)) (PolyLineF f point) (PolyLineF f point') (Vertex (PolyLineF f point)) (Vertex (PolyLineF f point')) Source #

HasVertices (SimplePolygonF f point) (SimplePolygonF f point') => HasVertices (ConvexPolygonF f point) (ConvexPolygonF f point') Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

VertexContainer f point => HasVertices (SimplePolygonF f point) (SimplePolygonF f point') Source # 
Instance details

Defined in HGeometry.Polygon.Simple

(HoleContainer h f point, VertexContainer f point) => HasVertices (PolygonalDomainF h f point) (PolygonalDomainF h f point') Source # 
Instance details

Defined in HGeometry.Polygon.WithHoles

Methods

vertices :: IndexedTraversal1 (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (PolygonalDomainF h f point') (Vertex (PolygonalDomainF h f point)) (Vertex (PolygonalDomainF h f point')) Source #

HasVertices (GGraph f v e) (GGraph f v' e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

Methods

vertices :: IndexedTraversal1 (VertexIx (GGraph f v e)) (GGraph f v e) (GGraph f v' e) (Vertex (GGraph f v e)) (Vertex (GGraph f v' e)) Source #

Ord i => HasVertices (GGraph f i v e) (GGraph f i v' e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Methods

vertices :: IndexedTraversal1 (VertexIx (GGraph f i v e)) (GGraph f i v e) (GGraph f i v' e) (Vertex (GGraph f i v e)) (Vertex (GGraph f i v' e)) Source #

HasVertices (CPlaneGraph s v e f) (CPlaneGraph s v' e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Methods

vertices :: IndexedTraversal1 (VertexIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v' e f) (Vertex (CPlaneGraph s v e f)) (Vertex (CPlaneGraph s v' e f)) Source #

HasVertices (PlanarGraphF pg s v e f) (PlanarGraphF pg s v' e f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

Methods

vertices :: IndexedTraversal1 (VertexIx (PlanarGraphF pg s v e f)) (PlanarGraphF pg s v e f) (PlanarGraphF pg s v' e f) (Vertex (PlanarGraphF pg s v e f)) (Vertex (PlanarGraphF pg s v' e f)) Source #

class HasVertices' graph where Source #

A class representing types that have vertices.

Minimal complete definition

vertexAt

Associated Types

type Vertex graph Source #

Vertices of the graph are of this type

type VertexIx graph Source #

Vertices are indexed by elements of type VertexIx

Methods

vertexAt :: VertexIx graph -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) Source #

Accessor to a given vertex.

numVertices :: graph -> Int Source #

Number of vertices in the graph.

running time: O(1)

default numVertices :: HasVertices graph graph => graph -> Int Source #

Instances

Instances details
HasVertices' Graph 
Instance details

Defined in Hiraffe.Graph.Class

Associated Types

type Vertex Graph 
Instance details

Defined in Hiraffe.Graph.Class

type Vertex Graph = ()
type VertexIx Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasVertices' (Triangle point) 
Instance details

Defined in HGeometry.Triangle

Associated Types

type Vertex (Triangle point) 
Instance details

Defined in HGeometry.Triangle

type Vertex (Triangle point) = point
type VertexIx (Triangle point) 
Instance details

Defined in HGeometry.Triangle

type VertexIx (Triangle point) = Int

Methods

vertexAt :: VertexIx (Triangle point) -> IndexedTraversal' (VertexIx (Triangle point)) (Triangle point) (Vertex (Triangle point)) Source #

numVertices :: Triangle point -> Int Source #

(Traversable1 f, Ixed (f point), IxValue (f point) ~ point, Index (f point) ~ Int) => HasVertices' (BezierSplineF f point) Source # 
Instance details

Defined in HGeometry.BezierSpline

Associated Types

type Vertex (BezierSplineF f point) 
Instance details

Defined in HGeometry.BezierSpline

type Vertex (BezierSplineF f point) = point
type VertexIx (BezierSplineF f point) 
Instance details

Defined in HGeometry.BezierSpline

type VertexIx (BezierSplineF f point) = Int
HasVertices' graph => HasVertices' (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Associated Types

type Vertex (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

type Vertex (graph :+ extra) = Vertex graph
type VertexIx (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

type VertexIx (graph :+ extra) = VertexIx graph

Methods

vertexAt :: VertexIx (graph :+ extra) -> IndexedTraversal' (VertexIx (graph :+ extra)) (graph :+ extra) (Vertex (graph :+ extra)) Source #

numVertices :: (graph :+ extra) -> Int Source #

(TraversableWithIndex Int f, Traversable1 f, Ixed (f point), IxValue (f point) ~ point, Index (f point) ~ Int) => HasVertices' (PolyLineF f point) Source # 
Instance details

Defined in HGeometry.PolyLine

Associated Types

type Vertex (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type Vertex (PolyLineF f point) = point
type VertexIx (PolyLineF f point) 
Instance details

Defined in HGeometry.PolyLine

type VertexIx (PolyLineF f point) = Int

Methods

vertexAt :: VertexIx (PolyLineF f point) -> IndexedTraversal' (VertexIx (PolyLineF f point)) (PolyLineF f point) (Vertex (PolyLineF f point)) Source #

numVertices :: PolyLineF f point -> Int Source #

HasVertices' (SimplePolygonF f point) => HasVertices' (ConvexPolygonF f point) Source # 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

Associated Types

type Vertex (ConvexPolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

type Vertex (ConvexPolygonF f point) = Vertex (SimplePolygonF f point)
type VertexIx (ConvexPolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Convex.Implementation

type VertexIx (ConvexPolygonF f point) = VertexIx (SimplePolygonF f point)
VertexContainer f point => HasVertices' (SimplePolygonF f point) Source # 
Instance details

Defined in HGeometry.Polygon.Simple

Associated Types

type Vertex (SimplePolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Simple

type Vertex (SimplePolygonF f point) = point
type VertexIx (SimplePolygonF f point) 
Instance details

Defined in HGeometry.Polygon.Simple

type VertexIx (SimplePolygonF f point) = Int
HoleContainer h f point => HasVertices' (PolygonalDomainF h f point) Source # 
Instance details

Defined in HGeometry.Polygon.WithHoles

Associated Types

type Vertex (PolygonalDomainF h f point) 
Instance details

Defined in HGeometry.Polygon.WithHoles

type Vertex (PolygonalDomainF h f point) = point
type VertexIx (PolygonalDomainF h f point) 
Instance details

Defined in HGeometry.Polygon.WithHoles

type VertexIx (PolygonalDomainF h f point)
HasVertices' (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

Associated Types

type Vertex (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

type Vertex (GGraph f v e) = v
type VertexIx (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

type VertexIx (GGraph f v e) = Int

Methods

vertexAt :: VertexIx (GGraph f v e) -> IndexedTraversal' (VertexIx (GGraph f v e)) (GGraph f v e) (Vertex (GGraph f v e)) Source #

numVertices :: GGraph f v e -> Int Source #

Ord i => HasVertices' (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Associated Types

type Vertex (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

type Vertex (GGraph f i v e) = v
type VertexIx (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

type VertexIx (GGraph f i v e) = i

Methods

vertexAt :: VertexIx (GGraph f i v e) -> IndexedTraversal' (VertexIx (GGraph f i v e)) (GGraph f i v e) (Vertex (GGraph f i v e)) Source #

numVertices :: GGraph f i v e -> Int Source #

HasVertices' (CPlaneGraph s v e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Associated Types

type Vertex (CPlaneGraph s v e f) 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

type Vertex (CPlaneGraph s v e f) = v
type VertexIx (CPlaneGraph s v e f) 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

type VertexIx (CPlaneGraph s v e f) = VertexId s
HasVertices' (PlanarGraphF pg s v e f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

Associated Types

type Vertex (PlanarGraphF pg s v e f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

type Vertex (PlanarGraphF pg s v e f) = v
type VertexIx (PlanarGraphF pg s v e f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

type VertexIx (PlanarGraphF pg s v e f) = VertexId s

Methods

vertexAt :: VertexIx (PlanarGraphF pg s v e f) -> IndexedTraversal' (VertexIx (PlanarGraphF pg s v e f)) (PlanarGraphF pg s v e f) (Vertex (PlanarGraphF pg s v e f)) Source #

numVertices :: PlanarGraphF pg s v e f -> Int Source #

class HasEdges' graph => HasEdges graph graph' where Source #

Class for types that have a type changing traversal of the edges

Methods

edges :: IndexedTraversal (EdgeIx graph) graph graph' (Edge graph) (Edge graph') Source #

Traversal of all edges in the graph

Instances

Instances details
HasEdges Graph Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasEdges graph graph' => HasEdges (graph :+ extra) (graph' :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Methods

edges :: IndexedTraversal (EdgeIx (graph :+ extra)) (graph :+ extra) (graph' :+ extra) (Edge (graph :+ extra)) (Edge (graph' :+ extra)) Source #

HasEdges (GGraph f v e) (GGraph f v e') 
Instance details

Defined in Hiraffe.AdjacencyListRep

Methods

edges :: IndexedTraversal (EdgeIx (GGraph f v e)) (GGraph f v e) (GGraph f v e') (Edge (GGraph f v e)) (Edge (GGraph f v e')) Source #

Ord i => HasEdges (GGraph f i v e) (GGraph f i v e') 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Methods

edges :: IndexedTraversal (EdgeIx (GGraph f i v e)) (GGraph f i v e) (GGraph f i v e') (Edge (GGraph f i v e)) (Edge (GGraph f i v e')) Source #

HasEdges (CPlaneGraph s v e f) (CPlaneGraph s v e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Methods

edges :: IndexedTraversal (EdgeIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v e f) (Edge (CPlaneGraph s v e f)) (Edge (CPlaneGraph s v e f)) Source #

HasEdges (PlanarGraphF pg s v e f) (PlanarGraphF pg s v e' f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

Methods

edges :: IndexedTraversal (EdgeIx (PlanarGraphF pg s v e f)) (PlanarGraphF pg s v e f) (PlanarGraphF pg s v e' f) (Edge (PlanarGraphF pg s v e f)) (Edge (PlanarGraphF pg s v e' f)) Source #

class HasEdges' graph where Source #

A class for things that have edges

Minimal complete definition

edgeAt

Associated Types

type Edge graph Source #

The edges of the graph are of this type

type EdgeIx graph Source #

The Edges are indexed by something of type EdgeIx

Methods

edgeAt :: EdgeIx graph -> IndexedTraversal' (EdgeIx graph) graph (Edge graph) Source #

Indexed traversal of a given edge.

numEdges :: graph -> Int Source #

Number of edges in the graph.

running time: O(1)

default numEdges :: HasEdges graph graph => graph -> Int Source #

Instances

Instances details
HasEdges' Graph 
Instance details

Defined in Hiraffe.Graph.Class

Associated Types

type Edge Graph 
Instance details

Defined in Hiraffe.Graph.Class

type EdgeIx Graph 
Instance details

Defined in Hiraffe.Graph.Class

HasEdges' graph => HasEdges' (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

Associated Types

type Edge (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

type Edge (graph :+ extra) = Edge graph
type EdgeIx (graph :+ extra) 
Instance details

Defined in Hiraffe.Graph.Class

type EdgeIx (graph :+ extra) = EdgeIx graph

Methods

edgeAt :: EdgeIx (graph :+ extra) -> IndexedTraversal' (EdgeIx (graph :+ extra)) (graph :+ extra) (Edge (graph :+ extra)) Source #

numEdges :: (graph :+ extra) -> Int Source #

HasEdges' (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

Associated Types

type Edge (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

type Edge (GGraph f v e) = Dart (GGraph f v e)
type EdgeIx (GGraph f v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep

type EdgeIx (GGraph f v e) = DartIx (GGraph f v e)

Methods

edgeAt :: EdgeIx (GGraph f v e) -> IndexedTraversal' (EdgeIx (GGraph f v e)) (GGraph f v e) (Edge (GGraph f v e)) Source #

numEdges :: GGraph f v e -> Int Source #

Ord i => HasEdges' (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

Associated Types

type Edge (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

type Edge (GGraph f i v e) = Dart (GGraph f i v e)
type EdgeIx (GGraph f i v e) 
Instance details

Defined in Hiraffe.AdjacencyListRep.Map

type EdgeIx (GGraph f i v e) = DartIx (GGraph f i v e)

Methods

edgeAt :: EdgeIx (GGraph f i v e) -> IndexedTraversal' (EdgeIx (GGraph f i v e)) (GGraph f i v e) (Edge (GGraph f i v e)) Source #

numEdges :: GGraph f i v e -> Int Source #

HasEdges' (CPlaneGraph s v e f) Source # 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

Associated Types

type Edge (CPlaneGraph s v e f) 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

type Edge (CPlaneGraph s v e f) = e
type EdgeIx (CPlaneGraph s v e f) 
Instance details

Defined in HGeometry.PlaneGraph.Connected.Type

type EdgeIx (CPlaneGraph s v e f) = DartId s

Methods

edgeAt :: EdgeIx (CPlaneGraph s v e f) -> IndexedTraversal' (EdgeIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Edge (CPlaneGraph s v e f)) Source #

numEdges :: CPlaneGraph s v e f -> Int Source #

HasEdges' (PlanarGraphF pg s v e f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

Associated Types

type Edge (PlanarGraphF pg s v e f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

type Edge (PlanarGraphF pg s v e f) = e
type EdgeIx (PlanarGraphF pg s v e f) 
Instance details

Defined in Hiraffe.PlanarGraph.Type

type EdgeIx (PlanarGraphF pg s v e f) = Dart s

Methods

edgeAt :: EdgeIx (PlanarGraphF pg s v e f) -> IndexedTraversal' (EdgeIx (PlanarGraphF pg s v e f)) (PlanarGraphF pg s v e f) (Edge (PlanarGraphF pg s v e f)) Source #

numEdges :: PlanarGraphF pg s v e f -> Int Source #

\ No newline at end of file diff --git a/haddocks/hgeometry/geojson/src/HGeometry.GeoJSON.html b/haddocks/hgeometry/geojson/src/HGeometry.GeoJSON.html index 4be7056b1..4291d8a8c 100644 --- a/haddocks/hgeometry/geojson/src/HGeometry.GeoJSON.html +++ b/haddocks/hgeometry/geojson/src/HGeometry.GeoJSON.html @@ -40,35 +40,35 @@ type instance Dimension PointXY = 2 instance HasVector PointXY PointXY where - vector :: forall (d :: Nat) r s. + vector :: forall (d :: Nat) r s. (Dimension PointXY ~ d, NumType PointXY ~ r, Dimension PointXY ~ d, NumType PointXY ~ s) => Lens PointXY PointXY (Vector d r) (Vector d s) -vector = (PointXY -> Vector d r) +vector = (PointXY -> Vector d r) -> (PointXY -> Vector d s -> PointXY) -> Lens PointXY PointXY (Vector d r) (Vector d s) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b -lens (\(PointXY Double -x Double -y) -> r -> r -> Vector 2 r +lens (\(PointXY Double +x Double +y) -> r -> r -> Vector 2 r forall r. r -> r -> Vector 2 r Vector2 r Double -x r +x r Double -y) (\PointXY -_ (Vector2 s -x s -y) -> Double -> Double -> PointXY +y) (\PointXY +_ (Vector2 s +x s +y) -> Double -> Double -> PointXY PointXY s Double -x s +x s Double -y) +y) -instance HasCoordinates PointXY PointXY -instance Affine_ PointXY 2 Double -instance Point_ PointXY 2 Double +instance HasCoordinates PointXY PointXY +instance Affine_ PointXY 2 Double +instance Point_ PointXY 2 Double -------------------------------------------------------------------------------- -- * PointXYZ @@ -77,7 +77,7 @@ type instance Dimension PointXYZ = 3 instance HasVector PointXYZ PointXYZ where - vector :: forall (d :: Nat) r s. + vector :: forall (d :: Nat) r s. (Dimension PointXYZ ~ d, NumType PointXYZ ~ r, Dimension PointXYZ ~ d, NumType PointXYZ ~ s) => Lens PointXYZ PointXYZ (Vector d r) (Vector d s) @@ -85,33 +85,33 @@ -> (PointXYZ -> Vector d s -> PointXYZ) -> Lens PointXYZ PointXYZ (Vector d r) (Vector d s) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b -lens (\(PointXYZ Double -x Double -y Double -z) -> r -> r -> r -> Vector 3 r +lens (\(PointXYZ Double +x Double +y Double +z) -> r -> r -> r -> Vector 3 r forall r. r -> r -> r -> Vector 3 r Vector3 r Double -x r +x r Double -y r +y r Double -z) (\PointXYZ -_ (Vector3 s -x s -y s -z) -> Double -> Double -> Double -> PointXYZ +z) (\PointXYZ +_ (Vector3 s +x s +y s +z) -> Double -> Double -> Double -> PointXYZ PointXYZ s Double -x s +x s Double -y s +y s Double -z) +z) -instance HasCoordinates PointXYZ PointXYZ -instance Affine_ PointXYZ 3 Double -instance Point_ PointXYZ 3 Double +instance HasCoordinates PointXYZ PointXYZ +instance Affine_ PointXYZ 3 Double +instance Point_ PointXYZ 3 Double -------------------------------------------------------------------------------- -- * PointXYZM @@ -120,7 +120,7 @@ type instance Dimension PointXYZM = 4 instance HasVector PointXYZM PointXYZM where - vector :: forall (d :: Nat) r s. + vector :: forall (d :: Nat) r s. (Dimension PointXYZM ~ d, NumType PointXYZM ~ r, Dimension PointXYZM ~ d, NumType PointXYZM ~ s) => Lens PointXYZM PointXYZM (Vector d r) (Vector d s) @@ -128,40 +128,40 @@ -> (PointXYZM -> Vector d s -> PointXYZM) -> Lens PointXYZM PointXYZM (Vector d r) (Vector d s) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b -lens (\(PointXYZM Double -x Double -y Double -z Double -m) -> r -> r -> r -> r -> Vector 4 r +lens (\(PointXYZM Double +x Double +y Double +z Double +m) -> r -> r -> r -> r -> Vector 4 r forall r. r -> r -> r -> r -> Vector 4 r Vector4 r Double -x r +x r Double -y r +y r Double -z r +z r Double -m) +m) (\PointXYZM -_ (Vector4 s -x s -y s -z s -m) -> Double -> Double -> Double -> Double -> PointXYZM +_ (Vector4 s +x s +y s +z s +m) -> Double -> Double -> Double -> Double -> PointXYZM PointXYZM s Double -x s +x s Double -y s +y s Double -z s +z s Double -m) +m) -instance HasCoordinates PointXYZM PointXYZM -instance Affine_ PointXYZM 4 Double -instance Point_ PointXYZM 4 Double +instance HasCoordinates PointXYZM PointXYZM +instance Affine_ PointXYZM 4 Double +instance Point_ PointXYZM 4 Double -------------------------------------------------------------------------------- -- * GeoPositionWithoutCRS @@ -172,7 +172,7 @@ data RestGeoPosition = Z {-#UNPACK#-}!Double | ZM {-#UNPACK#-}!Double {-#UNPACK#-}!Double - deriving (Int -> RestGeoPosition -> ShowS + deriving (Int -> RestGeoPosition -> ShowS [RestGeoPosition] -> ShowS RestGeoPosition -> String (Int -> RestGeoPosition -> ShowS) @@ -187,7 +187,7 @@ show :: RestGeoPosition -> String $cshowList :: [RestGeoPosition] -> ShowS showList :: [RestGeoPosition] -> ShowS -Show,RestGeoPosition -> RestGeoPosition -> Bool +Show,RestGeoPosition -> RestGeoPosition -> Bool (RestGeoPosition -> RestGeoPosition -> Bool) -> (RestGeoPosition -> RestGeoPosition -> Bool) -> Eq RestGeoPosition @@ -196,7 +196,7 @@ == :: RestGeoPosition -> RestGeoPosition -> Bool $c/= :: RestGeoPosition -> RestGeoPosition -> Bool /= :: RestGeoPosition -> RestGeoPosition -> Bool -Eq,Eq RestGeoPosition +Eq,Eq RestGeoPosition Eq RestGeoPosition => (RestGeoPosition -> RestGeoPosition -> Ordering) -> (RestGeoPosition -> RestGeoPosition -> Bool) @@ -244,50 +244,50 @@ -> Prism' GeoPositionWithoutCRS (PointXY :+ Maybe RestGeoPosition) forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b prism' (PointXY :+ Maybe RestGeoPosition) -> GeoPositionWithoutCRS -toGeoP GeoPositionWithoutCRS -> Maybe (PointXY :+ Maybe RestGeoPosition) -fromGeoP +toGeoP GeoPositionWithoutCRS -> Maybe (PointXY :+ Maybe RestGeoPosition) +fromGeoP where - toGeoP :: (PointXY :+ Maybe RestGeoPosition) -> GeoPositionWithoutCRS -toGeoP (p :: PointXY -p@(PointXY Double -x Double -y) :+ Maybe RestGeoPosition -mr) = case Maybe RestGeoPosition -mr of + toGeoP :: (PointXY :+ Maybe RestGeoPosition) -> GeoPositionWithoutCRS +toGeoP (p :: PointXY +p@(PointXY Double +x Double +y) :+ Maybe RestGeoPosition +mr) = case Maybe RestGeoPosition +mr of Maybe RestGeoPosition Nothing -> PointXY -> GeoPositionWithoutCRS GeoPointXY PointXY -p - Just (Z Double -z) -> PointXYZ -> GeoPositionWithoutCRS +p + Just (Z Double +z) -> PointXYZ -> GeoPositionWithoutCRS GeoPointXYZ (PointXYZ -> GeoPositionWithoutCRS) -> PointXYZ -> GeoPositionWithoutCRS forall a b. (a -> b) -> a -> b $ Double -> Double -> Double -> PointXYZ PointXYZ Double -x Double -y Double -z - Just (ZM Double -z Double -m) -> PointXYZM -> GeoPositionWithoutCRS +x Double +y Double +z + Just (ZM Double +z Double +m) -> PointXYZM -> GeoPositionWithoutCRS GeoPointXYZM (PointXYZM -> GeoPositionWithoutCRS) -> PointXYZM -> GeoPositionWithoutCRS forall a b. (a -> b) -> a -> b $ Double -> Double -> Double -> Double -> PointXYZM PointXYZM Double -x Double -y Double -z Double -m - fromGeoP :: GeoPositionWithoutCRS -> Maybe (PointXY :+ Maybe RestGeoPosition) -fromGeoP = \case +x Double +y Double +z Double +m + fromGeoP :: GeoPositionWithoutCRS -> Maybe (PointXY :+ Maybe RestGeoPosition) +fromGeoP = \case GeoPositionWithoutCRS GeoEmpty -> Maybe (PointXY :+ Maybe RestGeoPosition) forall a. Maybe a Nothing - GeoPointXY PointXY -p -> (PointXY :+ Maybe RestGeoPosition) + GeoPointXY PointXY +p -> (PointXY :+ Maybe RestGeoPosition) -> Maybe (PointXY :+ Maybe RestGeoPosition) forall a. a -> Maybe a Just ((PointXY :+ Maybe RestGeoPosition) @@ -296,16 +296,16 @@ -> Maybe (PointXY :+ Maybe RestGeoPosition) forall a b. (a -> b) -> a -> b $ PointXY -p PointXY +p PointXY -> Maybe RestGeoPosition -> PointXY :+ Maybe RestGeoPosition forall core extra. core -> extra -> core :+ extra :+ Maybe RestGeoPosition forall a. Maybe a Nothing - GeoPointXYZ (PointXYZ Double -x Double -y Double -z) -> (PointXY :+ Maybe RestGeoPosition) + GeoPointXYZ (PointXYZ Double +x Double +y Double +z) -> (PointXY :+ Maybe RestGeoPosition) -> Maybe (PointXY :+ Maybe RestGeoPosition) forall a. a -> Maybe a Just ((PointXY :+ Maybe RestGeoPosition) @@ -315,20 +315,20 @@ forall a b. (a -> b) -> a -> b $ (Double -> Double -> PointXY PointXY Double -x Double -y) PointXY +x Double +y) PointXY -> Maybe RestGeoPosition -> PointXY :+ Maybe RestGeoPosition forall core extra. core -> extra -> core :+ extra :+ RestGeoPosition -> Maybe RestGeoPosition forall a. a -> Maybe a Just (Double -> RestGeoPosition Z Double -z) - GeoPointXYZM (PointXYZM Double -x Double -y Double -z Double -m) -> (PointXY :+ Maybe RestGeoPosition) +z) + GeoPointXYZM (PointXYZM Double +x Double +y Double +z Double +m) -> (PointXY :+ Maybe RestGeoPosition) -> Maybe (PointXY :+ Maybe RestGeoPosition) forall a. a -> Maybe a Just ((PointXY :+ Maybe RestGeoPosition) @@ -338,16 +338,16 @@ forall a b. (a -> b) -> a -> b $ (Double -> Double -> PointXY PointXY Double -x Double -y) PointXY +x Double +y) PointXY -> Maybe RestGeoPosition -> PointXY :+ Maybe RestGeoPosition forall core extra. core -> extra -> core :+ extra :+ RestGeoPosition -> Maybe RestGeoPosition forall a. a -> Maybe a Just (Double -> Double -> RestGeoPosition ZM Double -z Double -m) +z Double +m) -- | An unsafe version, pretending that GeoEmpty is not possible @@ -384,8 +384,8 @@ Prism' GeoPositionWithoutCRS (PointXY :+ Maybe RestGeoPosition) _GeoPositionWithoutCRS) where - err :: a -err = String -> a + err :: a +err = String -> a forall a. HasCallStack => String -> a error String "_GeoPositionWithoutCRS'" @@ -397,18 +397,18 @@ type instance Dimension GeoPolygon = 2 -instance Wrapped GeoPolygon +instance Wrapped GeoPolygon instance Rewrapped GeoPolygon GeoPolygon ---------------------------------------- -type SimpleGeoPolygon point = SimplePolygonF (Cyclic ViewL1) point +type SimpleGeoPolygon point = SimplePolygonF (Cyclic ViewL1) point type SimpleGeoPolygon' = SimpleGeoPolygon GeoPositionWithoutCRS' -- | pre: the sequence has at leat 3 elements -_RingViewL1 :: (Eq b, Show b) - => Iso (LinearRing a) (LinearRing b) (Cyclic ViewL1 a) (Cyclic ViewL1 b) +_RingViewL1 :: (Eq b, Show b) + => Iso (LinearRing a) (LinearRing b) (Cyclic ViewL1 a) (Cyclic ViewL1 b) _RingViewL1 :: forall b a. (Eq b, Show b) => Iso @@ -430,7 +430,7 @@ forall a. a -> Maybe a -> a fromMaybe LinearRing b forall {a}. a -err (Maybe (LinearRing b) -> LinearRing b) +err (Maybe (LinearRing b) -> LinearRing b) -> (Cyclic ViewL1 b -> Maybe (LinearRing b)) -> Cyclic ViewL1 b -> LinearRing b @@ -446,28 +446,28 @@ forall a b. Coercible a b => a -> b coerce) where - err :: a -err = String -> a + err :: a +err = String -> a forall a. HasCallStack => String -> a error String "_RingSeq: failed" -- | Transform a ViewL1 into a LinearRing -ringToViewL1 :: LinearRing a -> ViewL1 a +ringToViewL1 :: LinearRing a -> ViewL1 a ringToViewL1 :: forall a. LinearRing a -> ViewL1 a -ringToViewL1 LinearRing a -r = case LinearRing a -> Seq a +ringToViewL1 LinearRing a +r = case LinearRing a -> Seq a forall a. LinearRing a -> Seq a toSeq LinearRing a -r of - (a -x :<| (Seq a -s :|> a +r of + (a +x :<| (Seq a +s :|> a _)) -> a -x a -> Seq a -> ViewL1 a +x a -> Seq a -> ViewL1 a forall a. a -> Seq a -> ViewL1 a :<< Seq a -s +s -- the last element is duplicated, we have at least three so this is s afe. Seq a _ -> String -> ViewL1 a @@ -476,11 +476,11 @@ "ringToViewL1" -- | try to transform a ViewL1 into a LinearRing -viewL1ToRing :: (Eq b, Show b) => ViewL1 b -> Maybe (LinearRing b) +viewL1ToRing :: (Eq b, Show b) => ViewL1 b -> Maybe (LinearRing b) viewL1ToRing :: forall b. (Eq b, Show b) => ViewL1 b -> Maybe (LinearRing b) -viewL1ToRing (b -x :<< Seq b -s) = (NonEmpty (SequenceToLinearRingError b) -> Maybe (LinearRing b)) +viewL1ToRing (b +x :<< Seq b +s) = (NonEmpty (SequenceToLinearRingError b) -> Maybe (LinearRing b)) -> (LinearRing b -> Maybe (LinearRing b)) -> Either (NonEmpty (SequenceToLinearRingError b)) (LinearRing b) -> Maybe (LinearRing b) @@ -508,21 +508,21 @@ fromSeq (Seq b -> Maybe (LinearRing b)) -> Seq b -> Maybe (LinearRing b) forall a b. (a -> b) -> a -> b $ b -x b -> Seq b -> Seq b +x b -> Seq b -> Seq b forall s a. Cons s s a a => a -> s -> s <| (Seq b -s Seq b -> b -> Seq b +s Seq b -> b -> Seq b forall s a. Snoc s s a a => s -> a -> s |> b -x) +x) -------------------------------------------------------------------------------- -- | Access the underlying container -_UncheckedSimplePolygon :: Iso (SimplePolygonF (Cyclic ViewL1) point) - (SimplePolygonF (Cyclic ViewL1) point') - (Cyclic ViewL1 point) - (Cyclic ViewL1 point') +_UncheckedSimplePolygon :: Iso (SimplePolygonF (Cyclic ViewL1) point) + (SimplePolygonF (Cyclic ViewL1) point') + (Cyclic ViewL1 point) + (Cyclic ViewL1 point') _UncheckedSimplePolygon :: forall point point' (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => p (Cyclic ViewL1 point) (f (Cyclic ViewL1 point')) @@ -894,21 +894,21 @@ -> Iso' GeoPolygon GeoPolygonalDomain forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso GeoPolygon -> GeoPolygonalDomain -toPD GeoPolygonalDomain -> GeoPolygon -fromPD +toPD GeoPolygonalDomain -> GeoPolygon +fromPD where - toPD :: GeoPolygon -> GeoPolygonalDomain -toPD (GeoPolygon Seq (LinearRing GeoPositionWithoutCRS) -rings) = case Seq (LinearRing GeoPositionWithoutCRS) -rings of + toPD :: GeoPolygon -> GeoPolygonalDomain +toPD (GeoPolygon Seq (LinearRing GeoPositionWithoutCRS) +rings) = case Seq (LinearRing GeoPositionWithoutCRS) +rings of Seq (LinearRing GeoPositionWithoutCRS) Seq.Empty -> String -> GeoPolygonalDomain forall a. HasCallStack => String -> a error String "invalid" - (LinearRing GeoPositionWithoutCRS -outer :<| Seq (LinearRing GeoPositionWithoutCRS) -inners) -> SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition) + (LinearRing GeoPositionWithoutCRS +outer :<| Seq (LinearRing GeoPositionWithoutCRS) +inners) -> SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition) -> Seq (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) -> GeoPolygonalDomain @@ -916,7 +916,7 @@ SimplePolygonF f point -> h (SimplePolygonF f point) -> PolygonalDomainF h f point PolygonalDomain (LinearRing GeoPositionWithoutCRS -outerLinearRing GeoPositionWithoutCRS +outerLinearRing GeoPositionWithoutCRS -> Getting (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) (LinearRing GeoPositionWithoutCRS) @@ -933,7 +933,7 @@ (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) _UncheckedRingSimplePolygon) (Seq (LinearRing GeoPositionWithoutCRS) -innersSeq (LinearRing GeoPositionWithoutCRS) +innersSeq (LinearRing GeoPositionWithoutCRS) -> (Seq (LinearRing GeoPositionWithoutCRS) -> Seq (SimplePolygonF @@ -994,14 +994,14 @@ (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) _InnerRingSimplePolygon) - fromPD :: GeoPolygonalDomain -> GeoPolygon -fromPD (PolygonalDomain SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition) -outer Seq + fromPD :: GeoPolygonalDomain -> GeoPolygon +fromPD (PolygonalDomain SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition) +outer Seq (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) -inners) = - let outer' :: LinearRing GeoPositionWithoutCRS -outer' = SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition) -outerSimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition) +inners) = + let outer' :: LinearRing GeoPositionWithoutCRS +outer' = SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition) +outerSimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition) -> Getting (LinearRing GeoPositionWithoutCRS) (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) @@ -1028,10 +1028,10 @@ (LinearRing GeoPositionWithoutCRS) (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) _UncheckedRingSimplePolygon - inners' :: Seq (LinearRing GeoPositionWithoutCRS) -inners' = Seq + inners' :: Seq (LinearRing GeoPositionWithoutCRS) +inners' = Seq (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) -innersSeq +innersSeq (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) -> (Seq (SimplePolygonF (Cyclic ViewL1) (PointXY :+ Maybe RestGeoPosition)) @@ -1085,12 +1085,12 @@ -> Seq (LinearRing GeoPositionWithoutCRS) -> GeoPolygon forall a b. (a -> b) -> a -> b $ LinearRing GeoPositionWithoutCRS -outer' LinearRing GeoPositionWithoutCRS +outer' LinearRing GeoPositionWithoutCRS -> Seq (LinearRing GeoPositionWithoutCRS) -> Seq (LinearRing GeoPositionWithoutCRS) forall s a. Cons s s a a => a -> s -> s <| Seq (LinearRing GeoPositionWithoutCRS) -inners' +inners' -- -------------------------------------------------------------------------------- diff --git a/haddocks/hgeometry/hgeometry.haddock b/haddocks/hgeometry/hgeometry.haddock index b0a6b0287dad26c909c28e6c47804e9a8d96757e..f43b4c2e2e62e42613617f32caa75da42e3cf0dd 100644 GIT binary patch delta 7157 zcmd6s`CpVrwujGotLa8jOpHs&C=!ivL(Leoe=?Js#U;s@m^kB@WG0szQA`LDL=$t9 zw1^9f;8I|N>>!H!@*<0hsHnJWi~@>^yMik!ic9pKI#rp!;r{YG-*c+ovfsD6tF=s6 z={0?|SL^*vc1R##yGVfhFRW>O-q&j<00{YP@3-ZRr#sjmwfXr=ukn7?d8fQOzPGFn z@9Yae)kP;DO@zTTbCea)!QLMhgLp}f44;DavL?I}Hpr&%kMXh`^j(}4F;kw6=yzac=Y;@jq-g4e{HaYK5b=TSKyyv{{eBgZO{N4G;`PeBOx13X4QLd@3XxB8? zbeEbp!!^?dXbFdx)8*ZwrBCZtEq!8Kv935*yla*#fm5Puwrh?n#x>V9&m~<+u4LDI zm&cXjN_8!8rL}gY(|}`^Bf$~ph?gsV7@}^`nvnAU;l(-Bi<9vazO*L4Y+sq+bYO7hW#1oHVU~U3$4m>eUeA*<## z;S#xb-Vj_W+soCsOzx25ak+dsDIZtJ<4NamrQDL-16RrV9?ZLDtg^Muwt?k56Pj0 z-{NnwxGo`~<8tirZKSA23ybp$1 zhvV%Z4kjY)SFS@n@rr!m(Cc_resichUXybVJ&o7xrH2-vb*!5`=zZ(EmbEp1!F%$V zqtA4>uP$jbBq(fjXmCJKSO9(I!Xh8Y_m8f$YNy%vkN$*KU6B1lZ8vM+LpAjY^Gz5X z6d4o{IXOJ|cl!L$3U5yw7dkp1C}2X+x8b3|5yEnO)HAHtBYEINe|#(-pZK#i#aj+I zInavomLVtmSyR1b%E@@VXg^ms8Zp|AJ=FoNb76MQ={FIl$+|OvI9;|nI{;_Mzn<-h zGiAuxbnCpobe`L9H4L(=&XrmiBj;TFC&tS9i=ShheD6{q#>P+;e7abtC^nS`WZ2aipfN^1w!4Z>!LTAhV^)vAk-cTAUW!na~b?pONHhgS#nxigh z|E{{h36bL?g6Xy*>CQrfgT~C2kFWIl(>yhy-3ZzMg1(BJNFTGvh+x_f=wV3t&edL+ zB)`4-zFgQe%DP4?UkkJD1lm)twGo&s=QX~I^JR78AoNK8n-eibCf)oqrpg^RgK>cj zy!AY$$xmbL6Yd{b`F0X_ol+|4h2?BmZ%)hda+3{xMSglK`Vs`b^<-g)da^Ukd+L<(De` zw@N_@|D*7g>Wx+iRv4o&7DC3s*9zY#gerUsAz?6HAza}*g$RWSZpBClnFy004-mOEEFPirA5A7K%~Vk|&d zV!Tv&8RBx|6~-%#S82m)<2A->jcwyX<8{VGbpL8$C{~RUgi_=6#v7D3B9tj_LMS)h zY`n#It8s<#HskHaJCrLCb{g+8-t9)%gL@J78SghfpnMSFSK~v*zZoAkK4M&DTy0!q zeAM`uajo%jWA_OYP8!!4pE5pee8%{!@j2u3#utn)8ecN5H*PS#Y0r^lp4-{#pC zCh0+`m8=Knv%sU3LYjsml?4lQm8O-hn;E1`OJr$fvoJ?1mlT5{kA+4HEpXGuAk@Z? zh$5c`6Y0yx5{q?JpsOV;)N(AbmU2yDnI2!xf)%=2$--4ytF_kXv9-FgwcLf;>qzM+ zinNMZP@+|;o9lJ8L05Wj5gVz>M^UD=iG{jCQi<#rpxVGJ9M*B zS39+KS@abyK(SkS8HzpHu-AB>@qROYz|;p#{i~@Dnff<2eg6-e#u4KxZKyVNjj4|+ zm!LSN4YkI{jZY|VLUB?X|8SkDPbr_a#2MuR#Iwq73g=AYyzvF)(-!ibp0*sjt&6Ht ziQ!yFh)QzUTNuPhU&52uP;I?s-@g3v4#?9K|o~iE} zKTy7k;-NPDZt6$c_}F-g;CUEjJawoE(ZO&>y}*9$Ulhk^tR>VEec(8=*0WyV_<#Apbt+$i8_fO8 zM&iqGlX*)~+-5crTf-eiahG#5=X*qi`-@XT;vlnY^=1Hjkg>xCTy+kl6P zCm@BHN_+(tD2g;@x*}$9_6+yJZrx!a6_&_nE@CcLgaYOg?s!sZY5=U}VhwXG58KQ_ z<~mOm&HAK>i(+O8v8^a&u2+N&%#F-4=3i8M6UDzmxuV$2c?~f<2tFilUKuQ_<1rsP|;L@L9JXG*jalxJP^+=pSY9 z0X$$nR207}B2zr#{Fph#3*bYDVooJ?fN174MKPT?3}!HA5oram;vPCtsMQ z1PR2>Fw66yH$FSEGe|1^dB`6UInQR!W9rc)&dJ0sFrVpRrZ7_#`OoVj7O0G|o^7=F zfG&_tWdNuN0gyv{7IK+t@n=OIb0N_i@)d=rV+-u&hs(KGp@=J)tC*foTVPkWHxyCT zm0xpLe$8D$E!Y)`nI+6p=6Yf`*udP#EF(V0*A5q(C=VCqipUu^b7u>8wlXV-&%-w6 zcEvto2N#vhox~oni@BSrruKk6io(;SC3Z&iyx9_a2KIm&YIf(fx`SG)CmdxSW7aZ{ zD+T*h=DMj zIfFTqxsmpdK#1Y2wzWVJ%Q=p@Rd`B$@U3@~x!T2Z=X3TD`$7scmAQbaR_Y6BiXxqJ z29s8LvlR~Pwuq}rTB$EA=B!rj3k95)D0-4wVQ)9Aq1;cbW!j2R$Xv%PVipto^Vg_9 zlyEL(u2&Qr6mcW7j60h+b05l8hRw_^%&kNRR1m$u^JZ)8^t2c3qRI)oi7rQ>*kkPZ zt~I_jVgOWA-9pq5UxcH~W6WAbN0m5ke1f|t74bK^-xu*P^9Zww=p*WA)JJ%{d~uT7 z2X0d}5So~Gn0FOLGxMGza&|P+QL(DH=eS45#_BiaA@g@dRKF>{@QAW6JSMh*DK5nZ z&QX+~fT_%A<}?TC70)AI?B@P2h^OL7m_=*{3B*AnQ4wY;u;oR=_{a%UOm z<(yY=UddcVT*fY6Izv@c%Ct6V zm1}L*+M=~pt3qp=)^>V?9bpI2JrpWQLt&?)*rkZ-_r(u(Q}%;B%)QKgO!Xdp0Q;E- zh#$g1=C8~{%-@)YnRMhybE=rt%o<_`aa7R_$CQ9hG>ONVCzvOhb;Q5HDMfLbd64#? zzd6ph&Z>%hj%S=_USM8iUSifW8<>}wSD06s*Xa4v^4Gbz!E98-n@l=nq#wWA#7@w} zyhH2^cbUyZfA0IkJH^gy{SHxMwuKY(2hXl&c10DVmXEW(kkMdk59pKRqh1%qL z2+3J(13g5N%8s?pWaIhXbOhA{JgS5gW-4<5^OCv<(kS;7>57oS%w%RUvza-Hc!J)f zUXV+y}o$WQ#iyM w{XBo|fbG3T(7|Un75$4lbixY*o^JWEI&vSZ{&S?&mnsKEa8dkl7(VI!e|#BYeExc zOrB5keRa;5K7h~W0W|))x_NaApX~r34a(WL2w7W zBy%Q=#LKdALZmg}h)kH&%~RvP;=by>=DzN(b>DE`bl-B{cHdFkU3Z2cxqbQ{nTE+4n;+oWl;=1(bJI;=`r9ID{ZztGZdqE33QC)CFyJB3Ct|*u6JnlVt^N($;iPirf zK06nEcJhsoZ>*ofowN|Q3m3}8Kb7E6*}2!}*00N)%~LxfCdo5Duf$|$?!QtkOp*P6 zd*#_AJK2?Nr?^sGX|8lvhAY#RDu4WK6t;6t{x+&9rpdoXe1YjQIpQPCkhKwAF;hMh z`4wi#agjCHR(>A!iwv0h4u2=2L!6hQzd$Scgp7`PO&*PUN0tt5YsHOnI>-80m@T`{ z9g2&b@pFq%mc@KwE%-!6#Mj|s>5)TmiQFMqVUC^IA7tC|+c*D_38SVU(cocD^9FdfOt7LUjXIw4qccZk6$wfw)cH&+LR{vVGPFESF=mKE>^FbJj52 zA)m?~ggc$V+3nDkuYO$ROR4&YY|(mIx@Z#ak^>i~U}t$~@kcm9hL*l)E&0hAzGNs` zIk_?+=X=~OF}DlukuT&XTPr?tw&Z3B+$%?~2*7=E&x*Cyx>-(G-c&d4mk-zefCuFF z>k{#xbmco%!9iz3erwArp6nc0UvA+c=`Eazhn(9wr1loS-f?0#|rwEwH+}oxbKvJi6LXZ^AGYH;~zAd|1Bm} z%D1=mZ-1N~^6V%7_worDwXGALl*_io;wkx;vOuhonPmxhTE15P9iEXX<;UD->B;Bh zn`Lcf-1gykPF8Jy1<%V?J3{b+jM#Bb-A00T7U73$^ThyeQw@ zlWy&~;au9IeunmaAcOX$;YfO<>wu5AcT_i@!UMt9;R>hs!B|u`p^b-nV2wO~ z=r4Fhc0Amz{Z;<#M@}3!YVvmhe*S)=#`*`29T)5$bj|tt@ItgI$2*NjKDO|>9C54& zYvofF1Mr4?v*IS}z`!@IJ zW3(LVA3Q2ZeTZN`^)nY7(jXsI=2^!NIxCLu?Y)B9vs3mfH!RjoVTS3fW68E;P> z8#GFNPLuq97#|ccQCO}Idj$7QB}qTUJ*Mv>w~?xzqiuC$@b5bQBJB zj-4KbIL&$eY#X%B7djuG`%lDB8GpVHhRKri12A0PKHmeU%jYg6TNnN*H(c0f)kr6z zdV_^CMdX#JGCtD2% zoSyeKBc{r$4gJ+!@wrBcAM*nmKa)-FclV_G!aqI{pDN%pnm#AKAikutuZXW{{coDS zq3M4Jf8tv@`;Hhz1Q4Ska14wkz9;@k1VP{r5KN3C#uF2Wi5_wi1ctz52%G{x562B4ZX;WYtlA&yvG8|#L&J3NIDzgw~t3)71av(}4S|tX-6RSH%XRc11 zPP~rPnWr;fCqc)nvp^?NXQ4_GVloF(bW(NFbkcP)Ji3`WSt{8Gix3v$5`-MnT7W2%z3B$ijnqPfP1GWUV$%}SQq#?* zTTHi_ZZj>TmLqI8-C?>DJ+KRRBkV!ly{7x9`w7FPdI5y=+=zdd2iA^_u$rUswO+wJ2_I z@TSf!eRx}McXaNm)S;;7z&({QqJe})p6~PgfaixiKjQhZ@(1yRL^4E7vy{ksFq9TS zP7z@wlHrz^t}}xJGxau0Z?p9lp|?oAMd>YCZ!s#dmYBoAxjJTx)7RoH@TkY2)ECuC z+dO@7J_izXyei=+7H}X@Zwqyj^kK3}iX~EY(m0r|lc6#TMJ5MLvef2@KtVT#7!=uR zRd<9%9I;q$OZ1k*K^<3)mCL&tmg?)vIIvuAD>#^^vr=c3zP4I#Yjhls?pl>36zg>I zIZ&XpULS7I+eW?Vdy6PkTQ-VKIz=4R8=9?HU!#;*qLhQ1b+%aQMygJ?>UEn=8Ap`s zZM)76OZ^HjL9vs%6vZxG*loJUbg#L-&+Plne!%Pp&3;JN1BcDQ5!0i(@VnWMnZ1Hq zfTB_tj+>q^JxMJ>aY`5ew^e38O+90Yv(zPs=eQok^XA}!X*KnXh5VJCv0OW?i*!rL&XR^gqeeI)9I!&1b|D-WM`2$n~h-gc_d$rBEdV> z!cl+rffTj*Kq@KHNMuDipJyoD{1`W6(k!x+Hh6sme%@O+v>*#>`NBFjUpYV&kVrNG zZ-l^}wkXld27v?dWpAy(S5bJoxv*dBrf^(cYX&D+J)iWBapAbHUx6Fy@Dy~;wvLy4wm|ueSkG=CVIy0}Zerh{<03V_3B{x+;klH33*cF?S&dJtPt=XWv6XkY zjW5{Zs5)x}-XCr3_~*B2e1{lJybCY{PN?fc;3O$dk;sZFp2@c0-D_jluS7L1;v(s) zc3m>PtU45G*emQ+_8NPgtz~bJ;wF2Gblr5(v)jRK?{Hu2>}d}TYW*8DDu=;+_5mp# zlE{ijJU?ciDBp)^K4hq}4TQ1bq?oS!0A{c=l_OvlDQ1%x!A2^dhbXcIM5}b*r31ux z@2k(Lbw^%1LX5i95n|am?@LXvwWkxzS8FFoV7=@Dl0QHvkw`Pr2kQh2*(5fZO<_~n zG^HQVbNwJ)*%>m}I8tP?SxR5XCdDEW(OcF8yS5X{d0WBeu`5aNVpHtm>B3(?7ybge z0KH-t$Y%@K_3Q>^SJ=oFvYV7I@N-9sA~lZ`#U%2KC45rKC!5(V$`@fPyNwiOWN#?v zqwUJ>u!G&n(nGt$E>i3!(Yv=Pc0ll6ZHhhmbmQ0R2J~7zpn|PrkFzI8agt~6o6WGt zYdztD+Im8@vKL%rFR_Da3kyk+#B(xBuhbV(+}^8C z;lQrtye;M{^s0Sf3C}rfuCkx^?dI6aBUaNa){x+^YuR;dzOq06PW6WZp4YP*NU@Q` zLUt3M6!FaGP)swFu%+x~r3@=JHNQAOsY`Ag|On0gL z)w{eUcJ(|BQEF)g(aIqrhJ;vl4m;OY|0fr5B*e3lPv)`n`6Pj7FS~$G5_w+8Cb7wU zp2DWGX`~0zdC6ci*(^4j6pMIX%r4=R9G-J|Udr<_cDZteE%J0$>a5aP%>niPC_O~I zA*upvDIOcv=~MN#BV8=e7uV~kH$my48+8hGHt7`U6zi1el@Jr6MTWs{c8~IX*vsx?_p=AsgX|&pFnfeOs%#^EC*c^Y z-l0@;C9B?wgf<>H!OKbIa5zPZDt5oR#|(F!w$IR}dX^t?jy=y_V5`}S>?QUxTf<&q z)%%9()vvMF*;*2B*dEGFwR`}#l+VL$_Kvax+-2*O9r?T?)bp&~B2<5B8rViwy$7iN zq&y(SLlPeG{Fr^hPV=SnP&SMW_fyq{RX(pT3H@@RIgaj!I8MTOPu8kWAGesGX=_~Z=FYt`Hz l*0K4%1-|XZ1bQ<%VcUYat+20e!LjGj=jDRCAL7%#{{~vrJski5 diff --git a/haddocks/hgeometry/ipe/Ipe-Attributes.html b/haddocks/hgeometry/ipe/Ipe-Attributes.html index 4ac700702..f4ee406c8 100644 --- a/haddocks/hgeometry/ipe/Ipe-Attributes.html +++ b/haddocks/hgeometry/ipe/Ipe-Attributes.html @@ -1,7 +1,7 @@ Ipe.Attributes
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

Ipe.Attributes

Description

Possible Attributes we can assign to items in an Ipe file

Synopsis

Documentation

data AttributeUniverse Source #

The possible Attributes supported in Ipe. To use these attributes, you'll likely need their Singletons's version which is Prefixed by an S. E.g. the Fill attribute is represented by a - singleton 'SFill :: Sing Fill'.

Instances

Instances details
Read AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

Show AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

Eq AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

SingKind AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

Associated Types

type Demote AttributeUniverse 
Instance details

Defined in Ipe.Attributes

SingI 'Arrow Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Arrow Source #

SingI 'Clip Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Clip Source #

SingI 'Dash Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Dash Source #

SingI 'Depth Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Depth Source #

SingI 'Fill Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Fill Source #

SingI 'FillRule Source # 
Instance details

Defined in Ipe.Attributes

SingI 'Gradient Source # 
Instance details

Defined in Ipe.Attributes

SingI 'HAlign Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'HAlign Source #

SingI 'Height Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Height Source #

SingI 'Layer Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Layer Source #

SingI 'LineCap Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'LineCap Source #

SingI 'LineJoin Source # 
Instance details

Defined in Ipe.Attributes

SingI 'Matrix Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Matrix Source #

SingI 'Opacity Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Opacity Source #

SingI 'Pen Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Pen Source #

SingI 'Pin Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Pin Source #

SingI 'RArrow Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'RArrow Source #

SingI 'Size Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Size Source #

SingI 'Stroke Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Stroke Source #

SingI 'StrokeOpacity Source # 
Instance details

Defined in Ipe.Attributes

SingI 'Style Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Style Source #

SingI 'Tiling Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Tiling Source #

SingI 'Transformations Source # 
Instance details

Defined in Ipe.Attributes

SingI 'VAlign Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'VAlign Source #

SingI 'Width Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Width Source #

(AllConstrained IpeAttrName rs, RecordToList rs, RMap rs, ReifyConstraint IpeWriteText (Attr f) rs, RecAll (Attr f) rs IpeWriteText, IpeWrite g) => IpeWrite (g :+ Attributes f rs) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: (g :+ Attributes f rs) -> Maybe (Node Text Text) Source #

SuppressUnusedWarnings (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) Source # 
Instance details

Defined in Ipe.Content

type Demote AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

type Sing Source # 
Instance details

Defined in Ipe.Attributes

type Apply (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260258 :: AttributeUniverse) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260258 :: AttributeUniverse) = AttrMap a6989586621679260257 a6989586621679260258

type family ClipSym0 :: AttributeUniverse where ... Source #

Equations

ClipSym0 = 'Clip 

type family StyleSym0 :: AttributeUniverse where ... Source #

Equations

StyleSym0 = 'Style 

type family HAlignSym0 :: AttributeUniverse where ... Source #

Equations

HAlignSym0 = 'HAlign 

type family VAlignSym0 :: AttributeUniverse where ... Source #

Equations

VAlignSym0 = 'VAlign 

type family DepthSym0 :: AttributeUniverse where ... Source #

Equations

DepthSym0 = 'Depth 

type family HeightSym0 :: AttributeUniverse where ... Source #

Equations

HeightSym0 = 'Height 

type family WidthSym0 :: AttributeUniverse where ... Source #

Equations

WidthSym0 = 'Width 

type family GradientSym0 :: AttributeUniverse where ... Source #

Equations

GradientSym0 = 'Gradient 

type family TilingSym0 :: AttributeUniverse where ... Source #

Equations

TilingSym0 = 'Tiling 

type family OpacitySym0 :: AttributeUniverse where ... Source #

Equations

OpacitySym0 = 'Opacity 

type family RArrowSym0 :: AttributeUniverse where ... Source #

Equations

RArrowSym0 = 'RArrow 

type family ArrowSym0 :: AttributeUniverse where ... Source #

Equations

ArrowSym0 = 'Arrow 

type family FillRuleSym0 :: AttributeUniverse where ... Source #

Equations

FillRuleSym0 = 'FillRule 

type family LineJoinSym0 :: AttributeUniverse where ... Source #

Equations

LineJoinSym0 = 'LineJoin 

type family LineCapSym0 :: AttributeUniverse where ... Source #

Equations

LineCapSym0 = 'LineCap 

type family DashSym0 :: AttributeUniverse where ... Source #

Equations

DashSym0 = 'Dash 

type family SizeSym0 :: AttributeUniverse where ... Source #

Equations

SizeSym0 = 'Size 

type family PenSym0 :: AttributeUniverse where ... Source #

Equations

PenSym0 = 'Pen 

type family FillSym0 :: AttributeUniverse where ... Source #

Equations

FillSym0 = 'Fill 

type family StrokeSym0 :: AttributeUniverse where ... Source #

Equations

StrokeSym0 = 'Stroke 

type family PinSym0 :: AttributeUniverse where ... Source #

Equations

PinSym0 = 'Pin 

type family MatrixSym0 :: AttributeUniverse where ... Source #

Equations

MatrixSym0 = 'Matrix 

type family LayerSym0 :: AttributeUniverse where ... Source #

Equations

LayerSym0 = 'Layer 

type CommonAttributes = '['Layer, 'Matrix, 'Pin, 'Transformations] Source #

IpeObjects may have attributes. Essentially attributes are + singleton 'SFill :: Sing Fill'.

Instances

Instances details
Read AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

Show AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

Eq AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

SingKind AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

Associated Types

type Demote AttributeUniverse 
Instance details

Defined in Ipe.Attributes

SingI 'Arrow Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Arrow Source #

SingI 'Clip Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Clip Source #

SingI 'Dash Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Dash Source #

SingI 'Depth Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Depth Source #

SingI 'Fill Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Fill Source #

SingI 'FillRule Source # 
Instance details

Defined in Ipe.Attributes

SingI 'Gradient Source # 
Instance details

Defined in Ipe.Attributes

SingI 'HAlign Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'HAlign Source #

SingI 'Height Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Height Source #

SingI 'Layer Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Layer Source #

SingI 'LineCap Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'LineCap Source #

SingI 'LineJoin Source # 
Instance details

Defined in Ipe.Attributes

SingI 'Matrix Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Matrix Source #

SingI 'Opacity Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Opacity Source #

SingI 'Pen Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Pen Source #

SingI 'Pin Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Pin Source #

SingI 'RArrow Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'RArrow Source #

SingI 'Size Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Size Source #

SingI 'Stroke Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Stroke Source #

SingI 'StrokeOpacity Source # 
Instance details

Defined in Ipe.Attributes

SingI 'Style Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Style Source #

SingI 'Tiling Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Tiling Source #

SingI 'Transformations Source # 
Instance details

Defined in Ipe.Attributes

SingI 'VAlign Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'VAlign Source #

SingI 'Width Source # 
Instance details

Defined in Ipe.Attributes

Methods

sing :: Sing 'Width Source #

(AllConstrained IpeAttrName rs, RecordToList rs, RMap rs, ReifyConstraint IpeWriteText (Attr f) rs, RecAll (Attr f) rs IpeWriteText, IpeWrite g) => IpeWrite (g :+ Attributes f rs) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: (g :+ Attributes f rs) -> Maybe (Node Text Text) Source #

SuppressUnusedWarnings (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) Source # 
Instance details

Defined in Ipe.Content

type Demote AttributeUniverse Source # 
Instance details

Defined in Ipe.Attributes

type Sing Source # 
Instance details

Defined in Ipe.Attributes

type Apply (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260261 :: AttributeUniverse) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260261 :: AttributeUniverse) = AttrMap a6989586621679260260 a6989586621679260261

type family ClipSym0 :: AttributeUniverse where ... Source #

Equations

ClipSym0 = 'Clip 

type family StyleSym0 :: AttributeUniverse where ... Source #

Equations

StyleSym0 = 'Style 

type family HAlignSym0 :: AttributeUniverse where ... Source #

Equations

HAlignSym0 = 'HAlign 

type family VAlignSym0 :: AttributeUniverse where ... Source #

Equations

VAlignSym0 = 'VAlign 

type family DepthSym0 :: AttributeUniverse where ... Source #

Equations

DepthSym0 = 'Depth 

type family HeightSym0 :: AttributeUniverse where ... Source #

Equations

HeightSym0 = 'Height 

type family WidthSym0 :: AttributeUniverse where ... Source #

Equations

WidthSym0 = 'Width 

type family GradientSym0 :: AttributeUniverse where ... Source #

Equations

GradientSym0 = 'Gradient 

type family TilingSym0 :: AttributeUniverse where ... Source #

Equations

TilingSym0 = 'Tiling 

type family OpacitySym0 :: AttributeUniverse where ... Source #

Equations

OpacitySym0 = 'Opacity 

type family RArrowSym0 :: AttributeUniverse where ... Source #

Equations

RArrowSym0 = 'RArrow 

type family ArrowSym0 :: AttributeUniverse where ... Source #

Equations

ArrowSym0 = 'Arrow 

type family FillRuleSym0 :: AttributeUniverse where ... Source #

Equations

FillRuleSym0 = 'FillRule 

type family LineJoinSym0 :: AttributeUniverse where ... Source #

Equations

LineJoinSym0 = 'LineJoin 

type family LineCapSym0 :: AttributeUniverse where ... Source #

Equations

LineCapSym0 = 'LineCap 

type family DashSym0 :: AttributeUniverse where ... Source #

Equations

DashSym0 = 'Dash 

type family SizeSym0 :: AttributeUniverse where ... Source #

Equations

SizeSym0 = 'Size 

type family PenSym0 :: AttributeUniverse where ... Source #

Equations

PenSym0 = 'Pen 

type family FillSym0 :: AttributeUniverse where ... Source #

Equations

FillSym0 = 'Fill 

type family StrokeSym0 :: AttributeUniverse where ... Source #

Equations

StrokeSym0 = 'Stroke 

type family PinSym0 :: AttributeUniverse where ... Source #

Equations

PinSym0 = 'Pin 

type family MatrixSym0 :: AttributeUniverse where ... Source #

Equations

MatrixSym0 = 'Matrix 

type family LayerSym0 :: AttributeUniverse where ... Source #

Equations

LayerSym0 = 'Layer 

type CommonAttributes = '['Layer, 'Matrix, 'Pin, 'Transformations] Source #

IpeObjects may have attributes. Essentially attributes are (key,value) pairs. The key is some name. Which attributes an object can have depends on the type of the object. However, all ipe objects support the Common Attributes

type TextAttributes = CommonAttributes ++ '['Stroke, 'Size, 'Width, 'Height, 'Depth, 'VAlign, 'HAlign, 'Style, 'Opacity] Source #

All attributes applicable to Text (TextLabels and Minipages)

type TextLabelAttributes = TextAttributes Source #

All attributes applicable to TextLabels

type MiniPageAttributes = TextAttributes Source #

All attributes applicable to Minipages

type ImageAttributes = CommonAttributes Source #

All attributes applicable to Images

type SymbolAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Pen, 'Size] Source #

All attributes applicable to Symbols/Marks

type PathAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Dash, 'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow, 'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient] Source #

All attributes applicable to Paths

type GroupAttributes = CommonAttributes ++ '['Clip] Source #

All attributes applicable to Groups

A single attribute Attr

newtype Attr (f :: TyFun u Type -> Type) (label :: u) Source #

Attr implements the mapping from labels to types as specified by the diff --git a/haddocks/hgeometry/ipe/Ipe-Content.html b/haddocks/hgeometry/ipe/Ipe-Content.html index 450032565..4bc89e151 100644 --- a/haddocks/hgeometry/ipe/Ipe-Content.html +++ b/haddocks/hgeometry/ipe/Ipe-Content.html @@ -1,3 +1,3 @@ -Ipe.Content

Safe HaskellNone
LanguageGHC2021

Ipe.Content

Synopsis

Documentation

data Image r Source #

Image Objects

bitmap image objects in Ipe

Constructors

Image () (Rectangle (Point 2 r)) 

Instances

Instances details
Functor Image Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Image a -> Image b #

(<$) :: a -> Image b -> Image a #

Foldable Image Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Image m -> m #

foldMap :: Monoid m => (a -> m) -> Image a -> m #

foldMap' :: Monoid m => (a -> m) -> Image a -> m #

foldr :: (a -> b -> b) -> b -> Image a -> b #

foldr' :: (a -> b -> b) -> b -> Image a -> b #

foldl :: (b -> a -> b) -> b -> Image a -> b #

foldl' :: (b -> a -> b) -> b -> Image a -> b #

foldr1 :: (a -> a -> a) -> Image a -> a #

foldl1 :: (a -> a -> a) -> Image a -> a #

toList :: Image a -> [a] #

null :: Image a -> Bool #

length :: Image a -> Int #

elem :: Eq a => a -> Image a -> Bool #

maximum :: Ord a => Image a -> a #

minimum :: Ord a => Image a -> a #

sum :: Num a => Image a -> a #

product :: Num a => Image a -> a #

Traversable Image Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Image a -> f (Image b) #

sequenceA :: Applicative f => Image (f a) -> f (Image a) #

mapM :: Monad m => (a -> m b) -> Image a -> m (Image b) #

sequence :: Monad m => Image (m a) -> m (Image a) #

ToObject Image Source # 
Instance details

Defined in Ipe.Content

Generic (Image r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Image r) 
Instance details

Defined in Ipe.Content

type Rep (Image r) = D1 ('MetaData "Image" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Image" 'PrefixI 'True) (S1 ('MetaSel ('Just "_imageData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ()) :*: S1 ('MetaSel ('Just "_rect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Rectangle (Point 2 r)))))

Methods

from :: Image r -> Rep (Image r) x #

to :: Rep (Image r) x -> Image r #

Show r => Show (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Image r -> ShowS #

show :: Image r -> String #

showList :: [Image r] -> ShowS #

Eq r => Eq (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Image r -> Image r -> Bool #

(/=) :: Image r -> Image r -> Bool #

Ord r => Ord (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: Image r -> Image r -> Ordering #

(<) :: Image r -> Image r -> Bool #

(<=) :: Image r -> Image r -> Bool #

(>) :: Image r -> Image r -> Bool #

(>=) :: Image r -> Image r -> Bool #

max :: Image r -> Image r -> Image r #

min :: Image r -> Image r -> Image r #

Coordinate r => IpeRead (Image r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Image r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Image r)) (NumType (Image r)) -> Image r -> Image r

type Rep (Image r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Image r) = D1 ('MetaData "Image" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Image" 'PrefixI 'True) (S1 ('MetaSel ('Just "_imageData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ()) :*: S1 ('MetaSel ('Just "_rect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Rectangle (Point 2 r)))))
type Dimension (Image r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Image r) = 2
type NumType (Image r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Image r) = r

imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r) Source #

Lens to access the image data

rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r') Source #

Lens to access the rectangle of the image

data TextLabel r Source #

Text Objects

A text label

Constructors

Label Text (Point 2 r) 

Instances

Instances details
Functor TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> TextLabel a -> TextLabel b #

(<$) :: a -> TextLabel b -> TextLabel a #

Foldable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => TextLabel m -> m #

foldMap :: Monoid m => (a -> m) -> TextLabel a -> m #

foldMap' :: Monoid m => (a -> m) -> TextLabel a -> m #

foldr :: (a -> b -> b) -> b -> TextLabel a -> b #

foldr' :: (a -> b -> b) -> b -> TextLabel a -> b #

foldl :: (b -> a -> b) -> b -> TextLabel a -> b #

foldl' :: (b -> a -> b) -> b -> TextLabel a -> b #

foldr1 :: (a -> a -> a) -> TextLabel a -> a #

foldl1 :: (a -> a -> a) -> TextLabel a -> a #

toList :: TextLabel a -> [a] #

null :: TextLabel a -> Bool #

length :: TextLabel a -> Int #

elem :: Eq a => a -> TextLabel a -> Bool #

maximum :: Ord a => TextLabel a -> a #

minimum :: Ord a => TextLabel a -> a #

sum :: Num a => TextLabel a -> a #

product :: Num a => TextLabel a -> a #

Traversable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> TextLabel a -> f (TextLabel b) #

sequenceA :: Applicative f => TextLabel (f a) -> f (TextLabel a) #

mapM :: Monad m => (a -> m b) -> TextLabel a -> m (TextLabel b) #

sequence :: Monad m => TextLabel (m a) -> m (TextLabel a) #

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

Generic (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (TextLabel r) 
Instance details

Defined in Ipe.Content

type Rep (TextLabel r) = D1 ('MetaData "TextLabel" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r))))

Methods

from :: TextLabel r -> Rep (TextLabel r) x #

to :: Rep (TextLabel r) x -> TextLabel r #

Show r => Show (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: TextLabel r -> TextLabel r -> Bool #

(/=) :: TextLabel r -> TextLabel r -> Bool #

Ord r => Ord (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Coordinate r => IpeRead (TextLabel r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (TextLabel r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (TextLabel r)) (NumType (TextLabel r)) -> TextLabel r -> TextLabel r

type Rep (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Rep (TextLabel r) = D1 ('MetaData "TextLabel" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r))))
type Dimension (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (TextLabel r) = 2
type NumType (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type NumType (TextLabel r) = r

data MiniPage r Source #

A Minipage

Constructors

MiniPage Text (Point 2 r) r 

Instances

Instances details
Functor MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> MiniPage a -> MiniPage b #

(<$) :: a -> MiniPage b -> MiniPage a #

Foldable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => MiniPage m -> m #

foldMap :: Monoid m => (a -> m) -> MiniPage a -> m #

foldMap' :: Monoid m => (a -> m) -> MiniPage a -> m #

foldr :: (a -> b -> b) -> b -> MiniPage a -> b #

foldr' :: (a -> b -> b) -> b -> MiniPage a -> b #

foldl :: (b -> a -> b) -> b -> MiniPage a -> b #

foldl' :: (b -> a -> b) -> b -> MiniPage a -> b #

foldr1 :: (a -> a -> a) -> MiniPage a -> a #

foldl1 :: (a -> a -> a) -> MiniPage a -> a #

toList :: MiniPage a -> [a] #

null :: MiniPage a -> Bool #

length :: MiniPage a -> Int #

elem :: Eq a => a -> MiniPage a -> Bool #

maximum :: Ord a => MiniPage a -> a #

minimum :: Ord a => MiniPage a -> a #

sum :: Num a => MiniPage a -> a #

product :: Num a => MiniPage a -> a #

Traversable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> MiniPage a -> f (MiniPage b) #

sequenceA :: Applicative f => MiniPage (f a) -> f (MiniPage a) #

mapM :: Monad m => (a -> m b) -> MiniPage a -> m (MiniPage b) #

sequence :: Monad m => MiniPage (m a) -> m (MiniPage a) #

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

Generic (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (MiniPage r) 
Instance details

Defined in Ipe.Content

Methods

from :: MiniPage r -> Rep (MiniPage r) x #

to :: Rep (MiniPage r) x -> MiniPage r #

Show r => Show (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> MiniPage r -> ShowS #

show :: MiniPage r -> String #

showList :: [MiniPage r] -> ShowS #

Eq r => Eq (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: MiniPage r -> MiniPage r -> Bool #

(/=) :: MiniPage r -> MiniPage r -> Bool #

Ord r => Ord (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: MiniPage r -> MiniPage r -> Ordering #

(<) :: MiniPage r -> MiniPage r -> Bool #

(<=) :: MiniPage r -> MiniPage r -> Bool #

(>) :: MiniPage r -> MiniPage r -> Bool #

(>=) :: MiniPage r -> MiniPage r -> Bool #

max :: MiniPage r -> MiniPage r -> MiniPage r #

min :: MiniPage r -> MiniPage r -> MiniPage r #

Coordinate r => IpeRead (MiniPage r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (MiniPage r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (MiniPage r)) (NumType (MiniPage r)) -> MiniPage r -> MiniPage r

type Rep (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) = 2
type NumType (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type NumType (MiniPage r) = r

data IpeSymbol r Source #

Ipe Symbols, i.e. Points

A symbol (point) in ipe

Constructors

Symbol (Point 2 r) Text 

Instances

Instances details
Functor IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeSymbol a -> IpeSymbol b #

(<$) :: a -> IpeSymbol b -> IpeSymbol a #

Foldable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeSymbol m -> m #

foldMap :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldr :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldr' :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldl :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldl' :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldr1 :: (a -> a -> a) -> IpeSymbol a -> a #

foldl1 :: (a -> a -> a) -> IpeSymbol a -> a #

toList :: IpeSymbol a -> [a] #

null :: IpeSymbol a -> Bool #

length :: IpeSymbol a -> Int #

elem :: Eq a => a -> IpeSymbol a -> Bool #

maximum :: Ord a => IpeSymbol a -> a #

minimum :: Ord a => IpeSymbol a -> a #

sum :: Num a => IpeSymbol a -> a #

product :: Num a => IpeSymbol a -> a #

Traversable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeSymbol a -> f (IpeSymbol b) #

sequenceA :: Applicative f => IpeSymbol (f a) -> f (IpeSymbol a) #

mapM :: Monad m => (a -> m b) -> IpeSymbol a -> m (IpeSymbol b) #

sequence :: Monad m => IpeSymbol (m a) -> m (IpeSymbol a) #

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Generic (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (IpeSymbol r) 
Instance details

Defined in Ipe.Content

type Rep (IpeSymbol r) = D1 ('MetaData "IpeSymbol" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Symbol" 'PrefixI 'True) (S1 ('MetaSel ('Just "_symbolPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r)) :*: S1 ('MetaSel ('Just "_symbolName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

Methods

from :: IpeSymbol r -> Rep (IpeSymbol r) x #

to :: Rep (IpeSymbol r) x -> IpeSymbol r #

Show r => Show (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeSymbol r -> IpeSymbol r -> Bool #

(/=) :: IpeSymbol r -> IpeSymbol r -> Bool #

Ord r => Ord (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Coordinate r => IpeRead (IpeSymbol r) Source #

Ipe read instances

Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r)) -> IpeSymbol r -> IpeSymbol r

type Rep (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Rep (IpeSymbol r) = D1 ('MetaData "IpeSymbol" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Symbol" 'PrefixI 'True) (S1 ('MetaSel ('Just "_symbolPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r)) :*: S1 ('MetaSel ('Just "_symbolName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
type Dimension (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeSymbol r) = 2
type NumType (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeSymbol r) = r

symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r') Source #

Lens to access the position of the symbol

symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r) Source #

Lens to access the name of the symbol

newtype Path r Source #

A path is a non-empty sequence of PathSegments.

Constructors

Path (Seq (PathSegment r)) 

Instances

Instances details
Functor Path Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> Path a -> Path b #

(<$) :: a -> Path b -> Path a #

Foldable Path Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => Path m -> m #

foldMap :: Monoid m => (a -> m) -> Path a -> m #

foldMap' :: Monoid m => (a -> m) -> Path a -> m #

foldr :: (a -> b -> b) -> b -> Path a -> b #

foldr' :: (a -> b -> b) -> b -> Path a -> b #

foldl :: (b -> a -> b) -> b -> Path a -> b #

foldl' :: (b -> a -> b) -> b -> Path a -> b #

foldr1 :: (a -> a -> a) -> Path a -> a #

foldl1 :: (a -> a -> a) -> Path a -> a #

toList :: Path a -> [a] #

null :: Path a -> Bool #

length :: Path a -> Int #

elem :: Eq a => a -> Path a -> Bool #

maximum :: Ord a => Path a -> a #

minimum :: Ord a => Path a -> a #

sum :: Num a => Path a -> a #

product :: Num a => Path a -> a #

Traversable Path Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> Path a -> f (Path b) #

sequenceA :: Applicative f => Path (f a) -> f (Path a) #

mapM :: Monad m => (a -> m b) -> Path a -> m (Path b) #

sequence :: Monad m => Path (m a) -> m (Path a) #

ToObject Path Source # 
Instance details

Defined in Ipe.Content

Semigroup (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(<>) :: Path r -> Path r -> Path r #

sconcat :: NonEmpty (Path r) -> Path r #

stimes :: Integral b => b -> Path r -> Path r #

Generic (Path r) Source # 
Instance details

Defined in Ipe.Path

Associated Types

type Rep (Path r) 
Instance details

Defined in Ipe.Path

type Rep (Path r) = D1 ('MetaData "Path" "Ipe.Path" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Path" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pathSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq (PathSegment r)))))

Methods

from :: Path r -> Rep (Path r) x #

to :: Rep (Path r) x -> Path r #

Show r => Show (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

showsPrec :: Int -> Path r -> ShowS #

show :: Path r -> String #

showList :: [Path r] -> ShowS #

Eq r => Eq (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(==) :: Path r -> Path r -> Bool #

(/=) :: Path r -> Path r -> Bool #

(Coordinate r, Fractional r, Eq r) => IpeRead (Path r) Source # 
Instance details

Defined in Ipe.Reader

(Coordinate r, Fractional r, Eq r) => IpeReadText (Path r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Path r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: Path r -> Maybe (Node Text Text) Source #

IpeWriteText r => IpeWriteText (Path r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (Path r)) (NumType (Path r)) -> Path r -> Path r

type Rep (Path r) Source # 
Instance details

Defined in Ipe.Path

type Rep (Path r) = D1 ('MetaData "Path" "Ipe.Path" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Path" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pathSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq (PathSegment r)))))
type Dimension (Path r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (Path r) = 2
type NumType (Path r) Source # 
Instance details

Defined in Ipe.Path

type NumType (Path r) = r

pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r')) Source #

Lens/Iso to access the sequcne of segments of the path

data PathSegment r Source #

Paths consist of Path Segments. PathSegments come in the following forms:

Instances

Instances details
Functor PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> PathSegment a -> PathSegment b #

(<$) :: a -> PathSegment b -> PathSegment a #

Foldable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => PathSegment m -> m #

foldMap :: Monoid m => (a -> m) -> PathSegment a -> m #

foldMap' :: Monoid m => (a -> m) -> PathSegment a -> m #

foldr :: (a -> b -> b) -> b -> PathSegment a -> b #

foldr' :: (a -> b -> b) -> b -> PathSegment a -> b #

foldl :: (b -> a -> b) -> b -> PathSegment a -> b #

foldl' :: (b -> a -> b) -> b -> PathSegment a -> b #

foldr1 :: (a -> a -> a) -> PathSegment a -> a #

foldl1 :: (a -> a -> a) -> PathSegment a -> a #

toList :: PathSegment a -> [a] #

null :: PathSegment a -> Bool #

length :: PathSegment a -> Int #

elem :: Eq a => a -> PathSegment a -> Bool #

maximum :: Ord a => PathSegment a -> a #

minimum :: Ord a => PathSegment a -> a #

sum :: Num a => PathSegment a -> a #

product :: Num a => PathSegment a -> a #

Traversable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> PathSegment a -> f (PathSegment b) #

sequenceA :: Applicative f => PathSegment (f a) -> f (PathSegment a) #

mapM :: Monad m => (a -> m b) -> PathSegment a -> m (PathSegment b) #

sequence :: Monad m => PathSegment (m a) -> m (PathSegment a) #

Show r => Show (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Eq r => Eq (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

(Coordinate r, Fractional r, Eq r) => IpeReadText (NonEmpty (PathSegment r)) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWriteText (PathSegment r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -> PathSegment r -> PathSegment r

type Dimension (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (PathSegment r) = 2
type NumType (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type NumType (PathSegment r) = r

newtype Group r Source #

Groups and Objects

Group Attributes

A group is essentially a list of IpeObjects.

Constructors

Group [IpeObject r] 

Instances

Instances details
Functor Group Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Group a -> Group b #

(<$) :: a -> Group b -> Group a #

Foldable Group Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Group m -> m #

foldMap :: Monoid m => (a -> m) -> Group a -> m #

foldMap' :: Monoid m => (a -> m) -> Group a -> m #

foldr :: (a -> b -> b) -> b -> Group a -> b #

foldr' :: (a -> b -> b) -> b -> Group a -> b #

foldl :: (b -> a -> b) -> b -> Group a -> b #

foldl' :: (b -> a -> b) -> b -> Group a -> b #

foldr1 :: (a -> a -> a) -> Group a -> a #

foldl1 :: (a -> a -> a) -> Group a -> a #

toList :: Group a -> [a] #

null :: Group a -> Bool #

length :: Group a -> Int #

elem :: Eq a => a -> Group a -> Bool #

maximum :: Ord a => Group a -> a #

minimum :: Ord a => Group a -> a #

sum :: Num a => Group a -> a #

product :: Num a => Group a -> a #

Traversable Group Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Group a -> f (Group b) #

sequenceA :: Applicative f => Group (f a) -> f (Group a) #

mapM :: Monad m => (a -> m b) -> Group a -> m (Group b) #

sequence :: Monad m => Group (m a) -> m (Group a) #

ToObject Group Source # 
Instance details

Defined in Ipe.Content

Generic (Group r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Group r) 
Instance details

Defined in Ipe.Content

type Rep (Group r) = D1 ('MetaData "Group" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Group" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r])))

Methods

from :: Group r -> Rep (Group r) x #

to :: Rep (Group r) x -> Group r #

Show r => Show (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Group r -> ShowS #

show :: Group r -> String #

showList :: [Group r] -> ShowS #

Eq r => Eq (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Group r -> Group r -> Bool #

(/=) :: Group r -> Group r -> Bool #

HasDefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

Associated Types

type DefaultIpeOut (Group r) 
Instance details

Defined in Ipe.IpeOut

Methods

defIO :: IpeOut (Group r) (DefaultIpeOut (Group r)) (NumType (Group r)) Source #

(Coordinate r, Eq r) => IpeRead (Group r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Group r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Group r)) (NumType (Group r)) -> Group r -> Group r

type Rep (Group r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Group r) = D1 ('MetaData "Group" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Group" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r])))
type DefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

type Dimension (Group r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Group r) = 2
type NumType (Group r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Group r) = r

groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s) Source #

data IpeObject r Source #

Instances

Instances details
Functor IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeObject a -> IpeObject b #

(<$) :: a -> IpeObject b -> IpeObject a #

Foldable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeObject m -> m #

foldMap :: Monoid m => (a -> m) -> IpeObject a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeObject a -> m #

foldr :: (a -> b -> b) -> b -> IpeObject a -> b #

foldr' :: (a -> b -> b) -> b -> IpeObject a -> b #

foldl :: (b -> a -> b) -> b -> IpeObject a -> b #

foldl' :: (b -> a -> b) -> b -> IpeObject a -> b #

foldr1 :: (a -> a -> a) -> IpeObject a -> a #

foldl1 :: (a -> a -> a) -> IpeObject a -> a #

toList :: IpeObject a -> [a] #

null :: IpeObject a -> Bool #

length :: IpeObject a -> Int #

elem :: Eq a => a -> IpeObject a -> Bool #

maximum :: Ord a => IpeObject a -> a #

minimum :: Ord a => IpeObject a -> a #

sum :: Num a => IpeObject a -> a #

product :: Num a => IpeObject a -> a #

Traversable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeObject a -> f (IpeObject b) #

sequenceA :: Applicative f => IpeObject (f a) -> f (IpeObject a) #

mapM :: Monad m => (a -> m b) -> IpeObject a -> m (IpeObject b) #

sequence :: Monad m => IpeObject (m a) -> m (IpeObject a) #

Generic (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

from :: IpeObject r -> Rep (IpeObject r) x #

to :: Rep (IpeObject r) x -> IpeObject r #

Show r => Show (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeObject r -> IpeObject r -> Bool #

(/=) :: IpeObject r -> IpeObject r -> Bool #

(Coordinate r, Fractional r, Eq r) => IpeRead (IpeObject r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeObject r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeObject r)) (NumType (IpeObject r)) -> IpeObject r -> IpeObject r

type Rep (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) = 2
type NumType (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeObject r) = r

_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r)) Source #

type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r Source #

An IpeObject' is essentially the oject ogether with its attributes

ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r Source #

Shorthand for constructing ipeObjects

class ToObject (i :: Type -> Type) where Source #

Instances

Instances details
ToObject Group Source # 
Instance details

Defined in Ipe.Content

ToObject Image Source # 
Instance details

Defined in Ipe.Content

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

ToObject Path Source # 
Instance details

Defined in Ipe.Content

type Attributes' r = Attributes (AttrMapSym1 r) Source #

Attributes' :: Type -> [AttributeUniverse] -> Type

type family AttrMap r (l :: AttributeUniverse) where ... Source #

The mapping between the labels of the the attributes and the types of the +Ipe.Content

Safe HaskellNone
LanguageGHC2021

Ipe.Content

Synopsis

Documentation

data Image r Source #

Image Objects

bitmap image objects in Ipe

Constructors

Image () (Rectangle (Point 2 r)) 

Instances

Instances details
Functor Image Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Image a -> Image b #

(<$) :: a -> Image b -> Image a #

Foldable Image Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Image m -> m #

foldMap :: Monoid m => (a -> m) -> Image a -> m #

foldMap' :: Monoid m => (a -> m) -> Image a -> m #

foldr :: (a -> b -> b) -> b -> Image a -> b #

foldr' :: (a -> b -> b) -> b -> Image a -> b #

foldl :: (b -> a -> b) -> b -> Image a -> b #

foldl' :: (b -> a -> b) -> b -> Image a -> b #

foldr1 :: (a -> a -> a) -> Image a -> a #

foldl1 :: (a -> a -> a) -> Image a -> a #

toList :: Image a -> [a] #

null :: Image a -> Bool #

length :: Image a -> Int #

elem :: Eq a => a -> Image a -> Bool #

maximum :: Ord a => Image a -> a #

minimum :: Ord a => Image a -> a #

sum :: Num a => Image a -> a #

product :: Num a => Image a -> a #

Traversable Image Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Image a -> f (Image b) #

sequenceA :: Applicative f => Image (f a) -> f (Image a) #

mapM :: Monad m => (a -> m b) -> Image a -> m (Image b) #

sequence :: Monad m => Image (m a) -> m (Image a) #

ToObject Image Source # 
Instance details

Defined in Ipe.Content

Generic (Image r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Image r) 
Instance details

Defined in Ipe.Content

type Rep (Image r) = D1 ('MetaData "Image" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Image" 'PrefixI 'True) (S1 ('MetaSel ('Just "_imageData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ()) :*: S1 ('MetaSel ('Just "_rect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Rectangle (Point 2 r)))))

Methods

from :: Image r -> Rep (Image r) x #

to :: Rep (Image r) x -> Image r #

Show r => Show (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Image r -> ShowS #

show :: Image r -> String #

showList :: [Image r] -> ShowS #

Eq r => Eq (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Image r -> Image r -> Bool #

(/=) :: Image r -> Image r -> Bool #

Ord r => Ord (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: Image r -> Image r -> Ordering #

(<) :: Image r -> Image r -> Bool #

(<=) :: Image r -> Image r -> Bool #

(>) :: Image r -> Image r -> Bool #

(>=) :: Image r -> Image r -> Bool #

max :: Image r -> Image r -> Image r #

min :: Image r -> Image r -> Image r #

Coordinate r => IpeRead (Image r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Image r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Image r)) (NumType (Image r)) -> Image r -> Image r

type Rep (Image r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Image r) = D1 ('MetaData "Image" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Image" 'PrefixI 'True) (S1 ('MetaSel ('Just "_imageData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ()) :*: S1 ('MetaSel ('Just "_rect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Rectangle (Point 2 r)))))
type Dimension (Image r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Image r) = 2
type NumType (Image r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Image r) = r

imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r) Source #

Lens to access the image data

rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r') Source #

Lens to access the rectangle of the image

data TextLabel r Source #

Text Objects

A text label

Constructors

Label Text (Point 2 r) 

Instances

Instances details
Functor TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> TextLabel a -> TextLabel b #

(<$) :: a -> TextLabel b -> TextLabel a #

Foldable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => TextLabel m -> m #

foldMap :: Monoid m => (a -> m) -> TextLabel a -> m #

foldMap' :: Monoid m => (a -> m) -> TextLabel a -> m #

foldr :: (a -> b -> b) -> b -> TextLabel a -> b #

foldr' :: (a -> b -> b) -> b -> TextLabel a -> b #

foldl :: (b -> a -> b) -> b -> TextLabel a -> b #

foldl' :: (b -> a -> b) -> b -> TextLabel a -> b #

foldr1 :: (a -> a -> a) -> TextLabel a -> a #

foldl1 :: (a -> a -> a) -> TextLabel a -> a #

toList :: TextLabel a -> [a] #

null :: TextLabel a -> Bool #

length :: TextLabel a -> Int #

elem :: Eq a => a -> TextLabel a -> Bool #

maximum :: Ord a => TextLabel a -> a #

minimum :: Ord a => TextLabel a -> a #

sum :: Num a => TextLabel a -> a #

product :: Num a => TextLabel a -> a #

Traversable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> TextLabel a -> f (TextLabel b) #

sequenceA :: Applicative f => TextLabel (f a) -> f (TextLabel a) #

mapM :: Monad m => (a -> m b) -> TextLabel a -> m (TextLabel b) #

sequence :: Monad m => TextLabel (m a) -> m (TextLabel a) #

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

Generic (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (TextLabel r) 
Instance details

Defined in Ipe.Content

type Rep (TextLabel r) = D1 ('MetaData "TextLabel" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r))))

Methods

from :: TextLabel r -> Rep (TextLabel r) x #

to :: Rep (TextLabel r) x -> TextLabel r #

Show r => Show (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: TextLabel r -> TextLabel r -> Bool #

(/=) :: TextLabel r -> TextLabel r -> Bool #

Ord r => Ord (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Coordinate r => IpeRead (TextLabel r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (TextLabel r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (TextLabel r)) (NumType (TextLabel r)) -> TextLabel r -> TextLabel r

type Rep (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Rep (TextLabel r) = D1 ('MetaData "TextLabel" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r))))
type Dimension (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (TextLabel r) = 2
type NumType (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type NumType (TextLabel r) = r

data MiniPage r Source #

A Minipage

Constructors

MiniPage Text (Point 2 r) r 

Instances

Instances details
Functor MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> MiniPage a -> MiniPage b #

(<$) :: a -> MiniPage b -> MiniPage a #

Foldable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => MiniPage m -> m #

foldMap :: Monoid m => (a -> m) -> MiniPage a -> m #

foldMap' :: Monoid m => (a -> m) -> MiniPage a -> m #

foldr :: (a -> b -> b) -> b -> MiniPage a -> b #

foldr' :: (a -> b -> b) -> b -> MiniPage a -> b #

foldl :: (b -> a -> b) -> b -> MiniPage a -> b #

foldl' :: (b -> a -> b) -> b -> MiniPage a -> b #

foldr1 :: (a -> a -> a) -> MiniPage a -> a #

foldl1 :: (a -> a -> a) -> MiniPage a -> a #

toList :: MiniPage a -> [a] #

null :: MiniPage a -> Bool #

length :: MiniPage a -> Int #

elem :: Eq a => a -> MiniPage a -> Bool #

maximum :: Ord a => MiniPage a -> a #

minimum :: Ord a => MiniPage a -> a #

sum :: Num a => MiniPage a -> a #

product :: Num a => MiniPage a -> a #

Traversable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> MiniPage a -> f (MiniPage b) #

sequenceA :: Applicative f => MiniPage (f a) -> f (MiniPage a) #

mapM :: Monad m => (a -> m b) -> MiniPage a -> m (MiniPage b) #

sequence :: Monad m => MiniPage (m a) -> m (MiniPage a) #

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

Generic (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (MiniPage r) 
Instance details

Defined in Ipe.Content

Methods

from :: MiniPage r -> Rep (MiniPage r) x #

to :: Rep (MiniPage r) x -> MiniPage r #

Show r => Show (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> MiniPage r -> ShowS #

show :: MiniPage r -> String #

showList :: [MiniPage r] -> ShowS #

Eq r => Eq (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: MiniPage r -> MiniPage r -> Bool #

(/=) :: MiniPage r -> MiniPage r -> Bool #

Ord r => Ord (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: MiniPage r -> MiniPage r -> Ordering #

(<) :: MiniPage r -> MiniPage r -> Bool #

(<=) :: MiniPage r -> MiniPage r -> Bool #

(>) :: MiniPage r -> MiniPage r -> Bool #

(>=) :: MiniPage r -> MiniPage r -> Bool #

max :: MiniPage r -> MiniPage r -> MiniPage r #

min :: MiniPage r -> MiniPage r -> MiniPage r #

Coordinate r => IpeRead (MiniPage r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (MiniPage r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (MiniPage r)) (NumType (MiniPage r)) -> MiniPage r -> MiniPage r

type Rep (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) = 2
type NumType (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type NumType (MiniPage r) = r

data IpeSymbol r Source #

Ipe Symbols, i.e. Points

A symbol (point) in ipe

Constructors

Symbol (Point 2 r) Text 

Instances

Instances details
Functor IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeSymbol a -> IpeSymbol b #

(<$) :: a -> IpeSymbol b -> IpeSymbol a #

Foldable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeSymbol m -> m #

foldMap :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldr :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldr' :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldl :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldl' :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldr1 :: (a -> a -> a) -> IpeSymbol a -> a #

foldl1 :: (a -> a -> a) -> IpeSymbol a -> a #

toList :: IpeSymbol a -> [a] #

null :: IpeSymbol a -> Bool #

length :: IpeSymbol a -> Int #

elem :: Eq a => a -> IpeSymbol a -> Bool #

maximum :: Ord a => IpeSymbol a -> a #

minimum :: Ord a => IpeSymbol a -> a #

sum :: Num a => IpeSymbol a -> a #

product :: Num a => IpeSymbol a -> a #

Traversable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeSymbol a -> f (IpeSymbol b) #

sequenceA :: Applicative f => IpeSymbol (f a) -> f (IpeSymbol a) #

mapM :: Monad m => (a -> m b) -> IpeSymbol a -> m (IpeSymbol b) #

sequence :: Monad m => IpeSymbol (m a) -> m (IpeSymbol a) #

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Generic (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (IpeSymbol r) 
Instance details

Defined in Ipe.Content

type Rep (IpeSymbol r) = D1 ('MetaData "IpeSymbol" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Symbol" 'PrefixI 'True) (S1 ('MetaSel ('Just "_symbolPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r)) :*: S1 ('MetaSel ('Just "_symbolName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

Methods

from :: IpeSymbol r -> Rep (IpeSymbol r) x #

to :: Rep (IpeSymbol r) x -> IpeSymbol r #

Show r => Show (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeSymbol r -> IpeSymbol r -> Bool #

(/=) :: IpeSymbol r -> IpeSymbol r -> Bool #

Ord r => Ord (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Coordinate r => IpeRead (IpeSymbol r) Source #

Ipe read instances

Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r)) -> IpeSymbol r -> IpeSymbol r

type Rep (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Rep (IpeSymbol r) = D1 ('MetaData "IpeSymbol" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Symbol" 'PrefixI 'True) (S1 ('MetaSel ('Just "_symbolPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r)) :*: S1 ('MetaSel ('Just "_symbolName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
type Dimension (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeSymbol r) = 2
type NumType (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeSymbol r) = r

symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r') Source #

Lens to access the position of the symbol

symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r) Source #

Lens to access the name of the symbol

newtype Path r Source #

A path is a non-empty sequence of PathSegments.

Constructors

Path (Seq (PathSegment r)) 

Instances

Instances details
Functor Path Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> Path a -> Path b #

(<$) :: a -> Path b -> Path a #

Foldable Path Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => Path m -> m #

foldMap :: Monoid m => (a -> m) -> Path a -> m #

foldMap' :: Monoid m => (a -> m) -> Path a -> m #

foldr :: (a -> b -> b) -> b -> Path a -> b #

foldr' :: (a -> b -> b) -> b -> Path a -> b #

foldl :: (b -> a -> b) -> b -> Path a -> b #

foldl' :: (b -> a -> b) -> b -> Path a -> b #

foldr1 :: (a -> a -> a) -> Path a -> a #

foldl1 :: (a -> a -> a) -> Path a -> a #

toList :: Path a -> [a] #

null :: Path a -> Bool #

length :: Path a -> Int #

elem :: Eq a => a -> Path a -> Bool #

maximum :: Ord a => Path a -> a #

minimum :: Ord a => Path a -> a #

sum :: Num a => Path a -> a #

product :: Num a => Path a -> a #

Traversable Path Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> Path a -> f (Path b) #

sequenceA :: Applicative f => Path (f a) -> f (Path a) #

mapM :: Monad m => (a -> m b) -> Path a -> m (Path b) #

sequence :: Monad m => Path (m a) -> m (Path a) #

ToObject Path Source # 
Instance details

Defined in Ipe.Content

Semigroup (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(<>) :: Path r -> Path r -> Path r #

sconcat :: NonEmpty (Path r) -> Path r #

stimes :: Integral b => b -> Path r -> Path r #

Generic (Path r) Source # 
Instance details

Defined in Ipe.Path

Associated Types

type Rep (Path r) 
Instance details

Defined in Ipe.Path

type Rep (Path r) = D1 ('MetaData "Path" "Ipe.Path" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Path" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pathSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq (PathSegment r)))))

Methods

from :: Path r -> Rep (Path r) x #

to :: Rep (Path r) x -> Path r #

Show r => Show (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

showsPrec :: Int -> Path r -> ShowS #

show :: Path r -> String #

showList :: [Path r] -> ShowS #

Eq r => Eq (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(==) :: Path r -> Path r -> Bool #

(/=) :: Path r -> Path r -> Bool #

(Coordinate r, Fractional r, Eq r) => IpeRead (Path r) Source # 
Instance details

Defined in Ipe.Reader

(Coordinate r, Fractional r, Eq r) => IpeReadText (Path r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Path r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: Path r -> Maybe (Node Text Text) Source #

IpeWriteText r => IpeWriteText (Path r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (Path r)) (NumType (Path r)) -> Path r -> Path r

type Rep (Path r) Source # 
Instance details

Defined in Ipe.Path

type Rep (Path r) = D1 ('MetaData "Path" "Ipe.Path" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Path" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pathSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq (PathSegment r)))))
type Dimension (Path r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (Path r) = 2
type NumType (Path r) Source # 
Instance details

Defined in Ipe.Path

type NumType (Path r) = r

pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r')) Source #

Lens/Iso to access the sequcne of segments of the path

data PathSegment r Source #

Paths consist of Path Segments. PathSegments come in the following forms:

Instances

Instances details
Functor PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> PathSegment a -> PathSegment b #

(<$) :: a -> PathSegment b -> PathSegment a #

Foldable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => PathSegment m -> m #

foldMap :: Monoid m => (a -> m) -> PathSegment a -> m #

foldMap' :: Monoid m => (a -> m) -> PathSegment a -> m #

foldr :: (a -> b -> b) -> b -> PathSegment a -> b #

foldr' :: (a -> b -> b) -> b -> PathSegment a -> b #

foldl :: (b -> a -> b) -> b -> PathSegment a -> b #

foldl' :: (b -> a -> b) -> b -> PathSegment a -> b #

foldr1 :: (a -> a -> a) -> PathSegment a -> a #

foldl1 :: (a -> a -> a) -> PathSegment a -> a #

toList :: PathSegment a -> [a] #

null :: PathSegment a -> Bool #

length :: PathSegment a -> Int #

elem :: Eq a => a -> PathSegment a -> Bool #

maximum :: Ord a => PathSegment a -> a #

minimum :: Ord a => PathSegment a -> a #

sum :: Num a => PathSegment a -> a #

product :: Num a => PathSegment a -> a #

Traversable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> PathSegment a -> f (PathSegment b) #

sequenceA :: Applicative f => PathSegment (f a) -> f (PathSegment a) #

mapM :: Monad m => (a -> m b) -> PathSegment a -> m (PathSegment b) #

sequence :: Monad m => PathSegment (m a) -> m (PathSegment a) #

Show r => Show (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Eq r => Eq (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

(Coordinate r, Fractional r, Eq r) => IpeReadText (NonEmpty (PathSegment r)) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWriteText (PathSegment r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -> PathSegment r -> PathSegment r

type Dimension (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (PathSegment r) = 2
type NumType (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type NumType (PathSegment r) = r

newtype Group r Source #

Groups and Objects

Group Attributes

A group is essentially a list of IpeObjects.

Constructors

Group [IpeObject r] 

Instances

Instances details
Functor Group Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Group a -> Group b #

(<$) :: a -> Group b -> Group a #

Foldable Group Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Group m -> m #

foldMap :: Monoid m => (a -> m) -> Group a -> m #

foldMap' :: Monoid m => (a -> m) -> Group a -> m #

foldr :: (a -> b -> b) -> b -> Group a -> b #

foldr' :: (a -> b -> b) -> b -> Group a -> b #

foldl :: (b -> a -> b) -> b -> Group a -> b #

foldl' :: (b -> a -> b) -> b -> Group a -> b #

foldr1 :: (a -> a -> a) -> Group a -> a #

foldl1 :: (a -> a -> a) -> Group a -> a #

toList :: Group a -> [a] #

null :: Group a -> Bool #

length :: Group a -> Int #

elem :: Eq a => a -> Group a -> Bool #

maximum :: Ord a => Group a -> a #

minimum :: Ord a => Group a -> a #

sum :: Num a => Group a -> a #

product :: Num a => Group a -> a #

Traversable Group Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Group a -> f (Group b) #

sequenceA :: Applicative f => Group (f a) -> f (Group a) #

mapM :: Monad m => (a -> m b) -> Group a -> m (Group b) #

sequence :: Monad m => Group (m a) -> m (Group a) #

ToObject Group Source # 
Instance details

Defined in Ipe.Content

Generic (Group r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Group r) 
Instance details

Defined in Ipe.Content

type Rep (Group r) = D1 ('MetaData "Group" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Group" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r])))

Methods

from :: Group r -> Rep (Group r) x #

to :: Rep (Group r) x -> Group r #

Show r => Show (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Group r -> ShowS #

show :: Group r -> String #

showList :: [Group r] -> ShowS #

Eq r => Eq (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Group r -> Group r -> Bool #

(/=) :: Group r -> Group r -> Bool #

HasDefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

Associated Types

type DefaultIpeOut (Group r) 
Instance details

Defined in Ipe.IpeOut

Methods

defIO :: IpeOut (Group r) (DefaultIpeOut (Group r)) (NumType (Group r)) Source #

(Coordinate r, Eq r) => IpeRead (Group r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Group r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Group r)) (NumType (Group r)) -> Group r -> Group r

type Rep (Group r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Group r) = D1 ('MetaData "Group" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Group" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r])))
type DefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

type Dimension (Group r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Group r) = 2
type NumType (Group r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Group r) = r

groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s) Source #

data IpeObject r Source #

Instances

Instances details
Functor IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeObject a -> IpeObject b #

(<$) :: a -> IpeObject b -> IpeObject a #

Foldable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeObject m -> m #

foldMap :: Monoid m => (a -> m) -> IpeObject a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeObject a -> m #

foldr :: (a -> b -> b) -> b -> IpeObject a -> b #

foldr' :: (a -> b -> b) -> b -> IpeObject a -> b #

foldl :: (b -> a -> b) -> b -> IpeObject a -> b #

foldl' :: (b -> a -> b) -> b -> IpeObject a -> b #

foldr1 :: (a -> a -> a) -> IpeObject a -> a #

foldl1 :: (a -> a -> a) -> IpeObject a -> a #

toList :: IpeObject a -> [a] #

null :: IpeObject a -> Bool #

length :: IpeObject a -> Int #

elem :: Eq a => a -> IpeObject a -> Bool #

maximum :: Ord a => IpeObject a -> a #

minimum :: Ord a => IpeObject a -> a #

sum :: Num a => IpeObject a -> a #

product :: Num a => IpeObject a -> a #

Traversable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeObject a -> f (IpeObject b) #

sequenceA :: Applicative f => IpeObject (f a) -> f (IpeObject a) #

mapM :: Monad m => (a -> m b) -> IpeObject a -> m (IpeObject b) #

sequence :: Monad m => IpeObject (m a) -> m (IpeObject a) #

Generic (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

from :: IpeObject r -> Rep (IpeObject r) x #

to :: Rep (IpeObject r) x -> IpeObject r #

Show r => Show (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeObject r -> IpeObject r -> Bool #

(/=) :: IpeObject r -> IpeObject r -> Bool #

(Coordinate r, Fractional r, Eq r) => IpeRead (IpeObject r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeObject r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeObject r)) (NumType (IpeObject r)) -> IpeObject r -> IpeObject r

type Rep (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) = 2
type NumType (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeObject r) = r

_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r)) Source #

type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r Source #

An IpeObject' is essentially the oject ogether with its attributes

ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r Source #

Shorthand for constructing ipeObjects

class ToObject (i :: Type -> Type) where Source #

Instances

Instances details
ToObject Group Source # 
Instance details

Defined in Ipe.Content

ToObject Image Source # 
Instance details

Defined in Ipe.Content

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

ToObject Path Source # 
Instance details

Defined in Ipe.Content

type Attributes' r = Attributes (AttrMapSym1 r) Source #

Attributes' :: Type -> [AttributeUniverse] -> Type

type family AttrMap r (l :: AttributeUniverse) where ... Source #

The mapping between the labels of the the attributes and the types of the attributes with these labels. For example, the Matrix label/attribute should - have a value of type 'Matrix 3 3 r'.

data AttrMapSym1 a6989586621679260257 (b :: TyFun AttributeUniverse Type) Source #

Instances

Instances details
SuppressUnusedWarnings (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260258 :: AttributeUniverse) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260258 :: AttributeUniverse) = AttrMap a6989586621679260257 a6989586621679260258

attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r) Source #

traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s) Source #

traverse for ipe attributes

flattenGroups :: [IpeObject r] -> [IpeObject r] Source #

collect all non-group objects

\ No newline at end of file + have a value of type 'Matrix 3 3 r'.

data AttrMapSym1 a6989586621679260260 (b :: TyFun AttributeUniverse Type) Source #

Instances

Instances details
SuppressUnusedWarnings (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260261 :: AttributeUniverse) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260261 :: AttributeUniverse) = AttrMap a6989586621679260260 a6989586621679260261

attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r) Source #

traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s) Source #

traverse for ipe attributes

flattenGroups :: [IpeObject r] -> [IpeObject r] Source #

collect all non-group objects

\ No newline at end of file diff --git a/haddocks/hgeometry/ipe/Ipe-FromIpe.html b/haddocks/hgeometry/ipe/Ipe-FromIpe.html index 48e304f47..c026a5d4a 100644 --- a/haddocks/hgeometry/ipe/Ipe-FromIpe.html +++ b/haddocks/hgeometry/ipe/Ipe-FromIpe.html @@ -1,11 +1,11 @@ -Ipe.FromIpe
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

Ipe.FromIpe

Description

Functions that help reading geometric values from ipe images.

Synopsis

Individual readers

_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r)) Source #

Extracts the point from a Symbol. When creating a symbol this +Ipe.FromIpe

Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

Ipe.FromIpe

Description

Functions that help reading geometric values from ipe images.

Synopsis

Individual readers

_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r)) Source #

Extracts the point from a Symbol. When creating a symbol this creates a disk that supports a stroke color.

_asLineSegment :: forall r p f. (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Try to convert a path into a line segment, fails if the path is not a line segment or a polyline with more than two points.

_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Try to convert a path into a line segment, fails if the path is not a line segment or a polyline with more than two points.

_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r)) Source #

Tries to convert a path into a rectangle.

_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a triangle

_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a polyline. Ignores all non-polyline parts

>>> testPath ^? _asPolyLine
 Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100])
-

_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a simple polygon

_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r)) Source #

Convert to a convex polygon

Dealing with Attributes

_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r) Source #

Use the first prism to select the ipe object to depicle with, and the second +

_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a simple polygon

_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r)) Source #

Convert to a convex polygon

_asPolygonalDomain :: forall r p f. (Choice p, Applicative f) => p (PolygonalDomain (Point 2 r)) (f (PolygonalDomain (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a polygonal domain

toPolygonalDomain :: Path r -> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) Source #

Convert to a path to a Polygonal Domain

Dealing with Attributes

_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r) Source #

Use the first prism to select the ipe object to depicle with, and the second how to select the geometry object from there on. Then we can select the geometry object, directly with its attributes here.

>>> testObject ^? _withAttrs _IpePath _asPolyLine
 Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100] :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "red"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})
-

Default readers

class HasDefaultFromIpe g where Source #

Associated Types

type DefaultFromIpe g :: Type -> Type Source #

Methods

defaultFromIpe :: r ~ NumType g => Prism' (IpeObject r) (g :+ IpeAttributes (DefaultFromIpe g) r) Source #

Instances

Instances details
HasDefaultFromIpe (PolyLine (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (PolyLine (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (PolyLine (Point 2 r)) => Prism' (IpeObject r0) (PolyLine (Point 2 r) :+ IpeAttributes (DefaultFromIpe (PolyLine (Point 2 r))) r0) Source #

HasDefaultFromIpe (SimplePolygon (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (SimplePolygon (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

(Radical r, Eq r) => HasDefaultFromIpe (Circle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Circle (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Circle (Point 2 r)) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Circle (Point 2 r)) => Prism' (IpeObject r0) (Circle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Circle (Point 2 r))) r0) Source #

(Radical r, Eq r) => HasDefaultFromIpe (Disk (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Disk (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Disk (Point 2 r)) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Disk (Point 2 r)) => Prism' (IpeObject r0) (Disk (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Disk (Point 2 r))) r0) Source #

(Num r, Ord r) => HasDefaultFromIpe (Rectangle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Rectangle (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (Rectangle (Point 2 r)) => Prism' (IpeObject r0) (Rectangle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Rectangle (Point 2 r))) r0) Source #

HasDefaultFromIpe (Ellipse r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Ellipse r) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Ellipse r) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Ellipse r) => Prism' (IpeObject r0) (Ellipse r :+ IpeAttributes (DefaultFromIpe (Ellipse r)) r0) Source #

HasDefaultFromIpe (ClosedLineSegment (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (ClosedLineSegment (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

HasDefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

HasDefaultFromIpe (Point 2 r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Point 2 r) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (Point 2 r) => Prism' (IpeObject r0) (Point 2 r :+ IpeAttributes (DefaultFromIpe (Point 2 r)) r0) Source #

Reading all elements of a particular type

readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] Source #

Read all g's from some ipe page(s).

readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] Source #

Read all as looking into groups

readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r] Source #

Convenience function from reading all g's from an ipe file. If there +

Default readers

class HasDefaultFromIpe g where Source #

Associated Types

type DefaultFromIpe g :: Type -> Type Source #

Methods

defaultFromIpe :: r ~ NumType g => Prism' (IpeObject r) (g :+ IpeAttributes (DefaultFromIpe g) r) Source #

Instances

Instances details
HasDefaultFromIpe (PolyLine (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (PolyLine (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (PolyLine (Point 2 r)) => Prism' (IpeObject r0) (PolyLine (Point 2 r) :+ IpeAttributes (DefaultFromIpe (PolyLine (Point 2 r))) r0) Source #

HasDefaultFromIpe (SimplePolygon (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (SimplePolygon (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

(Radical r, Eq r) => HasDefaultFromIpe (Circle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Circle (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Circle (Point 2 r)) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Circle (Point 2 r)) => Prism' (IpeObject r0) (Circle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Circle (Point 2 r))) r0) Source #

(Radical r, Eq r) => HasDefaultFromIpe (Disk (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Disk (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Disk (Point 2 r)) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Disk (Point 2 r)) => Prism' (IpeObject r0) (Disk (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Disk (Point 2 r))) r0) Source #

(Num r, Ord r) => HasDefaultFromIpe (Rectangle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Rectangle (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (Rectangle (Point 2 r)) => Prism' (IpeObject r0) (Rectangle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Rectangle (Point 2 r))) r0) Source #

HasDefaultFromIpe (Ellipse r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Ellipse r) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Ellipse r) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Ellipse r) => Prism' (IpeObject r0) (Ellipse r :+ IpeAttributes (DefaultFromIpe (Ellipse r)) r0) Source #

HasDefaultFromIpe (ClosedLineSegment (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (ClosedLineSegment (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

HasDefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

HasDefaultFromIpe (Point 2 r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Point 2 r) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (Point 2 r) => Prism' (IpeObject r0) (Point 2 r :+ IpeAttributes (DefaultFromIpe (Point 2 r)) r0) Source #

Reading all elements of a particular type

readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] Source #

Read all g's from some ipe page(s).

readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] Source #

Read all as looking into groups

readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r] Source #

Convenience function from reading all g's from an ipe file. If there is an error reading or parsing the file the error is "thrown away".

\ No newline at end of file diff --git a/haddocks/hgeometry/ipe/Ipe-Types.html b/haddocks/hgeometry/ipe/Ipe-Types.html index 1d770723c..5180d234e 100644 --- a/haddocks/hgeometry/ipe/Ipe-Types.html +++ b/haddocks/hgeometry/ipe/Ipe-Types.html @@ -1,4 +1,4 @@ -Ipe.Types
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

Ipe.Types

Description

Data type modeling the various elements in Ipe files.

Synopsis

Ipe Files

data IpeFile r Source #

A complete ipe file

Instances

Instances details
Generic (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep (IpeFile r) 
Instance details

Defined in Ipe.Types

type Rep (IpeFile r) = D1 ('MetaData "IpeFile" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "_preamble") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IpePreamble)) :*: (S1 ('MetaSel ('Just "_styles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeStyle]) :*: S1 ('MetaSel ('Just "_pages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (IpePage r))))))

Methods

from :: IpeFile r -> Rep (IpeFile r) x #

to :: Rep (IpeFile r) x -> IpeFile r #

Show r => Show (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> IpeFile r -> ShowS #

show :: IpeFile r -> String #

showList :: [IpeFile r] -> ShowS #

Eq r => Eq (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: IpeFile r -> IpeFile r -> Bool #

(/=) :: IpeFile r -> IpeFile r -> Bool #

(Coordinate r, Eq r) => IpeRead (IpeFile r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeFile r) Source # 
Instance details

Defined in Ipe.Writer

type Rep (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

type Rep (IpeFile r) = D1 ('MetaData "IpeFile" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "_preamble") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IpePreamble)) :*: (S1 ('MetaSel ('Just "_styles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeStyle]) :*: S1 ('MetaSel ('Just "_pages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (IpePage r))))))

preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r) Source #

Lens to access the preamble of an ipe file

styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r) Source #

Lens to access the styles of an ipe file

pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r') Source #

Lens to access the pages of an ipe file

ipeFile :: NonEmpty (IpePage r) -> IpeFile r Source #

Convenience constructor for creating an ipe file without preamble +Ipe.Types

Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

Ipe.Types

Description

Data type modeling the various elements in Ipe files.

Synopsis

Ipe Files

data IpeFile r Source #

A complete ipe file

Instances

Instances details
Generic (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep (IpeFile r) 
Instance details

Defined in Ipe.Types

type Rep (IpeFile r) = D1 ('MetaData "IpeFile" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "_preamble") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IpePreamble)) :*: (S1 ('MetaSel ('Just "_styles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeStyle]) :*: S1 ('MetaSel ('Just "_pages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (IpePage r))))))

Methods

from :: IpeFile r -> Rep (IpeFile r) x #

to :: Rep (IpeFile r) x -> IpeFile r #

Show r => Show (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> IpeFile r -> ShowS #

show :: IpeFile r -> String #

showList :: [IpeFile r] -> ShowS #

Eq r => Eq (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: IpeFile r -> IpeFile r -> Bool #

(/=) :: IpeFile r -> IpeFile r -> Bool #

(Coordinate r, Eq r) => IpeRead (IpeFile r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeFile r) Source # 
Instance details

Defined in Ipe.Writer

type Rep (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

type Rep (IpeFile r) = D1 ('MetaData "IpeFile" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "_preamble") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IpePreamble)) :*: (S1 ('MetaSel ('Just "_styles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeStyle]) :*: S1 ('MetaSel ('Just "_pages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (IpePage r))))))

preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r) Source #

Lens to access the preamble of an ipe file

styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r) Source #

Lens to access the styles of an ipe file

pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r') Source #

Lens to access the pages of an ipe file

ipeFile :: NonEmpty (IpePage r) -> IpeFile r Source #

Convenience constructor for creating an ipe file without preamble and with the default stylesheet.

singlePageFile :: IpePage r -> IpeFile r Source #

Convenience function to construct an ipe file consisting of a single page.

singlePageFromContent :: [IpeObject r] -> IpeFile r Source #

Create a single page ipe file from a list of IpeObjects

Ipe Pages

data IpePage r Source #

An IpePage is essentially a Group, together with a list of layers and a list of views.

Constructors

IpePage [LayerName] [View] [IpeObject r] 

Instances

Instances details
Generic (IpePage r) Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep (IpePage r) 
Instance details

Defined in Ipe.Types

type Rep (IpePage r) = D1 ('MetaData "IpePage" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpePage" 'PrefixI 'True) (S1 ('MetaSel ('Just "_layers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LayerName]) :*: (S1 ('MetaSel ('Just "_views") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [View]) :*: S1 ('MetaSel ('Just "_content") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r]))))

Methods

from :: IpePage r -> Rep (IpePage r) x #

to :: Rep (IpePage r) x -> IpePage r #

Show r => Show (IpePage r) Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> IpePage r -> ShowS #

show :: IpePage r -> String #

showList :: [IpePage r] -> ShowS #

Eq r => Eq (IpePage r) Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: IpePage r -> IpePage r -> Bool #

(/=) :: IpePage r -> IpePage r -> Bool #

(Coordinate r, Eq r) => IpeRead (IpePage r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpePage r) Source # 
Instance details

Defined in Ipe.Writer

type Rep (IpePage r) Source # 
Instance details

Defined in Ipe.Types

type Rep (IpePage r) = D1 ('MetaData "IpePage" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpePage" 'PrefixI 'True) (S1 ('MetaSel ('Just "_layers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LayerName]) :*: (S1 ('MetaSel ('Just "_views") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [View]) :*: S1 ('MetaSel ('Just "_content") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r]))))

layers :: forall r f. Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r) Source #

Lens to access the layers of an ipe page

views :: forall r f. Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r) Source #

Lens to access the views of an ipe page

content :: forall r r' f. Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r') Source #

Lens to access the content of an ipe page

emptyPage :: IpePage r Source #

Creates an empty page with one layer and view.

fromContent :: [IpeObject r] -> IpePage r Source #

Creates a simple page with a single view.

onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r) Source #

This allows you to filter the objects on some layer.

>>> let page = IpePage [] [] []
 >>> page^..content.onLayer "myLayer"
@@ -11,7 +11,7 @@
 

withDefaults :: IpePage r -> IpePage r Source #

Makes sure that the page has at least one layer and at least one view, essentially matching the behaviour of ipe. In particular,

  • if the page does not have any layers, it creates a layer named "alpha", and
  • if the page does not have any views, it creates a view in which all layers are visible.

Content: Ipe Objects

data IpeObject r Source #

Instances

Instances details
Functor IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeObject a -> IpeObject b #

(<$) :: a -> IpeObject b -> IpeObject a #

Foldable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeObject m -> m #

foldMap :: Monoid m => (a -> m) -> IpeObject a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeObject a -> m #

foldr :: (a -> b -> b) -> b -> IpeObject a -> b #

foldr' :: (a -> b -> b) -> b -> IpeObject a -> b #

foldl :: (b -> a -> b) -> b -> IpeObject a -> b #

foldl' :: (b -> a -> b) -> b -> IpeObject a -> b #

foldr1 :: (a -> a -> a) -> IpeObject a -> a #

foldl1 :: (a -> a -> a) -> IpeObject a -> a #

toList :: IpeObject a -> [a] #

null :: IpeObject a -> Bool #

length :: IpeObject a -> Int #

elem :: Eq a => a -> IpeObject a -> Bool #

maximum :: Ord a => IpeObject a -> a #

minimum :: Ord a => IpeObject a -> a #

sum :: Num a => IpeObject a -> a #

product :: Num a => IpeObject a -> a #

Traversable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeObject a -> f (IpeObject b) #

sequenceA :: Applicative f => IpeObject (f a) -> f (IpeObject a) #

mapM :: Monad m => (a -> m b) -> IpeObject a -> m (IpeObject b) #

sequence :: Monad m => IpeObject (m a) -> m (IpeObject a) #

Generic (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

from :: IpeObject r -> Rep (IpeObject r) x #

to :: Rep (IpeObject r) x -> IpeObject r #

Show r => Show (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeObject r -> IpeObject r -> Bool #

(/=) :: IpeObject r -> IpeObject r -> Bool #

(Coordinate r, Fractional r, Eq r) => IpeRead (IpeObject r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeObject r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeObject r)) (NumType (IpeObject r)) -> IpeObject r -> IpeObject r

type Rep (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) = 2
type NumType (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeObject r) = r

_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r)) Source #

type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r Source #

An IpeObject' is essentially the oject ogether with its attributes

ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r Source #

Shorthand for constructing ipeObjects

class ToObject (i :: Type -> Type) where Source #

Instances

Instances details
ToObject Group Source # 
Instance details

Defined in Ipe.Content

ToObject Image Source # 
Instance details

Defined in Ipe.Content

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

ToObject Path Source # 
Instance details

Defined in Ipe.Content

Specific Ipe-Objects

newtype Path r Source #

A path is a non-empty sequence of PathSegments.

Constructors

Path (Seq (PathSegment r)) 

Instances

Instances details
Functor Path Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> Path a -> Path b #

(<$) :: a -> Path b -> Path a #

Foldable Path Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => Path m -> m #

foldMap :: Monoid m => (a -> m) -> Path a -> m #

foldMap' :: Monoid m => (a -> m) -> Path a -> m #

foldr :: (a -> b -> b) -> b -> Path a -> b #

foldr' :: (a -> b -> b) -> b -> Path a -> b #

foldl :: (b -> a -> b) -> b -> Path a -> b #

foldl' :: (b -> a -> b) -> b -> Path a -> b #

foldr1 :: (a -> a -> a) -> Path a -> a #

foldl1 :: (a -> a -> a) -> Path a -> a #

toList :: Path a -> [a] #

null :: Path a -> Bool #

length :: Path a -> Int #

elem :: Eq a => a -> Path a -> Bool #

maximum :: Ord a => Path a -> a #

minimum :: Ord a => Path a -> a #

sum :: Num a => Path a -> a #

product :: Num a => Path a -> a #

Traversable Path Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> Path a -> f (Path b) #

sequenceA :: Applicative f => Path (f a) -> f (Path a) #

mapM :: Monad m => (a -> m b) -> Path a -> m (Path b) #

sequence :: Monad m => Path (m a) -> m (Path a) #

ToObject Path Source # 
Instance details

Defined in Ipe.Content

Semigroup (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(<>) :: Path r -> Path r -> Path r #

sconcat :: NonEmpty (Path r) -> Path r #

stimes :: Integral b => b -> Path r -> Path r #

Generic (Path r) Source # 
Instance details

Defined in Ipe.Path

Associated Types

type Rep (Path r) 
Instance details

Defined in Ipe.Path

type Rep (Path r) = D1 ('MetaData "Path" "Ipe.Path" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Path" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pathSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq (PathSegment r)))))

Methods

from :: Path r -> Rep (Path r) x #

to :: Rep (Path r) x -> Path r #

Show r => Show (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

showsPrec :: Int -> Path r -> ShowS #

show :: Path r -> String #

showList :: [Path r] -> ShowS #

Eq r => Eq (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(==) :: Path r -> Path r -> Bool #

(/=) :: Path r -> Path r -> Bool #

(Coordinate r, Fractional r, Eq r) => IpeRead (Path r) Source # 
Instance details

Defined in Ipe.Reader

(Coordinate r, Fractional r, Eq r) => IpeReadText (Path r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Path r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: Path r -> Maybe (Node Text Text) Source #

IpeWriteText r => IpeWriteText (Path r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (Path r)) (NumType (Path r)) -> Path r -> Path r

type Rep (Path r) Source # 
Instance details

Defined in Ipe.Path

type Rep (Path r) = D1 ('MetaData "Path" "Ipe.Path" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Path" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pathSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq (PathSegment r)))))
type Dimension (Path r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (Path r) = 2
type NumType (Path r) Source # 
Instance details

Defined in Ipe.Path

type NumType (Path r) = r

pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r')) Source #

Lens/Iso to access the sequcne of segments of the path

data PathSegment r Source #

Paths consist of Path Segments. PathSegments come in the following forms:

Instances

Instances details
Functor PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> PathSegment a -> PathSegment b #

(<$) :: a -> PathSegment b -> PathSegment a #

Foldable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => PathSegment m -> m #

foldMap :: Monoid m => (a -> m) -> PathSegment a -> m #

foldMap' :: Monoid m => (a -> m) -> PathSegment a -> m #

foldr :: (a -> b -> b) -> b -> PathSegment a -> b #

foldr' :: (a -> b -> b) -> b -> PathSegment a -> b #

foldl :: (b -> a -> b) -> b -> PathSegment a -> b #

foldl' :: (b -> a -> b) -> b -> PathSegment a -> b #

foldr1 :: (a -> a -> a) -> PathSegment a -> a #

foldl1 :: (a -> a -> a) -> PathSegment a -> a #

toList :: PathSegment a -> [a] #

null :: PathSegment a -> Bool #

length :: PathSegment a -> Int #

elem :: Eq a => a -> PathSegment a -> Bool #

maximum :: Ord a => PathSegment a -> a #

minimum :: Ord a => PathSegment a -> a #

sum :: Num a => PathSegment a -> a #

product :: Num a => PathSegment a -> a #

Traversable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> PathSegment a -> f (PathSegment b) #

sequenceA :: Applicative f => PathSegment (f a) -> f (PathSegment a) #

mapM :: Monad m => (a -> m b) -> PathSegment a -> m (PathSegment b) #

sequence :: Monad m => PathSegment (m a) -> m (PathSegment a) #

Show r => Show (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Eq r => Eq (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

(Coordinate r, Fractional r, Eq r) => IpeReadText (NonEmpty (PathSegment r)) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWriteText (PathSegment r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -> PathSegment r -> PathSegment r

type Dimension (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (PathSegment r) = 2
type NumType (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type NumType (PathSegment r) = r

data IpeSymbol r Source #

Ipe Symbols, i.e. Points

A symbol (point) in ipe

Constructors

Symbol (Point 2 r) Text 

Instances

Instances details
Functor IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeSymbol a -> IpeSymbol b #

(<$) :: a -> IpeSymbol b -> IpeSymbol a #

Foldable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeSymbol m -> m #

foldMap :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldr :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldr' :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldl :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldl' :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldr1 :: (a -> a -> a) -> IpeSymbol a -> a #

foldl1 :: (a -> a -> a) -> IpeSymbol a -> a #

toList :: IpeSymbol a -> [a] #

null :: IpeSymbol a -> Bool #

length :: IpeSymbol a -> Int #

elem :: Eq a => a -> IpeSymbol a -> Bool #

maximum :: Ord a => IpeSymbol a -> a #

minimum :: Ord a => IpeSymbol a -> a #

sum :: Num a => IpeSymbol a -> a #

product :: Num a => IpeSymbol a -> a #

Traversable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeSymbol a -> f (IpeSymbol b) #

sequenceA :: Applicative f => IpeSymbol (f a) -> f (IpeSymbol a) #

mapM :: Monad m => (a -> m b) -> IpeSymbol a -> m (IpeSymbol b) #

sequence :: Monad m => IpeSymbol (m a) -> m (IpeSymbol a) #

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Generic (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (IpeSymbol r) 
Instance details

Defined in Ipe.Content

type Rep (IpeSymbol r) = D1 ('MetaData "IpeSymbol" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Symbol" 'PrefixI 'True) (S1 ('MetaSel ('Just "_symbolPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r)) :*: S1 ('MetaSel ('Just "_symbolName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

Methods

from :: IpeSymbol r -> Rep (IpeSymbol r) x #

to :: Rep (IpeSymbol r) x -> IpeSymbol r #

Show r => Show (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeSymbol r -> IpeSymbol r -> Bool #

(/=) :: IpeSymbol r -> IpeSymbol r -> Bool #

Ord r => Ord (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Coordinate r => IpeRead (IpeSymbol r) Source #

Ipe read instances

Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r)) -> IpeSymbol r -> IpeSymbol r

type Rep (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Rep (IpeSymbol r) = D1 ('MetaData "IpeSymbol" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Symbol" 'PrefixI 'True) (S1 ('MetaSel ('Just "_symbolPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r)) :*: S1 ('MetaSel ('Just "_symbolName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
type Dimension (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeSymbol r) = 2
type NumType (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeSymbol r) = r

symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r') Source #

Lens to access the position of the symbol

symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r) Source #

Lens to access the name of the symbol

newtype Group r Source #

Groups and Objects

Group Attributes

A group is essentially a list of IpeObjects.

Constructors

Group [IpeObject r] 

Instances

Instances details
Functor Group Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Group a -> Group b #

(<$) :: a -> Group b -> Group a #

Foldable Group Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Group m -> m #

foldMap :: Monoid m => (a -> m) -> Group a -> m #

foldMap' :: Monoid m => (a -> m) -> Group a -> m #

foldr :: (a -> b -> b) -> b -> Group a -> b #

foldr' :: (a -> b -> b) -> b -> Group a -> b #

foldl :: (b -> a -> b) -> b -> Group a -> b #

foldl' :: (b -> a -> b) -> b -> Group a -> b #

foldr1 :: (a -> a -> a) -> Group a -> a #

foldl1 :: (a -> a -> a) -> Group a -> a #

toList :: Group a -> [a] #

null :: Group a -> Bool #

length :: Group a -> Int #

elem :: Eq a => a -> Group a -> Bool #

maximum :: Ord a => Group a -> a #

minimum :: Ord a => Group a -> a #

sum :: Num a => Group a -> a #

product :: Num a => Group a -> a #

Traversable Group Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Group a -> f (Group b) #

sequenceA :: Applicative f => Group (f a) -> f (Group a) #

mapM :: Monad m => (a -> m b) -> Group a -> m (Group b) #

sequence :: Monad m => Group (m a) -> m (Group a) #

ToObject Group Source # 
Instance details

Defined in Ipe.Content

Generic (Group r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Group r) 
Instance details

Defined in Ipe.Content

type Rep (Group r) = D1 ('MetaData "Group" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Group" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r])))

Methods

from :: Group r -> Rep (Group r) x #

to :: Rep (Group r) x -> Group r #

Show r => Show (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Group r -> ShowS #

show :: Group r -> String #

showList :: [Group r] -> ShowS #

Eq r => Eq (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Group r -> Group r -> Bool #

(/=) :: Group r -> Group r -> Bool #

HasDefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

Associated Types

type DefaultIpeOut (Group r) 
Instance details

Defined in Ipe.IpeOut

Methods

defIO :: IpeOut (Group r) (DefaultIpeOut (Group r)) (NumType (Group r)) Source #

(Coordinate r, Eq r) => IpeRead (Group r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Group r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Group r)) (NumType (Group r)) -> Group r -> Group r

type Rep (Group r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Group r) = D1 ('MetaData "Group" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Group" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r])))
type DefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

type Dimension (Group r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Group r) = 2
type NumType (Group r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Group r) = r

groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s) Source #

data TextLabel r Source #

Text Objects

A text label

Constructors

Label Text (Point 2 r) 

Instances

Instances details
Functor TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> TextLabel a -> TextLabel b #

(<$) :: a -> TextLabel b -> TextLabel a #

Foldable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => TextLabel m -> m #

foldMap :: Monoid m => (a -> m) -> TextLabel a -> m #

foldMap' :: Monoid m => (a -> m) -> TextLabel a -> m #

foldr :: (a -> b -> b) -> b -> TextLabel a -> b #

foldr' :: (a -> b -> b) -> b -> TextLabel a -> b #

foldl :: (b -> a -> b) -> b -> TextLabel a -> b #

foldl' :: (b -> a -> b) -> b -> TextLabel a -> b #

foldr1 :: (a -> a -> a) -> TextLabel a -> a #

foldl1 :: (a -> a -> a) -> TextLabel a -> a #

toList :: TextLabel a -> [a] #

null :: TextLabel a -> Bool #

length :: TextLabel a -> Int #

elem :: Eq a => a -> TextLabel a -> Bool #

maximum :: Ord a => TextLabel a -> a #

minimum :: Ord a => TextLabel a -> a #

sum :: Num a => TextLabel a -> a #

product :: Num a => TextLabel a -> a #

Traversable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> TextLabel a -> f (TextLabel b) #

sequenceA :: Applicative f => TextLabel (f a) -> f (TextLabel a) #

mapM :: Monad m => (a -> m b) -> TextLabel a -> m (TextLabel b) #

sequence :: Monad m => TextLabel (m a) -> m (TextLabel a) #

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

Generic (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (TextLabel r) 
Instance details

Defined in Ipe.Content

type Rep (TextLabel r) = D1 ('MetaData "TextLabel" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r))))

Methods

from :: TextLabel r -> Rep (TextLabel r) x #

to :: Rep (TextLabel r) x -> TextLabel r #

Show r => Show (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: TextLabel r -> TextLabel r -> Bool #

(/=) :: TextLabel r -> TextLabel r -> Bool #

Ord r => Ord (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Coordinate r => IpeRead (TextLabel r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (TextLabel r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (TextLabel r)) (NumType (TextLabel r)) -> TextLabel r -> TextLabel r

type Rep (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Rep (TextLabel r) = D1 ('MetaData "TextLabel" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r))))
type Dimension (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (TextLabel r) = 2
type NumType (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type NumType (TextLabel r) = r

data MiniPage r Source #

A Minipage

Constructors

MiniPage Text (Point 2 r) r 

Instances

Instances details
Functor MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> MiniPage a -> MiniPage b #

(<$) :: a -> MiniPage b -> MiniPage a #

Foldable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => MiniPage m -> m #

foldMap :: Monoid m => (a -> m) -> MiniPage a -> m #

foldMap' :: Monoid m => (a -> m) -> MiniPage a -> m #

foldr :: (a -> b -> b) -> b -> MiniPage a -> b #

foldr' :: (a -> b -> b) -> b -> MiniPage a -> b #

foldl :: (b -> a -> b) -> b -> MiniPage a -> b #

foldl' :: (b -> a -> b) -> b -> MiniPage a -> b #

foldr1 :: (a -> a -> a) -> MiniPage a -> a #

foldl1 :: (a -> a -> a) -> MiniPage a -> a #

toList :: MiniPage a -> [a] #

null :: MiniPage a -> Bool #

length :: MiniPage a -> Int #

elem :: Eq a => a -> MiniPage a -> Bool #

maximum :: Ord a => MiniPage a -> a #

minimum :: Ord a => MiniPage a -> a #

sum :: Num a => MiniPage a -> a #

product :: Num a => MiniPage a -> a #

Traversable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> MiniPage a -> f (MiniPage b) #

sequenceA :: Applicative f => MiniPage (f a) -> f (MiniPage a) #

mapM :: Monad m => (a -> m b) -> MiniPage a -> m (MiniPage b) #

sequence :: Monad m => MiniPage (m a) -> m (MiniPage a) #

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

Generic (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (MiniPage r) 
Instance details

Defined in Ipe.Content

Methods

from :: MiniPage r -> Rep (MiniPage r) x #

to :: Rep (MiniPage r) x -> MiniPage r #

Show r => Show (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> MiniPage r -> ShowS #

show :: MiniPage r -> String #

showList :: [MiniPage r] -> ShowS #

Eq r => Eq (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: MiniPage r -> MiniPage r -> Bool #

(/=) :: MiniPage r -> MiniPage r -> Bool #

Ord r => Ord (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: MiniPage r -> MiniPage r -> Ordering #

(<) :: MiniPage r -> MiniPage r -> Bool #

(<=) :: MiniPage r -> MiniPage r -> Bool #

(>) :: MiniPage r -> MiniPage r -> Bool #

(>=) :: MiniPage r -> MiniPage r -> Bool #

max :: MiniPage r -> MiniPage r -> MiniPage r #

min :: MiniPage r -> MiniPage r -> MiniPage r #

Coordinate r => IpeRead (MiniPage r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (MiniPage r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (MiniPage r)) (NumType (MiniPage r)) -> MiniPage r -> MiniPage r

type Rep (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) = 2
type NumType (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type NumType (MiniPage r) = r

data Image r Source #

Image Objects

bitmap image objects in Ipe

Constructors

Image () (Rectangle (Point 2 r)) 

Instances

Instances details
Functor Image Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Image a -> Image b #

(<$) :: a -> Image b -> Image a #

Foldable Image Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Image m -> m #

foldMap :: Monoid m => (a -> m) -> Image a -> m #

foldMap' :: Monoid m => (a -> m) -> Image a -> m #

foldr :: (a -> b -> b) -> b -> Image a -> b #

foldr' :: (a -> b -> b) -> b -> Image a -> b #

foldl :: (b -> a -> b) -> b -> Image a -> b #

foldl' :: (b -> a -> b) -> b -> Image a -> b #

foldr1 :: (a -> a -> a) -> Image a -> a #

foldl1 :: (a -> a -> a) -> Image a -> a #

toList :: Image a -> [a] #

null :: Image a -> Bool #

length :: Image a -> Int #

elem :: Eq a => a -> Image a -> Bool #

maximum :: Ord a => Image a -> a #

minimum :: Ord a => Image a -> a #

sum :: Num a => Image a -> a #

product :: Num a => Image a -> a #

Traversable Image Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Image a -> f (Image b) #

sequenceA :: Applicative f => Image (f a) -> f (Image a) #

mapM :: Monad m => (a -> m b) -> Image a -> m (Image b) #

sequence :: Monad m => Image (m a) -> m (Image a) #

ToObject Image Source # 
Instance details

Defined in Ipe.Content

Generic (Image r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Image r) 
Instance details

Defined in Ipe.Content

type Rep (Image r) = D1 ('MetaData "Image" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Image" 'PrefixI 'True) (S1 ('MetaSel ('Just "_imageData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ()) :*: S1 ('MetaSel ('Just "_rect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Rectangle (Point 2 r)))))

Methods

from :: Image r -> Rep (Image r) x #

to :: Rep (Image r) x -> Image r #

Show r => Show (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Image r -> ShowS #

show :: Image r -> String #

showList :: [Image r] -> ShowS #

Eq r => Eq (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Image r -> Image r -> Bool #

(/=) :: Image r -> Image r -> Bool #

Ord r => Ord (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: Image r -> Image r -> Ordering #

(<) :: Image r -> Image r -> Bool #

(<=) :: Image r -> Image r -> Bool #

(>) :: Image r -> Image r -> Bool #

(>=) :: Image r -> Image r -> Bool #

max :: Image r -> Image r -> Image r #

min :: Image r -> Image r -> Image r #

Coordinate r => IpeRead (Image r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Image r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Image r)) (NumType (Image r)) -> Image r -> Image r

type Rep (Image r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Image r) = D1 ('MetaData "Image" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Image" 'PrefixI 'True) (S1 ('MetaSel ('Just "_imageData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ()) :*: S1 ('MetaSel ('Just "_rect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Rectangle (Point 2 r)))))
type Dimension (Image r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Image r) = 2
type NumType (Image r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Image r) = r

imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r) Source #

Lens to access the image data

rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r') Source #

Lens to access the rectangle of the image

type IpeBitmap = Text Source #

Ipe Bitmap data

Attributes

type Attributes' r = Attributes (AttrMapSym1 r) Source #

Attributes' :: Type -> [AttributeUniverse] -> Type

type family AttrMap r (l :: AttributeUniverse) where ... Source #

The mapping between the labels of the the attributes and the types of the attributes with these labels. For example, the Matrix label/attribute should - have a value of type 'Matrix 3 3 r'.

data AttrMapSym1 a6989586621679260257 (b :: TyFun AttributeUniverse Type) Source #

Instances

Instances details
SuppressUnusedWarnings (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260258 :: AttributeUniverse) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260258 :: AttributeUniverse) = AttrMap a6989586621679260257 a6989586621679260258

attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r) Source #

traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s) Source #

traverse for ipe attributes

Layers and Views

newtype LayerName Source #

Defines an Layer in Ipe.

Constructors

LayerName Text 

Instances

Instances details
IsString LayerName Source # 
Instance details

Defined in Ipe.Layer

Read LayerName Source # 
Instance details

Defined in Ipe.Layer

Show LayerName Source # 
Instance details

Defined in Ipe.Layer

Eq LayerName Source # 
Instance details

Defined in Ipe.Layer

Ord LayerName Source # 
Instance details

Defined in Ipe.Layer

IpeRead LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeReadText LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeWrite LayerName Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText LayerName Source # 
Instance details

Defined in Ipe.Writer

data AttrMapSym1 a6989586621679260260 (b :: TyFun AttributeUniverse Type) Source #

Instances

Instances details
SuppressUnusedWarnings (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260261 :: AttributeUniverse) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260261 :: AttributeUniverse) = AttrMap a6989586621679260260 a6989586621679260261

attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r) Source #

traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s) Source #

traverse for ipe attributes

Layers and Views

newtype LayerName Source #

Defines an Layer in Ipe.

Constructors

LayerName Text 

Instances

Instances details
IsString LayerName Source # 
Instance details

Defined in Ipe.Layer

Read LayerName Source # 
Instance details

Defined in Ipe.Layer

Show LayerName Source # 
Instance details

Defined in Ipe.Layer

Eq LayerName Source # 
Instance details

Defined in Ipe.Layer

Ord LayerName Source # 
Instance details

Defined in Ipe.Layer

IpeRead LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeReadText LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeWrite LayerName Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText LayerName Source # 
Instance details

Defined in Ipe.Writer

data View Source #

The definition of a view make active layer into an index ?

Constructors

View [LayerName] LayerName 

Instances

Instances details
Generic View Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep View 
Instance details

Defined in Ipe.Types

type Rep View = D1 ('MetaData "View" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "View" 'PrefixI 'True) (S1 ('MetaSel ('Just "_layerNames") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LayerName]) :*: S1 ('MetaSel ('Just "_activeLayer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LayerName)))

Methods

from :: View -> Rep View x #

to :: Rep View x -> View #

Show View Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> View -> ShowS #

show :: View -> String #

showList :: [View] -> ShowS #

Eq View Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: View -> View -> Bool #

(/=) :: View -> View -> Bool #

Ord View Source # 
Instance details

Defined in Ipe.Types

Methods

compare :: View -> View -> Ordering #

(<) :: View -> View -> Bool #

(<=) :: View -> View -> Bool #

(>) :: View -> View -> Bool #

(>=) :: View -> View -> Bool #

max :: View -> View -> View #

min :: View -> View -> View #

IpeRead View Source # 
Instance details

Defined in Ipe.Reader

IpeWrite View Source # 
Instance details

Defined in Ipe.Writer

type Rep View Source # 
Instance details

Defined in Ipe.Types

type Rep View = D1 ('MetaData "View" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "View" 'PrefixI 'True) (S1 ('MetaSel ('Just "_layerNames") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LayerName]) :*: S1 ('MetaSel ('Just "_activeLayer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LayerName)))

layerNames :: Lens' View [LayerName] Source #

Lens to access the layers in this view

activeLayer :: Lens' View LayerName Source #

Lens to access the active layer

Styles and Preamble

addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r Source #

Adds a stylesheet to the ipe file. This will be the first stylesheet, i.e. it has priority over all previously imported stylesheets.

data IpeStyle Source #

for now we pretty much ignore these

Constructors

IpeStyle (Maybe Text) (Node Text Text) 

Instances

Instances details
Generic IpeStyle Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep IpeStyle 
Instance details

Defined in Ipe.Types

type Rep IpeStyle = D1 ('MetaData "IpeStyle" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeStyle" 'PrefixI 'True) (S1 ('MetaSel ('Just "_styleName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_styleData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Node Text Text))))

Methods

from :: IpeStyle -> Rep IpeStyle x #

to :: Rep IpeStyle x -> IpeStyle #

Show IpeStyle Source # 
Instance details

Defined in Ipe.Types

Eq IpeStyle Source # 
Instance details

Defined in Ipe.Types

IpeRead IpeStyle Source # 
Instance details

Defined in Ipe.Reader

IpeWrite IpeStyle Source # 
Instance details

Defined in Ipe.Writer

type Rep IpeStyle Source # 
Instance details

Defined in Ipe.Types

type Rep IpeStyle = D1 ('MetaData "IpeStyle" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeStyle" 'PrefixI 'True) (S1 ('MetaSel ('Just "_styleName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_styleData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Node Text Text))))

styleName :: Lens' IpeStyle (Maybe Text) Source #

Lens to access the style name

styleData :: Lens' IpeStyle (Node Text Text) Source #

Lens to access the style data

basicIpeStyle :: IpeStyle Source #

The "basic" ipe stylesheet

opacitiesStyle :: IpeStyle Source #

A stylesheet with some convenient predefined opacities. In particular the opacities "10%","20%",..,"90%".

data IpePreamble Source #

The maybe string is the encoding

Constructors

IpePreamble (Maybe Text) Text 

Instances

Instances details
Generic IpePreamble Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep IpePreamble 
Instance details

Defined in Ipe.Types

type Rep IpePreamble = D1 ('MetaData "IpePreamble" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpePreamble" 'PrefixI 'True) (S1 ('MetaSel ('Just "_encoding") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_preambleData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
Read IpePreamble Source # 
Instance details

Defined in Ipe.Types

Show IpePreamble Source # 
Instance details

Defined in Ipe.Types

Eq IpePreamble Source # 
Instance details

Defined in Ipe.Types

Ord IpePreamble Source # 
Instance details

Defined in Ipe.Types

IpeWrite IpePreamble Source # 
Instance details

Defined in Ipe.Writer

type Rep IpePreamble Source # 
Instance details

Defined in Ipe.Types

type Rep IpePreamble = D1 ('MetaData "IpePreamble" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpePreamble" 'PrefixI 'True) (S1 ('MetaSel ('Just "_encoding") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_preambleData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

encoding :: Lens' IpePreamble (Maybe Text) Source #

Lens to access the encoding

preambleData :: Lens' IpePreamble Text Source #

Lens to access the preambleData

\ No newline at end of file diff --git a/haddocks/hgeometry/ipe/Ipe.html b/haddocks/hgeometry/ipe/Ipe.html index cf49fdc4f..30078bcac 100644 --- a/haddocks/hgeometry/ipe/Ipe.html +++ b/haddocks/hgeometry/ipe/Ipe.html @@ -1,4 +1,4 @@ -Ipe
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

Ipe

Description

Reexports the functionality for reading and writing Ipe files.

Synopsis

Ipe Files

data IpeFile r Source #

A complete ipe file

Instances

Instances details
Generic (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep (IpeFile r) 
Instance details

Defined in Ipe.Types

type Rep (IpeFile r) = D1 ('MetaData "IpeFile" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "_preamble") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IpePreamble)) :*: (S1 ('MetaSel ('Just "_styles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeStyle]) :*: S1 ('MetaSel ('Just "_pages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (IpePage r))))))

Methods

from :: IpeFile r -> Rep (IpeFile r) x #

to :: Rep (IpeFile r) x -> IpeFile r #

Show r => Show (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> IpeFile r -> ShowS #

show :: IpeFile r -> String #

showList :: [IpeFile r] -> ShowS #

Eq r => Eq (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: IpeFile r -> IpeFile r -> Bool #

(/=) :: IpeFile r -> IpeFile r -> Bool #

(Coordinate r, Eq r) => IpeRead (IpeFile r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeFile r) Source # 
Instance details

Defined in Ipe.Writer

type Rep (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

type Rep (IpeFile r) = D1 ('MetaData "IpeFile" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "_preamble") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IpePreamble)) :*: (S1 ('MetaSel ('Just "_styles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeStyle]) :*: S1 ('MetaSel ('Just "_pages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (IpePage r))))))

preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r) Source #

Lens to access the preamble of an ipe file

styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r) Source #

Lens to access the styles of an ipe file

pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r') Source #

Lens to access the pages of an ipe file

ipeFile :: NonEmpty (IpePage r) -> IpeFile r Source #

Convenience constructor for creating an ipe file without preamble +Ipe

Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

Ipe

Description

Reexports the functionality for reading and writing Ipe files.

Synopsis

Ipe Files

data IpeFile r Source #

A complete ipe file

Instances

Instances details
Generic (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep (IpeFile r) 
Instance details

Defined in Ipe.Types

type Rep (IpeFile r) = D1 ('MetaData "IpeFile" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "_preamble") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IpePreamble)) :*: (S1 ('MetaSel ('Just "_styles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeStyle]) :*: S1 ('MetaSel ('Just "_pages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (IpePage r))))))

Methods

from :: IpeFile r -> Rep (IpeFile r) x #

to :: Rep (IpeFile r) x -> IpeFile r #

Show r => Show (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> IpeFile r -> ShowS #

show :: IpeFile r -> String #

showList :: [IpeFile r] -> ShowS #

Eq r => Eq (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: IpeFile r -> IpeFile r -> Bool #

(/=) :: IpeFile r -> IpeFile r -> Bool #

(Coordinate r, Eq r) => IpeRead (IpeFile r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeFile r) Source # 
Instance details

Defined in Ipe.Writer

type Rep (IpeFile r) Source # 
Instance details

Defined in Ipe.Types

type Rep (IpeFile r) = D1 ('MetaData "IpeFile" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeFile" 'PrefixI 'True) (S1 ('MetaSel ('Just "_preamble") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IpePreamble)) :*: (S1 ('MetaSel ('Just "_styles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeStyle]) :*: S1 ('MetaSel ('Just "_pages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (IpePage r))))))

preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r) Source #

Lens to access the preamble of an ipe file

styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r) Source #

Lens to access the styles of an ipe file

pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r') Source #

Lens to access the pages of an ipe file

ipeFile :: NonEmpty (IpePage r) -> IpeFile r Source #

Convenience constructor for creating an ipe file without preamble and with the default stylesheet.

singlePageFile :: IpePage r -> IpeFile r Source #

Convenience function to construct an ipe file consisting of a single page.

singlePageFromContent :: [IpeObject r] -> IpeFile r Source #

Create a single page ipe file from a list of IpeObjects

Reading Ipe files

readIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r)) Source #

Given a file path, tries to read an ipe file.

This function applies all matrices to objects.

readSinglePageFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r)) Source #

Since most Ipe file contain only one page, we provide a shortcut for that as well.

This function applies all matrices, and it makes sure there is at least one layer and view in the page.

readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r) Source #

Tries to read a single page file, throws an error when this @@ -16,7 +16,7 @@

withDefaults :: IpePage r -> IpePage r Source #

Makes sure that the page has at least one layer and at least one view, essentially matching the behaviour of ipe. In particular,

  • if the page does not have any layers, it creates a layer named "alpha", and
  • if the page does not have any views, it creates a view in which all layers are visible.

Content: Ipe Objects

data IpeObject r Source #

Instances

Instances details
Functor IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeObject a -> IpeObject b #

(<$) :: a -> IpeObject b -> IpeObject a #

Foldable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeObject m -> m #

foldMap :: Monoid m => (a -> m) -> IpeObject a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeObject a -> m #

foldr :: (a -> b -> b) -> b -> IpeObject a -> b #

foldr' :: (a -> b -> b) -> b -> IpeObject a -> b #

foldl :: (b -> a -> b) -> b -> IpeObject a -> b #

foldl' :: (b -> a -> b) -> b -> IpeObject a -> b #

foldr1 :: (a -> a -> a) -> IpeObject a -> a #

foldl1 :: (a -> a -> a) -> IpeObject a -> a #

toList :: IpeObject a -> [a] #

null :: IpeObject a -> Bool #

length :: IpeObject a -> Int #

elem :: Eq a => a -> IpeObject a -> Bool #

maximum :: Ord a => IpeObject a -> a #

minimum :: Ord a => IpeObject a -> a #

sum :: Num a => IpeObject a -> a #

product :: Num a => IpeObject a -> a #

Traversable IpeObject Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeObject a -> f (IpeObject b) #

sequenceA :: Applicative f => IpeObject (f a) -> f (IpeObject a) #

mapM :: Monad m => (a -> m b) -> IpeObject a -> m (IpeObject b) #

sequence :: Monad m => IpeObject (m a) -> m (IpeObject a) #

Generic (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

from :: IpeObject r -> Rep (IpeObject r) x #

to :: Rep (IpeObject r) x -> IpeObject r #

Show r => Show (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeObject r -> IpeObject r -> Bool #

(/=) :: IpeObject r -> IpeObject r -> Bool #

(Coordinate r, Fractional r, Eq r) => IpeRead (IpeObject r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeObject r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeObject r)) (NumType (IpeObject r)) -> IpeObject r -> IpeObject r

type Rep (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeObject r) = 2
type NumType (IpeObject r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeObject r) = r

_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r)) Source #

_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r)) Source #

type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r Source #

An IpeObject' is essentially the oject ogether with its attributes

ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r Source #

Shorthand for constructing ipeObjects

class ToObject (i :: Type -> Type) where Source #

Instances

Instances details
ToObject Group Source # 
Instance details

Defined in Ipe.Content

ToObject Image Source # 
Instance details

Defined in Ipe.Content

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

ToObject Path Source # 
Instance details

Defined in Ipe.Content

Specific Ipe-Objects

newtype Path r Source #

A path is a non-empty sequence of PathSegments.

Constructors

Path (Seq (PathSegment r)) 

Instances

Instances details
Functor Path Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> Path a -> Path b #

(<$) :: a -> Path b -> Path a #

Foldable Path Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => Path m -> m #

foldMap :: Monoid m => (a -> m) -> Path a -> m #

foldMap' :: Monoid m => (a -> m) -> Path a -> m #

foldr :: (a -> b -> b) -> b -> Path a -> b #

foldr' :: (a -> b -> b) -> b -> Path a -> b #

foldl :: (b -> a -> b) -> b -> Path a -> b #

foldl' :: (b -> a -> b) -> b -> Path a -> b #

foldr1 :: (a -> a -> a) -> Path a -> a #

foldl1 :: (a -> a -> a) -> Path a -> a #

toList :: Path a -> [a] #

null :: Path a -> Bool #

length :: Path a -> Int #

elem :: Eq a => a -> Path a -> Bool #

maximum :: Ord a => Path a -> a #

minimum :: Ord a => Path a -> a #

sum :: Num a => Path a -> a #

product :: Num a => Path a -> a #

Traversable Path Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> Path a -> f (Path b) #

sequenceA :: Applicative f => Path (f a) -> f (Path a) #

mapM :: Monad m => (a -> m b) -> Path a -> m (Path b) #

sequence :: Monad m => Path (m a) -> m (Path a) #

ToObject Path Source # 
Instance details

Defined in Ipe.Content

Semigroup (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(<>) :: Path r -> Path r -> Path r #

sconcat :: NonEmpty (Path r) -> Path r #

stimes :: Integral b => b -> Path r -> Path r #

Generic (Path r) Source # 
Instance details

Defined in Ipe.Path

Associated Types

type Rep (Path r) 
Instance details

Defined in Ipe.Path

type Rep (Path r) = D1 ('MetaData "Path" "Ipe.Path" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Path" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pathSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq (PathSegment r)))))

Methods

from :: Path r -> Rep (Path r) x #

to :: Rep (Path r) x -> Path r #

Show r => Show (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

showsPrec :: Int -> Path r -> ShowS #

show :: Path r -> String #

showList :: [Path r] -> ShowS #

Eq r => Eq (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

(==) :: Path r -> Path r -> Bool #

(/=) :: Path r -> Path r -> Bool #

(Coordinate r, Fractional r, Eq r) => IpeRead (Path r) Source # 
Instance details

Defined in Ipe.Reader

(Coordinate r, Fractional r, Eq r) => IpeReadText (Path r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Path r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: Path r -> Maybe (Node Text Text) Source #

IpeWriteText r => IpeWriteText (Path r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (Path r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (Path r)) (NumType (Path r)) -> Path r -> Path r

type Rep (Path r) Source # 
Instance details

Defined in Ipe.Path

type Rep (Path r) = D1 ('MetaData "Path" "Ipe.Path" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Path" 'PrefixI 'True) (S1 ('MetaSel ('Just "_pathSegments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Seq (PathSegment r)))))
type Dimension (Path r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (Path r) = 2
type NumType (Path r) Source # 
Instance details

Defined in Ipe.Path

type NumType (Path r) = r

pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r')) Source #

Lens/Iso to access the sequcne of segments of the path

data PathSegment r Source #

Paths consist of Path Segments. PathSegments come in the following forms:

Instances

Instances details
Functor PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fmap :: (a -> b) -> PathSegment a -> PathSegment b #

(<$) :: a -> PathSegment b -> PathSegment a #

Foldable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

fold :: Monoid m => PathSegment m -> m #

foldMap :: Monoid m => (a -> m) -> PathSegment a -> m #

foldMap' :: Monoid m => (a -> m) -> PathSegment a -> m #

foldr :: (a -> b -> b) -> b -> PathSegment a -> b #

foldr' :: (a -> b -> b) -> b -> PathSegment a -> b #

foldl :: (b -> a -> b) -> b -> PathSegment a -> b #

foldl' :: (b -> a -> b) -> b -> PathSegment a -> b #

foldr1 :: (a -> a -> a) -> PathSegment a -> a #

foldl1 :: (a -> a -> a) -> PathSegment a -> a #

toList :: PathSegment a -> [a] #

null :: PathSegment a -> Bool #

length :: PathSegment a -> Int #

elem :: Eq a => a -> PathSegment a -> Bool #

maximum :: Ord a => PathSegment a -> a #

minimum :: Ord a => PathSegment a -> a #

sum :: Num a => PathSegment a -> a #

product :: Num a => PathSegment a -> a #

Traversable PathSegment Source # 
Instance details

Defined in Ipe.Path

Methods

traverse :: Applicative f => (a -> f b) -> PathSegment a -> f (PathSegment b) #

sequenceA :: Applicative f => PathSegment (f a) -> f (PathSegment a) #

mapM :: Monad m => (a -> m b) -> PathSegment a -> m (PathSegment b) #

sequence :: Monad m => PathSegment (m a) -> m (PathSegment a) #

Show r => Show (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Eq r => Eq (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

(Coordinate r, Fractional r, Eq r) => IpeReadText (NonEmpty (PathSegment r)) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWriteText (PathSegment r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

Methods

transformBy :: Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -> PathSegment r -> PathSegment r

type Dimension (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type Dimension (PathSegment r) = 2
type NumType (PathSegment r) Source # 
Instance details

Defined in Ipe.Path

type NumType (PathSegment r) = r

data IpeSymbol r Source #

Ipe Symbols, i.e. Points

A symbol (point) in ipe

Constructors

Symbol (Point 2 r) Text 

Instances

Instances details
Functor IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> IpeSymbol a -> IpeSymbol b #

(<$) :: a -> IpeSymbol b -> IpeSymbol a #

Foldable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => IpeSymbol m -> m #

foldMap :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeSymbol a -> m #

foldr :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldr' :: (a -> b -> b) -> b -> IpeSymbol a -> b #

foldl :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldl' :: (b -> a -> b) -> b -> IpeSymbol a -> b #

foldr1 :: (a -> a -> a) -> IpeSymbol a -> a #

foldl1 :: (a -> a -> a) -> IpeSymbol a -> a #

toList :: IpeSymbol a -> [a] #

null :: IpeSymbol a -> Bool #

length :: IpeSymbol a -> Int #

elem :: Eq a => a -> IpeSymbol a -> Bool #

maximum :: Ord a => IpeSymbol a -> a #

minimum :: Ord a => IpeSymbol a -> a #

sum :: Num a => IpeSymbol a -> a #

product :: Num a => IpeSymbol a -> a #

Traversable IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> IpeSymbol a -> f (IpeSymbol b) #

sequenceA :: Applicative f => IpeSymbol (f a) -> f (IpeSymbol a) #

mapM :: Monad m => (a -> m b) -> IpeSymbol a -> m (IpeSymbol b) #

sequence :: Monad m => IpeSymbol (m a) -> m (IpeSymbol a) #

ToObject IpeSymbol Source # 
Instance details

Defined in Ipe.Content

Generic (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (IpeSymbol r) 
Instance details

Defined in Ipe.Content

type Rep (IpeSymbol r) = D1 ('MetaData "IpeSymbol" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Symbol" 'PrefixI 'True) (S1 ('MetaSel ('Just "_symbolPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r)) :*: S1 ('MetaSel ('Just "_symbolName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))

Methods

from :: IpeSymbol r -> Rep (IpeSymbol r) x #

to :: Rep (IpeSymbol r) x -> IpeSymbol r #

Show r => Show (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: IpeSymbol r -> IpeSymbol r -> Bool #

(/=) :: IpeSymbol r -> IpeSymbol r -> Bool #

Ord r => Ord (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Coordinate r => IpeRead (IpeSymbol r) Source #

Ipe read instances

Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r)) -> IpeSymbol r -> IpeSymbol r

type Rep (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Rep (IpeSymbol r) = D1 ('MetaData "IpeSymbol" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Symbol" 'PrefixI 'True) (S1 ('MetaSel ('Just "_symbolPoint") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r)) :*: S1 ('MetaSel ('Just "_symbolName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)))
type Dimension (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (IpeSymbol r) = 2
type NumType (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Content

type NumType (IpeSymbol r) = r

symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r') Source #

Lens to access the position of the symbol

symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r) Source #

Lens to access the name of the symbol

newtype Group r Source #

Groups and Objects

Group Attributes

A group is essentially a list of IpeObjects.

Constructors

Group [IpeObject r] 

Instances

Instances details
Functor Group Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Group a -> Group b #

(<$) :: a -> Group b -> Group a #

Foldable Group Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Group m -> m #

foldMap :: Monoid m => (a -> m) -> Group a -> m #

foldMap' :: Monoid m => (a -> m) -> Group a -> m #

foldr :: (a -> b -> b) -> b -> Group a -> b #

foldr' :: (a -> b -> b) -> b -> Group a -> b #

foldl :: (b -> a -> b) -> b -> Group a -> b #

foldl' :: (b -> a -> b) -> b -> Group a -> b #

foldr1 :: (a -> a -> a) -> Group a -> a #

foldl1 :: (a -> a -> a) -> Group a -> a #

toList :: Group a -> [a] #

null :: Group a -> Bool #

length :: Group a -> Int #

elem :: Eq a => a -> Group a -> Bool #

maximum :: Ord a => Group a -> a #

minimum :: Ord a => Group a -> a #

sum :: Num a => Group a -> a #

product :: Num a => Group a -> a #

Traversable Group Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Group a -> f (Group b) #

sequenceA :: Applicative f => Group (f a) -> f (Group a) #

mapM :: Monad m => (a -> m b) -> Group a -> m (Group b) #

sequence :: Monad m => Group (m a) -> m (Group a) #

ToObject Group Source # 
Instance details

Defined in Ipe.Content

Generic (Group r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Group r) 
Instance details

Defined in Ipe.Content

type Rep (Group r) = D1 ('MetaData "Group" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Group" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r])))

Methods

from :: Group r -> Rep (Group r) x #

to :: Rep (Group r) x -> Group r #

Show r => Show (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Group r -> ShowS #

show :: Group r -> String #

showList :: [Group r] -> ShowS #

Eq r => Eq (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Group r -> Group r -> Bool #

(/=) :: Group r -> Group r -> Bool #

HasDefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

Associated Types

type DefaultIpeOut (Group r) 
Instance details

Defined in Ipe.IpeOut

Methods

defIO :: IpeOut (Group r) (DefaultIpeOut (Group r)) (NumType (Group r)) Source #

(Coordinate r, Eq r) => IpeRead (Group r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Group r) Source # 
Instance details

Defined in Ipe.Writer

(Fractional r, Eq r) => IsTransformable (Group r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Group r)) (NumType (Group r)) -> Group r -> Group r

type Rep (Group r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Group r) = D1 ('MetaData "Group" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'True) (C1 ('MetaCons "Group" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [IpeObject r])))
type DefaultIpeOut (Group r) Source # 
Instance details

Defined in Ipe.IpeOut

type Dimension (Group r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Group r) = 2
type NumType (Group r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Group r) = r

groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s) Source #

data TextLabel r Source #

Text Objects

A text label

Constructors

Label Text (Point 2 r) 

Instances

Instances details
Functor TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> TextLabel a -> TextLabel b #

(<$) :: a -> TextLabel b -> TextLabel a #

Foldable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => TextLabel m -> m #

foldMap :: Monoid m => (a -> m) -> TextLabel a -> m #

foldMap' :: Monoid m => (a -> m) -> TextLabel a -> m #

foldr :: (a -> b -> b) -> b -> TextLabel a -> b #

foldr' :: (a -> b -> b) -> b -> TextLabel a -> b #

foldl :: (b -> a -> b) -> b -> TextLabel a -> b #

foldl' :: (b -> a -> b) -> b -> TextLabel a -> b #

foldr1 :: (a -> a -> a) -> TextLabel a -> a #

foldl1 :: (a -> a -> a) -> TextLabel a -> a #

toList :: TextLabel a -> [a] #

null :: TextLabel a -> Bool #

length :: TextLabel a -> Int #

elem :: Eq a => a -> TextLabel a -> Bool #

maximum :: Ord a => TextLabel a -> a #

minimum :: Ord a => TextLabel a -> a #

sum :: Num a => TextLabel a -> a #

product :: Num a => TextLabel a -> a #

Traversable TextLabel Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> TextLabel a -> f (TextLabel b) #

sequenceA :: Applicative f => TextLabel (f a) -> f (TextLabel a) #

mapM :: Monad m => (a -> m b) -> TextLabel a -> m (TextLabel b) #

sequence :: Monad m => TextLabel (m a) -> m (TextLabel a) #

ToObject TextLabel Source # 
Instance details

Defined in Ipe.Content

Generic (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (TextLabel r) 
Instance details

Defined in Ipe.Content

type Rep (TextLabel r) = D1 ('MetaData "TextLabel" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r))))

Methods

from :: TextLabel r -> Rep (TextLabel r) x #

to :: Rep (TextLabel r) x -> TextLabel r #

Show r => Show (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Eq r => Eq (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: TextLabel r -> TextLabel r -> Bool #

(/=) :: TextLabel r -> TextLabel r -> Bool #

Ord r => Ord (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Coordinate r => IpeRead (TextLabel r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (TextLabel r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (TextLabel r)) (NumType (TextLabel r)) -> TextLabel r -> TextLabel r

type Rep (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Rep (TextLabel r) = D1 ('MetaData "TextLabel" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Point 2 r))))
type Dimension (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (TextLabel r) = 2
type NumType (TextLabel r) Source # 
Instance details

Defined in Ipe.Content

type NumType (TextLabel r) = r

data MiniPage r Source #

A Minipage

Constructors

MiniPage Text (Point 2 r) r 

Instances

Instances details
Functor MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> MiniPage a -> MiniPage b #

(<$) :: a -> MiniPage b -> MiniPage a #

Foldable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => MiniPage m -> m #

foldMap :: Monoid m => (a -> m) -> MiniPage a -> m #

foldMap' :: Monoid m => (a -> m) -> MiniPage a -> m #

foldr :: (a -> b -> b) -> b -> MiniPage a -> b #

foldr' :: (a -> b -> b) -> b -> MiniPage a -> b #

foldl :: (b -> a -> b) -> b -> MiniPage a -> b #

foldl' :: (b -> a -> b) -> b -> MiniPage a -> b #

foldr1 :: (a -> a -> a) -> MiniPage a -> a #

foldl1 :: (a -> a -> a) -> MiniPage a -> a #

toList :: MiniPage a -> [a] #

null :: MiniPage a -> Bool #

length :: MiniPage a -> Int #

elem :: Eq a => a -> MiniPage a -> Bool #

maximum :: Ord a => MiniPage a -> a #

minimum :: Ord a => MiniPage a -> a #

sum :: Num a => MiniPage a -> a #

product :: Num a => MiniPage a -> a #

Traversable MiniPage Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> MiniPage a -> f (MiniPage b) #

sequenceA :: Applicative f => MiniPage (f a) -> f (MiniPage a) #

mapM :: Monad m => (a -> m b) -> MiniPage a -> m (MiniPage b) #

sequence :: Monad m => MiniPage (m a) -> m (MiniPage a) #

ToObject MiniPage Source # 
Instance details

Defined in Ipe.Content

Generic (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (MiniPage r) 
Instance details

Defined in Ipe.Content

Methods

from :: MiniPage r -> Rep (MiniPage r) x #

to :: Rep (MiniPage r) x -> MiniPage r #

Show r => Show (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> MiniPage r -> ShowS #

show :: MiniPage r -> String #

showList :: [MiniPage r] -> ShowS #

Eq r => Eq (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: MiniPage r -> MiniPage r -> Bool #

(/=) :: MiniPage r -> MiniPage r -> Bool #

Ord r => Ord (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: MiniPage r -> MiniPage r -> Ordering #

(<) :: MiniPage r -> MiniPage r -> Bool #

(<=) :: MiniPage r -> MiniPage r -> Bool #

(>) :: MiniPage r -> MiniPage r -> Bool #

(>=) :: MiniPage r -> MiniPage r -> Bool #

max :: MiniPage r -> MiniPage r -> MiniPage r #

min :: MiniPage r -> MiniPage r -> MiniPage r #

Coordinate r => IpeRead (MiniPage r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (MiniPage r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (MiniPage r)) (NumType (MiniPage r)) -> MiniPage r -> MiniPage r

type Rep (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (MiniPage r) = 2
type NumType (MiniPage r) Source # 
Instance details

Defined in Ipe.Content

type NumType (MiniPage r) = r

data Image r Source #

Image Objects

bitmap image objects in Ipe

Constructors

Image () (Rectangle (Point 2 r)) 

Instances

Instances details
Functor Image Source # 
Instance details

Defined in Ipe.Content

Methods

fmap :: (a -> b) -> Image a -> Image b #

(<$) :: a -> Image b -> Image a #

Foldable Image Source # 
Instance details

Defined in Ipe.Content

Methods

fold :: Monoid m => Image m -> m #

foldMap :: Monoid m => (a -> m) -> Image a -> m #

foldMap' :: Monoid m => (a -> m) -> Image a -> m #

foldr :: (a -> b -> b) -> b -> Image a -> b #

foldr' :: (a -> b -> b) -> b -> Image a -> b #

foldl :: (b -> a -> b) -> b -> Image a -> b #

foldl' :: (b -> a -> b) -> b -> Image a -> b #

foldr1 :: (a -> a -> a) -> Image a -> a #

foldl1 :: (a -> a -> a) -> Image a -> a #

toList :: Image a -> [a] #

null :: Image a -> Bool #

length :: Image a -> Int #

elem :: Eq a => a -> Image a -> Bool #

maximum :: Ord a => Image a -> a #

minimum :: Ord a => Image a -> a #

sum :: Num a => Image a -> a #

product :: Num a => Image a -> a #

Traversable Image Source # 
Instance details

Defined in Ipe.Content

Methods

traverse :: Applicative f => (a -> f b) -> Image a -> f (Image b) #

sequenceA :: Applicative f => Image (f a) -> f (Image a) #

mapM :: Monad m => (a -> m b) -> Image a -> m (Image b) #

sequence :: Monad m => Image (m a) -> m (Image a) #

ToObject Image Source # 
Instance details

Defined in Ipe.Content

Generic (Image r) Source # 
Instance details

Defined in Ipe.Content

Associated Types

type Rep (Image r) 
Instance details

Defined in Ipe.Content

type Rep (Image r) = D1 ('MetaData "Image" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Image" 'PrefixI 'True) (S1 ('MetaSel ('Just "_imageData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ()) :*: S1 ('MetaSel ('Just "_rect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Rectangle (Point 2 r)))))

Methods

from :: Image r -> Rep (Image r) x #

to :: Rep (Image r) x -> Image r #

Show r => Show (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

showsPrec :: Int -> Image r -> ShowS #

show :: Image r -> String #

showList :: [Image r] -> ShowS #

Eq r => Eq (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

(==) :: Image r -> Image r -> Bool #

(/=) :: Image r -> Image r -> Bool #

Ord r => Ord (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

compare :: Image r -> Image r -> Ordering #

(<) :: Image r -> Image r -> Bool #

(<=) :: Image r -> Image r -> Bool #

(>) :: Image r -> Image r -> Bool #

(>=) :: Image r -> Image r -> Bool #

max :: Image r -> Image r -> Image r #

min :: Image r -> Image r -> Image r #

Coordinate r => IpeRead (Image r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWrite (Image r) Source # 
Instance details

Defined in Ipe.Writer

Fractional r => IsTransformable (Image r) Source # 
Instance details

Defined in Ipe.Content

Methods

transformBy :: Transformation (Dimension (Image r)) (NumType (Image r)) -> Image r -> Image r

type Rep (Image r) Source # 
Instance details

Defined in Ipe.Content

type Rep (Image r) = D1 ('MetaData "Image" "Ipe.Content" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "Image" 'PrefixI 'True) (S1 ('MetaSel ('Just "_imageData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ()) :*: S1 ('MetaSel ('Just "_rect") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Rectangle (Point 2 r)))))
type Dimension (Image r) Source # 
Instance details

Defined in Ipe.Content

type Dimension (Image r) = 2
type NumType (Image r) Source # 
Instance details

Defined in Ipe.Content

type NumType (Image r) = r

imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r) Source #

Lens to access the image data

rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r') Source #

Lens to access the rectangle of the image

type IpeBitmap = Text Source #

Ipe Bitmap data

Attributes

type Attributes' r = Attributes (AttrMapSym1 r) Source #

Attributes' :: Type -> [AttributeUniverse] -> Type

type family AttrMap r (l :: AttributeUniverse) where ... Source #

The mapping between the labels of the the attributes and the types of the attributes with these labels. For example, the Matrix label/attribute should - have a value of type 'Matrix 3 3 r'.

data AttrMapSym1 a6989586621679260257 (b :: TyFun AttributeUniverse Type) Source #

Instances

Instances details
SuppressUnusedWarnings (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260258 :: AttributeUniverse) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260257 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260258 :: AttributeUniverse) = AttrMap a6989586621679260257 a6989586621679260258

attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r) Source #

traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s) Source #

traverse for ipe attributes

Layers and Views

newtype LayerName Source #

Defines an Layer in Ipe.

Constructors

LayerName Text 

Instances

Instances details
IsString LayerName Source # 
Instance details

Defined in Ipe.Layer

Read LayerName Source # 
Instance details

Defined in Ipe.Layer

Show LayerName Source # 
Instance details

Defined in Ipe.Layer

Eq LayerName Source # 
Instance details

Defined in Ipe.Layer

Ord LayerName Source # 
Instance details

Defined in Ipe.Layer

IpeRead LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeReadText LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeWrite LayerName Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText LayerName Source # 
Instance details

Defined in Ipe.Writer

data AttrMapSym1 a6989586621679260260 (b :: TyFun AttributeUniverse Type) Source #

Instances

Instances details
SuppressUnusedWarnings (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260261 :: AttributeUniverse) Source # 
Instance details

Defined in Ipe.Content

type Apply (AttrMapSym1 a6989586621679260260 :: TyFun AttributeUniverse Type -> Type) (a6989586621679260261 :: AttributeUniverse) = AttrMap a6989586621679260260 a6989586621679260261

attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r) Source #

traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s) Source #

traverse for ipe attributes

Layers and Views

newtype LayerName Source #

Defines an Layer in Ipe.

Constructors

LayerName Text 

Instances

Instances details
IsString LayerName Source # 
Instance details

Defined in Ipe.Layer

Read LayerName Source # 
Instance details

Defined in Ipe.Layer

Show LayerName Source # 
Instance details

Defined in Ipe.Layer

Eq LayerName Source # 
Instance details

Defined in Ipe.Layer

Ord LayerName Source # 
Instance details

Defined in Ipe.Layer

IpeRead LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeReadText LayerName Source # 
Instance details

Defined in Ipe.Reader

IpeWrite LayerName Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText LayerName Source # 
Instance details

Defined in Ipe.Writer

data View Source #

The definition of a view make active layer into an index ?

Constructors

View [LayerName] LayerName 

Instances

Instances details
Generic View Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep View 
Instance details

Defined in Ipe.Types

type Rep View = D1 ('MetaData "View" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "View" 'PrefixI 'True) (S1 ('MetaSel ('Just "_layerNames") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LayerName]) :*: S1 ('MetaSel ('Just "_activeLayer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LayerName)))

Methods

from :: View -> Rep View x #

to :: Rep View x -> View #

Show View Source # 
Instance details

Defined in Ipe.Types

Methods

showsPrec :: Int -> View -> ShowS #

show :: View -> String #

showList :: [View] -> ShowS #

Eq View Source # 
Instance details

Defined in Ipe.Types

Methods

(==) :: View -> View -> Bool #

(/=) :: View -> View -> Bool #

Ord View Source # 
Instance details

Defined in Ipe.Types

Methods

compare :: View -> View -> Ordering #

(<) :: View -> View -> Bool #

(<=) :: View -> View -> Bool #

(>) :: View -> View -> Bool #

(>=) :: View -> View -> Bool #

max :: View -> View -> View #

min :: View -> View -> View #

IpeRead View Source # 
Instance details

Defined in Ipe.Reader

IpeWrite View Source # 
Instance details

Defined in Ipe.Writer

type Rep View Source # 
Instance details

Defined in Ipe.Types

type Rep View = D1 ('MetaData "View" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "View" 'PrefixI 'True) (S1 ('MetaSel ('Just "_layerNames") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LayerName]) :*: S1 ('MetaSel ('Just "_activeLayer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LayerName)))

layerNames :: Lens' View [LayerName] Source #

Lens to access the layers in this view

activeLayer :: Lens' View LayerName Source #

Lens to access the active layer

Ipe Syles and Preamble

data IpeStyle Source #

for now we pretty much ignore these

Constructors

IpeStyle (Maybe Text) (Node Text Text) 

Instances

Instances details
Generic IpeStyle Source # 
Instance details

Defined in Ipe.Types

Associated Types

type Rep IpeStyle 
Instance details

Defined in Ipe.Types

type Rep IpeStyle = D1 ('MetaData "IpeStyle" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeStyle" 'PrefixI 'True) (S1 ('MetaSel ('Just "_styleName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_styleData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Node Text Text))))

Methods

from :: IpeStyle -> Rep IpeStyle x #

to :: Rep IpeStyle x -> IpeStyle #

Show IpeStyle Source # 
Instance details

Defined in Ipe.Types

Eq IpeStyle Source # 
Instance details

Defined in Ipe.Types

IpeRead IpeStyle Source # 
Instance details

Defined in Ipe.Reader

IpeWrite IpeStyle Source # 
Instance details

Defined in Ipe.Writer

type Rep IpeStyle Source # 
Instance details

Defined in Ipe.Types

type Rep IpeStyle = D1 ('MetaData "IpeStyle" "Ipe.Types" "hgeometry-1.0.0.0-inplace-ipe" 'False) (C1 ('MetaCons "IpeStyle" 'PrefixI 'True) (S1 ('MetaSel ('Just "_styleName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_styleData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Node Text Text))))

styleName :: Lens' IpeStyle (Maybe Text) Source #

Lens to access the style name

styleData :: Lens' IpeStyle (Node Text Text) Source #

Lens to access the style data

basicIpeStyle :: IpeStyle Source #

The "basic" ipe stylesheet

opacitiesStyle :: IpeStyle Source #

A stylesheet with some convenient predefined opacities. In particular the opacities "10%","20%",..,"90%".

readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle) Source #

Reads an Ipe stylesheet from Disk.

addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r Source #

Adds a stylesheet to the ipe file. This will be the first stylesheet, i.e. it has priority over all previously imported stylesheets.

addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r) Source #

Given a path to a stylesheet, add it to the ipe file with the @@ -25,11 +25,11 @@ segment or a polyline with more than two points.

_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Try to convert a path into a line segment, fails if the path is not a line segment or a polyline with more than two points.

_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r)) Source #

Tries to convert a path into a rectangle.

_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a triangle

_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a polyline. Ignores all non-polyline parts

>>> testPath ^? _asPolyLine
 Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100])
-

_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a simple polygon

_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r)) Source #

Convert to a convex polygon

Dealing with Attributes

_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r) Source #

Use the first prism to select the ipe object to depicle with, and the second +

_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a simple polygon

_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r)) Source #

Convert to a convex polygon

_asPolygonalDomain :: forall r p f. (Choice p, Applicative f) => p (PolygonalDomain (Point 2 r)) (f (PolygonalDomain (Point 2 r))) -> p (Path r) (f (Path r)) Source #

Convert to a polygonal domain

Dealing with Attributes

_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r) Source #

Use the first prism to select the ipe object to depicle with, and the second how to select the geometry object from there on. Then we can select the geometry object, directly with its attributes here.

>>> testObject ^? _withAttrs _IpePath _asPolyLine
 Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100] :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "red"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})
-

Default readers

class HasDefaultFromIpe g where Source #

Associated Types

type DefaultFromIpe g :: Type -> Type Source #

Methods

defaultFromIpe :: r ~ NumType g => Prism' (IpeObject r) (g :+ IpeAttributes (DefaultFromIpe g) r) Source #

Instances

Instances details
HasDefaultFromIpe (PolyLine (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (PolyLine (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (PolyLine (Point 2 r)) => Prism' (IpeObject r0) (PolyLine (Point 2 r) :+ IpeAttributes (DefaultFromIpe (PolyLine (Point 2 r))) r0) Source #

HasDefaultFromIpe (SimplePolygon (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (SimplePolygon (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

(Radical r, Eq r) => HasDefaultFromIpe (Circle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Circle (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Circle (Point 2 r)) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Circle (Point 2 r)) => Prism' (IpeObject r0) (Circle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Circle (Point 2 r))) r0) Source #

(Radical r, Eq r) => HasDefaultFromIpe (Disk (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Disk (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Disk (Point 2 r)) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Disk (Point 2 r)) => Prism' (IpeObject r0) (Disk (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Disk (Point 2 r))) r0) Source #

(Num r, Ord r) => HasDefaultFromIpe (Rectangle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Rectangle (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (Rectangle (Point 2 r)) => Prism' (IpeObject r0) (Rectangle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Rectangle (Point 2 r))) r0) Source #

HasDefaultFromIpe (Ellipse r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Ellipse r) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Ellipse r) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Ellipse r) => Prism' (IpeObject r0) (Ellipse r :+ IpeAttributes (DefaultFromIpe (Ellipse r)) r0) Source #

HasDefaultFromIpe (ClosedLineSegment (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (ClosedLineSegment (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

HasDefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

HasDefaultFromIpe (Point 2 r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Point 2 r) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (Point 2 r) => Prism' (IpeObject r0) (Point 2 r :+ IpeAttributes (DefaultFromIpe (Point 2 r)) r0) Source #

Converting *to* IpeObjects

IpeWrite

class IpeWrite t where Source #

Types that correspond to an XML Element. All instances should produce an +

Default readers

class HasDefaultFromIpe g where Source #

Associated Types

type DefaultFromIpe g :: Type -> Type Source #

Methods

defaultFromIpe :: r ~ NumType g => Prism' (IpeObject r) (g :+ IpeAttributes (DefaultFromIpe g) r) Source #

Instances

Instances details
HasDefaultFromIpe (PolyLine (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (PolyLine (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (PolyLine (Point 2 r)) => Prism' (IpeObject r0) (PolyLine (Point 2 r) :+ IpeAttributes (DefaultFromIpe (PolyLine (Point 2 r))) r0) Source #

HasDefaultFromIpe (SimplePolygon (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (SimplePolygon (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

(Radical r, Eq r) => HasDefaultFromIpe (Circle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Circle (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Circle (Point 2 r)) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Circle (Point 2 r)) => Prism' (IpeObject r0) (Circle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Circle (Point 2 r))) r0) Source #

(Radical r, Eq r) => HasDefaultFromIpe (Disk (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Disk (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Disk (Point 2 r)) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Disk (Point 2 r)) => Prism' (IpeObject r0) (Disk (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Disk (Point 2 r))) r0) Source #

(Num r, Ord r) => HasDefaultFromIpe (Rectangle (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Rectangle (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (Rectangle (Point 2 r)) => Prism' (IpeObject r0) (Rectangle (Point 2 r) :+ IpeAttributes (DefaultFromIpe (Rectangle (Point 2 r))) r0) Source #

HasDefaultFromIpe (Ellipse r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Ellipse r) 
Instance details

Defined in Ipe.FromIpe

type DefaultFromIpe (Ellipse r) = Path

Methods

defaultFromIpe :: r0 ~ NumType (Ellipse r) => Prism' (IpeObject r0) (Ellipse r :+ IpeAttributes (DefaultFromIpe (Ellipse r)) r0) Source #

HasDefaultFromIpe (ClosedLineSegment (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (ClosedLineSegment (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

HasDefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) 
Instance details

Defined in Ipe.FromIpe

HasDefaultFromIpe (Point 2 r) Source # 
Instance details

Defined in Ipe.FromIpe

Associated Types

type DefaultFromIpe (Point 2 r) 
Instance details

Defined in Ipe.FromIpe

Methods

defaultFromIpe :: r0 ~ NumType (Point 2 r) => Prism' (IpeObject r0) (Point 2 r :+ IpeAttributes (DefaultFromIpe (Point 2 r)) r0) Source #

Converting *to* IpeObjects

IpeWrite

class IpeWrite t where Source #

Types that correspond to an XML Element. All instances should produce an Element. If the type should produce a Node with the Text constructor, use the IpeWriteText typeclass instead.

Methods

ipeWrite :: t -> Maybe (Node Text Text) Source #

Instances

Instances details
IpeWrite LayerName Source # 
Instance details

Defined in Ipe.Writer

IpeWrite IpePreamble Source # 
Instance details

Defined in Ipe.Writer

IpeWrite IpeStyle Source # 
Instance details

Defined in Ipe.Writer

IpeWrite View Source # 
Instance details

Defined in Ipe.Writer

IpeWrite () Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: () -> Maybe (Node Text Text) Source #

IpeWrite t => IpeWrite (NonEmpty t) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (Group r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (Image r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (IpeObject r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (IpeSymbol r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (MiniPage r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (TextLabel r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (Path r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: Path r -> Maybe (Node Text Text) Source #

IpeWriteText r => IpeWrite (IpeFile r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWrite (IpePage r) Source # 
Instance details

Defined in Ipe.Writer

IpeWrite t => IpeWrite [t] Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: [t] -> Maybe (Node Text Text) Source #

(IpeWrite l, IpeWrite r) => IpeWrite (Either l r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: Either l r -> Maybe (Node Text Text) Source #

(IpeWriteText r, EndPoint_ (endPoint point), IxValue (endPoint point) ~ point, Vertex (LineSegment endPoint point) ~ point, Point_ point 2 r) => IpeWrite (LineSegment endPoint point) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: LineSegment endPoint point -> Maybe (Node Text Text) Source #

(AllConstrained IpeAttrName rs, RecordToList rs, RMap rs, ReifyConstraint IpeWriteText (Attr f) rs, RecAll (Attr f) rs IpeWriteText, IpeWrite g) => IpeWrite (g :+ Attributes f rs) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: (g :+ Attributes f rs) -> Maybe (Node Text Text) Source #

(IpeWriteText r, Point_ point 2 r, Functor f, Foldable1 f) => IpeWrite (PolyLineF f point) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWrite :: PolyLineF f point -> Maybe (Node Text Text) Source #

class IpeWriteText t where Source #

For types that can produce a text value

Methods

ipeWriteText :: t -> Maybe Text Source #

Instances

Instances details
IpeWriteText FillType Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText HorizontalAlignment Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText PinType Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText TransformationTypes Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText VerticalAlignment Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText LayerName Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText Text Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText Integer Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText String Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText () Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: () -> Maybe Text Source #

IpeWriteText Double Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText Float Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText Int Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (RGB r) Source # 
Instance details

Defined in Ipe.Writer

Integral a => IpeWriteText (Ratio a) Source #

This instance converts the ratio to a Pico, and then displays that.

Instance details

Defined in Ipe.Writer

(IpeWriteText r, Point_ point 2 r) => IpeWriteText (CubicBezier point) Source # 
Instance details

Defined in Ipe.Writer

(IpeWriteText r, Point_ point 2 r) => IpeWriteText (PolyLine point) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: PolyLine point -> Maybe Text Source #

(IpeWriteText r, Point_ point 2 r) => IpeWriteText (SimplePolygon point) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpeArrow r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpeDash r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpePen r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpeSize r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (IpeColor r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (Operation r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (Path r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (PathSegment r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText v => IpeWriteText (IpeValue v) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText (RealNumber p) Source # 
Instance details

Defined in Ipe.Writer

HasResolution p => IpeWriteText (Fixed p) Source # 
Instance details

Defined in Ipe.Writer

(IpeWriteText l, IpeWriteText r) => IpeWriteText (Either l r) Source # 
Instance details

Defined in Ipe.Writer

IpeWriteText r => IpeWriteText (Point 2 r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: Point 2 r -> Maybe Text Source #

IpeWriteText (Apply f at) => IpeWriteText (Attr f at) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: Attr f at -> Maybe Text Source #

IpeWriteText r => IpeWriteText (Matrix 3 3 r) Source # 
Instance details

Defined in Ipe.Writer

Methods

ipeWriteText :: Matrix 3 3 r -> Maybe Text Source #

IpeOut

module Ipe.IpeOut

Batch reexports

module Ipe.Value

newtype IpeColor r Source #

Defines a color in Ipe. Colors are either RGB Values or Named values.

Constructors

IpeColor (IpeValue (RGB r)) 

Instances

Instances details
Functor IpeColor Source # 
Instance details

Defined in Ipe.Color

Methods

fmap :: (a -> b) -> IpeColor a -> IpeColor b #

(<$) :: a -> IpeColor b -> IpeColor a #

Foldable IpeColor Source # 
Instance details

Defined in Ipe.Color

Methods

fold :: Monoid m => IpeColor m -> m #

foldMap :: Monoid m => (a -> m) -> IpeColor a -> m #

foldMap' :: Monoid m => (a -> m) -> IpeColor a -> m #

foldr :: (a -> b -> b) -> b -> IpeColor a -> b #

foldr' :: (a -> b -> b) -> b -> IpeColor a -> b #

foldl :: (b -> a -> b) -> b -> IpeColor a -> b #

foldl' :: (b -> a -> b) -> b -> IpeColor a -> b #

foldr1 :: (a -> a -> a) -> IpeColor a -> a #

foldl1 :: (a -> a -> a) -> IpeColor a -> a #

toList :: IpeColor a -> [a] #

null :: IpeColor a -> Bool #

length :: IpeColor a -> Int #

elem :: Eq a => a -> IpeColor a -> Bool #

maximum :: Ord a => IpeColor a -> a #

minimum :: Ord a => IpeColor a -> a #

sum :: Num a => IpeColor a -> a #

product :: Num a => IpeColor a -> a #

Traversable IpeColor Source # 
Instance details

Defined in Ipe.Color

Methods

traverse :: Applicative f => (a -> f b) -> IpeColor a -> f (IpeColor b) #

sequenceA :: Applicative f => IpeColor (f a) -> f (IpeColor a) #

mapM :: Monad m => (a -> m b) -> IpeColor a -> m (IpeColor b) #

sequence :: Monad m => IpeColor (m a) -> m (IpeColor a) #

Read r => Read (IpeColor r) Source # 
Instance details

Defined in Ipe.Color

Show r => Show (IpeColor r) Source # 
Instance details

Defined in Ipe.Color

Methods

showsPrec :: Int -> IpeColor r -> ShowS #

show :: IpeColor r -> String #

showList :: [IpeColor r] -> ShowS #

Eq r => Eq (IpeColor r) Source # 
Instance details

Defined in Ipe.Color

Methods

(==) :: IpeColor r -> IpeColor r -> Bool #

(/=) :: IpeColor r -> IpeColor r -> Bool #

Ord r => Ord (IpeColor r) Source # 
Instance details

Defined in Ipe.Color

Methods

compare :: IpeColor r -> IpeColor r -> Ordering #

(<) :: IpeColor r -> IpeColor r -> Bool #

(<=) :: IpeColor r -> IpeColor r -> Bool #

(>) :: IpeColor r -> IpeColor r -> Bool #

(>=) :: IpeColor r -> IpeColor r -> Bool #

max :: IpeColor r -> IpeColor r -> IpeColor r #

min :: IpeColor r -> IpeColor r -> IpeColor r #

Coordinate r => IpeReadText (IpeColor r) Source # 
Instance details

Defined in Ipe.Reader

IpeWriteText r => IpeWriteText (IpeColor r) Source # 
Instance details

Defined in Ipe.Writer

named :: Text -> IpeColor r Source #

Creates a named color

\ No newline at end of file diff --git a/haddocks/hgeometry/ipe/doc-index.json b/haddocks/hgeometry/ipe/doc-index.json index 4affef15c..b23fa501d 100644 --- a/haddocks/hgeometry/ipe/doc-index.json +++ b/haddocks/hgeometry/ipe/doc-index.json @@ -1 +1 @@ -[{"display_html":"ipeRenderWith :: Options -> FileType -> OsPath -> OsPath -> IO ()","name":"ipeRenderWith","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#v:ipeRenderWith"},{"display_html":"ipeRender :: FileType -> OsPath -> OsPath -> IO ()","name":"ipeRender","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#v:ipeRender"},{"display_html":"data FileType","name":"FileType SVG PDF PNG EPS","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#t:FileType"},{"display_html":"data Options = Options {}","name":"Options crop viewNumber pageNumber transparent resolution Options","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#t:Options"},{"display_html":"defaultOptions :: Options","name":"defaultOptions","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#v:defaultOptions"},{"display_html":"data Background","name":"Background OpaqueBackground TransparentBackground","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#t:Background"},{"display_html":"data Crop","name":"Crop Crop NoCrop","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#t:Crop"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe.Layer","link":"Ipe-Layer.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe.Layer","link":"Ipe-Layer.html#v:layerName"},{"display_html":"literally :: String -> Q Exp","name":"literally","module":"Ipe.Literal","link":"Ipe-Literal.html#v:literally"},{"display_html":"lit :: QuasiQuoter","name":"lit","module":"Ipe.Literal","link":"Ipe-Literal.html#v:lit"},{"display_html":"litFile :: QuasiQuoter","name":"litFile","module":"Ipe.Literal","link":"Ipe-Literal.html#v:litFile"},{"display_html":"xmlLiteral :: String -> Node Text Text","name":"xmlLiteral","module":"Ipe.Literal","link":"Ipe-Literal.html#v:xmlLiteral"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Path","link":"Ipe-Path.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Path","link":"Ipe-Path.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Path","link":"Ipe-Path.html#t:PathSegment"},{"display_html":"_PolyLineSegment :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_PolyLineSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_PolyLineSegment"},{"display_html":"_PolygonPath :: forall r p f. (Choice p, Applicative f) => p (Orientation, SimplePolygon (Point 2 r)) (f (Orientation, SimplePolygon (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_PolygonPath","module":"Ipe.Path","link":"Ipe-Path.html#v:_PolygonPath"},{"display_html":"_CubicBezierSegment :: forall r p f. (Choice p, Applicative f) => p (CubicBezier (Point 2 r)) (f (CubicBezier (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_CubicBezierSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_CubicBezierSegment"},{"display_html":"_QuadraticBezierSegment :: forall r p f. (Choice p, Applicative f) => p (QuadraticBezier (Point 2 r)) (f (QuadraticBezier (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_QuadraticBezierSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_QuadraticBezierSegment"},{"display_html":"_EllipseSegment :: forall r p f. (Choice p, Applicative f) => p (Ellipse r) (f (Ellipse r)) -> p (PathSegment r) (f (PathSegment r))","name":"_EllipseSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_EllipseSegment"},{"display_html":"_ArcSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_ArcSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_ArcSegment"},{"display_html":"_SplineSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_SplineSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_SplineSegment"},{"display_html":"_ClosedSplineSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_ClosedSplineSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_ClosedSplineSegment"},{"display_html":"data Orientation","name":"Orientation Reversed AsIs","module":"Ipe.Path","link":"Ipe-Path.html#t:Orientation"},{"display_html":"data Operation r","name":"Operation Ellipse MoveTo LineTo ArcTo Spline ClosedSpline ClosePath CurveTo QCurveTo","module":"Ipe.Path","link":"Ipe-Path.html#t:Operation"},{"display_html":"_MoveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_MoveTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_MoveTo"},{"display_html":"_LineTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_LineTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_LineTo"},{"display_html":"_CurveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r, Point 2 r, Point 2 r) (f (Point 2 r, Point 2 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_CurveTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_CurveTo"},{"display_html":"_QCurveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r, Point 2 r) (f (Point 2 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_QCurveTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_QCurveTo"},{"display_html":"_Ellipse :: forall r p f. (Choice p, Applicative f) => p (Matrix 3 3 r) (f (Matrix 3 3 r)) -> p (Operation r) (f (Operation r))","name":"_Ellipse","module":"Ipe.Path","link":"Ipe-Path.html#v:_Ellipse"},{"display_html":"_ArcTo :: forall r p f. (Choice p, Applicative f) => p (Matrix 3 3 r, Point 2 r) (f (Matrix 3 3 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_ArcTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_ArcTo"},{"display_html":"_Spline :: forall r p f. (Choice p, Applicative f) => p [Point 2 r] (f [Point 2 r]) -> p (Operation r) (f (Operation r))","name":"_Spline","module":"Ipe.Path","link":"Ipe-Path.html#v:_Spline"},{"display_html":"_ClosedSpline :: forall r p f. (Choice p, Applicative f) => p [Point 2 r] (f [Point 2 r]) -> p (Operation r) (f (Operation r))","name":"_ClosedSpline","module":"Ipe.Path","link":"Ipe-Path.html#v:_ClosedSpline"},{"display_html":"_ClosePath :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (Operation r) (f (Operation r))","name":"_ClosePath","module":"Ipe.Path","link":"Ipe-Path.html#v:_ClosePath"},{"display_html":"class Fractional r => Coordinate r where","name":"Coordinate fromSeq $dmfromSeq","module":"Ipe.PathParser","link":"Ipe-PathParser.html#t:Coordinate"},{"display_html":"readCoordinate :: Coordinate r => Text -> Either Text r","name":"readCoordinate","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readCoordinate"},{"display_html":"readPoint :: Coordinate r => Text -> Either Text (Point 2 r)","name":"readPoint","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readPoint"},{"display_html":"readMatrix :: Coordinate r => Text -> Either Text (Matrix 3 3 r)","name":"readMatrix","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readMatrix"},{"display_html":"readRectangle :: Coordinate r => Text -> Either Text (Rectangle (Point 2 r))","name":"readRectangle","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readRectangle"},{"display_html":"runParser :: Parser a -> Text -> Either Text a","name":"runParser","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:runParser"},{"display_html":"readPathOperations :: Coordinate r => Text -> Either Text [Operation r]","name":"readPathOperations","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readPathOperations"},{"display_html":"pOperation :: Coordinate r => Parser (Operation r)","name":"pOperation","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:pOperation"},{"display_html":"pPoint :: Coordinate r => Parser (Point 2 r)","name":"pPoint","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:pPoint"},{"display_html":"pCoordinate :: Coordinate r => Parser r","name":"pCoordinate","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:pCoordinate"},{"display_html":"data IpeValue v","name":"IpeValue Valued Named","module":"Ipe.Value","link":"Ipe-Value.html#t:IpeValue"},{"display_html":"newtype IpeColor r = IpeColor (IpeValue (RGB r))","name":"IpeColor IpeColor","module":"Ipe.Color","link":"Ipe-Color.html#t:IpeColor"},{"display_html":"named :: Text -> IpeColor r","name":"named","module":"Ipe.Color","link":"Ipe-Color.html#v:named"},{"display_html":"basicNamedColors :: [IpeColor r]","name":"basicNamedColors","module":"Ipe.Color","link":"Ipe-Color.html#v:basicNamedColors"},{"display_html":"black :: IpeColor r","name":"black","module":"Ipe.Color","link":"Ipe-Color.html#v:black"},{"display_html":"white :: IpeColor r","name":"white","module":"Ipe.Color","link":"Ipe-Color.html#v:white"},{"display_html":"red :: IpeColor r","name":"red","module":"Ipe.Color","link":"Ipe-Color.html#v:red"},{"display_html":"green :: IpeColor r","name":"green","module":"Ipe.Color","link":"Ipe-Color.html#v:green"},{"display_html":"blue :: IpeColor r","name":"blue","module":"Ipe.Color","link":"Ipe-Color.html#v:blue"},{"display_html":"yellow :: IpeColor r","name":"yellow","module":"Ipe.Color","link":"Ipe-Color.html#v:yellow"},{"display_html":"orange :: IpeColor r","name":"orange","module":"Ipe.Color","link":"Ipe-Color.html#v:orange"},{"display_html":"gold :: IpeColor r","name":"gold","module":"Ipe.Color","link":"Ipe-Color.html#v:gold"},{"display_html":"purple :: IpeColor r","name":"purple","module":"Ipe.Color","link":"Ipe-Color.html#v:purple"},{"display_html":"gray :: IpeColor r","name":"gray","module":"Ipe.Color","link":"Ipe-Color.html#v:gray"},{"display_html":"brown :: IpeColor r","name":"brown","module":"Ipe.Color","link":"Ipe-Color.html#v:brown"},{"display_html":"navy :: IpeColor r","name":"navy","module":"Ipe.Color","link":"Ipe-Color.html#v:navy"},{"display_html":"pink :: IpeColor r","name":"pink","module":"Ipe.Color","link":"Ipe-Color.html#v:pink"},{"display_html":"seagreen :: IpeColor r","name":"seagreen","module":"Ipe.Color","link":"Ipe-Color.html#v:seagreen"},{"display_html":"turquoise :: IpeColor r","name":"turquoise","module":"Ipe.Color","link":"Ipe-Color.html#v:turquoise"},{"display_html":"violet :: IpeColor r","name":"violet","module":"Ipe.Color","link":"Ipe-Color.html#v:violet"},{"display_html":"darkblue :: IpeColor r","name":"darkblue","module":"Ipe.Color","link":"Ipe-Color.html#v:darkblue"},{"display_html":"darkcyan :: IpeColor r","name":"darkcyan","module":"Ipe.Color","link":"Ipe-Color.html#v:darkcyan"},{"display_html":"darkgray :: IpeColor r","name":"darkgray","module":"Ipe.Color","link":"Ipe-Color.html#v:darkgray"},{"display_html":"darkgreen :: IpeColor r","name":"darkgreen","module":"Ipe.Color","link":"Ipe-Color.html#v:darkgreen"},{"display_html":"darkmagenta :: IpeColor r","name":"darkmagenta","module":"Ipe.Color","link":"Ipe-Color.html#v:darkmagenta"},{"display_html":"darkorange :: IpeColor r","name":"darkorange","module":"Ipe.Color","link":"Ipe-Color.html#v:darkorange"},{"display_html":"darkred :: IpeColor r","name":"darkred","module":"Ipe.Color","link":"Ipe-Color.html#v:darkred"},{"display_html":"lightblue :: IpeColor r","name":"lightblue","module":"Ipe.Color","link":"Ipe-Color.html#v:lightblue"},{"display_html":"lightcyan :: IpeColor r","name":"lightcyan","module":"Ipe.Color","link":"Ipe-Color.html#v:lightcyan"},{"display_html":"lightgray :: IpeColor r","name":"lightgray","module":"Ipe.Color","link":"Ipe-Color.html#v:lightgray"},{"display_html":"lightgreen :: IpeColor r","name":"lightgreen","module":"Ipe.Color","link":"Ipe-Color.html#v:lightgreen"},{"display_html":"lightyellow :: IpeColor r","name":"lightyellow","module":"Ipe.Color","link":"Ipe-Color.html#v:lightyellow"},{"display_html":"data AttributeUniverse","name":"AttributeUniverse HAlign VAlign Height Gradient Tiling Opacity StrokeOpacity RArrow FillRule LineJoin LineCap Dash Pen Fill Stroke Transformations Pin Clip Layer Matrix Width Depth Style Size Arrow","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:AttributeUniverse"},{"display_html":"data SAttributeUniverse (a :: AttributeUniverse) where","name":"SAttributeUniverse SClip SStyle SHAlign SVAlign SDepth SHeight SWidth SGradient STiling SOpacity SStrokeOpacity SRArrow SArrow SFillRule SLineJoin SLineCap SDash SSize SPen SFill SStroke STransformations SPin SMatrix SLayer","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:SAttributeUniverse"},{"display_html":"type family ClipSym0 :: AttributeUniverse where ...","name":"ClipSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:ClipSym0"},{"display_html":"type family StyleSym0 :: AttributeUniverse where ...","name":"StyleSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:StyleSym0"},{"display_html":"type family HAlignSym0 :: AttributeUniverse where ...","name":"HAlignSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:HAlignSym0"},{"display_html":"type family VAlignSym0 :: AttributeUniverse where ...","name":"VAlignSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:VAlignSym0"},{"display_html":"type family DepthSym0 :: AttributeUniverse where ...","name":"DepthSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:DepthSym0"},{"display_html":"type family HeightSym0 :: AttributeUniverse where ...","name":"HeightSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:HeightSym0"},{"display_html":"type family WidthSym0 :: AttributeUniverse where ...","name":"WidthSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:WidthSym0"},{"display_html":"type family GradientSym0 :: AttributeUniverse where ...","name":"GradientSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:GradientSym0"},{"display_html":"type family TilingSym0 :: AttributeUniverse where ...","name":"TilingSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TilingSym0"},{"display_html":"type family OpacitySym0 :: AttributeUniverse where ...","name":"OpacitySym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:OpacitySym0"},{"display_html":"type family StrokeOpacitySym0 :: AttributeUniverse where ...","name":"StrokeOpacitySym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:StrokeOpacitySym0"},{"display_html":"type family RArrowSym0 :: AttributeUniverse where ...","name":"RArrowSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:RArrowSym0"},{"display_html":"type family ArrowSym0 :: AttributeUniverse where ...","name":"ArrowSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:ArrowSym0"},{"display_html":"type family FillRuleSym0 :: AttributeUniverse where ...","name":"FillRuleSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:FillRuleSym0"},{"display_html":"type family LineJoinSym0 :: AttributeUniverse where ...","name":"LineJoinSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:LineJoinSym0"},{"display_html":"type family LineCapSym0 :: AttributeUniverse where ...","name":"LineCapSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:LineCapSym0"},{"display_html":"type family DashSym0 :: AttributeUniverse where ...","name":"DashSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:DashSym0"},{"display_html":"type family SizeSym0 :: AttributeUniverse where ...","name":"SizeSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:SizeSym0"},{"display_html":"type family PenSym0 :: AttributeUniverse where ...","name":"PenSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:PenSym0"},{"display_html":"type family FillSym0 :: AttributeUniverse where ...","name":"FillSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:FillSym0"},{"display_html":"type family StrokeSym0 :: AttributeUniverse where ...","name":"StrokeSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:StrokeSym0"},{"display_html":"type family TransformationsSym0 :: AttributeUniverse where ...","name":"TransformationsSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TransformationsSym0"},{"display_html":"type family PinSym0 :: AttributeUniverse where ...","name":"PinSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:PinSym0"},{"display_html":"type family MatrixSym0 :: AttributeUniverse where ...","name":"MatrixSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:MatrixSym0"},{"display_html":"type family LayerSym0 :: AttributeUniverse where ...","name":"LayerSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:LayerSym0"},{"display_html":"type CommonAttributes = '['Layer, 'Matrix, 'Pin, 'Transformations]","name":"CommonAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:CommonAttributes"},{"display_html":"type TextAttributes = CommonAttributes ++ '['Stroke, 'Size, 'Width, 'Height, 'Depth, 'VAlign, 'HAlign, 'Style, 'Opacity]","name":"TextAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TextAttributes"},{"display_html":"type TextLabelAttributes = TextAttributes","name":"TextLabelAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TextLabelAttributes"},{"display_html":"type MiniPageAttributes = TextAttributes","name":"MiniPageAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:MiniPageAttributes"},{"display_html":"type ImageAttributes = CommonAttributes","name":"ImageAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:ImageAttributes"},{"display_html":"type SymbolAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Pen, 'Size]","name":"SymbolAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:SymbolAttributes"},{"display_html":"type PathAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Dash, 'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow, 'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]","name":"PathAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:PathAttributes"},{"display_html":"type GroupAttributes = CommonAttributes ++ '['Clip]","name":"GroupAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:GroupAttributes"},{"display_html":"newtype Attr (f :: TyFun u Type -> Type) (label :: u) = GAttr {}","name":"Attr _getAttr GAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:Attr"},{"display_html":"getAttr :: forall u1 (f1 :: TyFun u1 Type -> Type) (label1 :: u1) u2 (f2 :: TyFun u2 Type -> Type) (label2 :: u2) p f3. (Profunctor p, Functor f3) => p (Maybe (Apply f1 label1)) (f3 (Maybe (Apply f2 label2))) -> p (Attr f1 label1) (f3 (Attr f2 label2))","name":"getAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:getAttr"},{"display_html":"pattern Attr :: Apply f label -> Attr f label","name":"Attr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:Attr"},{"display_html":"pattern NoAttr :: Attr f label","name":"NoAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:NoAttr"},{"display_html":"traverseAttr :: forall {u} h (f :: u ~> Type) (label :: u) (g :: u ~> Type). Applicative h => (Apply f label -> h (Apply g label)) -> Attr f label -> h (Attr g label)","name":"traverseAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:traverseAttr"},{"display_html":"pureAttr :: forall {u} h (f :: u ~> Type) (a :: u) (g :: u ~> Type). (Applicative h, Apply f a ~ Apply g a) => Attr f a -> h (Attr g a)","name":"pureAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:pureAttr"},{"display_html":"newtype Attributes (f :: TyFun u Type -> Type) (ats :: [u]) = Attrs (Rec (Attr f) ats)","name":"Attributes Attrs","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:Attributes"},{"display_html":"unAttrs :: forall {u1} {u2} (f1 :: TyFun u1 Type -> Type) (ats :: [u1]) (f' :: TyFun u2 Type -> Type) (ats' :: [u2]) f2. Functor f2 => (Rec (Attr f1) ats -> f2 (Rec (Attr f') ats')) -> Attributes f1 ats -> f2 (Attributes f' ats')","name":"unAttrs","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:unAttrs"},{"display_html":"traverseAttrs :: forall {u} h (f :: TyFun u Type -> Type) (g :: TyFun u Type -> Type) (ats :: [u]). Applicative h => (forall (label :: u). Attr f label -> h (Attr g label)) -> Attributes f ats -> h (Attributes g ats)","name":"traverseAttrs","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:traverseAttrs"},{"display_html":"zipRecsWith :: forall {u} f g h (as :: [u]). (forall (a :: u). f a -> g a -> h a) -> Rec f as -> Rec g as -> Rec h as","name":"zipRecsWith","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:zipRecsWith"},{"display_html":"ixAttr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). at ats => proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))","name":"ixAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:ixAttr"},{"display_html":"_Attr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). (at ats, RecApplicative ats) => proxy at -> Prism' (Attributes f ats) (Apply f at)","name":"_Attr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:_Attr"},{"display_html":"lookupAttr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). at ats => proxy at -> Attributes f ats -> Maybe (Apply f at)","name":"lookupAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:lookupAttr"},{"display_html":"setAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: u ~> Type). at ats => proxy at -> Apply f at -> Attributes f ats -> Attributes f ats","name":"setAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:setAttr"},{"display_html":"takeAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: TyFun u Type -> Type). at ats => proxy at -> Attributes f ats -> (Maybe (Apply f at), Attributes f ats)","name":"takeAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:takeAttr"},{"display_html":"unSetAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: TyFun u Type -> Type). at ats => proxy at -> Attributes f ats -> Attributes f ats","name":"unSetAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:unSetAttr"},{"display_html":"attr :: forall {u} (at :: u) (ats :: [u]) proxy (f :: u ~> Type). (at ats, RecApplicative ats) => proxy at -> Apply f at -> Attributes f ats","name":"attr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:attr"},{"display_html":"data PinType","name":"PinType Vertical Horizontal Yes No","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:PinType"},{"display_html":"data TransformationTypes","name":"TransformationTypes Translations Rigid Affine","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TransformationTypes"},{"display_html":"data HorizontalAlignment","name":"HorizontalAlignment AlignRight AlignHCenter AlignLeft","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:HorizontalAlignment"},{"display_html":"data VerticalAlignment","name":"VerticalAlignment AlignBaseline AlignBottom AlignVCenter AlignTop","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:VerticalAlignment"},{"display_html":"type TeXStyle = Text","name":"TeXStyle","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TeXStyle"},{"display_html":"type TextSizeUnit (r :: k) = r","name":"TextSizeUnit","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TextSizeUnit"},{"display_html":"newtype IpeSize r = IpeSize (IpeValue r)","name":"IpeSize IpeSize","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeSize"},{"display_html":"newtype IpePen r = IpePen (IpeValue r)","name":"IpePen IpePen","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpePen"},{"display_html":"data IpeDash r","name":"IpeDash DashPattern DashNamed","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeDash"},{"display_html":"data FillType","name":"FillType EOFill Wind","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:FillType"},{"display_html":"type IpeOpacity = Text","name":"IpeOpacity","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeOpacity"},{"display_html":"type IpeTiling = Text","name":"IpeTiling","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeTiling"},{"display_html":"type IpeGradient = Text","name":"IpeGradient","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeGradient"},{"display_html":"data IpeArrow r = IpeArrow {}","name":"IpeArrow _arrowSize _arrowName IpeArrow","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeArrow"},{"display_html":"arrowName :: forall r f. Functor f => (Text -> f Text) -> IpeArrow r -> f (IpeArrow r)","name":"arrowName","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:arrowName"},{"display_html":"arrowSize :: forall r1 r2 f. Functor f => (IpeSize r1 -> f (IpeSize r2)) -> IpeArrow r1 -> f (IpeArrow r2)","name":"arrowSize","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:arrowSize"},{"display_html":"normalArrow :: IpeArrow r","name":"normalArrow","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:normalArrow"},{"display_html":"class IpeAttrName (a :: AttributeUniverse) where","name":"IpeAttrName attrName","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeAttrName"},{"display_html":"writeAttrNames :: forall (rs :: [AttributeUniverse]) (f :: AttributeUniverse -> Type). AllConstrained IpeAttrName rs => Rec f rs -> Rec (Const Text :: AttributeUniverse -> Type) rs","name":"writeAttrNames","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:writeAttrNames"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe.Content","link":"Ipe-Content.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe.Content","link":"Ipe-Content.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe.Content","link":"Ipe-Content.html#v:rect"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe.Content","link":"Ipe-Content.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe.Content","link":"Ipe-Content.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe.Content","link":"Ipe-Content.html#v:width"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe.Content","link":"Ipe-Content.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe.Content","link":"Ipe-Content.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe.Content","link":"Ipe-Content.html#v:symbolName"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Content","link":"Ipe-Content.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Content","link":"Ipe-Content.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Content","link":"Ipe-Content.html#t:PathSegment"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe.Content","link":"Ipe-Content.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe.Content","link":"Ipe-Content.html#v:groupItems"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe.Content","link":"Ipe-Content.html#t:IpeObject"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeGroup"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeImage"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeMiniPage"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeUse"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpePath"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe.Content","link":"Ipe-Content.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe.Content","link":"Ipe-Content.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe.Content","link":"Ipe-Content.html#t:ToObject"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe.Content","link":"Ipe-Content.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe.Content","link":"Ipe-Content.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe.Content","link":"Ipe-Content.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe.Content","link":"Ipe-Content.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260257 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe.Content","link":"Ipe-Content.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe.Content","link":"Ipe-Content.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe.Content","link":"Ipe-Content.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe.Content","link":"Ipe-Content.html#v:commonAttributes"},{"display_html":"flattenGroups :: [IpeObject r] -> [IpeObject r]","name":"flattenGroups","module":"Ipe.Content","link":"Ipe-Content.html#v:flattenGroups"},{"display_html":"data IpeFile r = IpeFile (Maybe IpePreamble) [IpeStyle] (NonEmpty (IpePage r))","name":"IpeFile IpeFile","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeFile"},{"display_html":"preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r)","name":"preamble","module":"Ipe.Types","link":"Ipe-Types.html#v:preamble"},{"display_html":"styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r)","name":"styles","module":"Ipe.Types","link":"Ipe-Types.html#v:styles"},{"display_html":"pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r')","name":"pages","module":"Ipe.Types","link":"Ipe-Types.html#v:pages"},{"display_html":"ipeFile :: NonEmpty (IpePage r) -> IpeFile r","name":"ipeFile","module":"Ipe.Types","link":"Ipe-Types.html#v:ipeFile"},{"display_html":"singlePageFile :: IpePage r -> IpeFile r","name":"singlePageFile","module":"Ipe.Types","link":"Ipe-Types.html#v:singlePageFile"},{"display_html":"singlePageFromContent :: [IpeObject r] -> IpeFile r","name":"singlePageFromContent","module":"Ipe.Types","link":"Ipe-Types.html#v:singlePageFromContent"},{"display_html":"data IpePage r = IpePage [LayerName] [View] [IpeObject r]","name":"IpePage IpePage","module":"Ipe.Types","link":"Ipe-Types.html#t:IpePage"},{"display_html":"layers :: forall r f. Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r)","name":"layers","module":"Ipe.Types","link":"Ipe-Types.html#v:layers"},{"display_html":"views :: forall r f. Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r)","name":"views","module":"Ipe.Types","link":"Ipe-Types.html#v:views"},{"display_html":"content :: forall r r' f. Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r')","name":"content","module":"Ipe.Types","link":"Ipe-Types.html#v:content"},{"display_html":"emptyPage :: IpePage r","name":"emptyPage","module":"Ipe.Types","link":"Ipe-Types.html#v:emptyPage"},{"display_html":"fromContent :: [IpeObject r] -> IpePage r","name":"fromContent","module":"Ipe.Types","link":"Ipe-Types.html#v:fromContent"},{"display_html":"onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r)","name":"onLayer","module":"Ipe.Types","link":"Ipe-Types.html#v:onLayer"},{"display_html":"contentInView :: Word -> Getter (IpePage r) [IpeObject r]","name":"contentInView","module":"Ipe.Types","link":"Ipe-Types.html#v:contentInView"},{"display_html":"withDefaults :: IpePage r -> IpePage r","name":"withDefaults","module":"Ipe.Types","link":"Ipe-Types.html#v:withDefaults"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeObject"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeGroup"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeImage"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeMiniPage"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeUse"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpePath"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe.Types","link":"Ipe-Types.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe.Types","link":"Ipe-Types.html#t:ToObject"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Types","link":"Ipe-Types.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Types","link":"Ipe-Types.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Types","link":"Ipe-Types.html#t:PathSegment"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe.Types","link":"Ipe-Types.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe.Types","link":"Ipe-Types.html#v:symbolName"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe.Types","link":"Ipe-Types.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe.Types","link":"Ipe-Types.html#v:groupItems"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe.Types","link":"Ipe-Types.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe.Types","link":"Ipe-Types.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe.Types","link":"Ipe-Types.html#v:width"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe.Types","link":"Ipe-Types.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe.Types","link":"Ipe-Types.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe.Types","link":"Ipe-Types.html#v:rect"},{"display_html":"type IpeBitmap = Text","name":"IpeBitmap","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeBitmap"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe.Types","link":"Ipe-Types.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe.Types","link":"Ipe-Types.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe.Types","link":"Ipe-Types.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260257 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe.Types","link":"Ipe-Types.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe.Types","link":"Ipe-Types.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe.Types","link":"Ipe-Types.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe.Types","link":"Ipe-Types.html#v:commonAttributes"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe.Types","link":"Ipe-Types.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe.Types","link":"Ipe-Types.html#v:layerName"},{"display_html":"data View = View [LayerName] LayerName","name":"View View","module":"Ipe.Types","link":"Ipe-Types.html#t:View"},{"display_html":"layerNames :: Lens' View [LayerName]","name":"layerNames","module":"Ipe.Types","link":"Ipe-Types.html#v:layerNames"},{"display_html":"activeLayer :: Lens' View LayerName","name":"activeLayer","module":"Ipe.Types","link":"Ipe-Types.html#v:activeLayer"},{"display_html":"addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r","name":"addStyleSheet","module":"Ipe.Types","link":"Ipe-Types.html#v:addStyleSheet"},{"display_html":"data IpeStyle = IpeStyle (Maybe Text) (Node Text Text)","name":"IpeStyle IpeStyle","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeStyle"},{"display_html":"styleName :: Lens' IpeStyle (Maybe Text)","name":"styleName","module":"Ipe.Types","link":"Ipe-Types.html#v:styleName"},{"display_html":"styleData :: Lens' IpeStyle (Node Text Text)","name":"styleData","module":"Ipe.Types","link":"Ipe-Types.html#v:styleData"},{"display_html":"basicIpeStyle :: IpeStyle","name":"basicIpeStyle","module":"Ipe.Types","link":"Ipe-Types.html#v:basicIpeStyle"},{"display_html":"opacitiesStyle :: IpeStyle","name":"opacitiesStyle","module":"Ipe.Types","link":"Ipe-Types.html#v:opacitiesStyle"},{"display_html":"data IpePreamble = IpePreamble (Maybe Text) Text","name":"IpePreamble IpePreamble","module":"Ipe.Types","link":"Ipe-Types.html#t:IpePreamble"},{"display_html":"encoding :: Lens' IpePreamble (Maybe Text)","name":"encoding","module":"Ipe.Types","link":"Ipe-Types.html#v:encoding"},{"display_html":"preambleData :: Lens' IpePreamble Text","name":"preambleData","module":"Ipe.Types","link":"Ipe-Types.html#v:preambleData"},{"display_html":"applyMatrix' :: (IsTransformable (i r), 'Matrix AttributesOf i, Dimension (i r) ~ 2, r ~ NumType (i r)) => IpeObject' i r -> IpeObject' i r","name":"applyMatrix'","module":"Ipe.Matrix","link":"Ipe-Matrix.html#v:applyMatrix-39-"},{"display_html":"applyMatrix :: (Fractional r, Eq r) => IpeObject r -> IpeObject r","name":"applyMatrix","module":"Ipe.Matrix","link":"Ipe-Matrix.html#v:applyMatrix"},{"display_html":"applyMatrices :: (Fractional r, Eq r) => IpeFile r -> IpeFile r","name":"applyMatrices","module":"Ipe.Matrix","link":"Ipe-Matrix.html#v:applyMatrices"},{"display_html":"applyMatricesPage :: (Fractional r, Eq r) => IpePage r -> IpePage r","name":"applyMatricesPage","module":"Ipe.Matrix","link":"Ipe-Matrix.html#v:applyMatricesPage"},{"display_html":"readRawIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readRawIpeFile","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readRawIpeFile"},{"display_html":"readIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readIpeFile","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readIpeFile"},{"display_html":"readSinglePageFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r))","name":"readSinglePageFile","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readSinglePageFile"},{"display_html":"readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r)","name":"readSinglePageFileThrow","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readSinglePageFileThrow"},{"display_html":"type ConversionError = Text","name":"ConversionError","module":"Ipe.Reader","link":"Ipe-Reader.html#t:ConversionError"},{"display_html":"readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle)","name":"readIpeStylesheet","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readIpeStylesheet"},{"display_html":"addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r)","name":"addStyleSheetFrom","module":"Ipe.Reader","link":"Ipe-Reader.html#v:addStyleSheetFrom"},{"display_html":"fromIpeXML :: forall {k} t (r :: k). IpeRead (t r) => ByteString -> Either ConversionError (t r)","name":"fromIpeXML","module":"Ipe.Reader","link":"Ipe-Reader.html#v:fromIpeXML"},{"display_html":"readXML :: ByteString -> Either ConversionError (Node Text Text)","name":"readXML","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readXML"},{"display_html":"class IpeReadText t where","name":"IpeReadText ipeReadText","module":"Ipe.Reader","link":"Ipe-Reader.html#t:IpeReadText"},{"display_html":"class IpeRead t where","name":"IpeRead ipeRead","module":"Ipe.Reader","link":"Ipe-Reader.html#t:IpeRead"},{"display_html":"class IpeReadAttr t where","name":"IpeReadAttr ipeReadAttr","module":"Ipe.Reader","link":"Ipe-Reader.html#t:IpeReadAttr"},{"display_html":"ipeReadTextWith :: (Text -> Either t v) -> Text -> Either ConversionError (IpeValue v)","name":"ipeReadTextWith","module":"Ipe.Reader","link":"Ipe-Reader.html#v:ipeReadTextWith"},{"display_html":"ipeReadObject :: forall i r (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]) proxy. (IpeRead (i r), f ~ AttrMapSym1 r, ats ~ AttributesOf i, RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => Proxy i -> proxy r -> Node Text Text -> Either ConversionError (i r :+ IpeAttributes i r)","name":"ipeReadObject","module":"Ipe.Reader","link":"Ipe-Reader.html#v:ipeReadObject"},{"display_html":"ipeReadAttrs :: forall proxy proxy' (i :: Type -> Type) r (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]). (f ~ AttrMapSym1 r, ats ~ AttributesOf i, ReifyConstraint IpeReadAttr (Attr f) ats, RecApplicative ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => proxy i -> proxy' r -> Node Text Text -> Either ConversionError (IpeAttributes i r)","name":"ipeReadAttrs","module":"Ipe.Reader","link":"Ipe-Reader.html#v:ipeReadAttrs"},{"display_html":"ipeReadRec :: forall (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]). (RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => Proxy f -> Proxy ats -> Node Text Text -> Either ConversionError (Rec (Attr f) ats)","name":"ipeReadRec","module":"Ipe.Reader","link":"Ipe-Reader.html#v:ipeReadRec"},{"display_html":"class Fractional r => Coordinate r where","name":"Coordinate fromSeq $dmfromSeq","module":"Ipe.Reader","link":"Ipe-Reader.html#t:Coordinate"},{"display_html":"_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r))","name":"_asPoint","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asPoint"},{"display_html":"_asLineSegment :: forall r p f. (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asLineSegment","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asLineSegment"},{"display_html":"_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asClosedLineSegment","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asClosedLineSegment"},{"display_html":"_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r))","name":"_asRectangle","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asRectangle"},{"display_html":"_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asTriangle","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asTriangle"},{"display_html":"_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolyLine","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asPolyLine"},{"display_html":"_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asSimplePolygon","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asSimplePolygon"},{"display_html":"_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r))","name":"_asConvexPolygon","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asConvexPolygon"},{"display_html":"_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r)","name":"_withAttrs","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_withAttrs"},{"display_html":"class HasDefaultFromIpe g where","name":"HasDefaultFromIpe DefaultFromIpe defaultFromIpe","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#t:HasDefaultFromIpe"},{"display_html":"readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAll","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:readAll"},{"display_html":"readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllDeep","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:readAllDeep"},{"display_html":"readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllFrom","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:readAllFrom"},{"display_html":"type IpeOut g (i :: Type -> Type) r = g -> IpeObject' i r","name":"IpeOut","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#t:IpeOut"},{"display_html":"type IpeOut' (f :: Type -> Type) g (i :: Type -> Type) r = g -> f (IpeObject' i r)","name":"IpeOut'","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#t:IpeOut-39-"},{"display_html":"(!) :: IpeObject' i r -> IpeAttributes i r -> IpeObject' i r","name":"!","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:-33-"},{"display_html":"iO :: ToObject i => IpeObject' i r -> IpeObject r","name":"iO","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:iO"},{"display_html":"iO'' :: forall g r (i :: Type -> Type). (HasDefaultIpeOut g, NumType g ~ r, DefaultIpeOut g ~ i, ToObject i) => g -> IpeAttributes i r -> IpeObject r","name":"iO''","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:iO-39--39-"},{"display_html":"iO' :: HasDefaultIpeOut g => g -> IpeObject (NumType g)","name":"iO'","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:iO-39-"},{"display_html":"class ToObject (DefaultIpeOut g) => HasDefaultIpeOut g where","name":"HasDefaultIpeOut defIO DefaultIpeOut","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#t:HasDefaultIpeOut"},{"display_html":"ipeMark :: Text -> IpeOut (Point 2 r) IpeSymbol r","name":"ipeMark","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeMark"},{"display_html":"ipeDiskMark :: IpeOut (Point 2 r) IpeSymbol r","name":"ipeDiskMark","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeDiskMark"},{"display_html":"defaultBox :: Num r => Rectangle (Point 2 r)","name":"defaultBox","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:defaultBox"},{"display_html":"ipeLine :: (Ord r, Fractional r, Show r) => IpeOut (LinePV 2 r) Path r","name":"ipeLine","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeLine"},{"display_html":"ipeLineIn :: (Ord r, Fractional r, Show r) => Rectangle (Point 2 r) -> IpeOut (LinePV 2 r) Path r","name":"ipeLineIn","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeLineIn"},{"display_html":"ipeHalfLine :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r","name":"ipeHalfLine","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeHalfLine"},{"display_html":"ipeRay :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r","name":"ipeRay","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeRay"},{"display_html":"ipeHalfLineIn :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => Rectangle point -> IpeOut (HalfLine point) Path r","name":"ipeHalfLineIn","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeHalfLineIn"},{"display_html":"ipeLineSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) => IpeOut lineSegment Path r","name":"ipeLineSegment","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeLineSegment"},{"display_html":"ipePolyLine :: IpeOut (PolyLine (Point 2 r)) Path r","name":"ipePolyLine","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipePolyLine"},{"display_html":"ipeEllipse :: IpeOut (Ellipse r) Path r","name":"ipeEllipse","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeEllipse"},{"display_html":"ipeCircle :: Radical r => IpeOut (Circle (Point 2 r)) Path r","name":"ipeCircle","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeCircle"},{"display_html":"ipeDisk :: Radical r => IpeOut (Disk (Point 2 r)) Path r","name":"ipeDisk","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeDisk"},{"display_html":"ipeBezier :: IpeOut (CubicBezier (Point 2 r)) Path r","name":"ipeBezier","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeBezier"},{"display_html":"path :: PathSegment r -> Path r","name":"path","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:path"},{"display_html":"pathSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) => lineSegment -> PathSegment r","name":"pathSegment","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:pathSegment"},{"display_html":"ipePolygon :: Polygon_ polygon point r => IpeOut polygon Path r","name":"ipePolygon","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipePolygon"},{"display_html":"toPolygonPathSegment :: (HasOuterBoundary polygon, Point_ point 2 r, Vertex polygon ~ point) => polygon -> PathSegment r","name":"toPolygonPathSegment","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:toPolygonPathSegment"},{"display_html":"ipeSimplePolygon :: IpeOut (SimplePolygon (Point 2 r)) Path r","name":"ipeSimplePolygon","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeSimplePolygon"},{"display_html":"ipeRectangle :: Num r => IpeOut (Rectangle (Point 2 r)) Path r","name":"ipeRectangle","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeRectangle"},{"display_html":"ipeGroup :: Foldable f => IpeOut (f (IpeObject r)) Group r","name":"ipeGroup","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeGroup"},{"display_html":"ipeLabel :: IpeOut (Text :+ Point 2 r) TextLabel r","name":"ipeLabel","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeLabel"},{"display_html":"labelled :: (Show lbl, NumType g ~ r, ToObject i) => (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r","name":"labelled","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:labelled"},{"display_html":"labelledWith :: (Show lbl, NumType g ~ r, ToObject i) => IpeAttributes TextLabel r -> (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r","name":"labelledWith","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:labelledWith"},{"display_html":"writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFile","module":"Ipe.Writer","link":"Ipe-Writer.html#v:writeIpeFile"},{"display_html":"writeIpeFile' :: IpeWrite t => t -> OsPath -> IO ()","name":"writeIpeFile'","module":"Ipe.Writer","link":"Ipe-Writer.html#v:writeIpeFile-39-"},{"display_html":"writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO ()","name":"writeIpePage","module":"Ipe.Writer","link":"Ipe-Writer.html#v:writeIpePage"},{"display_html":"toIpeXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeXML","module":"Ipe.Writer","link":"Ipe-Writer.html#v:toIpeXML"},{"display_html":"printAsIpeSelection :: IpeWrite t => t -> IO ()","name":"printAsIpeSelection","module":"Ipe.Writer","link":"Ipe-Writer.html#v:printAsIpeSelection"},{"display_html":"toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeSelectionXML","module":"Ipe.Writer","link":"Ipe-Writer.html#v:toIpeSelectionXML"},{"display_html":"class IpeWrite t where","name":"IpeWrite ipeWrite","module":"Ipe.Writer","link":"Ipe-Writer.html#t:IpeWrite"},{"display_html":"class IpeWriteText t where","name":"IpeWriteText ipeWriteText","module":"Ipe.Writer","link":"Ipe-Writer.html#t:IpeWriteText"},{"display_html":"ipeWriteAttrs :: forall (rs :: [AttributeUniverse]) (f :: TyFun AttributeUniverse Type -> Type). (RecordToList rs, RMap rs, ReifyConstraint IpeWriteText (Attr f) rs, AllConstrained IpeAttrName rs, RecAll (Attr f) rs IpeWriteText) => Attributes f rs -> [(Text, Text)]","name":"ipeWriteAttrs","module":"Ipe.Writer","link":"Ipe-Writer.html#v:ipeWriteAttrs"},{"display_html":"writeAttrValues :: forall {u} (rs :: [u]) (f :: u -> Type). (RMap rs, ReifyConstraint IpeWriteText f rs, RecAll f rs IpeWriteText) => Rec f rs -> Rec (Const (Maybe Text) :: u -> Type) rs","name":"writeAttrValues","module":"Ipe.Writer","link":"Ipe-Writer.html#v:writeAttrValues"},{"display_html":"ipeToIpeWith :: Options -> FileType -> OsPath -> OsPath -> IO ()","name":"ipeToIpeWith","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#v:ipeToIpeWith"},{"display_html":"ipeToIpe :: FileType -> OsPath -> OsPath -> IO ()","name":"ipeToIpe","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#v:ipeToIpe"},{"display_html":"writeIpeFileAsPdf :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFileAsPdf","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#v:writeIpeFileAsPdf"},{"display_html":"data FileType","name":"FileType XML PDF","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:FileType"},{"display_html":"data Export","name":"Export RetainIpeInfo Export","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:Export"},{"display_html":"type PageNumber = Int","name":"PageNumber","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:PageNumber"},{"display_html":"type ViewNumber = Int","name":"ViewNumber","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:ViewNumber"},{"display_html":"data MarkedView","name":"MarkedView OnlyMarkedViews All","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:MarkedView"},{"display_html":"data NoZip","name":"NoZip NoZip Zip","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:NoZip"},{"display_html":"data PageRange","name":"PageRange EntireFile PageRange","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:PageRange"},{"display_html":"data Options = Options {}","name":"Options markedView nozip runLatex singleView pages export Options","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:Options"},{"display_html":"defaultOptions :: Options","name":"defaultOptions","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#v:defaultOptions"},{"display_html":"data IpeFile r = IpeFile (Maybe IpePreamble) [IpeStyle] (NonEmpty (IpePage r))","name":"IpeFile IpeFile","module":"Ipe","link":"Ipe.html#t:IpeFile"},{"display_html":"preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r)","name":"preamble","module":"Ipe","link":"Ipe.html#v:preamble"},{"display_html":"styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r)","name":"styles","module":"Ipe","link":"Ipe.html#v:styles"},{"display_html":"pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r')","name":"pages","module":"Ipe","link":"Ipe.html#v:pages"},{"display_html":"ipeFile :: NonEmpty (IpePage r) -> IpeFile r","name":"ipeFile","module":"Ipe","link":"Ipe.html#v:ipeFile"},{"display_html":"singlePageFile :: IpePage r -> IpeFile r","name":"singlePageFile","module":"Ipe","link":"Ipe.html#v:singlePageFile"},{"display_html":"singlePageFromContent :: [IpeObject r] -> IpeFile r","name":"singlePageFromContent","module":"Ipe","link":"Ipe.html#v:singlePageFromContent"},{"display_html":"readIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readIpeFile","module":"Ipe","link":"Ipe.html#v:readIpeFile"},{"display_html":"readSinglePageFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r))","name":"readSinglePageFile","module":"Ipe","link":"Ipe.html#v:readSinglePageFile"},{"display_html":"readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r)","name":"readSinglePageFileThrow","module":"Ipe","link":"Ipe.html#v:readSinglePageFileThrow"},{"display_html":"readRawIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readRawIpeFile","module":"Ipe","link":"Ipe.html#v:readRawIpeFile"},{"display_html":"type ConversionError = Text","name":"ConversionError","module":"Ipe","link":"Ipe.html#t:ConversionError"},{"display_html":"readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAll","module":"Ipe","link":"Ipe.html#v:readAll"},{"display_html":"readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllDeep","module":"Ipe","link":"Ipe.html#v:readAllDeep"},{"display_html":"readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllFrom","module":"Ipe","link":"Ipe.html#v:readAllFrom"},{"display_html":"writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFile","module":"Ipe","link":"Ipe.html#v:writeIpeFile"},{"display_html":"writeIpeFile' :: IpeWrite t => t -> OsPath -> IO ()","name":"writeIpeFile'","module":"Ipe","link":"Ipe.html#v:writeIpeFile-39-"},{"display_html":"writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO ()","name":"writeIpePage","module":"Ipe","link":"Ipe.html#v:writeIpePage"},{"display_html":"toIpeXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeXML","module":"Ipe","link":"Ipe.html#v:toIpeXML"},{"display_html":"printAsIpeSelection :: IpeWrite t => t -> IO ()","name":"printAsIpeSelection","module":"Ipe","link":"Ipe.html#v:printAsIpeSelection"},{"display_html":"toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeSelectionXML","module":"Ipe","link":"Ipe.html#v:toIpeSelectionXML"},{"display_html":"data IpePage r = IpePage [LayerName] [View] [IpeObject r]","name":"IpePage IpePage","module":"Ipe","link":"Ipe.html#t:IpePage"},{"display_html":"layers :: forall r f. Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r)","name":"layers","module":"Ipe","link":"Ipe.html#v:layers"},{"display_html":"views :: forall r f. Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r)","name":"views","module":"Ipe","link":"Ipe.html#v:views"},{"display_html":"content :: forall r r' f. Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r')","name":"content","module":"Ipe","link":"Ipe.html#v:content"},{"display_html":"emptyPage :: IpePage r","name":"emptyPage","module":"Ipe","link":"Ipe.html#v:emptyPage"},{"display_html":"fromContent :: [IpeObject r] -> IpePage r","name":"fromContent","module":"Ipe","link":"Ipe.html#v:fromContent"},{"display_html":"onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r)","name":"onLayer","module":"Ipe","link":"Ipe.html#v:onLayer"},{"display_html":"contentInView :: Word -> Getter (IpePage r) [IpeObject r]","name":"contentInView","module":"Ipe","link":"Ipe.html#v:contentInView"},{"display_html":"withDefaults :: IpePage r -> IpePage r","name":"withDefaults","module":"Ipe","link":"Ipe.html#v:withDefaults"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe","link":"Ipe.html#t:IpeObject"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe","link":"Ipe.html#v:_IpePath"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe","link":"Ipe.html#v:_IpeUse"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe","link":"Ipe.html#v:_IpeGroup"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe","link":"Ipe.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe","link":"Ipe.html#v:_IpeMiniPage"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe","link":"Ipe.html#v:_IpeImage"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe","link":"Ipe.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe","link":"Ipe.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe","link":"Ipe.html#t:ToObject"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe","link":"Ipe.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe","link":"Ipe.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe","link":"Ipe.html#t:PathSegment"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe","link":"Ipe.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe","link":"Ipe.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe","link":"Ipe.html#v:symbolName"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe","link":"Ipe.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe","link":"Ipe.html#v:groupItems"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe","link":"Ipe.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe","link":"Ipe.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe","link":"Ipe.html#v:width"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe","link":"Ipe.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe","link":"Ipe.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe","link":"Ipe.html#v:rect"},{"display_html":"type IpeBitmap = Text","name":"IpeBitmap","module":"Ipe","link":"Ipe.html#t:IpeBitmap"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe","link":"Ipe.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe","link":"Ipe.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe","link":"Ipe.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe","link":"Ipe.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260257 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe","link":"Ipe.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe","link":"Ipe.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe","link":"Ipe.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe","link":"Ipe.html#v:commonAttributes"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe","link":"Ipe.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe","link":"Ipe.html#v:layerName"},{"display_html":"data View = View [LayerName] LayerName","name":"View View","module":"Ipe","link":"Ipe.html#t:View"},{"display_html":"layerNames :: Lens' View [LayerName]","name":"layerNames","module":"Ipe","link":"Ipe.html#v:layerNames"},{"display_html":"activeLayer :: Lens' View LayerName","name":"activeLayer","module":"Ipe","link":"Ipe.html#v:activeLayer"},{"display_html":"data IpeStyle = IpeStyle (Maybe Text) (Node Text Text)","name":"IpeStyle IpeStyle","module":"Ipe","link":"Ipe.html#t:IpeStyle"},{"display_html":"styleName :: Lens' IpeStyle (Maybe Text)","name":"styleName","module":"Ipe","link":"Ipe.html#v:styleName"},{"display_html":"styleData :: Lens' IpeStyle (Node Text Text)","name":"styleData","module":"Ipe","link":"Ipe.html#v:styleData"},{"display_html":"basicIpeStyle :: IpeStyle","name":"basicIpeStyle","module":"Ipe","link":"Ipe.html#v:basicIpeStyle"},{"display_html":"opacitiesStyle :: IpeStyle","name":"opacitiesStyle","module":"Ipe","link":"Ipe.html#v:opacitiesStyle"},{"display_html":"readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle)","name":"readIpeStylesheet","module":"Ipe","link":"Ipe.html#v:readIpeStylesheet"},{"display_html":"addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r","name":"addStyleSheet","module":"Ipe","link":"Ipe.html#v:addStyleSheet"},{"display_html":"addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r)","name":"addStyleSheetFrom","module":"Ipe","link":"Ipe.html#v:addStyleSheetFrom"},{"display_html":"data IpePreamble = IpePreamble (Maybe Text) Text","name":"IpePreamble IpePreamble","module":"Ipe","link":"Ipe.html#t:IpePreamble"},{"display_html":"encoding :: Lens' IpePreamble (Maybe Text)","name":"encoding","module":"Ipe","link":"Ipe.html#v:encoding"},{"display_html":"preambleData :: Lens' IpePreamble Text","name":"preambleData","module":"Ipe","link":"Ipe.html#v:preambleData"},{"display_html":"class IpeRead t where","name":"IpeRead ipeRead","module":"Ipe","link":"Ipe.html#t:IpeRead"},{"display_html":"_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r))","name":"_asPoint","module":"Ipe","link":"Ipe.html#v:_asPoint"},{"display_html":"_asLineSegment :: forall r p f. (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asLineSegment","module":"Ipe","link":"Ipe.html#v:_asLineSegment"},{"display_html":"_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asClosedLineSegment","module":"Ipe","link":"Ipe.html#v:_asClosedLineSegment"},{"display_html":"_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r))","name":"_asRectangle","module":"Ipe","link":"Ipe.html#v:_asRectangle"},{"display_html":"_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asTriangle","module":"Ipe","link":"Ipe.html#v:_asTriangle"},{"display_html":"_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolyLine","module":"Ipe","link":"Ipe.html#v:_asPolyLine"},{"display_html":"_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asSimplePolygon","module":"Ipe","link":"Ipe.html#v:_asSimplePolygon"},{"display_html":"_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r))","name":"_asConvexPolygon","module":"Ipe","link":"Ipe.html#v:_asConvexPolygon"},{"display_html":"_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r)","name":"_withAttrs","module":"Ipe","link":"Ipe.html#v:_withAttrs"},{"display_html":"class HasDefaultFromIpe g where","name":"HasDefaultFromIpe DefaultFromIpe defaultFromIpe","module":"Ipe","link":"Ipe.html#t:HasDefaultFromIpe"},{"display_html":"class IpeWrite t where","name":"IpeWrite ipeWrite","module":"Ipe","link":"Ipe.html#t:IpeWrite"},{"display_html":"class IpeWriteText t where","name":"IpeWriteText ipeWriteText","module":"Ipe","link":"Ipe.html#t:IpeWriteText"},{"display_html":"module Ipe.IpeOut","name":"","module":"Ipe","link":""},{"display_html":"module Ipe.Attributes","name":"","module":"Ipe","link":""},{"display_html":"module Ipe.Value","name":"","module":"Ipe","link":""},{"display_html":"newtype IpeColor r = IpeColor (IpeValue (RGB r))","name":"IpeColor IpeColor","module":"Ipe","link":"Ipe.html#t:IpeColor"},{"display_html":"named :: Text -> IpeColor r","name":"named","module":"Ipe","link":"Ipe.html#v:named"}] \ No newline at end of file +[{"display_html":"ipeRenderWith :: Options -> FileType -> OsPath -> OsPath -> IO ()","name":"ipeRenderWith","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#v:ipeRenderWith"},{"display_html":"ipeRender :: FileType -> OsPath -> OsPath -> IO ()","name":"ipeRender","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#v:ipeRender"},{"display_html":"data FileType","name":"FileType SVG PDF PNG EPS","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#t:FileType"},{"display_html":"data Options = Options {}","name":"Options crop viewNumber pageNumber transparent resolution Options","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#t:Options"},{"display_html":"defaultOptions :: Options","name":"defaultOptions","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#v:defaultOptions"},{"display_html":"data Background","name":"Background OpaqueBackground TransparentBackground","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#t:Background"},{"display_html":"data Crop","name":"Crop Crop NoCrop","module":"Ipe.IpeRender","link":"Ipe-IpeRender.html#t:Crop"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe.Layer","link":"Ipe-Layer.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe.Layer","link":"Ipe-Layer.html#v:layerName"},{"display_html":"literally :: String -> Q Exp","name":"literally","module":"Ipe.Literal","link":"Ipe-Literal.html#v:literally"},{"display_html":"lit :: QuasiQuoter","name":"lit","module":"Ipe.Literal","link":"Ipe-Literal.html#v:lit"},{"display_html":"litFile :: QuasiQuoter","name":"litFile","module":"Ipe.Literal","link":"Ipe-Literal.html#v:litFile"},{"display_html":"xmlLiteral :: String -> Node Text Text","name":"xmlLiteral","module":"Ipe.Literal","link":"Ipe-Literal.html#v:xmlLiteral"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Path","link":"Ipe-Path.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Path","link":"Ipe-Path.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Path","link":"Ipe-Path.html#t:PathSegment"},{"display_html":"_PolyLineSegment :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_PolyLineSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_PolyLineSegment"},{"display_html":"_PolygonPath :: forall r p f. (Choice p, Applicative f) => p (Orientation, SimplePolygon (Point 2 r)) (f (Orientation, SimplePolygon (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_PolygonPath","module":"Ipe.Path","link":"Ipe-Path.html#v:_PolygonPath"},{"display_html":"_CubicBezierSegment :: forall r p f. (Choice p, Applicative f) => p (CubicBezier (Point 2 r)) (f (CubicBezier (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_CubicBezierSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_CubicBezierSegment"},{"display_html":"_QuadraticBezierSegment :: forall r p f. (Choice p, Applicative f) => p (QuadraticBezier (Point 2 r)) (f (QuadraticBezier (Point 2 r))) -> p (PathSegment r) (f (PathSegment r))","name":"_QuadraticBezierSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_QuadraticBezierSegment"},{"display_html":"_EllipseSegment :: forall r p f. (Choice p, Applicative f) => p (Ellipse r) (f (Ellipse r)) -> p (PathSegment r) (f (PathSegment r))","name":"_EllipseSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_EllipseSegment"},{"display_html":"_ArcSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_ArcSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_ArcSegment"},{"display_html":"_SplineSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_SplineSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_SplineSegment"},{"display_html":"_ClosedSplineSegment :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (PathSegment r) (f (PathSegment r))","name":"_ClosedSplineSegment","module":"Ipe.Path","link":"Ipe-Path.html#v:_ClosedSplineSegment"},{"display_html":"data Orientation","name":"Orientation Reversed AsIs","module":"Ipe.Path","link":"Ipe-Path.html#t:Orientation"},{"display_html":"data Operation r","name":"Operation Ellipse MoveTo LineTo ArcTo Spline ClosedSpline ClosePath CurveTo QCurveTo","module":"Ipe.Path","link":"Ipe-Path.html#t:Operation"},{"display_html":"_MoveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_MoveTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_MoveTo"},{"display_html":"_LineTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_LineTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_LineTo"},{"display_html":"_CurveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r, Point 2 r, Point 2 r) (f (Point 2 r, Point 2 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_CurveTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_CurveTo"},{"display_html":"_QCurveTo :: forall r p f. (Choice p, Applicative f) => p (Point 2 r, Point 2 r) (f (Point 2 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_QCurveTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_QCurveTo"},{"display_html":"_Ellipse :: forall r p f. (Choice p, Applicative f) => p (Matrix 3 3 r) (f (Matrix 3 3 r)) -> p (Operation r) (f (Operation r))","name":"_Ellipse","module":"Ipe.Path","link":"Ipe-Path.html#v:_Ellipse"},{"display_html":"_ArcTo :: forall r p f. (Choice p, Applicative f) => p (Matrix 3 3 r, Point 2 r) (f (Matrix 3 3 r, Point 2 r)) -> p (Operation r) (f (Operation r))","name":"_ArcTo","module":"Ipe.Path","link":"Ipe-Path.html#v:_ArcTo"},{"display_html":"_Spline :: forall r p f. (Choice p, Applicative f) => p [Point 2 r] (f [Point 2 r]) -> p (Operation r) (f (Operation r))","name":"_Spline","module":"Ipe.Path","link":"Ipe-Path.html#v:_Spline"},{"display_html":"_ClosedSpline :: forall r p f. (Choice p, Applicative f) => p [Point 2 r] (f [Point 2 r]) -> p (Operation r) (f (Operation r))","name":"_ClosedSpline","module":"Ipe.Path","link":"Ipe-Path.html#v:_ClosedSpline"},{"display_html":"_ClosePath :: forall r p f. (Choice p, Applicative f) => p () (f ()) -> p (Operation r) (f (Operation r))","name":"_ClosePath","module":"Ipe.Path","link":"Ipe-Path.html#v:_ClosePath"},{"display_html":"class Fractional r => Coordinate r where","name":"Coordinate fromSeq $dmfromSeq","module":"Ipe.PathParser","link":"Ipe-PathParser.html#t:Coordinate"},{"display_html":"readCoordinate :: Coordinate r => Text -> Either Text r","name":"readCoordinate","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readCoordinate"},{"display_html":"readPoint :: Coordinate r => Text -> Either Text (Point 2 r)","name":"readPoint","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readPoint"},{"display_html":"readMatrix :: Coordinate r => Text -> Either Text (Matrix 3 3 r)","name":"readMatrix","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readMatrix"},{"display_html":"readRectangle :: Coordinate r => Text -> Either Text (Rectangle (Point 2 r))","name":"readRectangle","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readRectangle"},{"display_html":"runParser :: Parser a -> Text -> Either Text a","name":"runParser","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:runParser"},{"display_html":"readPathOperations :: Coordinate r => Text -> Either Text [Operation r]","name":"readPathOperations","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:readPathOperations"},{"display_html":"pOperation :: Coordinate r => Parser (Operation r)","name":"pOperation","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:pOperation"},{"display_html":"pPoint :: Coordinate r => Parser (Point 2 r)","name":"pPoint","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:pPoint"},{"display_html":"pCoordinate :: Coordinate r => Parser r","name":"pCoordinate","module":"Ipe.PathParser","link":"Ipe-PathParser.html#v:pCoordinate"},{"display_html":"data IpeValue v","name":"IpeValue Valued Named","module":"Ipe.Value","link":"Ipe-Value.html#t:IpeValue"},{"display_html":"newtype IpeColor r = IpeColor (IpeValue (RGB r))","name":"IpeColor IpeColor","module":"Ipe.Color","link":"Ipe-Color.html#t:IpeColor"},{"display_html":"named :: Text -> IpeColor r","name":"named","module":"Ipe.Color","link":"Ipe-Color.html#v:named"},{"display_html":"basicNamedColors :: [IpeColor r]","name":"basicNamedColors","module":"Ipe.Color","link":"Ipe-Color.html#v:basicNamedColors"},{"display_html":"black :: IpeColor r","name":"black","module":"Ipe.Color","link":"Ipe-Color.html#v:black"},{"display_html":"white :: IpeColor r","name":"white","module":"Ipe.Color","link":"Ipe-Color.html#v:white"},{"display_html":"red :: IpeColor r","name":"red","module":"Ipe.Color","link":"Ipe-Color.html#v:red"},{"display_html":"green :: IpeColor r","name":"green","module":"Ipe.Color","link":"Ipe-Color.html#v:green"},{"display_html":"blue :: IpeColor r","name":"blue","module":"Ipe.Color","link":"Ipe-Color.html#v:blue"},{"display_html":"yellow :: IpeColor r","name":"yellow","module":"Ipe.Color","link":"Ipe-Color.html#v:yellow"},{"display_html":"orange :: IpeColor r","name":"orange","module":"Ipe.Color","link":"Ipe-Color.html#v:orange"},{"display_html":"gold :: IpeColor r","name":"gold","module":"Ipe.Color","link":"Ipe-Color.html#v:gold"},{"display_html":"purple :: IpeColor r","name":"purple","module":"Ipe.Color","link":"Ipe-Color.html#v:purple"},{"display_html":"gray :: IpeColor r","name":"gray","module":"Ipe.Color","link":"Ipe-Color.html#v:gray"},{"display_html":"brown :: IpeColor r","name":"brown","module":"Ipe.Color","link":"Ipe-Color.html#v:brown"},{"display_html":"navy :: IpeColor r","name":"navy","module":"Ipe.Color","link":"Ipe-Color.html#v:navy"},{"display_html":"pink :: IpeColor r","name":"pink","module":"Ipe.Color","link":"Ipe-Color.html#v:pink"},{"display_html":"seagreen :: IpeColor r","name":"seagreen","module":"Ipe.Color","link":"Ipe-Color.html#v:seagreen"},{"display_html":"turquoise :: IpeColor r","name":"turquoise","module":"Ipe.Color","link":"Ipe-Color.html#v:turquoise"},{"display_html":"violet :: IpeColor r","name":"violet","module":"Ipe.Color","link":"Ipe-Color.html#v:violet"},{"display_html":"darkblue :: IpeColor r","name":"darkblue","module":"Ipe.Color","link":"Ipe-Color.html#v:darkblue"},{"display_html":"darkcyan :: IpeColor r","name":"darkcyan","module":"Ipe.Color","link":"Ipe-Color.html#v:darkcyan"},{"display_html":"darkgray :: IpeColor r","name":"darkgray","module":"Ipe.Color","link":"Ipe-Color.html#v:darkgray"},{"display_html":"darkgreen :: IpeColor r","name":"darkgreen","module":"Ipe.Color","link":"Ipe-Color.html#v:darkgreen"},{"display_html":"darkmagenta :: IpeColor r","name":"darkmagenta","module":"Ipe.Color","link":"Ipe-Color.html#v:darkmagenta"},{"display_html":"darkorange :: IpeColor r","name":"darkorange","module":"Ipe.Color","link":"Ipe-Color.html#v:darkorange"},{"display_html":"darkred :: IpeColor r","name":"darkred","module":"Ipe.Color","link":"Ipe-Color.html#v:darkred"},{"display_html":"lightblue :: IpeColor r","name":"lightblue","module":"Ipe.Color","link":"Ipe-Color.html#v:lightblue"},{"display_html":"lightcyan :: IpeColor r","name":"lightcyan","module":"Ipe.Color","link":"Ipe-Color.html#v:lightcyan"},{"display_html":"lightgray :: IpeColor r","name":"lightgray","module":"Ipe.Color","link":"Ipe-Color.html#v:lightgray"},{"display_html":"lightgreen :: IpeColor r","name":"lightgreen","module":"Ipe.Color","link":"Ipe-Color.html#v:lightgreen"},{"display_html":"lightyellow :: IpeColor r","name":"lightyellow","module":"Ipe.Color","link":"Ipe-Color.html#v:lightyellow"},{"display_html":"data AttributeUniverse","name":"AttributeUniverse HAlign VAlign Height Gradient Tiling Opacity StrokeOpacity RArrow FillRule LineJoin LineCap Dash Pen Fill Stroke Transformations Pin Clip Layer Matrix Width Depth Style Size Arrow","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:AttributeUniverse"},{"display_html":"data SAttributeUniverse (a :: AttributeUniverse) where","name":"SAttributeUniverse SClip SStyle SHAlign SVAlign SDepth SHeight SWidth SGradient STiling SOpacity SStrokeOpacity SRArrow SArrow SFillRule SLineJoin SLineCap SDash SSize SPen SFill SStroke STransformations SPin SMatrix SLayer","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:SAttributeUniverse"},{"display_html":"type family ClipSym0 :: AttributeUniverse where ...","name":"ClipSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:ClipSym0"},{"display_html":"type family StyleSym0 :: AttributeUniverse where ...","name":"StyleSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:StyleSym0"},{"display_html":"type family HAlignSym0 :: AttributeUniverse where ...","name":"HAlignSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:HAlignSym0"},{"display_html":"type family VAlignSym0 :: AttributeUniverse where ...","name":"VAlignSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:VAlignSym0"},{"display_html":"type family DepthSym0 :: AttributeUniverse where ...","name":"DepthSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:DepthSym0"},{"display_html":"type family HeightSym0 :: AttributeUniverse where ...","name":"HeightSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:HeightSym0"},{"display_html":"type family WidthSym0 :: AttributeUniverse where ...","name":"WidthSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:WidthSym0"},{"display_html":"type family GradientSym0 :: AttributeUniverse where ...","name":"GradientSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:GradientSym0"},{"display_html":"type family TilingSym0 :: AttributeUniverse where ...","name":"TilingSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TilingSym0"},{"display_html":"type family OpacitySym0 :: AttributeUniverse where ...","name":"OpacitySym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:OpacitySym0"},{"display_html":"type family StrokeOpacitySym0 :: AttributeUniverse where ...","name":"StrokeOpacitySym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:StrokeOpacitySym0"},{"display_html":"type family RArrowSym0 :: AttributeUniverse where ...","name":"RArrowSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:RArrowSym0"},{"display_html":"type family ArrowSym0 :: AttributeUniverse where ...","name":"ArrowSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:ArrowSym0"},{"display_html":"type family FillRuleSym0 :: AttributeUniverse where ...","name":"FillRuleSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:FillRuleSym0"},{"display_html":"type family LineJoinSym0 :: AttributeUniverse where ...","name":"LineJoinSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:LineJoinSym0"},{"display_html":"type family LineCapSym0 :: AttributeUniverse where ...","name":"LineCapSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:LineCapSym0"},{"display_html":"type family DashSym0 :: AttributeUniverse where ...","name":"DashSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:DashSym0"},{"display_html":"type family SizeSym0 :: AttributeUniverse where ...","name":"SizeSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:SizeSym0"},{"display_html":"type family PenSym0 :: AttributeUniverse where ...","name":"PenSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:PenSym0"},{"display_html":"type family FillSym0 :: AttributeUniverse where ...","name":"FillSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:FillSym0"},{"display_html":"type family StrokeSym0 :: AttributeUniverse where ...","name":"StrokeSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:StrokeSym0"},{"display_html":"type family TransformationsSym0 :: AttributeUniverse where ...","name":"TransformationsSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TransformationsSym0"},{"display_html":"type family PinSym0 :: AttributeUniverse where ...","name":"PinSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:PinSym0"},{"display_html":"type family MatrixSym0 :: AttributeUniverse where ...","name":"MatrixSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:MatrixSym0"},{"display_html":"type family LayerSym0 :: AttributeUniverse where ...","name":"LayerSym0","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:LayerSym0"},{"display_html":"type CommonAttributes = '['Layer, 'Matrix, 'Pin, 'Transformations]","name":"CommonAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:CommonAttributes"},{"display_html":"type TextAttributes = CommonAttributes ++ '['Stroke, 'Size, 'Width, 'Height, 'Depth, 'VAlign, 'HAlign, 'Style, 'Opacity]","name":"TextAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TextAttributes"},{"display_html":"type TextLabelAttributes = TextAttributes","name":"TextLabelAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TextLabelAttributes"},{"display_html":"type MiniPageAttributes = TextAttributes","name":"MiniPageAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:MiniPageAttributes"},{"display_html":"type ImageAttributes = CommonAttributes","name":"ImageAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:ImageAttributes"},{"display_html":"type SymbolAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Pen, 'Size]","name":"SymbolAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:SymbolAttributes"},{"display_html":"type PathAttributes = CommonAttributes ++ '['Stroke, 'Fill, 'Dash, 'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow, 'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]","name":"PathAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:PathAttributes"},{"display_html":"type GroupAttributes = CommonAttributes ++ '['Clip]","name":"GroupAttributes","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:GroupAttributes"},{"display_html":"newtype Attr (f :: TyFun u Type -> Type) (label :: u) = GAttr {}","name":"Attr _getAttr GAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:Attr"},{"display_html":"getAttr :: forall u1 (f1 :: TyFun u1 Type -> Type) (label1 :: u1) u2 (f2 :: TyFun u2 Type -> Type) (label2 :: u2) p f3. (Profunctor p, Functor f3) => p (Maybe (Apply f1 label1)) (f3 (Maybe (Apply f2 label2))) -> p (Attr f1 label1) (f3 (Attr f2 label2))","name":"getAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:getAttr"},{"display_html":"pattern Attr :: Apply f label -> Attr f label","name":"Attr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:Attr"},{"display_html":"pattern NoAttr :: Attr f label","name":"NoAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:NoAttr"},{"display_html":"traverseAttr :: forall {u} h (f :: u ~> Type) (label :: u) (g :: u ~> Type). Applicative h => (Apply f label -> h (Apply g label)) -> Attr f label -> h (Attr g label)","name":"traverseAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:traverseAttr"},{"display_html":"pureAttr :: forall {u} h (f :: u ~> Type) (a :: u) (g :: u ~> Type). (Applicative h, Apply f a ~ Apply g a) => Attr f a -> h (Attr g a)","name":"pureAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:pureAttr"},{"display_html":"newtype Attributes (f :: TyFun u Type -> Type) (ats :: [u]) = Attrs (Rec (Attr f) ats)","name":"Attributes Attrs","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:Attributes"},{"display_html":"unAttrs :: forall {u1} {u2} (f1 :: TyFun u1 Type -> Type) (ats :: [u1]) (f' :: TyFun u2 Type -> Type) (ats' :: [u2]) f2. Functor f2 => (Rec (Attr f1) ats -> f2 (Rec (Attr f') ats')) -> Attributes f1 ats -> f2 (Attributes f' ats')","name":"unAttrs","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:unAttrs"},{"display_html":"traverseAttrs :: forall {u} h (f :: TyFun u Type -> Type) (g :: TyFun u Type -> Type) (ats :: [u]). Applicative h => (forall (label :: u). Attr f label -> h (Attr g label)) -> Attributes f ats -> h (Attributes g ats)","name":"traverseAttrs","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:traverseAttrs"},{"display_html":"zipRecsWith :: forall {u} f g h (as :: [u]). (forall (a :: u). f a -> g a -> h a) -> Rec f as -> Rec g as -> Rec h as","name":"zipRecsWith","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:zipRecsWith"},{"display_html":"ixAttr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). at ats => proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))","name":"ixAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:ixAttr"},{"display_html":"_Attr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). (at ats, RecApplicative ats) => proxy at -> Prism' (Attributes f ats) (Apply f at)","name":"_Attr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:_Attr"},{"display_html":"lookupAttr :: forall {k1} (at :: k1) (ats :: [k1]) proxy (f :: TyFun k1 Type -> Type). at ats => proxy at -> Attributes f ats -> Maybe (Apply f at)","name":"lookupAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:lookupAttr"},{"display_html":"setAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: u ~> Type). at ats => proxy at -> Apply f at -> Attributes f ats -> Attributes f ats","name":"setAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:setAttr"},{"display_html":"takeAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: TyFun u Type -> Type). at ats => proxy at -> Attributes f ats -> (Maybe (Apply f at), Attributes f ats)","name":"takeAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:takeAttr"},{"display_html":"unSetAttr :: forall {u} proxy (at :: u) (ats :: [u]) (f :: TyFun u Type -> Type). at ats => proxy at -> Attributes f ats -> Attributes f ats","name":"unSetAttr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:unSetAttr"},{"display_html":"attr :: forall {u} (at :: u) (ats :: [u]) proxy (f :: u ~> Type). (at ats, RecApplicative ats) => proxy at -> Apply f at -> Attributes f ats","name":"attr","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:attr"},{"display_html":"data PinType","name":"PinType Vertical Horizontal Yes No","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:PinType"},{"display_html":"data TransformationTypes","name":"TransformationTypes Translations Rigid Affine","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TransformationTypes"},{"display_html":"data HorizontalAlignment","name":"HorizontalAlignment AlignRight AlignHCenter AlignLeft","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:HorizontalAlignment"},{"display_html":"data VerticalAlignment","name":"VerticalAlignment AlignBaseline AlignBottom AlignVCenter AlignTop","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:VerticalAlignment"},{"display_html":"type TeXStyle = Text","name":"TeXStyle","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TeXStyle"},{"display_html":"type TextSizeUnit (r :: k) = r","name":"TextSizeUnit","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:TextSizeUnit"},{"display_html":"newtype IpeSize r = IpeSize (IpeValue r)","name":"IpeSize IpeSize","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeSize"},{"display_html":"newtype IpePen r = IpePen (IpeValue r)","name":"IpePen IpePen","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpePen"},{"display_html":"data IpeDash r","name":"IpeDash DashPattern DashNamed","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeDash"},{"display_html":"data FillType","name":"FillType EOFill Wind","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:FillType"},{"display_html":"type IpeOpacity = Text","name":"IpeOpacity","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeOpacity"},{"display_html":"type IpeTiling = Text","name":"IpeTiling","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeTiling"},{"display_html":"type IpeGradient = Text","name":"IpeGradient","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeGradient"},{"display_html":"data IpeArrow r = IpeArrow {}","name":"IpeArrow _arrowSize _arrowName IpeArrow","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeArrow"},{"display_html":"arrowName :: forall r f. Functor f => (Text -> f Text) -> IpeArrow r -> f (IpeArrow r)","name":"arrowName","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:arrowName"},{"display_html":"arrowSize :: forall r1 r2 f. Functor f => (IpeSize r1 -> f (IpeSize r2)) -> IpeArrow r1 -> f (IpeArrow r2)","name":"arrowSize","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:arrowSize"},{"display_html":"normalArrow :: IpeArrow r","name":"normalArrow","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:normalArrow"},{"display_html":"class IpeAttrName (a :: AttributeUniverse) where","name":"IpeAttrName attrName","module":"Ipe.Attributes","link":"Ipe-Attributes.html#t:IpeAttrName"},{"display_html":"writeAttrNames :: forall (rs :: [AttributeUniverse]) (f :: AttributeUniverse -> Type). AllConstrained IpeAttrName rs => Rec f rs -> Rec (Const Text :: AttributeUniverse -> Type) rs","name":"writeAttrNames","module":"Ipe.Attributes","link":"Ipe-Attributes.html#v:writeAttrNames"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe.Content","link":"Ipe-Content.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe.Content","link":"Ipe-Content.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe.Content","link":"Ipe-Content.html#v:rect"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe.Content","link":"Ipe-Content.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe.Content","link":"Ipe-Content.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe.Content","link":"Ipe-Content.html#v:width"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe.Content","link":"Ipe-Content.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe.Content","link":"Ipe-Content.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe.Content","link":"Ipe-Content.html#v:symbolName"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Content","link":"Ipe-Content.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Content","link":"Ipe-Content.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Content","link":"Ipe-Content.html#t:PathSegment"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe.Content","link":"Ipe-Content.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe.Content","link":"Ipe-Content.html#v:groupItems"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe.Content","link":"Ipe-Content.html#t:IpeObject"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeGroup"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeImage"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeMiniPage"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpeUse"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe.Content","link":"Ipe-Content.html#v:_IpePath"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe.Content","link":"Ipe-Content.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe.Content","link":"Ipe-Content.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe.Content","link":"Ipe-Content.html#t:ToObject"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe.Content","link":"Ipe-Content.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe.Content","link":"Ipe-Content.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe.Content","link":"Ipe-Content.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe.Content","link":"Ipe-Content.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260260 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe.Content","link":"Ipe-Content.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe.Content","link":"Ipe-Content.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe.Content","link":"Ipe-Content.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe.Content","link":"Ipe-Content.html#v:commonAttributes"},{"display_html":"flattenGroups :: [IpeObject r] -> [IpeObject r]","name":"flattenGroups","module":"Ipe.Content","link":"Ipe-Content.html#v:flattenGroups"},{"display_html":"data IpeFile r = IpeFile (Maybe IpePreamble) [IpeStyle] (NonEmpty (IpePage r))","name":"IpeFile IpeFile","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeFile"},{"display_html":"preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r)","name":"preamble","module":"Ipe.Types","link":"Ipe-Types.html#v:preamble"},{"display_html":"styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r)","name":"styles","module":"Ipe.Types","link":"Ipe-Types.html#v:styles"},{"display_html":"pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r')","name":"pages","module":"Ipe.Types","link":"Ipe-Types.html#v:pages"},{"display_html":"ipeFile :: NonEmpty (IpePage r) -> IpeFile r","name":"ipeFile","module":"Ipe.Types","link":"Ipe-Types.html#v:ipeFile"},{"display_html":"singlePageFile :: IpePage r -> IpeFile r","name":"singlePageFile","module":"Ipe.Types","link":"Ipe-Types.html#v:singlePageFile"},{"display_html":"singlePageFromContent :: [IpeObject r] -> IpeFile r","name":"singlePageFromContent","module":"Ipe.Types","link":"Ipe-Types.html#v:singlePageFromContent"},{"display_html":"data IpePage r = IpePage [LayerName] [View] [IpeObject r]","name":"IpePage IpePage","module":"Ipe.Types","link":"Ipe-Types.html#t:IpePage"},{"display_html":"layers :: forall r f. Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r)","name":"layers","module":"Ipe.Types","link":"Ipe-Types.html#v:layers"},{"display_html":"views :: forall r f. Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r)","name":"views","module":"Ipe.Types","link":"Ipe-Types.html#v:views"},{"display_html":"content :: forall r r' f. Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r')","name":"content","module":"Ipe.Types","link":"Ipe-Types.html#v:content"},{"display_html":"emptyPage :: IpePage r","name":"emptyPage","module":"Ipe.Types","link":"Ipe-Types.html#v:emptyPage"},{"display_html":"fromContent :: [IpeObject r] -> IpePage r","name":"fromContent","module":"Ipe.Types","link":"Ipe-Types.html#v:fromContent"},{"display_html":"onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r)","name":"onLayer","module":"Ipe.Types","link":"Ipe-Types.html#v:onLayer"},{"display_html":"contentInView :: Word -> Getter (IpePage r) [IpeObject r]","name":"contentInView","module":"Ipe.Types","link":"Ipe-Types.html#v:contentInView"},{"display_html":"withDefaults :: IpePage r -> IpePage r","name":"withDefaults","module":"Ipe.Types","link":"Ipe-Types.html#v:withDefaults"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeObject"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeGroup"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeImage"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeMiniPage"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpeUse"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe.Types","link":"Ipe-Types.html#v:_IpePath"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe.Types","link":"Ipe-Types.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe.Types","link":"Ipe-Types.html#t:ToObject"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe.Types","link":"Ipe-Types.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe.Types","link":"Ipe-Types.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe.Types","link":"Ipe-Types.html#t:PathSegment"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe.Types","link":"Ipe-Types.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe.Types","link":"Ipe-Types.html#v:symbolName"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe.Types","link":"Ipe-Types.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe.Types","link":"Ipe-Types.html#v:groupItems"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe.Types","link":"Ipe-Types.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe.Types","link":"Ipe-Types.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe.Types","link":"Ipe-Types.html#v:width"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe.Types","link":"Ipe-Types.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe.Types","link":"Ipe-Types.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe.Types","link":"Ipe-Types.html#v:rect"},{"display_html":"type IpeBitmap = Text","name":"IpeBitmap","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeBitmap"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe.Types","link":"Ipe-Types.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe.Types","link":"Ipe-Types.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe.Types","link":"Ipe-Types.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260260 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe.Types","link":"Ipe-Types.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe.Types","link":"Ipe-Types.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe.Types","link":"Ipe-Types.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe.Types","link":"Ipe-Types.html#v:commonAttributes"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe.Types","link":"Ipe-Types.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe.Types","link":"Ipe-Types.html#v:layerName"},{"display_html":"data View = View [LayerName] LayerName","name":"View View","module":"Ipe.Types","link":"Ipe-Types.html#t:View"},{"display_html":"layerNames :: Lens' View [LayerName]","name":"layerNames","module":"Ipe.Types","link":"Ipe-Types.html#v:layerNames"},{"display_html":"activeLayer :: Lens' View LayerName","name":"activeLayer","module":"Ipe.Types","link":"Ipe-Types.html#v:activeLayer"},{"display_html":"addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r","name":"addStyleSheet","module":"Ipe.Types","link":"Ipe-Types.html#v:addStyleSheet"},{"display_html":"data IpeStyle = IpeStyle (Maybe Text) (Node Text Text)","name":"IpeStyle IpeStyle","module":"Ipe.Types","link":"Ipe-Types.html#t:IpeStyle"},{"display_html":"styleName :: Lens' IpeStyle (Maybe Text)","name":"styleName","module":"Ipe.Types","link":"Ipe-Types.html#v:styleName"},{"display_html":"styleData :: Lens' IpeStyle (Node Text Text)","name":"styleData","module":"Ipe.Types","link":"Ipe-Types.html#v:styleData"},{"display_html":"basicIpeStyle :: IpeStyle","name":"basicIpeStyle","module":"Ipe.Types","link":"Ipe-Types.html#v:basicIpeStyle"},{"display_html":"opacitiesStyle :: IpeStyle","name":"opacitiesStyle","module":"Ipe.Types","link":"Ipe-Types.html#v:opacitiesStyle"},{"display_html":"data IpePreamble = IpePreamble (Maybe Text) Text","name":"IpePreamble IpePreamble","module":"Ipe.Types","link":"Ipe-Types.html#t:IpePreamble"},{"display_html":"encoding :: Lens' IpePreamble (Maybe Text)","name":"encoding","module":"Ipe.Types","link":"Ipe-Types.html#v:encoding"},{"display_html":"preambleData :: Lens' IpePreamble Text","name":"preambleData","module":"Ipe.Types","link":"Ipe-Types.html#v:preambleData"},{"display_html":"applyMatrix' :: (IsTransformable (i r), 'Matrix AttributesOf i, Dimension (i r) ~ 2, r ~ NumType (i r)) => IpeObject' i r -> IpeObject' i r","name":"applyMatrix'","module":"Ipe.Matrix","link":"Ipe-Matrix.html#v:applyMatrix-39-"},{"display_html":"applyMatrix :: (Fractional r, Eq r) => IpeObject r -> IpeObject r","name":"applyMatrix","module":"Ipe.Matrix","link":"Ipe-Matrix.html#v:applyMatrix"},{"display_html":"applyMatrices :: (Fractional r, Eq r) => IpeFile r -> IpeFile r","name":"applyMatrices","module":"Ipe.Matrix","link":"Ipe-Matrix.html#v:applyMatrices"},{"display_html":"applyMatricesPage :: (Fractional r, Eq r) => IpePage r -> IpePage r","name":"applyMatricesPage","module":"Ipe.Matrix","link":"Ipe-Matrix.html#v:applyMatricesPage"},{"display_html":"readRawIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readRawIpeFile","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readRawIpeFile"},{"display_html":"readIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readIpeFile","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readIpeFile"},{"display_html":"readSinglePageFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r))","name":"readSinglePageFile","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readSinglePageFile"},{"display_html":"readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r)","name":"readSinglePageFileThrow","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readSinglePageFileThrow"},{"display_html":"type ConversionError = Text","name":"ConversionError","module":"Ipe.Reader","link":"Ipe-Reader.html#t:ConversionError"},{"display_html":"readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle)","name":"readIpeStylesheet","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readIpeStylesheet"},{"display_html":"addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r)","name":"addStyleSheetFrom","module":"Ipe.Reader","link":"Ipe-Reader.html#v:addStyleSheetFrom"},{"display_html":"fromIpeXML :: forall {k} t (r :: k). IpeRead (t r) => ByteString -> Either ConversionError (t r)","name":"fromIpeXML","module":"Ipe.Reader","link":"Ipe-Reader.html#v:fromIpeXML"},{"display_html":"readXML :: ByteString -> Either ConversionError (Node Text Text)","name":"readXML","module":"Ipe.Reader","link":"Ipe-Reader.html#v:readXML"},{"display_html":"class IpeReadText t where","name":"IpeReadText ipeReadText","module":"Ipe.Reader","link":"Ipe-Reader.html#t:IpeReadText"},{"display_html":"class IpeRead t where","name":"IpeRead ipeRead","module":"Ipe.Reader","link":"Ipe-Reader.html#t:IpeRead"},{"display_html":"class IpeReadAttr t where","name":"IpeReadAttr ipeReadAttr","module":"Ipe.Reader","link":"Ipe-Reader.html#t:IpeReadAttr"},{"display_html":"ipeReadTextWith :: (Text -> Either t v) -> Text -> Either ConversionError (IpeValue v)","name":"ipeReadTextWith","module":"Ipe.Reader","link":"Ipe-Reader.html#v:ipeReadTextWith"},{"display_html":"ipeReadObject :: forall i r (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]) proxy. (IpeRead (i r), f ~ AttrMapSym1 r, ats ~ AttributesOf i, RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => Proxy i -> proxy r -> Node Text Text -> Either ConversionError (i r :+ IpeAttributes i r)","name":"ipeReadObject","module":"Ipe.Reader","link":"Ipe-Reader.html#v:ipeReadObject"},{"display_html":"ipeReadAttrs :: forall proxy proxy' (i :: Type -> Type) r (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]). (f ~ AttrMapSym1 r, ats ~ AttributesOf i, ReifyConstraint IpeReadAttr (Attr f) ats, RecApplicative ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => proxy i -> proxy' r -> Node Text Text -> Either ConversionError (IpeAttributes i r)","name":"ipeReadAttrs","module":"Ipe.Reader","link":"Ipe-Reader.html#v:ipeReadAttrs"},{"display_html":"ipeReadRec :: forall (f :: TyFun AttributeUniverse Type -> Type) (ats :: [AttributeUniverse]). (RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, RecAll (Attr f) ats IpeReadAttr, AllConstrained IpeAttrName ats) => Proxy f -> Proxy ats -> Node Text Text -> Either ConversionError (Rec (Attr f) ats)","name":"ipeReadRec","module":"Ipe.Reader","link":"Ipe-Reader.html#v:ipeReadRec"},{"display_html":"class Fractional r => Coordinate r where","name":"Coordinate fromSeq $dmfromSeq","module":"Ipe.Reader","link":"Ipe-Reader.html#t:Coordinate"},{"display_html":"_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r))","name":"_asPoint","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asPoint"},{"display_html":"_asLineSegment :: forall r p f. (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asLineSegment","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asLineSegment"},{"display_html":"_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asClosedLineSegment","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asClosedLineSegment"},{"display_html":"_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r))","name":"_asRectangle","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asRectangle"},{"display_html":"_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asTriangle","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asTriangle"},{"display_html":"_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolyLine","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asPolyLine"},{"display_html":"_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asSimplePolygon","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asSimplePolygon"},{"display_html":"_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r))","name":"_asConvexPolygon","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asConvexPolygon"},{"display_html":"_asPolygonalDomain :: forall r p f. (Choice p, Applicative f) => p (PolygonalDomain (Point 2 r)) (f (PolygonalDomain (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolygonalDomain","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_asPolygonalDomain"},{"display_html":"toPolygonalDomain :: Path r -> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r))","name":"toPolygonalDomain","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:toPolygonalDomain"},{"display_html":"_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r)","name":"_withAttrs","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:_withAttrs"},{"display_html":"class HasDefaultFromIpe g where","name":"HasDefaultFromIpe DefaultFromIpe defaultFromIpe","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#t:HasDefaultFromIpe"},{"display_html":"readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAll","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:readAll"},{"display_html":"readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllDeep","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:readAllDeep"},{"display_html":"readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllFrom","module":"Ipe.FromIpe","link":"Ipe-FromIpe.html#v:readAllFrom"},{"display_html":"type IpeOut g (i :: Type -> Type) r = g -> IpeObject' i r","name":"IpeOut","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#t:IpeOut"},{"display_html":"type IpeOut' (f :: Type -> Type) g (i :: Type -> Type) r = g -> f (IpeObject' i r)","name":"IpeOut'","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#t:IpeOut-39-"},{"display_html":"(!) :: IpeObject' i r -> IpeAttributes i r -> IpeObject' i r","name":"!","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:-33-"},{"display_html":"iO :: ToObject i => IpeObject' i r -> IpeObject r","name":"iO","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:iO"},{"display_html":"iO'' :: forall g r (i :: Type -> Type). (HasDefaultIpeOut g, NumType g ~ r, DefaultIpeOut g ~ i, ToObject i) => g -> IpeAttributes i r -> IpeObject r","name":"iO''","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:iO-39--39-"},{"display_html":"iO' :: HasDefaultIpeOut g => g -> IpeObject (NumType g)","name":"iO'","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:iO-39-"},{"display_html":"class ToObject (DefaultIpeOut g) => HasDefaultIpeOut g where","name":"HasDefaultIpeOut defIO DefaultIpeOut","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#t:HasDefaultIpeOut"},{"display_html":"ipeMark :: Text -> IpeOut (Point 2 r) IpeSymbol r","name":"ipeMark","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeMark"},{"display_html":"ipeDiskMark :: IpeOut (Point 2 r) IpeSymbol r","name":"ipeDiskMark","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeDiskMark"},{"display_html":"defaultBox :: Num r => Rectangle (Point 2 r)","name":"defaultBox","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:defaultBox"},{"display_html":"ipeLine :: (Ord r, Fractional r, Show r) => IpeOut (LinePV 2 r) Path r","name":"ipeLine","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeLine"},{"display_html":"ipeLineIn :: (Ord r, Fractional r, Show r) => Rectangle (Point 2 r) -> IpeOut (LinePV 2 r) Path r","name":"ipeLineIn","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeLineIn"},{"display_html":"ipeHalfLine :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r","name":"ipeHalfLine","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeHalfLine"},{"display_html":"ipeRay :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r","name":"ipeRay","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeRay"},{"display_html":"ipeHalfLineIn :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => Rectangle point -> IpeOut (HalfLine point) Path r","name":"ipeHalfLineIn","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeHalfLineIn"},{"display_html":"ipeLineSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) => IpeOut lineSegment Path r","name":"ipeLineSegment","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeLineSegment"},{"display_html":"ipePolyLine :: IpeOut (PolyLine (Point 2 r)) Path r","name":"ipePolyLine","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipePolyLine"},{"display_html":"ipeEllipse :: IpeOut (Ellipse r) Path r","name":"ipeEllipse","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeEllipse"},{"display_html":"ipeCircle :: Radical r => IpeOut (Circle (Point 2 r)) Path r","name":"ipeCircle","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeCircle"},{"display_html":"ipeDisk :: Radical r => IpeOut (Disk (Point 2 r)) Path r","name":"ipeDisk","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeDisk"},{"display_html":"ipeBezier :: IpeOut (CubicBezier (Point 2 r)) Path r","name":"ipeBezier","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeBezier"},{"display_html":"path :: PathSegment r -> Path r","name":"path","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:path"},{"display_html":"pathSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) => lineSegment -> PathSegment r","name":"pathSegment","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:pathSegment"},{"display_html":"ipePolygon :: Polygon_ polygon point r => IpeOut polygon Path r","name":"ipePolygon","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipePolygon"},{"display_html":"toPolygonPathSegment :: (HasOuterBoundary polygon, Point_ point 2 r, Vertex polygon ~ point) => polygon -> PathSegment r","name":"toPolygonPathSegment","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:toPolygonPathSegment"},{"display_html":"ipeSimplePolygon :: IpeOut (SimplePolygon (Point 2 r)) Path r","name":"ipeSimplePolygon","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeSimplePolygon"},{"display_html":"ipeRectangle :: Num r => IpeOut (Rectangle (Point 2 r)) Path r","name":"ipeRectangle","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeRectangle"},{"display_html":"ipeGroup :: Foldable f => IpeOut (f (IpeObject r)) Group r","name":"ipeGroup","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeGroup"},{"display_html":"ipeLabel :: IpeOut (Text :+ Point 2 r) TextLabel r","name":"ipeLabel","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:ipeLabel"},{"display_html":"labelled :: (Show lbl, NumType g ~ r, ToObject i) => (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r","name":"labelled","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:labelled"},{"display_html":"labelledWith :: (Show lbl, NumType g ~ r, ToObject i) => IpeAttributes TextLabel r -> (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r","name":"labelledWith","module":"Ipe.IpeOut","link":"Ipe-IpeOut.html#v:labelledWith"},{"display_html":"writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFile","module":"Ipe.Writer","link":"Ipe-Writer.html#v:writeIpeFile"},{"display_html":"writeIpeFile' :: IpeWrite t => t -> OsPath -> IO ()","name":"writeIpeFile'","module":"Ipe.Writer","link":"Ipe-Writer.html#v:writeIpeFile-39-"},{"display_html":"writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO ()","name":"writeIpePage","module":"Ipe.Writer","link":"Ipe-Writer.html#v:writeIpePage"},{"display_html":"toIpeXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeXML","module":"Ipe.Writer","link":"Ipe-Writer.html#v:toIpeXML"},{"display_html":"printAsIpeSelection :: IpeWrite t => t -> IO ()","name":"printAsIpeSelection","module":"Ipe.Writer","link":"Ipe-Writer.html#v:printAsIpeSelection"},{"display_html":"toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeSelectionXML","module":"Ipe.Writer","link":"Ipe-Writer.html#v:toIpeSelectionXML"},{"display_html":"class IpeWrite t where","name":"IpeWrite ipeWrite","module":"Ipe.Writer","link":"Ipe-Writer.html#t:IpeWrite"},{"display_html":"class IpeWriteText t where","name":"IpeWriteText ipeWriteText","module":"Ipe.Writer","link":"Ipe-Writer.html#t:IpeWriteText"},{"display_html":"ipeWriteAttrs :: forall (rs :: [AttributeUniverse]) (f :: TyFun AttributeUniverse Type -> Type). (RecordToList rs, RMap rs, ReifyConstraint IpeWriteText (Attr f) rs, AllConstrained IpeAttrName rs, RecAll (Attr f) rs IpeWriteText) => Attributes f rs -> [(Text, Text)]","name":"ipeWriteAttrs","module":"Ipe.Writer","link":"Ipe-Writer.html#v:ipeWriteAttrs"},{"display_html":"writeAttrValues :: forall {u} (rs :: [u]) (f :: u -> Type). (RMap rs, ReifyConstraint IpeWriteText f rs, RecAll f rs IpeWriteText) => Rec f rs -> Rec (Const (Maybe Text) :: u -> Type) rs","name":"writeAttrValues","module":"Ipe.Writer","link":"Ipe-Writer.html#v:writeAttrValues"},{"display_html":"ipeToIpeWith :: Options -> FileType -> OsPath -> OsPath -> IO ()","name":"ipeToIpeWith","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#v:ipeToIpeWith"},{"display_html":"ipeToIpe :: FileType -> OsPath -> OsPath -> IO ()","name":"ipeToIpe","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#v:ipeToIpe"},{"display_html":"writeIpeFileAsPdf :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFileAsPdf","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#v:writeIpeFileAsPdf"},{"display_html":"data FileType","name":"FileType XML PDF","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:FileType"},{"display_html":"data Export","name":"Export RetainIpeInfo Export","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:Export"},{"display_html":"type PageNumber = Int","name":"PageNumber","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:PageNumber"},{"display_html":"type ViewNumber = Int","name":"ViewNumber","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:ViewNumber"},{"display_html":"data MarkedView","name":"MarkedView OnlyMarkedViews All","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:MarkedView"},{"display_html":"data NoZip","name":"NoZip NoZip Zip","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:NoZip"},{"display_html":"data PageRange","name":"PageRange EntireFile PageRange","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:PageRange"},{"display_html":"data Options = Options {}","name":"Options markedView nozip runLatex singleView pages export Options","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#t:Options"},{"display_html":"defaultOptions :: Options","name":"defaultOptions","module":"Ipe.IpeToIpe","link":"Ipe-IpeToIpe.html#v:defaultOptions"},{"display_html":"data IpeFile r = IpeFile (Maybe IpePreamble) [IpeStyle] (NonEmpty (IpePage r))","name":"IpeFile IpeFile","module":"Ipe","link":"Ipe.html#t:IpeFile"},{"display_html":"preamble :: forall r f. Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r)","name":"preamble","module":"Ipe","link":"Ipe.html#v:preamble"},{"display_html":"styles :: forall r f. Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r)","name":"styles","module":"Ipe","link":"Ipe.html#v:styles"},{"display_html":"pages :: forall r r' f. Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r')","name":"pages","module":"Ipe","link":"Ipe.html#v:pages"},{"display_html":"ipeFile :: NonEmpty (IpePage r) -> IpeFile r","name":"ipeFile","module":"Ipe","link":"Ipe.html#v:ipeFile"},{"display_html":"singlePageFile :: IpePage r -> IpeFile r","name":"singlePageFile","module":"Ipe","link":"Ipe.html#v:singlePageFile"},{"display_html":"singlePageFromContent :: [IpeObject r] -> IpeFile r","name":"singlePageFromContent","module":"Ipe","link":"Ipe.html#v:singlePageFromContent"},{"display_html":"readIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readIpeFile","module":"Ipe","link":"Ipe.html#v:readIpeFile"},{"display_html":"readSinglePageFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r))","name":"readSinglePageFile","module":"Ipe","link":"Ipe.html#v:readSinglePageFile"},{"display_html":"readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r)","name":"readSinglePageFileThrow","module":"Ipe","link":"Ipe.html#v:readSinglePageFileThrow"},{"display_html":"readRawIpeFile :: (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r))","name":"readRawIpeFile","module":"Ipe","link":"Ipe.html#v:readRawIpeFile"},{"display_html":"type ConversionError = Text","name":"ConversionError","module":"Ipe","link":"Ipe.html#t:ConversionError"},{"display_html":"readAll :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAll","module":"Ipe","link":"Ipe.html#v:readAll"},{"display_html":"readAllDeep :: (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllDeep","module":"Ipe","link":"Ipe.html#v:readAllDeep"},{"display_html":"readAllFrom :: (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r]","name":"readAllFrom","module":"Ipe","link":"Ipe.html#v:readAllFrom"},{"display_html":"writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO ()","name":"writeIpeFile","module":"Ipe","link":"Ipe.html#v:writeIpeFile"},{"display_html":"writeIpeFile' :: IpeWrite t => t -> OsPath -> IO ()","name":"writeIpeFile'","module":"Ipe","link":"Ipe.html#v:writeIpeFile-39-"},{"display_html":"writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO ()","name":"writeIpePage","module":"Ipe","link":"Ipe.html#v:writeIpePage"},{"display_html":"toIpeXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeXML","module":"Ipe","link":"Ipe.html#v:toIpeXML"},{"display_html":"printAsIpeSelection :: IpeWrite t => t -> IO ()","name":"printAsIpeSelection","module":"Ipe","link":"Ipe.html#v:printAsIpeSelection"},{"display_html":"toIpeSelectionXML :: IpeWrite t => t -> Maybe ByteString","name":"toIpeSelectionXML","module":"Ipe","link":"Ipe.html#v:toIpeSelectionXML"},{"display_html":"data IpePage r = IpePage [LayerName] [View] [IpeObject r]","name":"IpePage IpePage","module":"Ipe","link":"Ipe.html#t:IpePage"},{"display_html":"layers :: forall r f. Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r)","name":"layers","module":"Ipe","link":"Ipe.html#v:layers"},{"display_html":"views :: forall r f. Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r)","name":"views","module":"Ipe","link":"Ipe.html#v:views"},{"display_html":"content :: forall r r' f. Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r')","name":"content","module":"Ipe","link":"Ipe.html#v:content"},{"display_html":"emptyPage :: IpePage r","name":"emptyPage","module":"Ipe","link":"Ipe.html#v:emptyPage"},{"display_html":"fromContent :: [IpeObject r] -> IpePage r","name":"fromContent","module":"Ipe","link":"Ipe.html#v:fromContent"},{"display_html":"onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r)","name":"onLayer","module":"Ipe","link":"Ipe.html#v:onLayer"},{"display_html":"contentInView :: Word -> Getter (IpePage r) [IpeObject r]","name":"contentInView","module":"Ipe","link":"Ipe.html#v:contentInView"},{"display_html":"withDefaults :: IpePage r -> IpePage r","name":"withDefaults","module":"Ipe","link":"Ipe.html#v:withDefaults"},{"display_html":"data IpeObject r","name":"IpeObject IpeGroup IpeImage IpeTextLabel IpeMiniPage IpeUse IpePath","module":"Ipe","link":"Ipe.html#t:IpeObject"},{"display_html":"_IpePath :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Path r) (f (IpeObject' Path r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpePath","module":"Ipe","link":"Ipe.html#v:_IpePath"},{"display_html":"_IpeUse :: forall r p f. (Choice p, Applicative f) => p (IpeObject' IpeSymbol r) (f (IpeObject' IpeSymbol r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeUse","module":"Ipe","link":"Ipe.html#v:_IpeUse"},{"display_html":"_IpeGroup :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Group r) (f (IpeObject' Group r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeGroup","module":"Ipe","link":"Ipe.html#v:_IpeGroup"},{"display_html":"_IpeTextLabel :: forall r p f. (Choice p, Applicative f) => p (IpeObject' TextLabel r) (f (IpeObject' TextLabel r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeTextLabel","module":"Ipe","link":"Ipe.html#v:_IpeTextLabel"},{"display_html":"_IpeMiniPage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' MiniPage r) (f (IpeObject' MiniPage r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeMiniPage","module":"Ipe","link":"Ipe.html#v:_IpeMiniPage"},{"display_html":"_IpeImage :: forall r p f. (Choice p, Applicative f) => p (IpeObject' Image r) (f (IpeObject' Image r)) -> p (IpeObject r) (f (IpeObject r))","name":"_IpeImage","module":"Ipe","link":"Ipe.html#v:_IpeImage"},{"display_html":"type IpeObject' (g :: Type -> Type) r = g r :+ IpeAttributes g r","name":"IpeObject'","module":"Ipe","link":"Ipe.html#t:IpeObject-39-"},{"display_html":"ipeObject' :: ToObject i => i r -> IpeAttributes i r -> IpeObject r","name":"ipeObject'","module":"Ipe","link":"Ipe.html#v:ipeObject-39-"},{"display_html":"class ToObject (i :: Type -> Type) where","name":"ToObject mkIpeObject","module":"Ipe","link":"Ipe.html#t:ToObject"},{"display_html":"newtype Path r = Path (Seq (PathSegment r))","name":"Path Path","module":"Ipe","link":"Ipe.html#t:Path"},{"display_html":"pathSegments :: forall r r' p f. (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) -> p (Path r) (f (Path r'))","name":"pathSegments","module":"Ipe","link":"Ipe.html#v:pathSegments"},{"display_html":"data PathSegment r","name":"PathSegment PolyLineSegment PolygonPath CubicBezierSegment QuadraticBezierSegment EllipseSegment ArcSegment SplineSegment ClosedSplineSegment","module":"Ipe","link":"Ipe.html#t:PathSegment"},{"display_html":"data IpeSymbol r = Symbol (Point 2 r) Text","name":"IpeSymbol Symbol","module":"Ipe","link":"Ipe.html#t:IpeSymbol"},{"display_html":"symbolPoint :: forall r r' f. Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')","name":"symbolPoint","module":"Ipe","link":"Ipe.html#v:symbolPoint"},{"display_html":"symbolName :: forall r f. Functor f => (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)","name":"symbolName","module":"Ipe","link":"Ipe.html#v:symbolName"},{"display_html":"newtype Group r = Group [IpeObject r]","name":"Group Group","module":"Ipe","link":"Ipe.html#t:Group"},{"display_html":"groupItems :: forall r s f. Functor f => ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)","name":"groupItems","module":"Ipe","link":"Ipe.html#v:groupItems"},{"display_html":"data TextLabel r = Label Text (Point 2 r)","name":"TextLabel Label","module":"Ipe","link":"Ipe.html#t:TextLabel"},{"display_html":"data MiniPage r = MiniPage Text (Point 2 r) r","name":"MiniPage MiniPage","module":"Ipe","link":"Ipe.html#t:MiniPage"},{"display_html":"width :: MiniPage t -> t","name":"width","module":"Ipe","link":"Ipe.html#v:width"},{"display_html":"data Image r = Image () (Rectangle (Point 2 r))","name":"Image Image","module":"Ipe","link":"Ipe.html#t:Image"},{"display_html":"imageData :: forall r f. Functor f => (() -> f ()) -> Image r -> f (Image r)","name":"imageData","module":"Ipe","link":"Ipe.html#v:imageData"},{"display_html":"rect :: forall r r' f. Functor f => (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))) -> Image r -> f (Image r')","name":"rect","module":"Ipe","link":"Ipe.html#v:rect"},{"display_html":"type IpeBitmap = Text","name":"IpeBitmap","module":"Ipe","link":"Ipe.html#t:IpeBitmap"},{"display_html":"type IpeAttributes (g :: Type -> Type) r = Attributes' r (AttributesOf g)","name":"IpeAttributes","module":"Ipe","link":"Ipe.html#t:IpeAttributes"},{"display_html":"type Attributes' r = Attributes (AttrMapSym1 r)","name":"Attributes'","module":"Ipe","link":"Ipe.html#t:Attributes-39-"},{"display_html":"type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where ...","name":"AttributesOf","module":"Ipe","link":"Ipe.html#t:AttributesOf"},{"display_html":"type family AttrMap r (l :: AttributeUniverse) where ...","name":"AttrMap","module":"Ipe","link":"Ipe.html#t:AttrMap"},{"display_html":"data AttrMapSym1 a6989586621679260260 (b :: TyFun AttributeUniverse Type)","name":"AttrMapSym1","module":"Ipe","link":"Ipe.html#t:AttrMapSym1"},{"display_html":"attributes :: forall g r f. Functor f => (IpeAttributes g r -> f (IpeAttributes g r)) -> IpeObject' g r -> f (IpeObject' g r)","name":"attributes","module":"Ipe","link":"Ipe.html#v:attributes"},{"display_html":"traverseIpeAttrs :: forall f (g :: Type -> Type) proxy r s. (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)","name":"traverseIpeAttrs","module":"Ipe","link":"Ipe.html#v:traverseIpeAttrs"},{"display_html":"commonAttributes :: forall r f. Functor f => (Attributes (AttrMapSym1 r) CommonAttributes -> f (Attributes (AttrMapSym1 r) CommonAttributes)) -> IpeObject r -> f (IpeObject r)","name":"commonAttributes","module":"Ipe","link":"Ipe.html#v:commonAttributes"},{"display_html":"newtype LayerName = LayerName Text","name":"LayerName LayerName","module":"Ipe","link":"Ipe.html#t:LayerName"},{"display_html":"layerName :: Iso' LayerName Text","name":"layerName","module":"Ipe","link":"Ipe.html#v:layerName"},{"display_html":"data View = View [LayerName] LayerName","name":"View View","module":"Ipe","link":"Ipe.html#t:View"},{"display_html":"layerNames :: Lens' View [LayerName]","name":"layerNames","module":"Ipe","link":"Ipe.html#v:layerNames"},{"display_html":"activeLayer :: Lens' View LayerName","name":"activeLayer","module":"Ipe","link":"Ipe.html#v:activeLayer"},{"display_html":"data IpeStyle = IpeStyle (Maybe Text) (Node Text Text)","name":"IpeStyle IpeStyle","module":"Ipe","link":"Ipe.html#t:IpeStyle"},{"display_html":"styleName :: Lens' IpeStyle (Maybe Text)","name":"styleName","module":"Ipe","link":"Ipe.html#v:styleName"},{"display_html":"styleData :: Lens' IpeStyle (Node Text Text)","name":"styleData","module":"Ipe","link":"Ipe.html#v:styleData"},{"display_html":"basicIpeStyle :: IpeStyle","name":"basicIpeStyle","module":"Ipe","link":"Ipe.html#v:basicIpeStyle"},{"display_html":"opacitiesStyle :: IpeStyle","name":"opacitiesStyle","module":"Ipe","link":"Ipe.html#v:opacitiesStyle"},{"display_html":"readIpeStylesheet :: OsPath -> IO (Either ConversionError IpeStyle)","name":"readIpeStylesheet","module":"Ipe","link":"Ipe.html#v:readIpeStylesheet"},{"display_html":"addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r","name":"addStyleSheet","module":"Ipe","link":"Ipe.html#v:addStyleSheet"},{"display_html":"addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r)","name":"addStyleSheetFrom","module":"Ipe","link":"Ipe.html#v:addStyleSheetFrom"},{"display_html":"data IpePreamble = IpePreamble (Maybe Text) Text","name":"IpePreamble IpePreamble","module":"Ipe","link":"Ipe.html#t:IpePreamble"},{"display_html":"encoding :: Lens' IpePreamble (Maybe Text)","name":"encoding","module":"Ipe","link":"Ipe.html#v:encoding"},{"display_html":"preambleData :: Lens' IpePreamble Text","name":"preambleData","module":"Ipe","link":"Ipe.html#v:preambleData"},{"display_html":"class IpeRead t where","name":"IpeRead ipeRead","module":"Ipe","link":"Ipe.html#t:IpeRead"},{"display_html":"_asPoint :: forall r p f. (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r))","name":"_asPoint","module":"Ipe","link":"Ipe.html#v:_asPoint"},{"display_html":"_asLineSegment :: forall r p f. (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asLineSegment","module":"Ipe","link":"Ipe.html#v:_asLineSegment"},{"display_html":"_asClosedLineSegment :: forall r p f. (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asClosedLineSegment","module":"Ipe","link":"Ipe.html#v:_asClosedLineSegment"},{"display_html":"_asRectangle :: (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r))","name":"_asRectangle","module":"Ipe","link":"Ipe.html#v:_asRectangle"},{"display_html":"_asTriangle :: forall r p f. (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asTriangle","module":"Ipe","link":"Ipe.html#v:_asTriangle"},{"display_html":"_asPolyLine :: forall r p f. (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolyLine","module":"Ipe","link":"Ipe.html#v:_asPolyLine"},{"display_html":"_asSimplePolygon :: forall r p f. (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asSimplePolygon","module":"Ipe","link":"Ipe.html#v:_asSimplePolygon"},{"display_html":"_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r))","name":"_asConvexPolygon","module":"Ipe","link":"Ipe.html#v:_asConvexPolygon"},{"display_html":"_asPolygonalDomain :: forall r p f. (Choice p, Applicative f) => p (PolygonalDomain (Point 2 r)) (f (PolygonalDomain (Point 2 r))) -> p (Path r) (f (Path r))","name":"_asPolygonalDomain","module":"Ipe","link":"Ipe.html#v:_asPolygonalDomain"},{"display_html":"_withAttrs :: forall r (i :: Type -> Type) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r)","name":"_withAttrs","module":"Ipe","link":"Ipe.html#v:_withAttrs"},{"display_html":"class HasDefaultFromIpe g where","name":"HasDefaultFromIpe DefaultFromIpe defaultFromIpe","module":"Ipe","link":"Ipe.html#t:HasDefaultFromIpe"},{"display_html":"class IpeWrite t where","name":"IpeWrite ipeWrite","module":"Ipe","link":"Ipe.html#t:IpeWrite"},{"display_html":"class IpeWriteText t where","name":"IpeWriteText ipeWriteText","module":"Ipe","link":"Ipe.html#t:IpeWriteText"},{"display_html":"module Ipe.IpeOut","name":"","module":"Ipe","link":""},{"display_html":"module Ipe.Attributes","name":"","module":"Ipe","link":""},{"display_html":"module Ipe.Value","name":"","module":"Ipe","link":""},{"display_html":"newtype IpeColor r = IpeColor (IpeValue (RGB r))","name":"IpeColor IpeColor","module":"Ipe","link":"Ipe.html#t:IpeColor"},{"display_html":"named :: Text -> IpeColor r","name":"named","module":"Ipe","link":"Ipe.html#v:named"}] \ No newline at end of file diff --git a/haddocks/hgeometry/ipe/ipe.haddock b/haddocks/hgeometry/ipe/ipe.haddock index 9e028fc5d74e67823d1d1a18818dba42935a25e3..7bbee268cea58d53bf7aa007f15035d55d3db059 100644 GIT binary patch delta 1953 zcmbW2X-rgC6vywGH|GSET@bVq2P>2+qKOsST9+#BHFgn4+3XWXv_-HmZNa2k)5gSp zsL^B6CZ=k&RdK1ptFnV4h%2bnU2&nSRA2<$rM>TtRQ=ld@Vn>z&;Q&^&b#-#!i$!= zOBV0i4r4*25IIMMa16VU=k4u9Ui(l8FYfQvN!~YQ=xv01j|TGDK|=WOhd$@%oQ!hAZ3|7!3_P zyw|{Y8t5urp=)%RuG0-_q+jU*{YJmjA9RT>(x3Df-J~Y^n{H7v2@rUhpeIGigrndQi|&CkfR>9$Nqic?Qd zO>?xGxq#<#i*#q^!t5v)AMcX~^}O_jB3NU*+Be1uQM}mp4cs<7LN|1WCA@9W3TQKi zM9#NZ+KE?2EX*Im09TE*Lz}yS-T315ZeWS^Fuoo!*9sl%8a*BE@S9^&;jWQ8<|4p7 z{&MVcxNp$79bh@(YZ$T9EpLU4%Sivkk?FKKGvwb~oROB3nvt%j+2&;|(if(0Mfq=E zdfuWt7r4!D|7VU>=55?LAqsMN@Wei_-Iz475nu;LPL6<`95;Co?BeBk(O2a0Z%$24eqJVBW$;a!coqVJjUzn{opv4*hAn1U$BQk zE&pR54s|?yRydsG#96^`ia(weG2yh?GVj<-{nMxYtT#2^C)&GRN8yaA29C>g=uStL zO;5Ku9obG>nm*T&c9uP64}f!$VQ`kCX2;4nYj(tiWAmc3sz$d zp234yg@J4%2y8A z=Dmq8LmOXB41#vPn;0X{-;kui^86(wg~B6VmK4(Su{`-;@pw;PkHn56EygMlb zR`Q9Yx1u}Hg}1Q{?_dkIV=Fe{-*^j~(bN6drqW$vhqMX#^OYBHEU!)uvg$&sW><1B zS0zWvSLsR~1~o?5oKUb-6R-2PFAF(Lhp3ursDcjAeyXH{R7J&9LZwtdg;Yd4X%`u^ zhkl}b+D&;>PCwIL+DBy+QY}ksWJ#4Qs*uG8WU@>am&$T?vD>;+m7B%+a;sf*Sk5dV zdI}~71YhBfAfMG2N(P`AqYw!v862<1^7A5A; z)=Cx2Op0<9S11~%o&M0rTQsXoi=>a%YErmVY;=B{2FrZJZgbp=J?5y_`bvNaYu`Lm zu=dS&FNS;h*}c?TRc^2Or0p{a1&S)x3RUc8k@6HPr9`n*DP@Y~uc)O$CH5<-SnF@@ z8D`>usftR)gNjw`m))DAv!nfM)pMQVtETOBUYfmVneZ1kq~OTNSL1~c5FC3BwQwql!NyJCmp9@#!GaYx2p;;y8RxTkoZ k9#F`FRELqA(-1zue~zB@->`PiYCmVj^NKNI<73Z%0h!`~HUIzs delta 1787 zcmbW2X-t$?6o&7aZ_cS3Gb1PKD@YBdHb7>i)+rhu|I$cR=215~AHVw%*Y zO*cJl^hc{ytqZiGeuC_)xQh!?6x7zGDxxgnR=4(kcQiHWzs`^6p8KBr-ek@_bLM!P zsif6pX}qh?9VtX^ybx)}T6S41E@UZ2AuK%9Si*s91tf%x=UZDi);0%v zbluiuf**LL+Y0!EErSZRBx>QBK|yeaI|i+Tv;5iMVbIFk2PZ=t_i=v%&T+VV(7Wg8 zJhjmUYNg-l54uQ~sD&=m75bCT(iyr+*XTO6(+%pNnc62MEaKh4E96&tbL1Qo+}86#o&YrK>q9&H!W8|hv36C`0ELu!hPKqSpcSNi(VNu)x?RDf_%23&`g6PGcy)DvU2=#GX3m+ zIa%}U8R-ig+w_f-E(2`m714o^&xO&!P{3``-@pT&KRFow;!BlgW)TwN)P2ERSw`mT(>t@?%l8nHl40PB`sd#7kmkLJ2p; zBtaR6#SVjVeR^!C1{M0mcea?Jl5c)64r(}XnjLESi)rJv8m!~P)8;@uhfR-zef;@! z=FsWHL*p`GKd*@kfCF3_=MM+DP4W;wiF+9ivv0gF9N}^C!{I2~<6nnkyf!`n8o4Uo z6OMCBd|>biqcE1JEc+5!l0}&da?>+2P8yo+nf9Jzc8;o369*-D!D;?5VHh+^4wvz_ z2~jd`PM95EhBa7@l~{pC@DLuxYCMRiupS$*32U(q_hS_vz((AMC-DTH#%4T<$M857 zVKMH-QY=A#17-4(3VBVD6pN*$n!lVeiYsR<*F0R>dE(4Xo*ig%^UKLy>hZ(}F6;|=V< zn>fI^?NRCHVlUp|g5(tQto2$wTT-IrLs?Qhd47sFH0Uc+{6W6o_E`zb_R~J9rv|E| zYO10ds--$Ap;9WNA}Xf6lure;i+0d2w3B|NLaLzMq|+WMC*OK$ZIG5aX{wawYMCsT z<}zt_nw>}UmEAD!lvfqdemOFPa2En>fjlQ_JZHMOzhqx5wGtDDjR;^!4T*fQv;XId za!%^_{?3xA3h5Q8;n2VM--l*O3+?y3V1EmaNb?%#{F%H^QJ$Z+`IZ0voSxg(0K<16 z#AE$6#|3MEMJqGrq*iWFRH(R8u}Ue`iu#z3T*1q#b;_MpbQ#pTRotVfr!8Ip%WRsD zoULHM>{DpWS+mbh=d#PW>~=0qW|h;8owmmy6e+4$D^{_Sd)1i|rIad`DWzPoLa|cm zRnclu8*Qj@=WqknhAL_lYZdDhM;LODfnWpj-@_*ARc0UYx}{@X#~8|3AzVeHlwHMf z;wwuRF1sYhymp1eB{}M~t1^S)n&NfEb`r+W2RZd`Q736fWvTmWT{1U7bSw5K-d5~Y x+#ze|BJRl8MckFNihGLp=>hr9O?PB2bmU~^jtUD24GGoH<(>-AoAMqH_y^N?Kp+4B diff --git a/haddocks/hgeometry/ipe/src/Ipe.Attributes.html b/haddocks/hgeometry/ipe/src/Ipe.Attributes.html index 07c45b1b1..fbde3f23d 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.Attributes.html +++ b/haddocks/hgeometry/ipe/src/Ipe.Attributes.html @@ -1,4 +1,4 @@ -
{-# LANGUAGE OverloadedStrings #-}
+
{-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE UnicodeSyntax #-}
 {-# LANGUAGE UndecidableInstances #-}
@@ -50,7 +50,7 @@
                        | Clip
                        -- Extra
 --                       | X Text
-                       deriving (Int -> AttributeUniverse -> ShowS
+                       deriving (Int -> AttributeUniverse -> ShowS
 [AttributeUniverse] -> ShowS
 AttributeUniverse -> String
 (Int -> AttributeUniverse -> ShowS)
@@ -65,7 +65,7 @@
 show :: AttributeUniverse -> String
 $cshowList :: [AttributeUniverse] -> ShowS
 showList :: [AttributeUniverse] -> ShowS
-Show,ReadPrec [AttributeUniverse]
+Show,ReadPrec [AttributeUniverse]
 ReadPrec AttributeUniverse
 Int -> ReadS AttributeUniverse
 ReadS [AttributeUniverse]
@@ -85,7 +85,7 @@
 readPrec :: ReadPrec AttributeUniverse
 $creadListPrec :: ReadPrec [AttributeUniverse]
 readListPrec :: ReadPrec [AttributeUniverse]
-Read,AttributeUniverse -> AttributeUniverse -> Bool
+Read,AttributeUniverse -> AttributeUniverse -> Bool
 (AttributeUniverse -> AttributeUniverse -> Bool)
 -> (AttributeUniverse -> AttributeUniverse -> Bool)
 -> Eq AttributeUniverse
@@ -97,7 +97,7 @@
 Eq)
 
 
-genSingletons [ ''AttributeUniverse ]
+genSingletons [ ''AttributeUniverse ]
 
 -- | IpeObjects may have attributes. Essentially attributes are
 -- (key,value) pairs. The key is some name. Which attributes an object
@@ -133,28 +133,28 @@
 
 -- | Attr implements the mapping from labels to types as specified by the
 -- (symbol representing) the type family 'f'
-newtype Attr (f :: TyFun u Type -> Type) -- Symbol repr. the Type family mapping
+newtype Attr (f :: TyFun u Type -> Type) -- Symbol repr. the Type family mapping
                                          -- Labels in universe u to concrete types
-             (label :: u) = GAttr { forall u (f :: TyFun u (*) -> *) (label :: u).
+             (label :: u) = GAttr { forall u (f :: TyFun u (*) -> *) (label :: u).
 Attr f label -> Maybe (Apply f label)
-_getAttr :: Maybe (Apply f label) }
+_getAttr :: Maybe (Apply f label) }
 
 
-deriving instance Eq   (Apply f label) => Eq   (Attr f label)
-deriving instance Ord  (Apply f label) => Ord  (Attr f label)
+deriving instance Eq   (Apply f label) => Eq   (Attr f label)
+deriving instance Ord  (Apply f label) => Ord  (Attr f label)
 
-makeLenses ''Attr
+makeLenses ''Attr
 
 -- | Constructor for constructing an Attr given an actual value.
-pattern Attr   :: Apply f label -> Attr f label
+pattern Attr   :: Apply f label -> Attr f label
 pattern $mAttr :: forall {r} {u} {f :: u ~> *} {label :: u}.
 Attr f label -> (Apply f label -> r) -> ((# #) -> r) -> r
 $bAttr :: forall {u} (f :: u ~> *) (label :: u).
 Apply f label -> Attr f label
-Attr x = GAttr (Just x)
+Attr x = GAttr (Just x)
 
 -- | An Attribute that is not set
-pattern NoAttr :: Attr f label
+pattern NoAttr :: Attr f label
 pattern $mNoAttr :: forall {r} {u} {f :: TyFun u (*) -> *} {label :: u}.
 Attr f label -> ((# #) -> r) -> ((# #) -> r) -> r
 $bNoAttr :: forall {u} (f :: TyFun u (*) -> *) (label :: u). Attr f label
@@ -162,24 +162,24 @@
 {-# COMPLETE NoAttr, Attr #-}
 
 -- | Traverse an attribute.
-traverseAttr   :: Applicative h => (Apply f label -> h (Apply g label))
-               -> Attr f label -> h (Attr g label)
+traverseAttr   :: Applicative h => (Apply f label -> h (Apply g label))
+               -> Attr f label -> h (Attr g label)
 traverseAttr :: forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
 Applicative h =>
 (Apply f label -> h (Apply g label))
 -> Attr f label -> h (Attr g label)
-traverseAttr Apply f label -> h (Apply g label)
-f = \case
-  Attr Apply f label
-x -> Apply g label -> Attr g label
+traverseAttr Apply f label -> h (Apply g label)
+f = \case
+  Attr Apply f label
+x -> Apply g label -> Attr g label
 forall {u} (f :: u ~> *) (label :: u).
 Apply f label -> Attr f label
 Attr (Apply g label -> Attr g label)
 -> h (Apply g label) -> h (Attr g label)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> Apply f label -> h (Apply g label)
-f Apply f label
-x
+f Apply f label
+x
   Attr f label
 NoAttr -> Attr g label -> h (Attr g label)
 forall a. a -> h a
@@ -189,7 +189,7 @@
 NoAttr
 
 -- | Traverse for the situation where the type is not actually parameterized.
-pureAttr :: (Applicative h, Apply f a ~ Apply g a) => Attr f a -> h (Attr g a)
+pureAttr :: (Applicative h, Apply f a ~ Apply g a) => Attr f a -> h (Attr g a)
 pureAttr :: forall {u} (h :: * -> *) (f :: u ~> *) (a :: u) (g :: u ~> *).
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
@@ -200,44 +200,44 @@
 -> (Attr f a -> Attr g a) -> Attr f a -> h (Attr g a)
 forall b c a. (b -> c) -> (a -> b) -> a -> c
 . \case
-    Attr Apply f a
-a -> Apply g a -> Attr g a
+    Attr Apply f a
+a -> Apply g a -> Attr g a
 forall {u} (f :: u ~> *) (label :: u).
 Apply f label -> Attr f label
 Attr Apply f a
 Apply g a
-a
+a
     Attr f a
 NoAttr -> Attr g a
 forall {u} (f :: TyFun u (*) -> *) (label :: u). Attr f label
 NoAttr
 
 
-instance Show (Apply f label) => Show (Attr f label) where
-  showsPrec :: Int -> Attr f label -> ShowS
-showsPrec Int
-d Attr f label
+instance Show (Apply f label) => Show (Attr f label) where
+  showsPrec :: Int -> Attr f label -> ShowS
+showsPrec Int
+d Attr f label
 NoAttr   = Bool -> ShowS -> ShowS
 showParen (Int
-d Int -> Int -> Bool
+d Int -> Int -> Bool
 forall a. Ord a => a -> a -> Bool
 > Int
-app_prec) (ShowS -> ShowS) -> ShowS -> ShowS
+app_prec) (ShowS -> ShowS) -> ShowS -> ShowS
 forall a b. (a -> b) -> a -> b
 $ String -> ShowS
 showString String
 "NoAttr"
-    where app_prec :: Int
-app_prec = Int
+    where app_prec :: Int
+app_prec = Int
 10
-  showsPrec Int
-d (Attr Apply f label
-a) = Bool -> ShowS -> ShowS
+  showsPrec Int
+d (Attr Apply f label
+a) = Bool -> ShowS -> ShowS
 showParen (Int
-d Int -> Int -> Bool
+d Int -> Int -> Bool
 forall a. Ord a => a -> a -> Bool
 > Int
-up_prec) (ShowS -> ShowS) -> ShowS -> ShowS
+up_prec) (ShowS -> ShowS) -> ShowS -> ShowS
 forall a b. (a -> b) -> a -> b
 $
                            String -> ShowS
@@ -247,17 +247,17 @@
 . Int -> Apply f label -> ShowS
 forall a. Show a => Int -> a -> ShowS
 showsPrec (Int
-up_precInt -> Int -> Int
+up_precInt -> Int -> Int
 forall a. Num a => a -> a -> a
 +Int
 1) Apply f label
-a
-    where up_prec :: Int
-up_prec  = Int
+a
+    where up_prec :: Int
+up_prec  = Int
 5
 
-instance Read (Apply f label) => Read (Attr f label) where
-  readPrec :: ReadPrec (Attr f label)
+instance Read (Apply f label) => Read (Attr f label) where
+  readPrec :: ReadPrec (Attr f label)
 readPrec = ReadPrec (Attr f label) -> ReadPrec (Attr f label)
 forall a. ReadPrec a -> ReadPrec a
 parens (ReadPrec (Attr f label) -> ReadPrec (Attr f label))
@@ -266,7 +266,7 @@
 $ (Int -> ReadPrec (Attr f label) -> ReadPrec (Attr f label)
 forall a. Int -> ReadPrec a -> ReadPrec a
 prec Int
-app_prec (ReadPrec (Attr f label) -> ReadPrec (Attr f label))
+app_prec (ReadPrec (Attr f label) -> ReadPrec (Attr f label))
 -> ReadPrec (Attr f label) -> ReadPrec (Attr f label)
 forall a b. (a -> b) -> a -> b
 $ do
@@ -279,22 +279,22 @@
 +++ (Int -> ReadPrec (Attr f label) -> ReadPrec (Attr f label)
 forall a. Int -> ReadPrec a -> ReadPrec a
 prec Int
-up_prec (ReadPrec (Attr f label) -> ReadPrec (Attr f label))
+up_prec (ReadPrec (Attr f label) -> ReadPrec (Attr f label))
 -> ReadPrec (Attr f label) -> ReadPrec (Attr f label)
 forall a b. (a -> b) -> a -> b
 $ do
                                          Ident "Attr" <- ReadPrec Lexeme
 lexP
-                                         a <- step readPrec
-                                         pure $ Attr a)
+                                         a <- step readPrec
+                                         pure $ Attr a)
     where
-      app_prec :: Int
-app_prec = Int
+      app_prec :: Int
+app_prec = Int
 10
-      up_prec :: Int
-up_prec = Int
+      up_prec :: Int
+up_prec = Int
 5
-  readListPrec :: ReadPrec [Attr f label]
+  readListPrec :: ReadPrec [Attr f label]
 readListPrec = ReadPrec [Attr f label]
 forall a. Read a => ReadPrec [a]
 readListPrecDefault
@@ -302,20 +302,20 @@
 
 
 -- | Give pref. to the *RIGHT*
-instance Semigroup (Attr f l) where
+instance Semigroup (Attr f l) where
   Attr f l
-_ <> :: Attr f l -> Attr f l -> Attr f l
-<> b :: Attr f l
-b@(Attr Apply f l
+_ <> :: Attr f l -> Attr f l -> Attr f l
+<> b :: Attr f l
+b@(Attr Apply f l
 _) = Attr f l
-b
-  Attr f l
-a <> Attr f l
+b
+  Attr f l
+a <> Attr f l
 _          = Attr f l
-a
+a
 
-instance Monoid (Attr f l) where
-  mempty :: Attr f l
+instance Monoid (Attr f l) where
+  mempty :: Attr f l
 mempty  = Attr f l
 forall {u} (f :: TyFun u (*) -> *) (label :: u). Attr f label
 NoAttr
@@ -324,10 +324,10 @@
 -- * Attributes
 
 -- | A collection of Attributes.
-newtype Attributes (f :: TyFun u Type -> Type) (ats :: [u]) = Attrs (Rec (Attr f) ats)
+newtype Attributes (f :: TyFun u Type -> Type) (ats :: [u]) = Attrs (Rec (Attr f) ats)
 
 -- | Get a vinyl Record with Attrs
-unAttrs :: Lens (Attributes f ats) (Attributes f' ats') (Rec (Attr f) ats) (Rec (Attr f') ats')
+unAttrs :: Lens (Attributes f ats) (Attributes f' ats') (Rec (Attr f) ats) (Rec (Attr f') ats')
 unAttrs :: forall {u} {u} (f :: TyFun u (*) -> *) (ats :: [u])
        (f' :: TyFun u (*) -> *) (ats' :: [u]) (f :: * -> *).
 Functor f =>
@@ -341,9 +341,9 @@
      (Rec (Attr f) ats)
      (Rec (Attr f') ats')
 forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
-lens (\(Attrs Rec (Attr f) ats
-r) -> Rec (Attr f) ats
-r) ((Rec (Attr f') ats' -> Attributes f' ats')
+lens (\(Attrs Rec (Attr f) ats
+r) -> Rec (Attr f) ats
+r) ((Rec (Attr f') ats' -> Attributes f' ats')
 -> Attributes f ats -> Rec (Attr f') ats' -> Attributes f' ats'
 forall a b. a -> b -> a
 const Rec (Attr f') ats' -> Attributes f' ats'
@@ -351,16 +351,16 @@
 Rec (Attr f) ats -> Attributes f ats
 Attrs)
 
-deriving instance ( RMap ats, ReifyConstraint Show (Attr f) ats, RecordToList ats
-                  , RecAll (Attr f) ats Show) => Show (Attributes f ats)
+deriving instance ( RMap ats, ReifyConstraint Show (Attr f) ats, RecordToList ats
+                  , RecAll (Attr f) ats Show) => Show (Attributes f ats)
 -- deriving instance (RecAll (Attr f) ats Read) => Read (Attributes f ats)
 
-instance ( ReifyConstraint Eq (Attr f) ats, RecordToList ats
-         , RecAll (Attr f) ats Eq)   => Eq   (Attributes f ats) where
-  (Attrs Rec (Attr f) ats
-a) == :: Attributes f ats -> Attributes f ats -> Bool
-== (Attrs Rec (Attr f) ats
-b) = [Bool] -> Bool
+instance ( ReifyConstraint Eq (Attr f) ats, RecordToList ats
+         , RecAll (Attr f) ats Eq)   => Eq   (Attributes f ats) where
+  (Attrs Rec (Attr f) ats
+a) == :: Attributes f ats -> Attributes f ats -> Bool
+== (Attrs Rec (Attr f) ats
+b) = [Bool] -> Bool
 forall (t :: * -> *). Foldable t => t Bool -> Bool
 and ([Bool] -> Bool)
 -> (Rec (Attr f) ats -> [Bool]) -> Rec (Attr f) ats -> Bool
@@ -384,18 +384,18 @@
 forall {u} (f :: u -> *) (g :: u -> *) (h :: u -> *) (as :: [u]).
 (forall (a :: u). f a -> g a -> h a)
 -> Rec f as -> Rec g as -> Rec h as
-zipRecsWith (\Attr f a
-x (Compose (Dict Attr f a
-y)) -> Bool -> Const Bool a
+zipRecsWith (\Attr f a
+x (Compose (Dict Attr f a
+y)) -> Bool -> Const Bool a
 forall k a (b :: k). a -> Const a b
 Const (Bool -> Const Bool a) -> Bool -> Const Bool a
 forall a b. (a -> b) -> a -> b
 $ Attr f a
-x Attr f a -> Attr f a -> Bool
+x Attr f a -> Attr f a -> Bool
 forall a. Eq a => a -> a -> Bool
 == Attr f a
-y) Rec (Attr f) ats
-a
+y) Rec (Attr f) ats
+a
                          (Rec (Dict Eq :. Attr f) ats -> Rec (Const Bool) ats)
 -> (Rec (Attr f) ats -> Rec (Dict Eq :. Attr f) ats)
 -> Rec (Attr f) ats
@@ -410,10 +410,10 @@
 reifyConstraint @Eq) (Rec (Attr f) ats -> Bool) -> Rec (Attr f) ats -> Bool
 forall a b. (a -> b) -> a -> b
 $ Rec (Attr f) ats
-b
+b
 
-instance RecApplicative ats => Monoid (Attributes f ats) where
-  mempty :: Attributes f ats
+instance RecApplicative ats => Monoid (Attributes f ats) where
+  mempty :: Attributes f ats
 mempty        = Rec (Attr f) ats -> Attributes f ats
 forall u (f :: TyFun u (*) -> *) (ats :: [u]).
 Rec (Attr f) ats -> Attributes f ats
@@ -430,11 +430,11 @@
 forall a. Monoid a => a
 mempty
 
-instance Semigroup (Attributes f ats) where
-  (Attrs Rec (Attr f) ats
-as) <> :: Attributes f ats -> Attributes f ats -> Attributes f ats
-<> (Attrs Rec (Attr f) ats
-bs) = Rec (Attr f) ats -> Attributes f ats
+instance Semigroup (Attributes f ats) where
+  (Attrs Rec (Attr f) ats
+as) <> :: Attributes f ats -> Attributes f ats -> Attributes f ats
+<> (Attrs Rec (Attr f) ats
+bs) = Rec (Attr f) ats -> Attributes f ats
 forall u (f :: TyFun u (*) -> *) (ats :: [u]).
 Rec (Attr f) ats -> Attributes f ats
 Attrs (Rec (Attr f) ats -> Attributes f ats)
@@ -449,21 +449,21 @@
 forall (a :: u). Attr f a -> Attr f a -> Attr f a
 forall a. Semigroup a => a -> a -> a
 (<>) Rec (Attr f) ats
-as Rec (Attr f) ats
-bs
+as Rec (Attr f) ats
+bs
 
 -- | Traverse implementation for Attrs
-traverseAttrs               :: Applicative h
-                            => (forall label. Attr f label -> h (Attr g label))
-                            -> Attributes f ats -> h (Attributes g ats)
+traverseAttrs               :: Applicative h
+                            => (forall label. Attr f label -> h (Attr g label))
+                            -> Attributes f ats -> h (Attributes g ats)
 traverseAttrs :: forall {u} (h :: * -> *) (f :: TyFun u (*) -> *)
        (g :: TyFun u (*) -> *) (ats :: [u]).
 Applicative h =>
 (forall (label :: u). Attr f label -> h (Attr g label))
 -> Attributes f ats -> h (Attributes g ats)
-traverseAttrs forall (label :: u). Attr f label -> h (Attr g label)
-f (Attrs Rec (Attr f) ats
-ats) = Rec (Attr g) ats -> Attributes g ats
+traverseAttrs forall (label :: u). Attr f label -> h (Attr g label)
+f (Attrs Rec (Attr f) ats
+ats) = Rec (Attr g) ats -> Attributes g ats
 forall u (f :: TyFun u (*) -> *) (ats :: [u]).
 Rec (Attr f) ats -> Attributes f ats
 Attrs (Rec (Attr g) ats -> Attributes g ats)
@@ -476,12 +476,12 @@
 (forall (x :: u). f x -> h (g x)) -> Rec f rs -> h (Rec g rs)
 rtraverse Attr f x -> h (Attr g x)
 forall (label :: u). Attr f label -> h (Attr g label)
-f Rec (Attr f) ats
-ats
+f Rec (Attr f) ats
+ats
 
 -- | Zip two Recs with the given function.
-zipRecsWith                       :: (forall a. f a -> g a -> h a)
-                                  -> Rec f as -> Rec g as -> Rec h as
+zipRecsWith                       :: (forall a. f a -> g a -> h a)
+                                  -> Rec f as -> Rec g as -> Rec h as
 zipRecsWith :: forall {u} (f :: u -> *) (g :: u -> *) (h :: u -> *) (as :: [u]).
 (forall (a :: u). f a -> g a -> h a)
 -> Rec f as -> Rec g as -> Rec h as
@@ -492,17 +492,17 @@
 Rec h '[]
 forall {u} (a :: u -> *). Rec a '[]
 RNil
-zipRecsWith forall (a :: u). f a -> g a -> h a
-f (f r
-r :& Rec f rs
-rs) (g r
-s :& Rec g rs
-ss) = f r -> g r -> h r
+zipRecsWith forall (a :: u). f a -> g a -> h a
+f (f r
+r :& Rec f rs
+rs) (g r
+s :& Rec g rs
+ss) = f r -> g r -> h r
 forall (a :: u). f a -> g a -> h a
-f f r
-r g r
+f f r
+r g r
 g r
-s h r -> Rec h rs -> Rec h (r : rs)
+s h r -> Rec h rs -> Rec h (r : rs)
 forall {u} (a :: u -> *) (r :: u) (rs :: [u]).
 a r -> Rec a rs -> Rec a (r : rs)
 :& (forall (a :: u). f a -> g a -> h a)
@@ -512,17 +512,17 @@
 -> Rec f as -> Rec g as -> Rec h as
 zipRecsWith f a -> g a -> h a
 forall (a :: u). f a -> g a -> h a
-f Rec f rs
-rs Rec g rs
+f Rec f rs
+rs Rec g rs
 Rec g rs
-ss
+ss
 
 
 ----------------------------------------
 
 -- | Lens into a specific attribute, if it is set.
-ixAttr   :: forall at ats proxy f. (at  ats)
-         => proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))
+ixAttr   :: forall at ats proxy f. (at  ats)
+         => proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))
 ixAttr :: forall {k1} (at :: k1) (ats :: [k1]) (proxy :: k1 -> *)
        (f :: TyFun k1 (*) -> *).
 (at ∈ ats) =>
@@ -553,7 +553,7 @@
 (RecElem record r r rs rs (RIndex r rs), RecElemFCtx record f,
  Functor g) =>
 (f r -> g (f r)) -> record f rs -> g (record f rs)
-rlens @at)((Attr f at -> f (Attr f at))
+rlens @at)((Attr f at -> f (Attr f at))
  -> Rec (Attr f) ats -> f (Rec (Attr f) ats))
 -> ((Maybe (Apply f at) -> f (Maybe (Apply f at)))
     -> Attr f at -> f (Attr f at))
@@ -572,50 +572,50 @@
 getAttr
 
 -- | Prism into a particular attribute.
-_Attr   :: forall at ats proxy f. (at  ats, RecApplicative ats)
-         => proxy at -> Prism' (Attributes f ats) (Apply f at)
+_Attr   :: forall at ats proxy f. (at  ats, RecApplicative ats)
+         => proxy at -> Prism' (Attributes f ats) (Apply f at)
 _Attr :: forall {k1} (at :: k1) (ats :: [k1]) (proxy :: k1 -> *)
        (f :: TyFun k1 (*) -> *).
 (at ∈ ats, RecApplicative ats) =>
 proxy at -> Prism' (Attributes f ats) (Apply f at)
-_Attr proxy at
-a = (Apply f at -> Attributes f ats)
+_Attr proxy at
+a = (Apply f at -> Attributes f ats)
 -> (Attributes f ats -> Maybe (Apply f at))
 -> Prism
      (Attributes f ats) (Attributes f ats) (Apply f at) (Apply f at)
 forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
 prism' Apply f at -> Attributes f ats
-setA Attributes f ats -> Maybe (Apply f at)
-getA
+setA Attributes f ats -> Maybe (Apply f at)
+getA
   where
-    setA :: Apply f at -> Attributes f ats
-setA Apply f at
-x = proxy at -> Apply f at -> Attributes f ats -> Attributes f ats
+    setA :: Apply f at -> Attributes f ats
+setA Apply f at
+x = proxy at -> Apply f at -> Attributes f ats -> Attributes f ats
 forall {u} (proxy :: u -> *) (at :: u) (ats :: [u]) (f :: u ~> *).
 (at ∈ ats) =>
 proxy at -> Apply f at -> Attributes f ats -> Attributes f ats
 setAttr proxy at
-a Apply f at
-x Attributes f ats
+a Apply f at
+x Attributes f ats
 forall a. Monoid a => a
 mempty
-    getA :: Attributes f ats -> Maybe (Apply f at)
-getA = proxy at -> Attributes f ats -> Maybe (Apply f at)
+    getA :: Attributes f ats -> Maybe (Apply f at)
+getA = proxy at -> Attributes f ats -> Maybe (Apply f at)
 forall {k1} (at :: k1) (ats :: [k1]) (proxy :: k1 -> *)
        (f :: TyFun k1 (*) -> *).
 (at ∈ ats) =>
 proxy at -> Attributes f ats -> Maybe (Apply f at)
 lookupAttr proxy at
-a
+a
 
 -- | Looks up a particular attribute.
-lookupAttr   :: (at  ats) => proxy at -> Attributes f ats -> Maybe (Apply f at)
+lookupAttr   :: (at  ats) => proxy at -> Attributes f ats -> Maybe (Apply f at)
 lookupAttr :: forall {k1} (at :: k1) (ats :: [k1]) (proxy :: k1 -> *)
        (f :: TyFun k1 (*) -> *).
 (at ∈ ats) =>
 proxy at -> Attributes f ats -> Maybe (Apply f at)
-lookupAttr proxy at
-p = Getting
+lookupAttr proxy at
+p = Getting
   (Maybe (Apply f at)) (Attributes f ats) (Maybe (Apply f at))
 -> Attributes f ats -> Maybe (Apply f at)
 forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
@@ -625,18 +625,18 @@
 (at ∈ ats) =>
 proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))
 ixAttr proxy at
-p)
+p)
 
 -- | Sets a particular attribute
-setAttr               :: forall proxy at ats f. (at  ats)
-                      => proxy at -> Apply f at -> Attributes f ats -> Attributes f ats
+setAttr               :: forall proxy at ats f. (at  ats)
+                      => proxy at -> Apply f at -> Attributes f ats -> Attributes f ats
 setAttr :: forall {u} (proxy :: u -> *) (at :: u) (ats :: [u]) (f :: u ~> *).
 (at ∈ ats) =>
 proxy at -> Apply f at -> Attributes f ats -> Attributes f ats
 setAttr proxy at
-_ Apply f at
-a (Attrs Rec (Attr f) ats
-r) = Rec (Attr f) ats -> Attributes f ats
+_ Apply f at
+a (Attrs Rec (Attr f) ats
+r) = Rec (Attr f) ats -> Attributes f ats
 forall u (f :: TyFun u (*) -> *) (ats :: [u]).
 Rec (Attr f) ats -> Attributes f ats
 Attrs (Rec (Attr f) ats -> Attributes f ats)
@@ -651,30 +651,30 @@
 forall {u} (f :: u ~> *) (label :: u).
 Apply f label -> Attr f label
 Attr Apply f at
-a :: Attr f at) Rec (Attr f) ats
-r
+a :: Attr f at) Rec (Attr f) ats
+r
 
 
 -- | gets and removes the attribute from Attributes
-takeAttr       :: forall proxy at ats f. (at  ats)
-               => proxy at -> Attributes f ats -> ( Maybe (Apply f at)
-                                                  , Attributes f ats )
+takeAttr       :: forall proxy at ats f. (at  ats)
+               => proxy at -> Attributes f ats -> ( Maybe (Apply f at)
+                                                  , Attributes f ats )
 takeAttr :: forall {u} (proxy :: u -> *) (at :: u) (ats :: [u])
        (f :: TyFun u (*) -> *).
 (at ∈ ats) =>
 proxy at
 -> Attributes f ats -> (Maybe (Apply f at), Attributes f ats)
-takeAttr proxy at
-p Attributes f ats
-ats = (proxy at -> Attributes f ats -> Maybe (Apply f at)
+takeAttr proxy at
+p Attributes f ats
+ats = (proxy at -> Attributes f ats -> Maybe (Apply f at)
 forall {k1} (at :: k1) (ats :: [k1]) (proxy :: k1 -> *)
        (f :: TyFun k1 (*) -> *).
 (at ∈ ats) =>
 proxy at -> Attributes f ats -> Maybe (Apply f at)
 lookupAttr proxy at
-p Attributes f ats
-ats, Attributes f ats
-atsAttributes f ats
+p Attributes f ats
+ats, Attributes f ats
+atsAttributes f ats
 -> (Attributes f ats -> Attributes f ats) -> Attributes f ats
 forall a b. a -> (a -> b) -> b
 &proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))
@@ -683,7 +683,7 @@
 (at ∈ ats) =>
 proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at))
 ixAttr proxy at
-p ((Maybe (Apply f at) -> Identity (Maybe (Apply f at)))
+p ((Maybe (Apply f at) -> Identity (Maybe (Apply f at)))
  -> Attributes f ats -> Identity (Attributes f ats))
 -> Maybe (Apply f at) -> Attributes f ats -> Attributes f ats
 forall s t a b. ASetter s t a b -> b -> s -> t
@@ -692,14 +692,14 @@
 Nothing)
 
 -- | unsets/Removes an attribute
-unSetAttr   :: forall proxy at ats f. (at  ats)
-            => proxy at -> Attributes f ats -> Attributes f ats
+unSetAttr   :: forall proxy at ats f. (at  ats)
+            => proxy at -> Attributes f ats -> Attributes f ats
 unSetAttr :: forall {u} (proxy :: u -> *) (at :: u) (ats :: [u])
        (f :: TyFun u (*) -> *).
 (at ∈ ats) =>
 proxy at -> Attributes f ats -> Attributes f ats
-unSetAttr proxy at
-p = (Maybe (Apply f at), Attributes f ats) -> Attributes f ats
+unSetAttr proxy at
+p = (Maybe (Apply f at), Attributes f ats) -> Attributes f ats
 forall a b. (a, b) -> b
 snd ((Maybe (Apply f at), Attributes f ats) -> Attributes f ats)
 -> (Attributes f ats -> (Maybe (Apply f at), Attributes f ats))
@@ -714,18 +714,18 @@
 proxy at
 -> Attributes f ats -> (Maybe (Apply f at), Attributes f ats)
 takeAttr proxy at
-p
+p
 
 -- | Creates a singleton attribute
-attr     :: (at  ats, RecApplicative ats)
-         => proxy at -> Apply f at -> Attributes f ats
+attr     :: (at  ats, RecApplicative ats)
+         => proxy at -> Apply f at -> Attributes f ats
 attr :: forall {u} (at :: u) (ats :: [u]) (proxy :: u -> *) (f :: u ~> *).
 (at ∈ ats, RecApplicative ats) =>
 proxy at -> Apply f at -> Attributes f ats
-attr proxy at
-p Apply f at
-x = Apply f at
-xApply f at
+attr proxy at
+p Apply f at
+x = Apply f at
+xApply f at
 -> Getting (Attributes f ats) (Apply f at) (Attributes f ats)
 -> Attributes f ats
 forall s a. s -> Getting a s a -> a
@@ -738,14 +738,14 @@
 (at ∈ ats, RecApplicative ats) =>
 proxy at -> Prism' (Attributes f ats) (Apply f at)
 _Attr proxy at
-p)
+p)
 
 --------------------------------------------------------------------------------
 -- * Implementations for Common Attributes
 
 -- | Possible values for Pin
 data PinType = No | Yes | Horizontal | Vertical
-             deriving (PinType -> PinType -> Bool
+             deriving (PinType -> PinType -> Bool
 (PinType -> PinType -> Bool)
 -> (PinType -> PinType -> Bool) -> Eq PinType
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -753,7 +753,7 @@
 == :: PinType -> PinType -> Bool
 $c/= :: PinType -> PinType -> Bool
 /= :: PinType -> PinType -> Bool
-Eq,Int -> PinType -> ShowS
+Eq,Int -> PinType -> ShowS
 [PinType] -> ShowS
 PinType -> String
 (Int -> PinType -> ShowS)
@@ -766,7 +766,7 @@
 show :: PinType -> String
 $cshowList :: [PinType] -> ShowS
 showList :: [PinType] -> ShowS
-Show,ReadPrec [PinType]
+Show,ReadPrec [PinType]
 ReadPrec PinType
 Int -> ReadS PinType
 ReadS [PinType]
@@ -786,7 +786,7 @@
 readPrec :: ReadPrec PinType
 $creadListPrec :: ReadPrec [PinType]
 readListPrec :: ReadPrec [PinType]
-Read,Int -> PinType
+Read,Int -> PinType
 PinType -> Int
 PinType -> [PinType]
 PinType -> PinType
@@ -830,7 +830,7 @@
 Enum)
 
 -- | Possible values for Transformation
-data TransformationTypes = Affine | Rigid | Translations deriving (Int -> TransformationTypes -> ShowS
+data TransformationTypes = Affine | Rigid | Translations deriving (Int -> TransformationTypes -> ShowS
 [TransformationTypes] -> ShowS
 TransformationTypes -> String
 (Int -> TransformationTypes -> ShowS)
@@ -845,7 +845,7 @@
 show :: TransformationTypes -> String
 $cshowList :: [TransformationTypes] -> ShowS
 showList :: [TransformationTypes] -> ShowS
-Show,ReadPrec [TransformationTypes]
+Show,ReadPrec [TransformationTypes]
 ReadPrec TransformationTypes
 Int -> ReadS TransformationTypes
 ReadS [TransformationTypes]
@@ -865,7 +865,7 @@
 readPrec :: ReadPrec TransformationTypes
 $creadListPrec :: ReadPrec [TransformationTypes]
 readListPrec :: ReadPrec [TransformationTypes]
-Read,TransformationTypes -> TransformationTypes -> Bool
+Read,TransformationTypes -> TransformationTypes -> Bool
 (TransformationTypes -> TransformationTypes -> Bool)
 -> (TransformationTypes -> TransformationTypes -> Bool)
 -> Eq TransformationTypes
@@ -874,7 +874,7 @@
 == :: TransformationTypes -> TransformationTypes -> Bool
 $c/= :: TransformationTypes -> TransformationTypes -> Bool
 /= :: TransformationTypes -> TransformationTypes -> Bool
-Eq,Int -> TransformationTypes
+Eq,Int -> TransformationTypes
 TransformationTypes -> Int
 TransformationTypes -> [TransformationTypes]
 TransformationTypes -> TransformationTypes
@@ -939,7 +939,7 @@
 -- applies here.
 
 data HorizontalAlignment = AlignLeft | AlignHCenter | AlignRight
-                         deriving (Int -> HorizontalAlignment -> ShowS
+                         deriving (Int -> HorizontalAlignment -> ShowS
 [HorizontalAlignment] -> ShowS
 HorizontalAlignment -> String
 (Int -> HorizontalAlignment -> ShowS)
@@ -954,7 +954,7 @@
 show :: HorizontalAlignment -> String
 $cshowList :: [HorizontalAlignment] -> ShowS
 showList :: [HorizontalAlignment] -> ShowS
-Show,ReadPrec [HorizontalAlignment]
+Show,ReadPrec [HorizontalAlignment]
 ReadPrec HorizontalAlignment
 Int -> ReadS HorizontalAlignment
 ReadS [HorizontalAlignment]
@@ -974,7 +974,7 @@
 readPrec :: ReadPrec HorizontalAlignment
 $creadListPrec :: ReadPrec [HorizontalAlignment]
 readListPrec :: ReadPrec [HorizontalAlignment]
-Read,HorizontalAlignment -> HorizontalAlignment -> Bool
+Read,HorizontalAlignment -> HorizontalAlignment -> Bool
 (HorizontalAlignment -> HorizontalAlignment -> Bool)
 -> (HorizontalAlignment -> HorizontalAlignment -> Bool)
 -> Eq HorizontalAlignment
@@ -983,7 +983,7 @@
 == :: HorizontalAlignment -> HorizontalAlignment -> Bool
 $c/= :: HorizontalAlignment -> HorizontalAlignment -> Bool
 /= :: HorizontalAlignment -> HorizontalAlignment -> Bool
-Eq,Eq HorizontalAlignment
+Eq,Eq HorizontalAlignment
 Eq HorizontalAlignment =>
 (HorizontalAlignment -> HorizontalAlignment -> Ordering)
 -> (HorizontalAlignment -> HorizontalAlignment -> Bool)
@@ -1022,7 +1022,7 @@
 max :: HorizontalAlignment -> HorizontalAlignment -> HorizontalAlignment
 $cmin :: HorizontalAlignment -> HorizontalAlignment -> HorizontalAlignment
 min :: HorizontalAlignment -> HorizontalAlignment -> HorizontalAlignment
-Ord,Int -> HorizontalAlignment
+Ord,Int -> HorizontalAlignment
 HorizontalAlignment -> Int
 HorizontalAlignment -> [HorizontalAlignment]
 HorizontalAlignment -> HorizontalAlignment
@@ -1080,7 +1080,7 @@
 Enum)
 
 data VerticalAlignment = AlignTop | AlignVCenter | AlignBottom | AlignBaseline
-                       deriving (Int -> VerticalAlignment -> ShowS
+                       deriving (Int -> VerticalAlignment -> ShowS
 [VerticalAlignment] -> ShowS
 VerticalAlignment -> String
 (Int -> VerticalAlignment -> ShowS)
@@ -1095,7 +1095,7 @@
 show :: VerticalAlignment -> String
 $cshowList :: [VerticalAlignment] -> ShowS
 showList :: [VerticalAlignment] -> ShowS
-Show,ReadPrec [VerticalAlignment]
+Show,ReadPrec [VerticalAlignment]
 ReadPrec VerticalAlignment
 Int -> ReadS VerticalAlignment
 ReadS [VerticalAlignment]
@@ -1115,7 +1115,7 @@
 readPrec :: ReadPrec VerticalAlignment
 $creadListPrec :: ReadPrec [VerticalAlignment]
 readListPrec :: ReadPrec [VerticalAlignment]
-Read,VerticalAlignment -> VerticalAlignment -> Bool
+Read,VerticalAlignment -> VerticalAlignment -> Bool
 (VerticalAlignment -> VerticalAlignment -> Bool)
 -> (VerticalAlignment -> VerticalAlignment -> Bool)
 -> Eq VerticalAlignment
@@ -1124,7 +1124,7 @@
 == :: VerticalAlignment -> VerticalAlignment -> Bool
 $c/= :: VerticalAlignment -> VerticalAlignment -> Bool
 /= :: VerticalAlignment -> VerticalAlignment -> Bool
-Eq,Eq VerticalAlignment
+Eq,Eq VerticalAlignment
 Eq VerticalAlignment =>
 (VerticalAlignment -> VerticalAlignment -> Ordering)
 -> (VerticalAlignment -> VerticalAlignment -> Bool)
@@ -1161,7 +1161,7 @@
 max :: VerticalAlignment -> VerticalAlignment -> VerticalAlignment
 $cmin :: VerticalAlignment -> VerticalAlignment -> VerticalAlignment
 min :: VerticalAlignment -> VerticalAlignment -> VerticalAlignment
-Ord,Int -> VerticalAlignment
+Ord,Int -> VerticalAlignment
 VerticalAlignment -> Int
 VerticalAlignment -> [VerticalAlignment]
 VerticalAlignment -> VerticalAlignment
@@ -1212,7 +1212,7 @@
 type TeXStyle = Text
 
 -- | size of text in points
-type TextSizeUnit r = r
+type TextSizeUnit r = r
 
 --------------------------------------------------------------------------------
 -- * Symbol Attributes
@@ -1222,7 +1222,7 @@
 --                              deriving (Show,Eq)
 
 -- | Size
-newtype IpeSize  r = IpeSize  (IpeValue r) deriving (Int -> IpeSize r -> ShowS
+newtype IpeSize  r = IpeSize  (IpeValue r) deriving (Int -> IpeSize r -> ShowS
 [IpeSize r] -> ShowS
 IpeSize r -> String
 (Int -> IpeSize r -> ShowS)
@@ -1240,7 +1240,7 @@
 show :: IpeSize r -> String
 $cshowList :: forall r. Show r => [IpeSize r] -> ShowS
 showList :: [IpeSize r] -> ShowS
-Show,IpeSize r -> IpeSize r -> Bool
+Show,IpeSize r -> IpeSize r -> Bool
 (IpeSize r -> IpeSize r -> Bool)
 -> (IpeSize r -> IpeSize r -> Bool) -> Eq (IpeSize r)
 forall r. Eq r => IpeSize r -> IpeSize r -> Bool
@@ -1249,7 +1249,7 @@
 == :: IpeSize r -> IpeSize r -> Bool
 $c/= :: forall r. Eq r => IpeSize r -> IpeSize r -> Bool
 /= :: IpeSize r -> IpeSize r -> Bool
-Eq,Eq (IpeSize r)
+Eq,Eq (IpeSize r)
 Eq (IpeSize r) =>
 (IpeSize r -> IpeSize r -> Ordering)
 -> (IpeSize r -> IpeSize r -> Bool)
@@ -1290,7 +1290,7 @@
 max :: IpeSize r -> IpeSize r -> IpeSize r
 $cmin :: forall r. Ord r => IpeSize r -> IpeSize r -> IpeSize r
 min :: IpeSize r -> IpeSize r -> IpeSize r
-Ord,(forall a b. (a -> b) -> IpeSize a -> IpeSize b)
+Ord,(forall a b. (a -> b) -> IpeSize a -> IpeSize b)
 -> (forall a b. a -> IpeSize b -> IpeSize a) -> Functor IpeSize
 forall a b. a -> IpeSize b -> IpeSize a
 forall a b. (a -> b) -> IpeSize a -> IpeSize b
@@ -1301,7 +1301,7 @@
 fmap :: forall a b. (a -> b) -> IpeSize a -> IpeSize b
 $c<$ :: forall a b. a -> IpeSize b -> IpeSize a
 <$ :: forall a b. a -> IpeSize b -> IpeSize a
-Functor,(forall m. Monoid m => IpeSize m -> m)
+Functor,(forall m. Monoid m => IpeSize m -> m)
 -> (forall m a. Monoid m => (a -> m) -> IpeSize a -> m)
 -> (forall m a. Monoid m => (a -> m) -> IpeSize a -> m)
 -> (forall a b. (a -> b -> b) -> b -> IpeSize a -> b)
@@ -1383,7 +1383,7 @@
 sum :: forall a. Num a => IpeSize a -> a
 $cproduct :: forall a. Num a => IpeSize a -> a
 product :: forall a. Num a => IpeSize a -> a
-Foldable,Functor IpeSize
+Foldable,Functor IpeSize
 Foldable IpeSize
 (Functor IpeSize, Foldable IpeSize) =>
 (forall (f :: * -> *) a b.
@@ -1442,7 +1442,7 @@
 sequence :: forall (m :: * -> *) a. Monad m => IpeSize (m a) -> m (IpeSize a)
 Traversable)
 -- | Pen/Thickness
-newtype IpePen   r = IpePen   (IpeValue r) deriving (Int -> IpePen r -> ShowS
+newtype IpePen   r = IpePen   (IpeValue r) deriving (Int -> IpePen r -> ShowS
 [IpePen r] -> ShowS
 IpePen r -> String
 (Int -> IpePen r -> ShowS)
@@ -1458,7 +1458,7 @@
 show :: IpePen r -> String
 $cshowList :: forall r. Show r => [IpePen r] -> ShowS
 showList :: [IpePen r] -> ShowS
-Show,IpePen r -> IpePen r -> Bool
+Show,IpePen r -> IpePen r -> Bool
 (IpePen r -> IpePen r -> Bool)
 -> (IpePen r -> IpePen r -> Bool) -> Eq (IpePen r)
 forall r. Eq r => IpePen r -> IpePen r -> Bool
@@ -1467,7 +1467,7 @@
 == :: IpePen r -> IpePen r -> Bool
 $c/= :: forall r. Eq r => IpePen r -> IpePen r -> Bool
 /= :: IpePen r -> IpePen r -> Bool
-Eq,Eq (IpePen r)
+Eq,Eq (IpePen r)
 Eq (IpePen r) =>
 (IpePen r -> IpePen r -> Ordering)
 -> (IpePen r -> IpePen r -> Bool)
@@ -1508,7 +1508,7 @@
 max :: IpePen r -> IpePen r -> IpePen r
 $cmin :: forall r. Ord r => IpePen r -> IpePen r -> IpePen r
 min :: IpePen r -> IpePen r -> IpePen r
-Ord,(forall a b. (a -> b) -> IpePen a -> IpePen b)
+Ord,(forall a b. (a -> b) -> IpePen a -> IpePen b)
 -> (forall a b. a -> IpePen b -> IpePen a) -> Functor IpePen
 forall a b. a -> IpePen b -> IpePen a
 forall a b. (a -> b) -> IpePen a -> IpePen b
@@ -1519,7 +1519,7 @@
 fmap :: forall a b. (a -> b) -> IpePen a -> IpePen b
 $c<$ :: forall a b. a -> IpePen b -> IpePen a
 <$ :: forall a b. a -> IpePen b -> IpePen a
-Functor,(forall m. Monoid m => IpePen m -> m)
+Functor,(forall m. Monoid m => IpePen m -> m)
 -> (forall m a. Monoid m => (a -> m) -> IpePen a -> m)
 -> (forall m a. Monoid m => (a -> m) -> IpePen a -> m)
 -> (forall a b. (a -> b -> b) -> b -> IpePen a -> b)
@@ -1601,7 +1601,7 @@
 sum :: forall a. Num a => IpePen a -> a
 $cproduct :: forall a. Num a => IpePen a -> a
 product :: forall a. Num a => IpePen a -> a
-Foldable,Functor IpePen
+Foldable,Functor IpePen
 Foldable IpePen
 (Functor IpePen, Foldable IpePen) =>
 (forall (f :: * -> *) a b.
@@ -1664,9 +1664,9 @@
 -- * Path Attributes
 
 -- | Possible values for Dash
-data IpeDash r = DashNamed Text
-               | DashPattern [r] r
-               deriving (Int -> IpeDash r -> ShowS
+data IpeDash r = DashNamed Text
+               | DashPattern [r] r
+               deriving (Int -> IpeDash r -> ShowS
 [IpeDash r] -> ShowS
 IpeDash r -> String
 (Int -> IpeDash r -> ShowS)
@@ -1684,7 +1684,7 @@
 show :: IpeDash r -> String
 $cshowList :: forall r. Show r => [IpeDash r] -> ShowS
 showList :: [IpeDash r] -> ShowS
-Show,IpeDash r -> IpeDash r -> Bool
+Show,IpeDash r -> IpeDash r -> Bool
 (IpeDash r -> IpeDash r -> Bool)
 -> (IpeDash r -> IpeDash r -> Bool) -> Eq (IpeDash r)
 forall r. Eq r => IpeDash r -> IpeDash r -> Bool
@@ -1693,7 +1693,7 @@
 == :: IpeDash r -> IpeDash r -> Bool
 $c/= :: forall r. Eq r => IpeDash r -> IpeDash r -> Bool
 /= :: IpeDash r -> IpeDash r -> Bool
-Eq,(forall a b. (a -> b) -> IpeDash a -> IpeDash b)
+Eq,(forall a b. (a -> b) -> IpeDash a -> IpeDash b)
 -> (forall a b. a -> IpeDash b -> IpeDash a) -> Functor IpeDash
 forall a b. a -> IpeDash b -> IpeDash a
 forall a b. (a -> b) -> IpeDash a -> IpeDash b
@@ -1704,7 +1704,7 @@
 fmap :: forall a b. (a -> b) -> IpeDash a -> IpeDash b
 $c<$ :: forall a b. a -> IpeDash b -> IpeDash a
 <$ :: forall a b. a -> IpeDash b -> IpeDash a
-Functor,(forall m. Monoid m => IpeDash m -> m)
+Functor,(forall m. Monoid m => IpeDash m -> m)
 -> (forall m a. Monoid m => (a -> m) -> IpeDash a -> m)
 -> (forall m a. Monoid m => (a -> m) -> IpeDash a -> m)
 -> (forall a b. (a -> b -> b) -> b -> IpeDash a -> b)
@@ -1786,7 +1786,7 @@
 sum :: forall a. Num a => IpeDash a -> a
 $cproduct :: forall a. Num a => IpeDash a -> a
 product :: forall a. Num a => IpeDash a -> a
-Foldable,Functor IpeDash
+Foldable,Functor IpeDash
 Foldable IpeDash
 (Functor IpeDash, Foldable IpeDash) =>
 (forall (f :: * -> *) a b.
@@ -1846,7 +1846,7 @@
 Traversable)
 
 -- | Allowed Fill types
-data FillType = Wind | EOFill deriving (Int -> FillType -> ShowS
+data FillType = Wind | EOFill deriving (Int -> FillType -> ShowS
 [FillType] -> ShowS
 FillType -> String
 (Int -> FillType -> ShowS)
@@ -1859,7 +1859,7 @@
 show :: FillType -> String
 $cshowList :: [FillType] -> ShowS
 showList :: [FillType] -> ShowS
-Show,ReadPrec [FillType]
+Show,ReadPrec [FillType]
 ReadPrec FillType
 Int -> ReadS FillType
 ReadS [FillType]
@@ -1879,7 +1879,7 @@
 readPrec :: ReadPrec FillType
 $creadListPrec :: ReadPrec [FillType]
 readListPrec :: ReadPrec [FillType]
-Read,FillType -> FillType -> Bool
+Read,FillType -> FillType -> Bool
 (FillType -> FillType -> Bool)
 -> (FillType -> FillType -> Bool) -> Eq FillType
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -1895,11 +1895,11 @@
 type IpeGradient = Text
 
 -- | Possible values for an ipe arrow
-data IpeArrow r = IpeArrow { forall r. IpeArrow r -> Text
+data IpeArrow r = IpeArrow { forall r. IpeArrow r -> Text
 _arrowName :: Text
                            , forall r. IpeArrow r -> IpeSize r
-_arrowSize :: IpeSize r
-                           } deriving (Int -> IpeArrow r -> ShowS
+_arrowSize :: IpeSize r
+                           } deriving (Int -> IpeArrow r -> ShowS
 [IpeArrow r] -> ShowS
 IpeArrow r -> String
 (Int -> IpeArrow r -> ShowS)
@@ -1917,7 +1917,7 @@
 show :: IpeArrow r -> String
 $cshowList :: forall r. Show r => [IpeArrow r] -> ShowS
 showList :: [IpeArrow r] -> ShowS
-Show,IpeArrow r -> IpeArrow r -> Bool
+Show,IpeArrow r -> IpeArrow r -> Bool
 (IpeArrow r -> IpeArrow r -> Bool)
 -> (IpeArrow r -> IpeArrow r -> Bool) -> Eq (IpeArrow r)
 forall r. Eq r => IpeArrow r -> IpeArrow r -> Bool
@@ -1926,7 +1926,7 @@
 == :: IpeArrow r -> IpeArrow r -> Bool
 $c/= :: forall r. Eq r => IpeArrow r -> IpeArrow r -> Bool
 /= :: IpeArrow r -> IpeArrow r -> Bool
-Eq,(forall a b. (a -> b) -> IpeArrow a -> IpeArrow b)
+Eq,(forall a b. (a -> b) -> IpeArrow a -> IpeArrow b)
 -> (forall a b. a -> IpeArrow b -> IpeArrow a) -> Functor IpeArrow
 forall a b. a -> IpeArrow b -> IpeArrow a
 forall a b. (a -> b) -> IpeArrow a -> IpeArrow b
@@ -1937,7 +1937,7 @@
 fmap :: forall a b. (a -> b) -> IpeArrow a -> IpeArrow b
 $c<$ :: forall a b. a -> IpeArrow b -> IpeArrow a
 <$ :: forall a b. a -> IpeArrow b -> IpeArrow a
-Functor,(forall m. Monoid m => IpeArrow m -> m)
+Functor,(forall m. Monoid m => IpeArrow m -> m)
 -> (forall m a. Monoid m => (a -> m) -> IpeArrow a -> m)
 -> (forall m a. Monoid m => (a -> m) -> IpeArrow a -> m)
 -> (forall a b. (a -> b -> b) -> b -> IpeArrow a -> b)
@@ -2019,7 +2019,7 @@
 sum :: forall a. Num a => IpeArrow a -> a
 $cproduct :: forall a. Num a => IpeArrow a -> a
 product :: forall a. Num a => IpeArrow a -> a
-Foldable,Functor IpeArrow
+Foldable,Functor IpeArrow
 Foldable IpeArrow
 (Functor IpeArrow, Foldable IpeArrow) =>
 (forall (f :: * -> *) a b.
@@ -2077,10 +2077,10 @@
 $csequence :: forall (m :: * -> *) a. Monad m => IpeArrow (m a) -> m (IpeArrow a)
 sequence :: forall (m :: * -> *) a. Monad m => IpeArrow (m a) -> m (IpeArrow a)
 Traversable)
-makeLenses ''IpeArrow
+makeLenses ''IpeArrow
 
 -- | A normal arrow
-normalArrow :: IpeArrow r
+normalArrow :: IpeArrow r
 normalArrow :: forall r. IpeArrow r
 normalArrow = Text -> IpeSize r -> IpeArrow r
 forall r. Text -> IpeSize r -> IpeArrow r
@@ -2108,123 +2108,123 @@
 
 -- | For the types representing attribute values we can get the name/key to use
 -- when serializing to ipe.
-class IpeAttrName (a :: AttributeUniverse) where
-  attrName :: proxy a -> Text
+class IpeAttrName (a :: AttributeUniverse) where
+  attrName :: proxy a -> Text
 
 -- CommonAttributeUnivers
-instance IpeAttrName Layer           where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Layer -> Text
+instance IpeAttrName Layer           where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Layer -> Text
 attrName proxy 'Layer
 _ = Text
 "layer"
-instance IpeAttrName Matrix          where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Matrix -> Text
+instance IpeAttrName Matrix          where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Matrix -> Text
 attrName proxy 'Matrix
 _ = Text
 "matrix"
-instance IpeAttrName Pin             where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Pin -> Text
+instance IpeAttrName Pin             where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Pin -> Text
 attrName proxy 'Pin
 _ = Text
 "pin"
-instance IpeAttrName Transformations where attrName :: forall (proxy :: AttributeUniverse -> *).
+instance IpeAttrName Transformations where attrName :: forall (proxy :: AttributeUniverse -> *).
 proxy 'Transformations -> Text
 attrName proxy 'Transformations
 _ = Text
 "transformations"
 
 -- IpeSymbolAttributeUniversre
-instance IpeAttrName Stroke       where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Stroke -> Text
+instance IpeAttrName Stroke       where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Stroke -> Text
 attrName proxy 'Stroke
 _ = Text
 "stroke"
-instance IpeAttrName Fill         where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Fill -> Text
+instance IpeAttrName Fill         where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Fill -> Text
 attrName proxy 'Fill
 _ = Text
 "fill"
-instance IpeAttrName Pen          where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Pen -> Text
+instance IpeAttrName Pen          where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Pen -> Text
 attrName proxy 'Pen
 _ = Text
 "pen"
-instance IpeAttrName Size         where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Size -> Text
+instance IpeAttrName Size         where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Size -> Text
 attrName proxy 'Size
 _ = Text
 "size"
 
 -- PathAttributeUniverse
-instance IpeAttrName Dash       where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Dash -> Text
+instance IpeAttrName Dash       where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Dash -> Text
 attrName proxy 'Dash
 _ = Text
 "dash"
-instance IpeAttrName LineCap    where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'LineCap -> Text
+instance IpeAttrName LineCap    where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'LineCap -> Text
 attrName proxy 'LineCap
 _ = Text
 "cap"
-instance IpeAttrName LineJoin   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'LineJoin -> Text
+instance IpeAttrName LineJoin   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'LineJoin -> Text
 attrName proxy 'LineJoin
 _ = Text
 "join"
-instance IpeAttrName FillRule   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'FillRule -> Text
+instance IpeAttrName FillRule   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'FillRule -> Text
 attrName proxy 'FillRule
 _ = Text
 "fillrule"
-instance IpeAttrName Arrow      where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Arrow -> Text
+instance IpeAttrName Arrow      where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Arrow -> Text
 attrName proxy 'Arrow
 _ = Text
 "arrow"
-instance IpeAttrName RArrow     where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'RArrow -> Text
+instance IpeAttrName RArrow     where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'RArrow -> Text
 attrName proxy 'RArrow
 _ = Text
 "rarrow"
-instance IpeAttrName StrokeOpacity where attrName :: forall (proxy :: AttributeUniverse -> *).
+instance IpeAttrName StrokeOpacity where attrName :: forall (proxy :: AttributeUniverse -> *).
 proxy 'StrokeOpacity -> Text
 attrName proxy 'StrokeOpacity
 _ = Text
 "stroke-opacity"
-instance IpeAttrName Opacity    where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Opacity -> Text
+instance IpeAttrName Opacity    where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Opacity -> Text
 attrName proxy 'Opacity
 _ = Text
 "opacity"
-instance IpeAttrName Tiling     where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Tiling -> Text
+instance IpeAttrName Tiling     where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Tiling -> Text
 attrName proxy 'Tiling
 _ = Text
 "tiling"
-instance IpeAttrName Gradient   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Gradient -> Text
+instance IpeAttrName Gradient   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Gradient -> Text
 attrName proxy 'Gradient
 _ = Text
 "gradient"
 
 -- TextAttibuteUniverse
-instance IpeAttrName Width   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Width -> Text
+instance IpeAttrName Width   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Width -> Text
 attrName proxy 'Width
 _ = Text
 "width"
-instance IpeAttrName Height  where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Height -> Text
+instance IpeAttrName Height  where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Height -> Text
 attrName proxy 'Height
 _ = Text
 "height"
-instance IpeAttrName Depth   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Depth -> Text
+instance IpeAttrName Depth   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Depth -> Text
 attrName proxy 'Depth
 _ = Text
 "depth"
-instance IpeAttrName VAlign  where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'VAlign -> Text
+instance IpeAttrName VAlign  where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'VAlign -> Text
 attrName proxy 'VAlign
 _ = Text
 "valign"
-instance IpeAttrName HAlign  where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'HAlign -> Text
+instance IpeAttrName HAlign  where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'HAlign -> Text
 attrName proxy 'HAlign
 _ = Text
 "halign"
-instance IpeAttrName Style   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Style -> Text
+instance IpeAttrName Style   where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Style -> Text
 attrName proxy 'Style
 _ = Text
 "style"
 
 -- GroupAttributeUniverse
-instance IpeAttrName Clip     where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Clip -> Text
+instance IpeAttrName Clip     where attrName :: forall (proxy :: AttributeUniverse -> *). proxy 'Clip -> Text
 attrName proxy 'Clip
 _ = Text
 "clip"
 
 -- | Writing Attribute names
-writeAttrNames           :: AllConstrained IpeAttrName rs => Rec f rs -> Rec (Const Text) rs
+writeAttrNames           :: AllConstrained IpeAttrName rs => Rec f rs -> Rec (Const Text) rs
 writeAttrNames :: forall (rs :: [AttributeUniverse]) (f :: AttributeUniverse -> *).
 AllConstrained IpeAttrName rs =>
 Rec f rs -> Rec (Const Text) rs
@@ -2233,16 +2233,16 @@
 Rec (Const Text) '[]
 forall {u} (a :: u -> *). Rec a '[]
 RNil
-writeAttrNames (f r
-x :& Rec f rs
-xs) = Text -> Const Text r
+writeAttrNames (f r
+x :& Rec f rs
+xs) = Text -> Const Text r
 forall k a (b :: k). a -> Const a b
 Const (f r -> Text
 forall (f :: AttributeUniverse -> *) (s :: AttributeUniverse).
 IpeAttrName s =>
 f s -> Text
-write'' f r
-x) Const Text r -> Rec (Const Text) rs -> Rec (Const Text) (r : rs)
+write'' f r
+x) Const Text r -> Rec (Const Text) rs -> Rec (Const Text) (r : rs)
 forall {u} (a :: u -> *) (r :: u) (rs :: [u]).
 a r -> Rec a rs -> Rec a (r : rs)
 :& Rec f rs -> Rec (Const Text) rs
@@ -2250,13 +2250,13 @@
 AllConstrained IpeAttrName rs =>
 Rec f rs -> Rec (Const Text) rs
 writeAttrNames Rec f rs
-xs
+xs
   where
-    write''   :: forall f s. IpeAttrName s => f s -> Text
-    write'' :: forall (f :: AttributeUniverse -> *) (s :: AttributeUniverse).
+    write''   :: forall f s. IpeAttrName s => f s -> Text
+    write'' :: forall (f :: AttributeUniverse -> *) (s :: AttributeUniverse).
 IpeAttrName s =>
 f s -> Text
-write'' f s
+write'' f s
 _ = Proxy s -> Text
 forall (a :: AttributeUniverse) (proxy :: AttributeUniverse -> *).
 IpeAttrName a =>
@@ -2264,7 +2264,7 @@
 forall (proxy :: AttributeUniverse -> *). proxy s -> Text
 attrName (Proxy s
 forall {k} (t :: k). Proxy t
-Proxy :: Proxy s)
+Proxy :: Proxy s)
 
 --
 
diff --git a/haddocks/hgeometry/ipe/src/Ipe.Color.html b/haddocks/hgeometry/ipe/src/Ipe.Color.html
index 5ad811ba4..d3fb08c97 100644
--- a/haddocks/hgeometry/ipe/src/Ipe.Color.html
+++ b/haddocks/hgeometry/ipe/src/Ipe.Color.html
@@ -20,7 +20,7 @@
 
 -- | Defines a color in Ipe. Colors are either RGB Values or Named
 -- values.
-newtype IpeColor r = IpeColor (IpeValue (RGB r)) deriving (Int -> IpeColor r -> ShowS
+newtype IpeColor r = IpeColor (IpeValue (RGB r)) deriving (Int -> IpeColor r -> ShowS
 [IpeColor r] -> ShowS
 IpeColor r -> String
 (Int -> IpeColor r -> ShowS)
@@ -38,7 +38,7 @@
 show :: IpeColor r -> String
 $cshowList :: forall r. Show r => [IpeColor r] -> ShowS
 showList :: [IpeColor r] -> ShowS
-Show,ReadPrec [IpeColor r]
+Show,ReadPrec [IpeColor r]
 ReadPrec (IpeColor r)
 Int -> ReadS (IpeColor r)
 ReadS [IpeColor r]
@@ -62,7 +62,7 @@
 readPrec :: ReadPrec (IpeColor r)
 $creadListPrec :: forall r. Read r => ReadPrec [IpeColor r]
 readListPrec :: ReadPrec [IpeColor r]
-Read,IpeColor r -> IpeColor r -> Bool
+Read,IpeColor r -> IpeColor r -> Bool
 (IpeColor r -> IpeColor r -> Bool)
 -> (IpeColor r -> IpeColor r -> Bool) -> Eq (IpeColor r)
 forall r. Eq r => IpeColor r -> IpeColor r -> Bool
@@ -73,54 +73,54 @@
 /= :: IpeColor r -> IpeColor r -> Bool
 Eq)
 
-instance Ord r => Ord (IpeColor r) where
-  (IpeColor IpeValue (RGB r)
-c) compare :: IpeColor r -> IpeColor r -> Ordering
-`compare` (IpeColor IpeValue (RGB r)
-c') = (RGB r -> (r, r, r)) -> IpeValue (RGB r) -> IpeValue (r, r, r)
+instance Ord r => Ord (IpeColor r) where
+  (IpeColor IpeValue (RGB r)
+c) compare :: IpeColor r -> IpeColor r -> Ordering
+`compare` (IpeColor IpeValue (RGB r)
+c') = (RGB r -> (r, r, r)) -> IpeValue (RGB r) -> IpeValue (r, r, r)
 forall a b. (a -> b) -> IpeValue a -> IpeValue b
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 fmap RGB r -> (r, r, r)
 forall {c}. RGB c -> (c, c, c)
-f IpeValue (RGB r)
-c IpeValue (r, r, r) -> IpeValue (r, r, r) -> Ordering
+f IpeValue (RGB r)
+c IpeValue (r, r, r) -> IpeValue (r, r, r) -> Ordering
 forall a. Ord a => a -> a -> Ordering
 `compare` (RGB r -> (r, r, r)) -> IpeValue (RGB r) -> IpeValue (r, r, r)
 forall a b. (a -> b) -> IpeValue a -> IpeValue b
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 fmap RGB r -> (r, r, r)
 forall {c}. RGB c -> (c, c, c)
-f IpeValue (RGB r)
-c'
+f IpeValue (RGB r)
+c'
     where
-      f :: RGB c -> (c, c, c)
-f (RGB c
-r c
-g c
-b) = (c
-r,c
-g,c
-b)
+      f :: RGB c -> (c, c, c)
+f (RGB c
+r c
+g c
+b) = (c
+r,c
+g,c
+b)
 
-instance Functor IpeColor where
-  fmap :: forall a b. (a -> b) -> IpeColor a -> IpeColor b
+instance Functor IpeColor where
+  fmap :: forall a b. (a -> b) -> IpeColor a -> IpeColor b
 fmap = (a -> b) -> IpeColor a -> IpeColor b
 forall (t :: * -> *) a b. Traversable t => (a -> b) -> t a -> t b
 fmapDefault
-instance Foldable IpeColor where
-  foldMap :: forall m a. Monoid m => (a -> m) -> IpeColor a -> m
-foldMap = (a -> m) -> IpeColor a -> m
+instance Foldable IpeColor where
+  foldMap :: forall m a. Monoid m => (a -> m) -> IpeColor a -> m
+foldMap = (a -> m) -> IpeColor a -> m
 forall (t :: * -> *) m a.
 (Traversable t, Monoid m) =>
 (a -> m) -> t a -> m
 foldMapDefault
-instance Traversable IpeColor where
-  traverse :: forall (f :: * -> *) a b.
+instance Traversable IpeColor where
+  traverse :: forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> IpeColor a -> f (IpeColor b)
-traverse a -> f b
-f (IpeColor IpeValue (RGB a)
-v) = IpeValue (RGB b) -> IpeColor b
+traverse a -> f b
+f (IpeColor IpeValue (RGB a)
+v) = IpeValue (RGB b) -> IpeColor b
 forall r. IpeValue (RGB r) -> IpeColor r
 IpeColor (IpeValue (RGB b) -> IpeColor b)
 -> f (IpeValue (RGB b)) -> f (IpeColor b)
@@ -133,33 +133,33 @@
 Applicative f =>
 (a -> f b) -> IpeValue a -> f (IpeValue b)
 traverse RGB a -> f (RGB b)
-traverseRGB IpeValue (RGB a)
-v
+traverseRGB IpeValue (RGB a)
+v
     where
-      traverseRGB :: RGB a -> f (RGB b)
-traverseRGB (RGB a
-r a
-g a
-b) = b -> b -> b -> RGB b
+      traverseRGB :: RGB a -> f (RGB b)
+traverseRGB (RGB a
+r a
+g a
+b) = b -> b -> b -> RGB b
 forall a. a -> a -> a -> RGB a
 RGB (b -> b -> b -> RGB b) -> f b -> f (b -> b -> RGB b)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> a -> f b
-f a
-r f (b -> b -> RGB b) -> f b -> f (b -> RGB b)
+f a
+r f (b -> b -> RGB b) -> f b -> f (b -> RGB b)
 forall a b. f (a -> b) -> f a -> f b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> a -> f b
-f a
-g f (b -> RGB b) -> f b -> f (RGB b)
+f a
+g f (b -> RGB b) -> f b -> f (RGB b)
 forall a b. f (a -> b) -> f a -> f b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> a -> f b
-f a
-b
+f a
+b
 
 -- | Creates a named color
-named :: Text -> IpeColor r
+named :: Text -> IpeColor r
 named :: forall r. Text -> IpeColor r
 named = IpeValue (RGB r) -> IpeColor r
 forall r. IpeValue (RGB r) -> IpeColor r
@@ -173,7 +173,7 @@
 --------------------------------------------------------------------------------
 
 -- | All basic named colors
-basicNamedColors :: [IpeColor r]
+basicNamedColors :: [IpeColor r]
 basicNamedColors :: forall r. [IpeColor r]
 basicNamedColors = [ IpeColor r
 forall r. IpeColor r
@@ -265,7 +265,7 @@
 -- * Basic Named colors
 
 -- | a color named 'black'
-black :: IpeColor r
+black :: IpeColor r
 black :: forall r. IpeColor r
 black = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -273,7 +273,7 @@
 "black"
 
 -- | a color named 'white'
-white :: IpeColor r
+white :: IpeColor r
 white :: forall r. IpeColor r
 white = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -281,7 +281,7 @@
 "white"
 
 -- | a color named 'red'
-red :: IpeColor r
+red :: IpeColor r
 red :: forall r. IpeColor r
 red = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -289,7 +289,7 @@
 "red"
 
 -- | a color named 'green'
-green :: IpeColor r
+green :: IpeColor r
 green :: forall r. IpeColor r
 green = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -297,7 +297,7 @@
 "green"
 
 -- | a color named 'blue'
-blue :: IpeColor r
+blue :: IpeColor r
 blue :: forall r. IpeColor r
 blue = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -305,7 +305,7 @@
 "blue"
 
 -- | a color named 'yellow'
-yellow :: IpeColor r
+yellow :: IpeColor r
 yellow :: forall r. IpeColor r
 yellow = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -313,7 +313,7 @@
 "yellow"
 
 -- | a color named 'orange'
-orange :: IpeColor r
+orange :: IpeColor r
 orange :: forall r. IpeColor r
 orange = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -321,7 +321,7 @@
 "orange"
 
 -- | a color named 'gold'
-gold :: IpeColor r
+gold :: IpeColor r
 gold :: forall r. IpeColor r
 gold = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -329,7 +329,7 @@
 "gold"
 
 -- | a color named 'pruple'
-purple :: IpeColor r
+purple :: IpeColor r
 purple :: forall r. IpeColor r
 purple = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -337,7 +337,7 @@
 "purple"
 
 -- | a color named 'gray'
-gray :: IpeColor r
+gray :: IpeColor r
 gray :: forall r. IpeColor r
 gray = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -345,7 +345,7 @@
 "gray"
 
 -- | a color named 'brown'
-brown :: IpeColor r
+brown :: IpeColor r
 brown :: forall r. IpeColor r
 brown = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -353,7 +353,7 @@
 "brown"
 
 -- | a color named 'navy'
-navy :: IpeColor r
+navy :: IpeColor r
 navy :: forall r. IpeColor r
 navy = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -361,7 +361,7 @@
 "navy"
 
 -- | a color named 'pink'
-pink :: IpeColor r
+pink :: IpeColor r
 pink :: forall r. IpeColor r
 pink = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -369,7 +369,7 @@
 "pink"
 
 -- | a color named 'seagreen'
-seagreen :: IpeColor r
+seagreen :: IpeColor r
 seagreen :: forall r. IpeColor r
 seagreen = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -377,7 +377,7 @@
 "seagreen"
 
 -- | a color named 'turquoise'
-turquoise :: IpeColor r
+turquoise :: IpeColor r
 turquoise :: forall r. IpeColor r
 turquoise = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -385,7 +385,7 @@
 "turquoise"
 
 -- | a color named 'violet'
-violet :: IpeColor r
+violet :: IpeColor r
 violet :: forall r. IpeColor r
 violet = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -393,7 +393,7 @@
 "violet"
 
 -- | a color named 'darkblue'
-darkblue :: IpeColor r
+darkblue :: IpeColor r
 darkblue :: forall r. IpeColor r
 darkblue = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -401,7 +401,7 @@
 "darkblue"
 
 -- | a color named 'darkcyan'
-darkcyan :: IpeColor r
+darkcyan :: IpeColor r
 darkcyan :: forall r. IpeColor r
 darkcyan = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -409,7 +409,7 @@
 "darkcyan"
 
 -- | a color named 'darkgray'
-darkgray :: IpeColor r
+darkgray :: IpeColor r
 darkgray :: forall r. IpeColor r
 darkgray = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -417,7 +417,7 @@
 "darkgray"
 
 -- | a color named 'darkgreen'
-darkgreen :: IpeColor r
+darkgreen :: IpeColor r
 darkgreen :: forall r. IpeColor r
 darkgreen = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -425,7 +425,7 @@
 "darkgreen"
 
 -- | a color named 'darkmagenta'
-darkmagenta :: IpeColor r
+darkmagenta :: IpeColor r
 darkmagenta :: forall r. IpeColor r
 darkmagenta = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -433,7 +433,7 @@
 "darkmagenta"
 
 -- | a color named 'darkorange'
-darkorange :: IpeColor r
+darkorange :: IpeColor r
 darkorange :: forall r. IpeColor r
 darkorange = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -441,7 +441,7 @@
 "darkorange"
 
 -- | a color named 'darkred'
-darkred :: IpeColor r
+darkred :: IpeColor r
 darkred :: forall r. IpeColor r
 darkred = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -449,7 +449,7 @@
 "darkred"
 
 -- | a color named 'lighbtblue'
-lightblue :: IpeColor r
+lightblue :: IpeColor r
 lightblue :: forall r. IpeColor r
 lightblue = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -457,7 +457,7 @@
 "lightblue"
 
 -- | a color named 'lightcyan'
-lightcyan :: IpeColor r
+lightcyan :: IpeColor r
 lightcyan :: forall r. IpeColor r
 lightcyan = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -465,7 +465,7 @@
 "lightcyan"
 
 -- | a color named 'lightgray'
-lightgray :: IpeColor r
+lightgray :: IpeColor r
 lightgray :: forall r. IpeColor r
 lightgray = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -473,7 +473,7 @@
 "lightgray"
 
 -- | a color named 'lightgreen'
-lightgreen :: IpeColor r
+lightgreen :: IpeColor r
 lightgreen :: forall r. IpeColor r
 lightgreen = Text -> IpeColor r
 forall r. Text -> IpeColor r
@@ -481,7 +481,7 @@
 "lightgreen"
 
 -- | a color named 'lightyellow'
-lightyellow :: IpeColor r
+lightyellow :: IpeColor r
 lightyellow :: forall r. IpeColor r
 lightyellow = Text -> IpeColor r
 forall r. Text -> IpeColor r
diff --git a/haddocks/hgeometry/ipe/src/Ipe.Content.html b/haddocks/hgeometry/ipe/src/Ipe.Content.html
index 7b97b7873..ec472eab3 100644
--- a/haddocks/hgeometry/ipe/src/Ipe.Content.html
+++ b/haddocks/hgeometry/ipe/src/Ipe.Content.html
@@ -51,11 +51,11 @@
 -- | Image Objects
 
 -- | bitmap image objects in Ipe
-data Image r = Image { forall r. Image r -> ()
+data Image r = Image { forall r. Image r -> ()
 _imageData :: ()
                      , forall r. Image r -> Rectangle (Point 2 r)
-_rect      :: Rectangle (Point 2 r)
-                     } deriving (Int -> Image r -> ShowS
+_rect      :: Rectangle (Point 2 r)
+                     } deriving (Int -> Image r -> ShowS
 [Image r] -> ShowS
 Image r -> String
 (Int -> Image r -> ShowS)
@@ -71,7 +71,7 @@
 show :: Image r -> String
 $cshowList :: forall r. Show r => [Image r] -> ShowS
 showList :: [Image r] -> ShowS
-Show,Image r -> Image r -> Bool
+Show,Image r -> Image r -> Bool
 (Image r -> Image r -> Bool)
 -> (Image r -> Image r -> Bool) -> Eq (Image r)
 forall r. Eq r => Image r -> Image r -> Bool
@@ -80,7 +80,7 @@
 == :: Image r -> Image r -> Bool
 $c/= :: forall r. Eq r => Image r -> Image r -> Bool
 /= :: Image r -> Image r -> Bool
-Eq,Eq (Image r)
+Eq,Eq (Image r)
 Eq (Image r) =>
 (Image r -> Image r -> Ordering)
 -> (Image r -> Image r -> Bool)
@@ -121,7 +121,7 @@
 max :: Image r -> Image r -> Image r
 $cmin :: forall r. Ord r => Image r -> Image r -> Image r
 min :: Image r -> Image r -> Image r
-Ord,(forall x. Image r -> Rep (Image r) x)
+Ord,(forall x. Image r -> Rep (Image r) x)
 -> (forall x. Rep (Image r) x -> Image r) -> Generic (Image r)
 forall x. Rep (Image r) x -> Image r
 forall x. Image r -> Rep (Image r) x
@@ -136,57 +136,57 @@
 Generic)
 
 -- | Lens to access the image data
-imageData :: Lens' (Image r) ()
+imageData :: Lens' (Image r) ()
 imageData :: forall r (f :: * -> *).
 Functor f =>
 (() -> f ()) -> Image r -> f (Image r)
-imageData () -> f ()
-f (Image ()
-i Rectangle (Point 2 r)
-r) = (() -> Image r) -> f () -> f (Image r)
+imageData () -> f ()
+f (Image ()
+i Rectangle (Point 2 r)
+r) = (() -> Image r) -> f () -> f (Image r)
 forall a b. (a -> b) -> f a -> f b
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
-fmap (\()
-i' -> () -> Rectangle (Point 2 r) -> Image r
+fmap (\()
+i' -> () -> Rectangle (Point 2 r) -> Image r
 forall r. () -> Rectangle (Point 2 r) -> Image r
 Image ()
-i' Rectangle (Point 2 r)
-r) (() -> f ()
-f ()
-i)
+i' Rectangle (Point 2 r)
+r) (() -> f ()
+f ()
+i)
 {-# INLINE imageData #-}
 
 -- | Lens to access the rectangle of the image
-rect :: Lens (Image r) (Image r') (Rectangle (Point 2 r)) (Rectangle (Point 2 r'))
+rect :: Lens (Image r) (Image r') (Rectangle (Point 2 r)) (Rectangle (Point 2 r'))
 rect :: forall r r' (f :: * -> *).
 Functor f =>
 (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r')))
 -> Image r -> f (Image r')
-rect Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))
-f (Image ()
-i Rectangle (Point 2 r)
-r) = (Rectangle (Point 2 r') -> Image r')
+rect Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))
+f (Image ()
+i Rectangle (Point 2 r)
+r) = (Rectangle (Point 2 r') -> Image r')
 -> f (Rectangle (Point 2 r')) -> f (Image r')
 forall a b. (a -> b) -> f a -> f b
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
-fmap (\Rectangle (Point 2 r')
-r' -> () -> Rectangle (Point 2 r') -> Image r'
+fmap (\Rectangle (Point 2 r')
+r' -> () -> Rectangle (Point 2 r') -> Image r'
 forall r. () -> Rectangle (Point 2 r) -> Image r
 Image ()
-i Rectangle (Point 2 r')
-r') (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))
-f Rectangle (Point 2 r)
-r)
+i Rectangle (Point 2 r')
+r') (Rectangle (Point 2 r) -> f (Rectangle (Point 2 r'))
+f Rectangle (Point 2 r)
+r)
 {-# INLINE rect #-}
 
-type instance NumType   (Image r) = r
-type instance Dimension (Image r) = 2
+type instance NumType   (Image r) = r
+type instance Dimension (Image r) = 2
 
-instance Fractional r => IsTransformable (Image r) where
-  transformBy :: Transformation (Dimension (Image r)) (NumType (Image r))
+instance Fractional r => IsTransformable (Image r) where
+  transformBy :: Transformation (Dimension (Image r)) (NumType (Image r))
 -> Image r -> Image r
-transformBy Transformation (Dimension (Image r)) (NumType (Image r))
-t = ASetter
+transformBy Transformation (Dimension (Image r)) (NumType (Image r))
+t = ASetter
   (Image r) (Image r) (Rectangle (Point 2 r)) (Rectangle (Point 2 r))
 -> (Rectangle (Point 2 r) -> Rectangle (Point 2 r))
 -> Image r
@@ -209,31 +209,31 @@
   (Dimension (Rectangle (Point 2 r)))
   (NumType (Rectangle (Point 2 r)))
 Transformation (Dimension (Image r)) (NumType (Image r))
-t)
+t)
 
-instance Functor Image where
-  fmap :: forall a b. (a -> b) -> Image a -> Image b
+instance Functor Image where
+  fmap :: forall a b. (a -> b) -> Image a -> Image b
 fmap = (a -> b) -> Image a -> Image b
 forall (t :: * -> *) a b. Traversable t => (a -> b) -> t a -> t b
 fmapDefault
-instance Foldable Image where
-  foldMap :: forall m a. Monoid m => (a -> m) -> Image a -> m
-foldMap = (a -> m) -> Image a -> m
+instance Foldable Image where
+  foldMap :: forall m a. Monoid m => (a -> m) -> Image a -> m
+foldMap = (a -> m) -> Image a -> m
 forall (t :: * -> *) m a.
 (Traversable t, Monoid m) =>
 (a -> m) -> t a -> m
 foldMapDefault
-instance Traversable Image where
-  traverse :: forall (f :: * -> *) a b.
+instance Traversable Image where
+  traverse :: forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> Image a -> f (Image b)
-traverse a -> f b
-f (Image ()
-d Rectangle (Point 2 a)
-r) = () -> Rectangle (Point 2 b) -> Image b
+traverse a -> f b
+f (Image ()
+d Rectangle (Point 2 a)
+r) = () -> Rectangle (Point 2 b) -> Image b
 forall r. () -> Rectangle (Point 2 r) -> Image r
 Image ()
-d (Rectangle (Point 2 b) -> Image b)
+d (Rectangle (Point 2 b) -> Image b)
 -> f (Rectangle (Point 2 b)) -> f (Image b)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> (Point 2 a -> f (Point 2 b))
@@ -260,15 +260,15 @@
   (NumType (Point 2 a))
   (NumType (Point 2 b))
 coordinates a -> f b
-f) Rectangle (Point 2 a)
-r
+f) Rectangle (Point 2 a)
+r
 
 --------------------------------------------------------------------------------
 -- | Text Objects
 
 -- | A text label
-data TextLabel r = Label Text (Point 2 r)
-                 deriving (Int -> TextLabel r -> ShowS
+data TextLabel r = Label Text (Point 2 r)
+                 deriving (Int -> TextLabel r -> ShowS
 [TextLabel r] -> ShowS
 TextLabel r -> String
 (Int -> TextLabel r -> ShowS)
@@ -286,7 +286,7 @@
 show :: TextLabel r -> String
 $cshowList :: forall r. Show r => [TextLabel r] -> ShowS
 showList :: [TextLabel r] -> ShowS
-Show,TextLabel r -> TextLabel r -> Bool
+Show,TextLabel r -> TextLabel r -> Bool
 (TextLabel r -> TextLabel r -> Bool)
 -> (TextLabel r -> TextLabel r -> Bool) -> Eq (TextLabel r)
 forall r. Eq r => TextLabel r -> TextLabel r -> Bool
@@ -295,7 +295,7 @@
 == :: TextLabel r -> TextLabel r -> Bool
 $c/= :: forall r. Eq r => TextLabel r -> TextLabel r -> Bool
 /= :: TextLabel r -> TextLabel r -> Bool
-Eq,Eq (TextLabel r)
+Eq,Eq (TextLabel r)
 Eq (TextLabel r) =>
 (TextLabel r -> TextLabel r -> Ordering)
 -> (TextLabel r -> TextLabel r -> Bool)
@@ -336,7 +336,7 @@
 max :: TextLabel r -> TextLabel r -> TextLabel r
 $cmin :: forall r. Ord r => TextLabel r -> TextLabel r -> TextLabel r
 min :: TextLabel r -> TextLabel r -> TextLabel r
-Ord,(forall x. TextLabel r -> Rep (TextLabel r) x)
+Ord,(forall x. TextLabel r -> Rep (TextLabel r) x)
 -> (forall x. Rep (TextLabel r) x -> TextLabel r)
 -> Generic (TextLabel r)
 forall x. Rep (TextLabel r) x -> TextLabel r
@@ -351,29 +351,29 @@
 to :: forall x. Rep (TextLabel r) x -> TextLabel r
 Generic)
 
-type instance NumType   (TextLabel r) = r
-type instance Dimension (TextLabel r) = 2
+type instance NumType   (TextLabel r) = r
+type instance Dimension (TextLabel r) = 2
 
-instance Functor TextLabel  where fmap :: forall a b. (a -> b) -> TextLabel a -> TextLabel b
+instance Functor TextLabel  where fmap :: forall a b. (a -> b) -> TextLabel a -> TextLabel b
 fmap = (a -> b) -> TextLabel a -> TextLabel b
 forall (t :: * -> *) a b. Traversable t => (a -> b) -> t a -> t b
 fmapDefault
-instance Foldable TextLabel where foldMap :: forall m a. Monoid m => (a -> m) -> TextLabel a -> m
+instance Foldable TextLabel where foldMap :: forall m a. Monoid m => (a -> m) -> TextLabel a -> m
 foldMap = (a -> m) -> TextLabel a -> m
 forall (t :: * -> *) m a.
 (Traversable t, Monoid m) =>
 (a -> m) -> t a -> m
 foldMapDefault
-instance Traversable TextLabel where
-  traverse :: forall (f :: * -> *) a b.
+instance Traversable TextLabel where
+  traverse :: forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> TextLabel a -> f (TextLabel b)
-traverse a -> f b
-f (Label Text
-t Point 2 a
-p) = let coordinates' :: (NumType (Point 2 a) -> f (NumType (Point 2 b)))
+traverse a -> f b
+f (Label Text
+t Point 2 a
+p) = let coordinates' :: (NumType (Point 2 a) -> f (NumType (Point 2 b)))
 -> Point 2 a -> f (Point 2 b)
-coordinates' = ATraversal
+coordinates' = ATraversal
   (Point 2 a) (Point 2 b) (NumType (Point 2 a)) (NumType (Point 2 b))
 -> Traversal
      (Point 2 a) (Point 2 b) (NumType (Point 2 a)) (NumType (Point 2 b))
@@ -393,38 +393,38 @@
                            in Text -> Point 2 b -> TextLabel b
 forall r. Text -> Point 2 r -> TextLabel r
 Label Text
-t (Point 2 b -> TextLabel b) -> f (Point 2 b) -> f (TextLabel b)
+t (Point 2 b -> TextLabel b) -> f (Point 2 b) -> f (TextLabel b)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> (NumType (Point 2 a) -> f (NumType (Point 2 b)))
 -> Point 2 a -> f (Point 2 b)
-coordinates' a -> f b
+coordinates' a -> f b
 NumType (Point 2 a) -> f (NumType (Point 2 b))
-f Point 2 a
-p
+f Point 2 a
+p
 
-instance Fractional r => IsTransformable (TextLabel r) where
-  transformBy :: Transformation (Dimension (TextLabel r)) (NumType (TextLabel r))
+instance Fractional r => IsTransformable (TextLabel r) where
+  transformBy :: Transformation (Dimension (TextLabel r)) (NumType (TextLabel r))
 -> TextLabel r -> TextLabel r
-transformBy Transformation (Dimension (TextLabel r)) (NumType (TextLabel r))
-t (Label Text
-txt Point 2 r
-p) = Text -> Point 2 r -> TextLabel r
+transformBy Transformation (Dimension (TextLabel r)) (NumType (TextLabel r))
+t (Label Text
+txt Point 2 r
+p) = Text -> Point 2 r -> TextLabel r
 forall r. Text -> Point 2 r -> TextLabel r
 Label Text
-txt (Transformation (Dimension (Point 2 r)) (NumType (Point 2 r))
+txt (Transformation (Dimension (Point 2 r)) (NumType (Point 2 r))
 -> Point 2 r -> Point 2 r
 forall g.
 IsTransformable g =>
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (Point 2 r)) (NumType (Point 2 r))
 Transformation (Dimension (TextLabel r)) (NumType (TextLabel r))
-t Point 2 r
-p)
+t Point 2 r
+p)
 
 
 -- | A Minipage
-data MiniPage r = MiniPage Text (Point 2 r) r
-                 deriving (Int -> MiniPage r -> ShowS
+data MiniPage r = MiniPage Text (Point 2 r) r
+                 deriving (Int -> MiniPage r -> ShowS
 [MiniPage r] -> ShowS
 MiniPage r -> String
 (Int -> MiniPage r -> ShowS)
@@ -442,7 +442,7 @@
 show :: MiniPage r -> String
 $cshowList :: forall r. Show r => [MiniPage r] -> ShowS
 showList :: [MiniPage r] -> ShowS
-Show,MiniPage r -> MiniPage r -> Bool
+Show,MiniPage r -> MiniPage r -> Bool
 (MiniPage r -> MiniPage r -> Bool)
 -> (MiniPage r -> MiniPage r -> Bool) -> Eq (MiniPage r)
 forall r. Eq r => MiniPage r -> MiniPage r -> Bool
@@ -451,7 +451,7 @@
 == :: MiniPage r -> MiniPage r -> Bool
 $c/= :: forall r. Eq r => MiniPage r -> MiniPage r -> Bool
 /= :: MiniPage r -> MiniPage r -> Bool
-Eq,Eq (MiniPage r)
+Eq,Eq (MiniPage r)
 Eq (MiniPage r) =>
 (MiniPage r -> MiniPage r -> Ordering)
 -> (MiniPage r -> MiniPage r -> Bool)
@@ -492,7 +492,7 @@
 max :: MiniPage r -> MiniPage r -> MiniPage r
 $cmin :: forall r. Ord r => MiniPage r -> MiniPage r -> MiniPage r
 min :: MiniPage r -> MiniPage r -> MiniPage r
-Ord,(forall x. MiniPage r -> Rep (MiniPage r) x)
+Ord,(forall x. MiniPage r -> Rep (MiniPage r) x)
 -> (forall x. Rep (MiniPage r) x -> MiniPage r)
 -> Generic (MiniPage r)
 forall x. Rep (MiniPage r) x -> MiniPage r
@@ -507,30 +507,30 @@
 to :: forall x. Rep (MiniPage r) x -> MiniPage r
 Generic)
 
-type instance NumType   (MiniPage r) = r
-type instance Dimension (MiniPage r) = 2
+type instance NumType   (MiniPage r) = r
+type instance Dimension (MiniPage r) = 2
 
-instance Functor MiniPage  where fmap :: forall a b. (a -> b) -> MiniPage a -> MiniPage b
+instance Functor MiniPage  where fmap :: forall a b. (a -> b) -> MiniPage a -> MiniPage b
 fmap = (a -> b) -> MiniPage a -> MiniPage b
 forall (t :: * -> *) a b. Traversable t => (a -> b) -> t a -> t b
 fmapDefault
-instance Foldable MiniPage where foldMap :: forall m a. Monoid m => (a -> m) -> MiniPage a -> m
+instance Foldable MiniPage where foldMap :: forall m a. Monoid m => (a -> m) -> MiniPage a -> m
 foldMap = (a -> m) -> MiniPage a -> m
 forall (t :: * -> *) m a.
 (Traversable t, Monoid m) =>
 (a -> m) -> t a -> m
 foldMapDefault
-instance Traversable MiniPage where
-  traverse :: forall (f :: * -> *) a b.
+instance Traversable MiniPage where
+  traverse :: forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> MiniPage a -> f (MiniPage b)
-traverse a -> f b
-f (MiniPage Text
-t Point 2 a
-p a
-w) = let coordinates' :: (NumType (Point 2 a) -> f (NumType (Point 2 b)))
+traverse a -> f b
+f (MiniPage Text
+t Point 2 a
+p a
+w) = let coordinates' :: (NumType (Point 2 a) -> f (NumType (Point 2 b)))
 -> Point 2 a -> f (Point 2 b)
-coordinates' = ATraversal
+coordinates' = ATraversal
   (Point 2 a) (Point 2 b) (NumType (Point 2 a)) (NumType (Point 2 b))
 -> Traversal
      (Point 2 a) (Point 2 b) (NumType (Point 2 a)) (NumType (Point 2 b))
@@ -550,60 +550,60 @@
                                 in Text -> Point 2 b -> b -> MiniPage b
 forall r. Text -> Point 2 r -> r -> MiniPage r
 MiniPage Text
-t (Point 2 b -> b -> MiniPage b)
+t (Point 2 b -> b -> MiniPage b)
 -> f (Point 2 b) -> f (b -> MiniPage b)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> (NumType (Point 2 a) -> f (NumType (Point 2 b)))
 -> Point 2 a -> f (Point 2 b)
-coordinates' a -> f b
+coordinates' a -> f b
 NumType (Point 2 a) -> f (NumType (Point 2 b))
-f Point 2 a
-p f (b -> MiniPage b) -> f b -> f (MiniPage b)
+f Point 2 a
+p f (b -> MiniPage b) -> f b -> f (MiniPage b)
 forall a b. f (a -> b) -> f a -> f b
 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
 <*> a -> f b
-f a
-w
+f a
+w
 
-instance Fractional r => IsTransformable (MiniPage r) where
-  transformBy :: Transformation (Dimension (MiniPage r)) (NumType (MiniPage r))
+instance Fractional r => IsTransformable (MiniPage r) where
+  transformBy :: Transformation (Dimension (MiniPage r)) (NumType (MiniPage r))
 -> MiniPage r -> MiniPage r
-transformBy Transformation (Dimension (MiniPage r)) (NumType (MiniPage r))
-t (MiniPage Text
-txt Point 2 r
-p r
-w) = Text -> Point 2 r -> r -> MiniPage r
+transformBy Transformation (Dimension (MiniPage r)) (NumType (MiniPage r))
+t (MiniPage Text
+txt Point 2 r
+p r
+w) = Text -> Point 2 r -> r -> MiniPage r
 forall r. Text -> Point 2 r -> r -> MiniPage r
 MiniPage Text
-txt (Transformation (Dimension (Point 2 r)) (NumType (Point 2 r))
+txt (Transformation (Dimension (Point 2 r)) (NumType (Point 2 r))
 -> Point 2 r -> Point 2 r
 forall g.
 IsTransformable g =>
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (Point 2 r)) (NumType (Point 2 r))
 Transformation (Dimension (MiniPage r)) (NumType (MiniPage r))
-t Point 2 r
-p) r
-w
+t Point 2 r
+p) r
+w
 
-width                  :: MiniPage t -> t
+width                  :: MiniPage t -> t
 width :: forall t. MiniPage t -> t
 width (MiniPage Text
 _ Point 2 t
-_ t
-w) = t
-w
+_ t
+w) = t
+w
 
 --------------------------------------------------------------------------------
 -- | Ipe Symbols, i.e. Points
 
 -- | A symbol (point) in ipe
-data IpeSymbol r = Symbol { forall r. IpeSymbol r -> Point 2 r
-_symbolPoint :: Point 2 r
+data IpeSymbol r = Symbol { forall r. IpeSymbol r -> Point 2 r
+_symbolPoint :: Point 2 r
                           , forall r. IpeSymbol r -> Text
 _symbolName  :: Text
                           }
-                 deriving (Int -> IpeSymbol r -> ShowS
+                 deriving (Int -> IpeSymbol r -> ShowS
 [IpeSymbol r] -> ShowS
 IpeSymbol r -> String
 (Int -> IpeSymbol r -> ShowS)
@@ -621,7 +621,7 @@
 show :: IpeSymbol r -> String
 $cshowList :: forall r. Show r => [IpeSymbol r] -> ShowS
 showList :: [IpeSymbol r] -> ShowS
-Show,IpeSymbol r -> IpeSymbol r -> Bool
+Show,IpeSymbol r -> IpeSymbol r -> Bool
 (IpeSymbol r -> IpeSymbol r -> Bool)
 -> (IpeSymbol r -> IpeSymbol r -> Bool) -> Eq (IpeSymbol r)
 forall r. Eq r => IpeSymbol r -> IpeSymbol r -> Bool
@@ -630,7 +630,7 @@
 == :: IpeSymbol r -> IpeSymbol r -> Bool
 $c/= :: forall r. Eq r => IpeSymbol r -> IpeSymbol r -> Bool
 /= :: IpeSymbol r -> IpeSymbol r -> Bool
-Eq,Eq (IpeSymbol r)
+Eq,Eq (IpeSymbol r)
 Eq (IpeSymbol r) =>
 (IpeSymbol r -> IpeSymbol r -> Ordering)
 -> (IpeSymbol r -> IpeSymbol r -> Bool)
@@ -671,7 +671,7 @@
 max :: IpeSymbol r -> IpeSymbol r -> IpeSymbol r
 $cmin :: forall r. Ord r => IpeSymbol r -> IpeSymbol r -> IpeSymbol r
 min :: IpeSymbol r -> IpeSymbol r -> IpeSymbol r
-Ord,(forall x. IpeSymbol r -> Rep (IpeSymbol r) x)
+Ord,(forall x. IpeSymbol r -> Rep (IpeSymbol r) x)
 -> (forall x. Rep (IpeSymbol r) x -> IpeSymbol r)
 -> Generic (IpeSymbol r)
 forall x. Rep (IpeSymbol r) x -> IpeSymbol r
@@ -687,71 +687,71 @@
 Generic)
 
 -- | Lens to access the position of the symbol
-symbolPoint :: Lens (IpeSymbol r) (IpeSymbol r') (Point 2 r) (Point 2 r')
+symbolPoint :: Lens (IpeSymbol r) (IpeSymbol r') (Point 2 r) (Point 2 r')
 symbolPoint :: forall r r' (f :: * -> *).
 Functor f =>
 (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r')
-symbolPoint Point 2 r -> f (Point 2 r')
-f (Symbol Point 2 r
-p Text
-n) = (Point 2 r' -> IpeSymbol r') -> f (Point 2 r') -> f (IpeSymbol r')
+symbolPoint Point 2 r -> f (Point 2 r')
+f (Symbol Point 2 r
+p Text
+n) = (Point 2 r' -> IpeSymbol r') -> f (Point 2 r') -> f (IpeSymbol r')
 forall a b. (a -> b) -> f a -> f b
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
-fmap (\Point 2 r'
-p' -> Point 2 r' -> Text -> IpeSymbol r'
+fmap (\Point 2 r'
+p' -> Point 2 r' -> Text -> IpeSymbol r'
 forall r. Point 2 r -> Text -> IpeSymbol r
 Symbol Point 2 r'
-p' Text
-n) (Point 2 r -> f (Point 2 r')
-f Point 2 r
-p)
+p' Text
+n) (Point 2 r -> f (Point 2 r')
+f Point 2 r
+p)
 {-# INLINE symbolPoint #-}
 
 -- | Lens to access the name of the symbol
-symbolName :: Lens' (IpeSymbol r) Text
+symbolName :: Lens' (IpeSymbol r) Text
 symbolName :: forall r (f :: * -> *).
 Functor f =>
 (Text -> f Text) -> IpeSymbol r -> f (IpeSymbol r)
-symbolName Text -> f Text
-f (Symbol Point 2 r
-p Text
-n) = (Text -> IpeSymbol r) -> f Text -> f (IpeSymbol r)
+symbolName Text -> f Text
+f (Symbol Point 2 r
+p Text
+n) = (Text -> IpeSymbol r) -> f Text -> f (IpeSymbol r)
 forall a b. (a -> b) -> f a -> f b
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
-fmap (\Text
-n' -> Point 2 r -> Text -> IpeSymbol r
+fmap (\Text
+n' -> Point 2 r -> Text -> IpeSymbol r
 forall r. Point 2 r -> Text -> IpeSymbol r
 Symbol Point 2 r
-p Text
-n') (Text -> f Text
-f Text
-n)
+p Text
+n') (Text -> f Text
+f Text
+n)
 {-# INLINE symbolName #-}
 
 
-type instance NumType   (IpeSymbol r) = r
-type instance Dimension (IpeSymbol r) = 2
+type instance NumType   (IpeSymbol r) = r
+type instance Dimension (IpeSymbol r) = 2
 
-instance Functor IpeSymbol  where fmap :: forall a b. (a -> b) -> IpeSymbol a -> IpeSymbol b
+instance Functor IpeSymbol  where fmap :: forall a b. (a -> b) -> IpeSymbol a -> IpeSymbol b
 fmap = (a -> b) -> IpeSymbol a -> IpeSymbol b
 forall (t :: * -> *) a b. Traversable t => (a -> b) -> t a -> t b
 fmapDefault
-instance Foldable IpeSymbol where foldMap :: forall m a. Monoid m => (a -> m) -> IpeSymbol a -> m
+instance Foldable IpeSymbol where foldMap :: forall m a. Monoid m => (a -> m) -> IpeSymbol a -> m
 foldMap = (a -> m) -> IpeSymbol a -> m
 forall (t :: * -> *) m a.
 (Traversable t, Monoid m) =>
 (a -> m) -> t a -> m
 foldMapDefault
-instance Traversable IpeSymbol where
-  traverse :: forall (f :: * -> *) a b.
+instance Traversable IpeSymbol where
+  traverse :: forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> IpeSymbol a -> f (IpeSymbol b)
-traverse a -> f b
-f (Symbol Point 2 a
-p Text
-t) = let coordinates' :: (NumType (Point 2 a) -> f (NumType (Point 2 b)))
+traverse a -> f b
+f (Symbol Point 2 a
+p Text
+t) = let coordinates' :: (NumType (Point 2 a) -> f (NumType (Point 2 b)))
 -> Point 2 a -> f (Point 2 b)
-coordinates' = ATraversal
+coordinates' = ATraversal
   (Point 2 a) (Point 2 b) (NumType (Point 2 a)) (NumType (Point 2 b))
 -> Traversal
      (Point 2 a) (Point 2 b) (NumType (Point 2 a)) (NumType (Point 2 b))
@@ -774,20 +774,20 @@
 flip Point 2 b -> Text -> IpeSymbol b
 forall r. Point 2 r -> Text -> IpeSymbol r
 Symbol Text
-t (Point 2 b -> IpeSymbol b) -> f (Point 2 b) -> f (IpeSymbol b)
+t (Point 2 b -> IpeSymbol b) -> f (Point 2 b) -> f (IpeSymbol b)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> (NumType (Point 2 a) -> f (NumType (Point 2 b)))
 -> Point 2 a -> f (Point 2 b)
-coordinates' a -> f b
+coordinates' a -> f b
 NumType (Point 2 a) -> f (NumType (Point 2 b))
-f Point 2 a
-p
+f Point 2 a
+p
 
-instance Fractional r => IsTransformable (IpeSymbol r) where
-  transformBy :: Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r))
+instance Fractional r => IsTransformable (IpeSymbol r) where
+  transformBy :: Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r))
 -> IpeSymbol r -> IpeSymbol r
-transformBy Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r))
-t = ASetter (IpeSymbol r) (IpeSymbol r) (Point 2 r) (Point 2 r)
+transformBy Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r))
+t = ASetter (IpeSymbol r) (IpeSymbol r) (Point 2 r) (Point 2 r)
 -> (Point 2 r -> Point 2 r) -> IpeSymbol r -> IpeSymbol r
 forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
 over ASetter (IpeSymbol r) (IpeSymbol r) (Point 2 r) (Point 2 r)
@@ -801,7 +801,7 @@
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (Point 2 r)) (NumType (Point 2 r))
 Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r))
-t)
+t)
 
 
 
@@ -820,54 +820,54 @@
 -- | The mapping between the labels of the the attributes and the types of the
 -- attributes with these labels. For example, the 'Matrix' label/attribute should
 -- have a value of type 'Matrix 3 3 r'.
-type family AttrMap (r :: Type) (l :: AttributeUniverse) :: Type where
-  AttrMap r 'Layer          = LayerName
-  AttrMap r AT.Matrix       = Matrix 3 3 r
-  AttrMap r Pin             = PinType
-  AttrMap r Transformations = TransformationTypes
+type family AttrMap (r :: Type) (l :: AttributeUniverse) :: Type where
+  AttrMap r 'Layer          = LayerName
+  AttrMap r AT.Matrix       = Matrix 3 3 r
+  AttrMap r Pin             = PinType
+  AttrMap r Transformations = TransformationTypes
 
-  AttrMap r Stroke = IpeColor r
-  AttrMap r Pen    = IpePen r
-  AttrMap r Fill   = IpeColor r
-  AttrMap r Size   = IpeSize r
+  AttrMap r Stroke = IpeColor r
+  AttrMap r Pen    = IpePen r
+  AttrMap r Fill   = IpeColor r
+  AttrMap r Size   = IpeSize r
 
-  AttrMap r Dash     = IpeDash r
-  AttrMap r LineCap  = Int
-  AttrMap r LineJoin = Int
-  AttrMap r FillRule = FillType
-  AttrMap r Arrow    = IpeArrow r
-  AttrMap r RArrow   = IpeArrow r
-  AttrMap r StrokeOpacity = IpeOpacity
-  AttrMap r Opacity       = IpeOpacity
-  AttrMap r Tiling        = IpeTiling
-  AttrMap r Gradient      = IpeGradient
+  AttrMap r Dash     = IpeDash r
+  AttrMap r LineCap  = Int
+  AttrMap r LineJoin = Int
+  AttrMap r FillRule = FillType
+  AttrMap r Arrow    = IpeArrow r
+  AttrMap r RArrow   = IpeArrow r
+  AttrMap r StrokeOpacity = IpeOpacity
+  AttrMap r Opacity       = IpeOpacity
+  AttrMap r Tiling        = IpeTiling
+  AttrMap r Gradient      = IpeGradient
 
-  AttrMap r Width          = TextSizeUnit r
-  AttrMap r Height         = TextSizeUnit r
-  AttrMap r Depth          = TextSizeUnit r
-  AttrMap r VAlign         = VerticalAlignment
-  AttrMap r HAlign         = HorizontalAlignment
-  AttrMap r Style          = TeXStyle
+  AttrMap r Width          = TextSizeUnit r
+  AttrMap r Height         = TextSizeUnit r
+  AttrMap r Depth          = TextSizeUnit r
+  AttrMap r VAlign         = VerticalAlignment
+  AttrMap r HAlign         = HorizontalAlignment
+  AttrMap r Style          = TeXStyle
 
-  AttrMap r Clip = Path r -- strictly we event want this to be a closed path I guess
+  AttrMap r Clip = Path r -- strictly we event want this to be a closed path I guess
 
 
 
-genDefunSymbols [''AttrMap]
+genDefunSymbols [''AttrMap]
 
 --------------------------------------------------------------------------------
 
 
 -- | For the types representing attribute values we can get the name/key to use
 -- when serializing to ipe.
-class TraverseIpeAttr (a :: AttributeUniverse) where
-  traverseIpeAttr :: Applicative h
-                  => (r -> h s) -> Attr (AttrMapSym1 r) a -> h (Attr (AttrMapSym1 s) a)
+class TraverseIpeAttr (a :: AttributeUniverse) where
+  traverseIpeAttr :: Applicative h
+                  => (r -> h s) -> Attr (AttrMapSym1 r) a -> h (Attr (AttrMapSym1 s) a)
 
   -- attrName :: proxy a -> Text
 
 -- CommonAttributeUnivers
-instance TraverseIpeAttr Layer           where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Layer           where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Layer -> h (Attr (AttrMapSym1 s) 'Layer)
@@ -877,12 +877,12 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr AT.Matrix       where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr AT.Matrix       where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Matrix -> h (Attr (AttrMapSym1 s) 'Matrix)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Matrix
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Matrix
  -> h (Apply (AttrMapSym1 s) 'Matrix))
 -> Attr (AttrMapSym1 r) 'Matrix -> h (Attr (AttrMapSym1 s) 'Matrix)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
@@ -907,8 +907,8 @@
   (NumType (Matrix 3 3 r))
   (NumType (Matrix 3 3 s))
 elements r -> h s
-f)
-instance TraverseIpeAttr Pin             where traverseIpeAttr :: forall (h :: * -> *) r s.
+f)
+instance TraverseIpeAttr Pin             where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Pin -> h (Attr (AttrMapSym1 s) 'Pin)
@@ -918,7 +918,7 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr Transformations where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Transformations where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Transformations
@@ -932,12 +932,12 @@
 pureAttr
 
 -- -- IpeSymbolAttributeUniversre
-instance TraverseIpeAttr Stroke       where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Stroke       where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Stroke -> h (Attr (AttrMapSym1 s) 'Stroke)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Stroke
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Stroke
  -> h (Apply (AttrMapSym1 s) 'Stroke))
 -> Attr (AttrMapSym1 r) 'Stroke -> h (Attr (AttrMapSym1 s) 'Stroke)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
@@ -952,13 +952,13 @@
 Applicative f =>
 (a -> f b) -> IpeColor a -> f (IpeColor b)
 traverse r -> h s
-f)
-instance TraverseIpeAttr Fill         where traverseIpeAttr :: forall (h :: * -> *) r s.
+f)
+instance TraverseIpeAttr Fill         where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Fill -> h (Attr (AttrMapSym1 s) 'Fill)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Fill -> h (Apply (AttrMapSym1 s) 'Fill))
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Fill -> h (Apply (AttrMapSym1 s) 'Fill))
 -> Attr (AttrMapSym1 r) 'Fill -> h (Attr (AttrMapSym1 s) 'Fill)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
 Applicative h =>
@@ -972,13 +972,13 @@
 Applicative f =>
 (a -> f b) -> IpeColor a -> f (IpeColor b)
 traverse r -> h s
-f)
-instance TraverseIpeAttr Pen          where traverseIpeAttr :: forall (h :: * -> *) r s.
+f)
+instance TraverseIpeAttr Pen          where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Pen -> h (Attr (AttrMapSym1 s) 'Pen)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Pen -> h (Apply (AttrMapSym1 s) 'Pen))
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Pen -> h (Apply (AttrMapSym1 s) 'Pen))
 -> Attr (AttrMapSym1 r) 'Pen -> h (Attr (AttrMapSym1 s) 'Pen)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
 Applicative h =>
@@ -992,13 +992,13 @@
 Applicative f =>
 (a -> f b) -> IpePen a -> f (IpePen b)
 traverse r -> h s
-f)
-instance TraverseIpeAttr Size         where traverseIpeAttr :: forall (h :: * -> *) r s.
+f)
+instance TraverseIpeAttr Size         where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Size -> h (Attr (AttrMapSym1 s) 'Size)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Size -> h (Apply (AttrMapSym1 s) 'Size))
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Size -> h (Apply (AttrMapSym1 s) 'Size))
 -> Attr (AttrMapSym1 r) 'Size -> h (Attr (AttrMapSym1 s) 'Size)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
 Applicative h =>
@@ -1012,15 +1012,15 @@
 Applicative f =>
 (a -> f b) -> IpeSize a -> f (IpeSize b)
 traverse r -> h s
-f)
+f)
 
 -- -- PathAttributeUniverse
-instance TraverseIpeAttr Dash       where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Dash       where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Dash -> h (Attr (AttrMapSym1 s) 'Dash)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Dash -> h (Apply (AttrMapSym1 s) 'Dash))
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Dash -> h (Apply (AttrMapSym1 s) 'Dash))
 -> Attr (AttrMapSym1 r) 'Dash -> h (Attr (AttrMapSym1 s) 'Dash)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
 Applicative h =>
@@ -1034,8 +1034,8 @@
 Applicative f =>
 (a -> f b) -> IpeDash a -> f (IpeDash b)
 traverse r -> h s
-f)
-instance TraverseIpeAttr LineCap    where traverseIpeAttr :: forall (h :: * -> *) r s.
+f)
+instance TraverseIpeAttr LineCap    where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'LineCap
@@ -1046,7 +1046,7 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr LineJoin   where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr LineJoin   where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'LineJoin
@@ -1058,7 +1058,7 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr FillRule   where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr FillRule   where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'FillRule
@@ -1070,12 +1070,12 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr Arrow      where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Arrow      where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Arrow -> h (Attr (AttrMapSym1 s) 'Arrow)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Arrow -> h (Apply (AttrMapSym1 s) 'Arrow))
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Arrow -> h (Apply (AttrMapSym1 s) 'Arrow))
 -> Attr (AttrMapSym1 r) 'Arrow -> h (Attr (AttrMapSym1 s) 'Arrow)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
 Applicative h =>
@@ -1089,13 +1089,13 @@
 Applicative f =>
 (a -> f b) -> IpeArrow a -> f (IpeArrow b)
 traverse r -> h s
-f)
-instance TraverseIpeAttr RArrow     where traverseIpeAttr :: forall (h :: * -> *) r s.
+f)
+instance TraverseIpeAttr RArrow     where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'RArrow -> h (Attr (AttrMapSym1 s) 'RArrow)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'RArrow
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'RArrow
  -> h (Apply (AttrMapSym1 s) 'RArrow))
 -> Attr (AttrMapSym1 r) 'RArrow -> h (Attr (AttrMapSym1 s) 'RArrow)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
@@ -1110,8 +1110,8 @@
 Applicative f =>
 (a -> f b) -> IpeArrow a -> f (IpeArrow b)
 traverse r -> h s
-f)
-instance TraverseIpeAttr StrokeOpacity  where traverseIpeAttr :: forall (h :: * -> *) r s.
+f)
+instance TraverseIpeAttr StrokeOpacity  where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'StrokeOpacity
@@ -1123,7 +1123,7 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr Opacity    where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Opacity    where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Opacity
@@ -1134,7 +1134,7 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr Tiling     where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Tiling     where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Tiling -> h (Attr (AttrMapSym1 s) 'Tiling)
@@ -1144,7 +1144,7 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr Gradient   where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Gradient   where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Gradient
@@ -1158,12 +1158,12 @@
 pureAttr
 
 -- TextAttibuteUniverse
-instance TraverseIpeAttr Width   where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Width   where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Width -> h (Attr (AttrMapSym1 s) 'Width)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Width -> h (Apply (AttrMapSym1 s) 'Width))
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Width -> h (Apply (AttrMapSym1 s) 'Width))
 -> Attr (AttrMapSym1 r) 'Width -> h (Attr (AttrMapSym1 s) 'Width)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
 Applicative h =>
@@ -1171,13 +1171,13 @@
 -> Attr f label -> h (Attr g label)
 traverseAttr r -> h s
 Apply (AttrMapSym1 r) 'Width -> h (Apply (AttrMapSym1 s) 'Width)
-f
-instance TraverseIpeAttr Height  where traverseIpeAttr :: forall (h :: * -> *) r s.
+f
+instance TraverseIpeAttr Height  where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Height -> h (Attr (AttrMapSym1 s) 'Height)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Height
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Height
  -> h (Apply (AttrMapSym1 s) 'Height))
 -> Attr (AttrMapSym1 r) 'Height -> h (Attr (AttrMapSym1 s) 'Height)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
@@ -1186,13 +1186,13 @@
 -> Attr f label -> h (Attr g label)
 traverseAttr r -> h s
 Apply (AttrMapSym1 r) 'Height -> h (Apply (AttrMapSym1 s) 'Height)
-f
-instance TraverseIpeAttr Depth   where traverseIpeAttr :: forall (h :: * -> *) r s.
+f
+instance TraverseIpeAttr Depth   where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Depth -> h (Attr (AttrMapSym1 s) 'Depth)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Depth -> h (Apply (AttrMapSym1 s) 'Depth))
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Depth -> h (Apply (AttrMapSym1 s) 'Depth))
 -> Attr (AttrMapSym1 r) 'Depth -> h (Attr (AttrMapSym1 s) 'Depth)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
 Applicative h =>
@@ -1200,8 +1200,8 @@
 -> Attr f label -> h (Attr g label)
 traverseAttr r -> h s
 Apply (AttrMapSym1 r) 'Depth -> h (Apply (AttrMapSym1 s) 'Depth)
-f
-instance TraverseIpeAttr VAlign  where traverseIpeAttr :: forall (h :: * -> *) r s.
+f
+instance TraverseIpeAttr VAlign  where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'VAlign -> h (Attr (AttrMapSym1 s) 'VAlign)
@@ -1211,7 +1211,7 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr HAlign  where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr HAlign  where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'HAlign -> h (Attr (AttrMapSym1 s) 'HAlign)
@@ -1221,7 +1221,7 @@
 (Applicative h, Apply f a ~ Apply g a) =>
 Attr f a -> h (Attr g a)
 pureAttr
-instance TraverseIpeAttr Style   where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Style   where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Style -> h (Attr (AttrMapSym1 s) 'Style)
@@ -1233,12 +1233,12 @@
 pureAttr
 
 -- GroupAttributeUniverse
-instance TraverseIpeAttr Clip     where traverseIpeAttr :: forall (h :: * -> *) r s.
+instance TraverseIpeAttr Clip     where traverseIpeAttr :: forall (h :: * -> *) r s.
 Applicative h =>
 (r -> h s)
 -> Attr (AttrMapSym1 r) 'Clip -> h (Attr (AttrMapSym1 s) 'Clip)
-traverseIpeAttr r -> h s
-f = (Apply (AttrMapSym1 r) 'Clip -> h (Apply (AttrMapSym1 s) 'Clip))
+traverseIpeAttr r -> h s
+f = (Apply (AttrMapSym1 r) 'Clip -> h (Apply (AttrMapSym1 s) 'Clip))
 -> Attr (AttrMapSym1 r) 'Clip -> h (Attr (AttrMapSym1 s) 'Clip)
 forall {u} (h :: * -> *) (f :: u ~> *) (label :: u) (g :: u ~> *).
 Applicative h =>
@@ -1252,7 +1252,7 @@
 Applicative f =>
 (a -> f b) -> Path a -> f (Path b)
 traverse r -> h s
-f)
+f)
 
 --------------------------------------------------------------------------------
 -- | Groups and Objects
@@ -1270,8 +1270,8 @@
 
 
 -- | A group is essentially a list of IpeObjects.
-newtype Group r = Group [IpeObject r]
-  deriving (Int -> Group r -> ShowS
+newtype Group r = Group [IpeObject r]
+  deriving (Int -> Group r -> ShowS
 [Group r] -> ShowS
 Group r -> String
 (Int -> Group r -> ShowS)
@@ -1287,7 +1287,7 @@
 show :: Group r -> String
 $cshowList :: forall r. Show r => [Group r] -> ShowS
 showList :: [Group r] -> ShowS
-Show,Group r -> Group r -> Bool
+Show,Group r -> Group r -> Bool
 (Group r -> Group r -> Bool)
 -> (Group r -> Group r -> Bool) -> Eq (Group r)
 forall r. Eq r => Group r -> Group r -> Bool
@@ -1296,7 +1296,7 @@
 == :: Group r -> Group r -> Bool
 $c/= :: forall r. Eq r => Group r -> Group r -> Bool
 /= :: Group r -> Group r -> Bool
-Eq,(forall a b. (a -> b) -> Group a -> Group b)
+Eq,(forall a b. (a -> b) -> Group a -> Group b)
 -> (forall a b. a -> Group b -> Group a) -> Functor Group
 forall a b. a -> Group b -> Group a
 forall a b. (a -> b) -> Group a -> Group b
@@ -1307,7 +1307,7 @@
 fmap :: forall a b. (a -> b) -> Group a -> Group b
 $c<$ :: forall a b. a -> Group b -> Group a
 <$ :: forall a b. a -> Group b -> Group a
-Functor,(forall m. Monoid m => Group m -> m)
+Functor,(forall m. Monoid m => Group m -> m)
 -> (forall m a. Monoid m => (a -> m) -> Group a -> m)
 -> (forall m a. Monoid m => (a -> m) -> Group a -> m)
 -> (forall a b. (a -> b -> b) -> b -> Group a -> b)
@@ -1389,7 +1389,7 @@
 sum :: forall a. Num a => Group a -> a
 $cproduct :: forall a. Num a => Group a -> a
 product :: forall a. Num a => Group a -> a
-Foldable,Functor Group
+Foldable,Functor Group
 Foldable Group
 (Functor Group, Foldable Group) =>
 (forall (f :: * -> *) a b.
@@ -1438,7 +1438,7 @@
 (a -> m b) -> Group a -> m (Group b)
 $csequence :: forall (m :: * -> *) a. Monad m => Group (m a) -> m (Group a)
 sequence :: forall (m :: * -> *) a. Monad m => Group (m a) -> m (Group a)
-Traversable,(forall x. Group r -> Rep (Group r) x)
+Traversable,(forall x. Group r -> Rep (Group r) x)
 -> (forall x. Rep (Group r) x -> Group r) -> Generic (Group r)
 forall x. Rep (Group r) x -> Group r
 forall x. Group r -> Rep (Group r) x
@@ -1452,15 +1452,15 @@
 to :: forall x. Rep (Group r) x -> Group r
 Generic)
 
-type instance NumType   (Group r) = r
-type instance Dimension (Group r) = 2
+type instance NumType   (Group r) = r
+type instance Dimension (Group r) = 2
 
-instance (Fractional r, Eq r) => IsTransformable (IpeObject r) where
-  transformBy :: Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
+instance (Fractional r, Eq r) => IsTransformable (IpeObject r) where
+  transformBy :: Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
 -> IpeObject r -> IpeObject r
-transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t (IpeGroup IpeObject' Group r
-i)     = IpeObject' Group r -> IpeObject r
+transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
+t (IpeGroup IpeObject' Group r
+i)     = IpeObject' Group r -> IpeObject r
 forall r. IpeObject' Group r -> IpeObject r
 IpeGroup     (IpeObject' Group r -> IpeObject r)
 -> IpeObject' Group r -> IpeObject r
@@ -1469,7 +1469,7 @@
 :+ Attributes
      (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
 IpeObject' Group r
-i(Group r
+i(Group r
  :+ Attributes
       (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip])
 -> ((Group r
@@ -1517,17 +1517,17 @@
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
 Transformation (Dimension (Group r)) (NumType (Group r))
-t
-  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t (IpeImage IpeObject' Image r
-i)     = IpeObject' Image r -> IpeObject r
+t
+  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
+t (IpeImage IpeObject' Image r
+i)     = IpeObject' Image r -> IpeObject r
 forall r. IpeObject' Image r -> IpeObject r
 IpeImage     (IpeObject' Image r -> IpeObject r)
 -> IpeObject' Image r -> IpeObject r
 forall a b. (a -> b) -> a -> b
 $ Image r :+ Attributes (AttrMapSym1 r) CommonAttributes
 IpeObject' Image r
-i(Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
+i(Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> ((Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
     -> Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> Image r :+ Attributes (AttrMapSym1 r) CommonAttributes
@@ -1554,17 +1554,17 @@
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (Image r)) (NumType (Image r))
 Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t
-  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t (IpeTextLabel IpeObject' TextLabel r
-i) = IpeObject' TextLabel r -> IpeObject r
+t
+  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
+t (IpeTextLabel IpeObject' TextLabel r
+i) = IpeObject' TextLabel r -> IpeObject r
 forall r. IpeObject' TextLabel r -> IpeObject r
 IpeTextLabel (IpeObject' TextLabel r -> IpeObject r)
 -> IpeObject' TextLabel r -> IpeObject r
 forall a b. (a -> b) -> a -> b
 $ TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes
 IpeObject' TextLabel r
-i(TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
+i(TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> ((TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
     -> TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes
@@ -1591,17 +1591,17 @@
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (TextLabel r)) (NumType (TextLabel r))
 Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t
-  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t (IpeMiniPage IpeObject' MiniPage r
-i)  = IpeObject' MiniPage r -> IpeObject r
+t
+  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
+t (IpeMiniPage IpeObject' MiniPage r
+i)  = IpeObject' MiniPage r -> IpeObject r
 forall r. IpeObject' MiniPage r -> IpeObject r
 IpeMiniPage  (IpeObject' MiniPage r -> IpeObject r)
 -> IpeObject' MiniPage r -> IpeObject r
 forall a b. (a -> b) -> a -> b
 $ MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes
 IpeObject' MiniPage r
-i(MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
+i(MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> ((MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
     -> MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes
@@ -1628,10 +1628,10 @@
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (MiniPage r)) (NumType (MiniPage r))
 Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t
-  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t (IpeUse IpeObject' IpeSymbol r
-i)       = IpeObject' IpeSymbol r -> IpeObject r
+t
+  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
+t (IpeUse IpeObject' IpeSymbol r
+i)       = IpeObject' IpeSymbol r -> IpeObject r
 forall r. IpeObject' IpeSymbol r -> IpeObject r
 IpeUse       (IpeObject' IpeSymbol r -> IpeObject r)
 -> IpeObject' IpeSymbol r -> IpeObject r
@@ -1642,7 +1642,7 @@
      '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
         'Size]
 IpeObject' IpeSymbol r
-i(IpeSymbol r
+i(IpeSymbol r
  :+ Attributes
       (AttrMapSym1 r)
       '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
@@ -1709,10 +1709,10 @@
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (IpeSymbol r)) (NumType (IpeSymbol r))
 Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t
-  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t (IpePath IpeObject' Path r
-i)      = IpeObject' Path r -> IpeObject r
+t
+  transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
+t (IpePath IpeObject' Path r
+i)      = IpeObject' Path r -> IpeObject r
 forall r. IpeObject' Path r -> IpeObject r
 IpePath      (IpeObject' Path r -> IpeObject r)
 -> IpeObject' Path r -> IpeObject r
@@ -1724,7 +1724,7 @@
         'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
         'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]
 IpeObject' Path r
-i(Path r
+i(Path r
  :+ Attributes
       (AttrMapSym1 r)
       '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
@@ -1801,14 +1801,14 @@
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (Path r)) (NumType (Path r))
 Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
-t
+t
 
-instance (Fractional r, Eq r) => IsTransformable (Group r) where
-  transformBy :: Transformation (Dimension (Group r)) (NumType (Group r))
+instance (Fractional r, Eq r) => IsTransformable (Group r) where
+  transformBy :: Transformation (Dimension (Group r)) (NumType (Group r))
 -> Group r -> Group r
-transformBy Transformation (Dimension (Group r)) (NumType (Group r))
-t (Group [IpeObject r]
-s) = [IpeObject r] -> Group r
+transformBy Transformation (Dimension (Group r)) (NumType (Group r))
+t (Group [IpeObject r]
+s) = [IpeObject r] -> Group r
 forall r. [IpeObject r] -> Group r
 Group ([IpeObject r] -> Group r) -> [IpeObject r] -> Group r
 forall a b. (a -> b) -> a -> b
@@ -1822,12 +1822,12 @@
 Transformation (Dimension g) (NumType g) -> g -> g
 transformBy Transformation (Dimension (IpeObject r)) (NumType (IpeObject r))
 Transformation (Dimension (Group r)) (NumType (Group r))
-t) [IpeObject r]
-s
+t) [IpeObject r]
+s
 
 
 
-type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where
+type family AttributesOf (t :: Type -> Type) :: [AttributeUniverse] where
   AttributesOf Group     = GroupAttributes
   AttributesOf Image     = CommonAttributes
   AttributesOf TextLabel = CommonAttributes
@@ -1837,15 +1837,15 @@
 
 
 -- | Attributes' :: Type -> [AttributeUniverse] -> Type
-type Attributes' r = Attributes (AttrMapSym1 r)
+type Attributes' r = Attributes (AttrMapSym1 r)
 
-type IpeAttributes g r = Attributes' r (AttributesOf g)
+type IpeAttributes g r = Attributes' r (AttributesOf g)
 
 
 -- | An IpeObject' is essentially the oject ogether with its attributes
-type IpeObject' g r = g r :+ IpeAttributes g r
+type IpeObject' g r = g r :+ IpeAttributes g r
 
-attributes :: Lens' (IpeObject' g r) (IpeAttributes g r)
+attributes :: Lens' (IpeObject' g r) (IpeAttributes g r)
 attributes :: forall (g :: * -> *) r (f :: * -> *).
 Functor f =>
 (IpeAttributes g r -> f (IpeAttributes g r))
@@ -1860,16 +1860,16 @@
 extra
 
 -- | traverse for ipe attributes
-traverseIpeAttrs               :: ( Applicative f
-                                  , AllConstrained TraverseIpeAttr (AttributesOf g)
-                                  ) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)
+traverseIpeAttrs               :: ( Applicative f
+                                  , AllConstrained TraverseIpeAttr (AttributesOf g)
+                                  ) => proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)
 traverseIpeAttrs :: forall (f :: * -> *) (g :: * -> *) (proxy :: (* -> *) -> *) r s.
 (Applicative f, AllConstrained TraverseIpeAttr (AttributesOf g)) =>
 proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)
 traverseIpeAttrs proxy g
-_ r -> f s
-f (Attrs Rec (Attr (AttrMapSym1 r)) (AttributesOf g)
-ats) = (Rec (Attr (AttrMapSym1 s)) (AttributesOf g)
+_ r -> f s
+f (Attrs Rec (Attr (AttrMapSym1 r)) (AttributesOf g)
+ats) = (Rec (Attr (AttrMapSym1 s)) (AttributesOf g)
  -> Attributes (AttrMapSym1 s) (AttributesOf g))
 -> f (Rec (Attr (AttrMapSym1 s)) (AttributesOf g))
 -> f (Attributes (AttrMapSym1 s) (AttributesOf g))
@@ -1895,27 +1895,27 @@
 -> Rec (Attr (AttrMapSym1 r)) ats
 -> f (Rec (Attr (AttrMapSym1 s)) ats)
 traverseIpeAttrs' r -> f s
-f (Rec (Attr (AttrMapSym1 r)) (AttributesOf g)
+f (Rec (Attr (AttrMapSym1 r)) (AttributesOf g)
  -> f (Attributes (AttrMapSym1 s) (AttributesOf g)))
 -> Rec (Attr (AttrMapSym1 r)) (AttributesOf g)
 -> f (Attributes (AttrMapSym1 s) (AttributesOf g))
 forall a b. (a -> b) -> a -> b
 $ Rec (Attr (AttrMapSym1 r)) (AttributesOf g)
-ats
+ats
 
-traverseIpeAttrs'   :: ( Applicative f
-                       , AllConstrained TraverseIpeAttr ats
+traverseIpeAttrs'   :: ( Applicative f
+                       , AllConstrained TraverseIpeAttr ats
                        )
-                    => (r -> f s)
-                    -> Rec (Attr (AttrMapSym1 r)) ats
-                    -> f (Rec (Attr (AttrMapSym1 s)) ats)
+                    => (r -> f s)
+                    -> Rec (Attr (AttrMapSym1 r)) ats
+                    -> f (Rec (Attr (AttrMapSym1 s)) ats)
 traverseIpeAttrs' :: forall (f :: * -> *) (ats :: [AttributeUniverse]) r s.
 (Applicative f, AllConstrained TraverseIpeAttr ats) =>
 (r -> f s)
 -> Rec (Attr (AttrMapSym1 r)) ats
 -> f (Rec (Attr (AttrMapSym1 s)) ats)
-traverseIpeAttrs' r -> f s
-f = \case
+traverseIpeAttrs' r -> f s
+f = \case
   Rec (Attr (AttrMapSym1 r)) ats
 RNil        -> Rec (Attr (AttrMapSym1 s)) ats
 -> f (Rec (Attr (AttrMapSym1 s)) ats)
@@ -1925,9 +1925,9 @@
 Rec (Attr (AttrMapSym1 s)) '[]
 forall {u} (a :: u -> *). Rec a '[]
 RNil
-  (Attr (AttrMapSym1 r) r
-a :& Rec (Attr (AttrMapSym1 r)) rs
-ats') -> Attr (AttrMapSym1 s) r
+  (Attr (AttrMapSym1 r) r
+a :& Rec (Attr (AttrMapSym1 r)) rs
+ats') -> Attr (AttrMapSym1 s) r
 -> Rec (Attr (AttrMapSym1 s)) rs -> Rec (Attr (AttrMapSym1 s)) ats
 Attr (AttrMapSym1 s) r
 -> Rec (Attr (AttrMapSym1 s)) rs
@@ -1948,8 +1948,8 @@
 Applicative h =>
 (r -> h s) -> Attr (AttrMapSym1 r) r -> h (Attr (AttrMapSym1 s) r)
 traverseIpeAttr r -> f s
-f Attr (AttrMapSym1 r) r
-a f (Rec (Attr (AttrMapSym1 s)) rs -> Rec (Attr (AttrMapSym1 s)) ats)
+f Attr (AttrMapSym1 r) r
+a f (Rec (Attr (AttrMapSym1 s)) rs -> Rec (Attr (AttrMapSym1 s)) ats)
 -> f (Rec (Attr (AttrMapSym1 s)) rs)
 -> f (Rec (Attr (AttrMapSym1 s)) ats)
 forall a b. f (a -> b) -> f a -> f b
@@ -1963,18 +1963,18 @@
 -> Rec (Attr (AttrMapSym1 r)) ats
 -> f (Rec (Attr (AttrMapSym1 s)) ats)
 traverseIpeAttrs' r -> f s
-f Rec (Attr (AttrMapSym1 r)) rs
-ats'
+f Rec (Attr (AttrMapSym1 r)) rs
+ats'
 
 
-data IpeObject r =
-    IpeGroup     (IpeObject' Group     r)
-  | IpeImage     (IpeObject' Image     r)
-  | IpeTextLabel (IpeObject' TextLabel r)
-  | IpeMiniPage  (IpeObject' MiniPage  r)
-  | IpeUse       (IpeObject' IpeSymbol r)
-  | IpePath      (IpeObject' Path      r)
-  deriving ((forall x. IpeObject r -> Rep (IpeObject r) x)
+data IpeObject r =
+    IpeGroup     (IpeObject' Group     r)
+  | IpeImage     (IpeObject' Image     r)
+  | IpeTextLabel (IpeObject' TextLabel r)
+  | IpeMiniPage  (IpeObject' MiniPage  r)
+  | IpeUse       (IpeObject' IpeSymbol r)
+  | IpePath      (IpeObject' Path      r)
+  deriving ((forall x. IpeObject r -> Rep (IpeObject r) x)
 -> (forall x. Rep (IpeObject r) x -> IpeObject r)
 -> Generic (IpeObject r)
 forall x. Rep (IpeObject r) x -> IpeObject r
@@ -1989,19 +1989,19 @@
 to :: forall x. Rep (IpeObject r) x -> IpeObject r
 Generic)
 
-traverseIpeObject'              :: forall g r f s. ( Applicative f
-                                                   , Traversable g
-                                                   , AllConstrained TraverseIpeAttr (AttributesOf  g)
+traverseIpeObject'              :: forall g r f s. ( Applicative f
+                                                   , Traversable g
+                                                   , AllConstrained TraverseIpeAttr (AttributesOf  g)
                                                    )
-                                => (r -> f s) -> IpeObject' g r -> f (IpeObject' g s)
+                                => (r -> f s) -> IpeObject' g r -> f (IpeObject' g s)
 traverseIpeObject' :: forall (g :: * -> *) r (f :: * -> *) s.
 (Applicative f, Traversable g,
  AllConstrained TraverseIpeAttr (AttributesOf g)) =>
 (r -> f s) -> IpeObject' g r -> f (IpeObject' g s)
-traverseIpeObject' r -> f s
-f (g r
-i :+ IpeAttributes g r
-ats) = g s
+traverseIpeObject' r -> f s
+f (g r
+i :+ IpeAttributes g r
+ats) = g s
 -> Attributes' s (AttributesOf g)
 -> g s :+ Attributes' s (AttributesOf g)
 forall core extra. core -> extra -> core :+ extra
@@ -2020,8 +2020,8 @@
 Applicative f =>
 (a -> f b) -> g a -> f (g b)
 traverse r -> f s
-f g r
-i f (Attributes' s (AttributesOf g)
+f g r
+i f (Attributes' s (AttributesOf g)
    -> g s :+ Attributes' s (AttributesOf g))
 -> f (Attributes' s (AttributesOf g))
 -> f (g s :+ Attributes' s (AttributesOf g))
@@ -2036,30 +2036,30 @@
 proxy g -> (r -> f s) -> IpeAttributes g r -> f (IpeAttributes g s)
 traverseIpeAttrs (forall {k} (t :: k). Proxy t
 forall (t :: * -> *). Proxy t
-Proxy @g) r -> f s
-f IpeAttributes g r
-ats
+Proxy @g) r -> f s
+f IpeAttributes g r
+ats
 
-instance Functor IpeObject where
-  fmap :: forall a b. (a -> b) -> IpeObject a -> IpeObject b
+instance Functor IpeObject where
+  fmap :: forall a b. (a -> b) -> IpeObject a -> IpeObject b
 fmap = (a -> b) -> IpeObject a -> IpeObject b
 forall (t :: * -> *) a b. Traversable t => (a -> b) -> t a -> t b
 fmapDefault
-instance Foldable IpeObject where
-  foldMap :: forall m a. Monoid m => (a -> m) -> IpeObject a -> m
+instance Foldable IpeObject where
+  foldMap :: forall m a. Monoid m => (a -> m) -> IpeObject a -> m
 foldMap = (a -> m) -> IpeObject a -> m
 forall (t :: * -> *) m a.
 (Traversable t, Monoid m) =>
 (a -> m) -> t a -> m
 foldMapDefault
-instance Traversable IpeObject where
-  traverse :: forall (f :: * -> *) a b.
+instance Traversable IpeObject where
+  traverse :: forall (f :: * -> *) a b.
 Applicative f =>
 (a -> f b) -> IpeObject a -> f (IpeObject b)
-traverse a -> f b
-f = \case
-    IpeGroup IpeObject' Group a
-g     -> (Group b
+traverse a -> f b
+f = \case
+    IpeGroup IpeObject' Group a
+g     -> (Group b
  :+ Attributes
       (AttrMapSym1 b) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip])
 -> IpeObject b
@@ -2080,10 +2080,10 @@
  AllConstrained TraverseIpeAttr (AttributesOf g)) =>
 (r -> f s) -> IpeObject' g r -> f (IpeObject' g s)
 traverseIpeObject' a -> f b
-f IpeObject' Group a
-g
-    IpeImage IpeObject' Image a
-i     -> (Image b :+ Attributes (AttrMapSym1 b) CommonAttributes)
+f IpeObject' Group a
+g
+    IpeImage IpeObject' Image a
+i     -> (Image b :+ Attributes (AttrMapSym1 b) CommonAttributes)
 -> IpeObject b
 IpeObject' Image b -> IpeObject b
 forall r. IpeObject' Image r -> IpeObject r
@@ -2098,10 +2098,10 @@
  AllConstrained TraverseIpeAttr (AttributesOf g)) =>
 (r -> f s) -> IpeObject' g r -> f (IpeObject' g s)
 traverseIpeObject' a -> f b
-f IpeObject' Image a
-i
-    IpeTextLabel IpeObject' TextLabel a
-l -> (TextLabel b :+ Attributes (AttrMapSym1 b) CommonAttributes)
+f IpeObject' Image a
+i
+    IpeTextLabel IpeObject' TextLabel a
+l -> (TextLabel b :+ Attributes (AttrMapSym1 b) CommonAttributes)
 -> IpeObject b
 IpeObject' TextLabel b -> IpeObject b
 forall r. IpeObject' TextLabel r -> IpeObject r
@@ -2116,10 +2116,10 @@
  AllConstrained TraverseIpeAttr (AttributesOf g)) =>
 (r -> f s) -> IpeObject' g r -> f (IpeObject' g s)
 traverseIpeObject' a -> f b
-f IpeObject' TextLabel a
-l
-    IpeMiniPage IpeObject' MiniPage a
-p  -> (MiniPage b :+ Attributes (AttrMapSym1 b) CommonAttributes)
+f IpeObject' TextLabel a
+l
+    IpeMiniPage IpeObject' MiniPage a
+p  -> (MiniPage b :+ Attributes (AttrMapSym1 b) CommonAttributes)
 -> IpeObject b
 IpeObject' MiniPage b -> IpeObject b
 forall r. IpeObject' MiniPage r -> IpeObject r
@@ -2134,10 +2134,10 @@
  AllConstrained TraverseIpeAttr (AttributesOf g)) =>
 (r -> f s) -> IpeObject' g r -> f (IpeObject' g s)
 traverseIpeObject' a -> f b
-f IpeObject' MiniPage a
-p
-    IpeUse IpeObject' IpeSymbol a
-u       -> (IpeSymbol b
+f IpeObject' MiniPage a
+p
+    IpeUse IpeObject' IpeSymbol a
+u       -> (IpeSymbol b
  :+ Attributes
       (AttrMapSym1 b)
       '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
@@ -2164,10 +2164,10 @@
  AllConstrained TraverseIpeAttr (AttributesOf g)) =>
 (r -> f s) -> IpeObject' g r -> f (IpeObject' g s)
 traverseIpeObject' a -> f b
-f IpeObject' IpeSymbol a
-u
-    IpePath IpeObject' Path a
-p      -> (Path b
+f IpeObject' IpeSymbol a
+u
+    IpePath IpeObject' Path a
+p      -> (Path b
  :+ Attributes
       (AttrMapSym1 b)
       '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
@@ -2197,20 +2197,20 @@
  AllConstrained TraverseIpeAttr (AttributesOf g)) =>
 (r -> f s) -> IpeObject' g r -> f (IpeObject' g s)
 traverseIpeObject' a -> f b
-f IpeObject' Path a
-p
+f IpeObject' Path a
+p
 
 
-deriving instance (Show r) => Show (IpeObject r)
+deriving instance (Show r) => Show (IpeObject r)
 -- deriving instance (Read r) => Read (IpeObject r)
-deriving instance (Eq r)   => Eq   (IpeObject r)
+deriving instance (Eq r)   => Eq   (IpeObject r)
 
-type instance NumType   (IpeObject r) = r
-type instance Dimension (IpeObject r) = 2
+type instance NumType   (IpeObject r) = r
+type instance Dimension (IpeObject r) = 2
 
-makePrisms ''IpeObject
+makePrisms ''IpeObject
 
-groupItems :: Lens (Group r) (Group s) [IpeObject r] [IpeObject s]
+groupItems :: Lens (Group r) (Group s) [IpeObject r] [IpeObject s]
 groupItems :: forall r s (f :: * -> *).
 Functor f =>
 ([IpeObject r] -> f [IpeObject s]) -> Group r -> f (Group s)
@@ -2218,62 +2218,62 @@
 -> (Group r -> [IpeObject s] -> Group s)
 -> Lens (Group r) (Group s) [IpeObject r] [IpeObject s]
 forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
-lens (\(Group [IpeObject r]
-xs) -> [IpeObject r]
-xs) (([IpeObject s] -> Group s) -> Group r -> [IpeObject s] -> Group s
+lens (\(Group [IpeObject r]
+xs) -> [IpeObject r]
+xs) (([IpeObject s] -> Group s) -> Group r -> [IpeObject s] -> Group s
 forall a b. a -> b -> a
 const [IpeObject s] -> Group s
 forall r. [IpeObject r] -> Group r
 Group)
 
-class ToObject i where
-  mkIpeObject :: IpeObject' i r -> IpeObject r
+class ToObject i where
+  mkIpeObject :: IpeObject' i r -> IpeObject r
 
-instance ToObject Group      where mkIpeObject :: forall r. IpeObject' Group r -> IpeObject r
+instance ToObject Group      where mkIpeObject :: forall r. IpeObject' Group r -> IpeObject r
 mkIpeObject = IpeObject' Group r -> IpeObject r
 forall r. IpeObject' Group r -> IpeObject r
 IpeGroup
-instance ToObject Image      where mkIpeObject :: forall r. IpeObject' Image r -> IpeObject r
+instance ToObject Image      where mkIpeObject :: forall r. IpeObject' Image r -> IpeObject r
 mkIpeObject = IpeObject' Image r -> IpeObject r
 forall r. IpeObject' Image r -> IpeObject r
 IpeImage
-instance ToObject TextLabel  where mkIpeObject :: forall r. IpeObject' TextLabel r -> IpeObject r
+instance ToObject TextLabel  where mkIpeObject :: forall r. IpeObject' TextLabel r -> IpeObject r
 mkIpeObject = IpeObject' TextLabel r -> IpeObject r
 forall r. IpeObject' TextLabel r -> IpeObject r
 IpeTextLabel
-instance ToObject MiniPage   where mkIpeObject :: forall r. IpeObject' MiniPage r -> IpeObject r
+instance ToObject MiniPage   where mkIpeObject :: forall r. IpeObject' MiniPage r -> IpeObject r
 mkIpeObject = IpeObject' MiniPage r -> IpeObject r
 forall r. IpeObject' MiniPage r -> IpeObject r
 IpeMiniPage
-instance ToObject IpeSymbol  where mkIpeObject :: forall r. IpeObject' IpeSymbol r -> IpeObject r
+instance ToObject IpeSymbol  where mkIpeObject :: forall r. IpeObject' IpeSymbol r -> IpeObject r
 mkIpeObject = IpeObject' IpeSymbol r -> IpeObject r
 forall r. IpeObject' IpeSymbol r -> IpeObject r
 IpeUse
-instance ToObject Path       where mkIpeObject :: forall r. IpeObject' Path r -> IpeObject r
+instance ToObject Path       where mkIpeObject :: forall r. IpeObject' Path r -> IpeObject r
 mkIpeObject = IpeObject' Path r -> IpeObject r
 forall r. IpeObject' Path r -> IpeObject r
 IpePath
 
 
 -- | Shorthand for constructing ipeObjects
-ipeObject'     :: ToObject i => i r -> IpeAttributes i r -> IpeObject r
+ipeObject'     :: ToObject i => i r -> IpeAttributes i r -> IpeObject r
 ipeObject' :: forall (i :: * -> *) r.
 ToObject i =>
 i r -> IpeAttributes i r -> IpeObject r
-ipeObject' i r
-i IpeAttributes i r
-a = IpeObject' i r -> IpeObject r
+ipeObject' i r
+i IpeAttributes i r
+a = IpeObject' i r -> IpeObject r
 forall r. IpeObject' i r -> IpeObject r
 forall (i :: * -> *) r. ToObject i => IpeObject' i r -> IpeObject r
 mkIpeObject (IpeObject' i r -> IpeObject r) -> IpeObject' i r -> IpeObject r
 forall a b. (a -> b) -> a -> b
 $ i r
-i i r -> IpeAttributes i r -> IpeObject' i r
+i i r -> IpeAttributes i r -> IpeObject' i r
 forall core extra. core -> extra -> core :+ extra
 :+ IpeAttributes i r
-a
+a
 
-commonAttributes :: Lens' (IpeObject r) (Attributes (AttrMapSym1 r) CommonAttributes)
+commonAttributes :: Lens' (IpeObject r) (Attributes (AttrMapSym1 r) CommonAttributes)
 commonAttributes :: forall r (f :: * -> *).
 Functor f =>
 (Attributes (AttrMapSym1 r) CommonAttributes
@@ -2301,24 +2301,24 @@
 . IpeObject r -> Rec (Attr (AttrMapSym1 r)) CommonAttributes
 forall {r}.
 IpeObject r -> Rec (Attr (AttrMapSym1 r)) CommonAttributes
-g) (\IpeObject r
-x (Attrs Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a) -> IpeObject r
+g) (\IpeObject r
+x (Attrs Rec (Attr (AttrMapSym1 r)) CommonAttributes
+a) -> IpeObject r
 -> Rec (Attr (AttrMapSym1 r)) CommonAttributes -> IpeObject r
 forall {r}.
 IpeObject r
 -> Rec (Attr (AttrMapSym1 r)) CommonAttributes -> IpeObject r
-s IpeObject r
-x Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a)
+s IpeObject r
+x Rec (Attr (AttrMapSym1 r)) CommonAttributes
+a)
   where
-    select :: (CommonAttributes  AttributesOf g) =>
-              Lens' (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-    select :: forall (g :: * -> *) r.
+    select :: (CommonAttributes  AttributesOf g) =>
+              Lens' (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
+    select :: forall (g :: * -> *) r.
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select = (Attributes' r (AttributesOf g)
+select = (Attributes' r (AttributesOf g)
  -> f (Attributes' r (AttributesOf g)))
 -> (g r :+ Attributes' r (AttributesOf g))
 -> f (g r :+ Attributes' r (AttributesOf g))
@@ -2371,13 +2371,13 @@
 (record f rs -> g (record f rs)) -> record f ss -> g (record f ss)
 rsubset
 
-    g :: IpeObject r -> Rec (Attr (AttrMapSym1 r)) CommonAttributes
-g (IpeGroup IpeObject' Group r
-i)     = Group r
+    g :: IpeObject r -> Rec (Attr (AttrMapSym1 r)) CommonAttributes
+g (IpeGroup IpeObject' Group r
+i)     = Group r
 :+ Attributes
      (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
 IpeObject' Group r
-i(Group r
+i(Group r
  :+ Attributes
       (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip])
 -> Getting
@@ -2407,11 +2407,11 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select
-    g (IpeImage IpeObject' Image r
-i)     = Image r :+ Attributes (AttrMapSym1 r) CommonAttributes
+select
+    g (IpeImage IpeObject' Image r
+i)     = Image r :+ Attributes (AttrMapSym1 r) CommonAttributes
 IpeObject' Image r
-i(Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
+i(Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> Getting
      (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
      (Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
@@ -2435,11 +2435,11 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select
-    g (IpeTextLabel IpeObject' TextLabel r
-i) = TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes
+select
+    g (IpeTextLabel IpeObject' TextLabel r
+i) = TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes
 IpeObject' TextLabel r
-i(TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
+i(TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> Getting
      (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
      (TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
@@ -2465,11 +2465,11 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select
-    g (IpeMiniPage IpeObject' MiniPage r
-i)  = MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes
+select
+    g (IpeMiniPage IpeObject' MiniPage r
+i)  = MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes
 IpeObject' MiniPage r
-i(MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
+i(MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> Getting
      (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
      (MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
@@ -2495,15 +2495,15 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select
-    g (IpeUse IpeObject' IpeSymbol r
-i)       = IpeSymbol r
+select
+    g (IpeUse IpeObject' IpeSymbol r
+i)       = IpeSymbol r
 :+ Attributes
      (AttrMapSym1 r)
      '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
         'Size]
 IpeObject' IpeSymbol r
-i(IpeSymbol r
+i(IpeSymbol r
  :+ Attributes
       (AttrMapSym1 r)
       '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
@@ -2541,16 +2541,16 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select
-    g (IpePath IpeObject' Path r
-i)      = Path r
+select
+    g (IpePath IpeObject' Path r
+i)      = Path r
 :+ Attributes
      (AttrMapSym1 r)
      '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
         'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
         'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]
 IpeObject' Path r
-i(Path r
+i(Path r
  :+ Attributes
       (AttrMapSym1 r)
       '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
@@ -2589,13 +2589,13 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select
+select
 
-    s :: IpeObject r
+    s :: IpeObject r
 -> Rec (Attr (AttrMapSym1 r)) CommonAttributes -> IpeObject r
-s (IpeGroup IpeObject' Group r
-i)     Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a = IpeObject' Group r -> IpeObject r
+s (IpeGroup IpeObject' Group r
+i)     Rec (Attr (AttrMapSym1 r)) CommonAttributes
+a = IpeObject' Group r -> IpeObject r
 forall r. IpeObject' Group r -> IpeObject r
 IpeGroup     (IpeObject' Group r -> IpeObject r)
 -> IpeObject' Group r -> IpeObject r
@@ -2604,7 +2604,7 @@
 :+ Attributes
      (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
 IpeObject' Group r
-i(Group r
+i(Group r
  :+ Attributes
       (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip])
 -> ((Group r
@@ -2635,7 +2635,7 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
+select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
   -> Identity (Rec (Attr (AttrMapSym1 r)) CommonAttributes))
  -> (Group r
      :+ Attributes
@@ -2654,17 +2654,17 @@
         (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
 forall s t a b. ASetter s t a b -> b -> s -> t
 .~ Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a
-    s (IpeImage IpeObject' Image r
-i)     Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a = IpeObject' Image r -> IpeObject r
+a
+    s (IpeImage IpeObject' Image r
+i)     Rec (Attr (AttrMapSym1 r)) CommonAttributes
+a = IpeObject' Image r -> IpeObject r
 forall r. IpeObject' Image r -> IpeObject r
 IpeImage     (IpeObject' Image r -> IpeObject r)
 -> IpeObject' Image r -> IpeObject r
 forall a b. (a -> b) -> a -> b
 $ Image r :+ Attributes (AttrMapSym1 r) CommonAttributes
 IpeObject' Image r
-i(Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
+i(Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> ((Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
     -> Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> Image r :+ Attributes (AttrMapSym1 r) CommonAttributes
@@ -2683,7 +2683,7 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
+select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
   -> Identity (Rec (Attr (AttrMapSym1 r)) CommonAttributes))
  -> (Image r :+ Attributes (AttrMapSym1 r) CommonAttributes)
  -> Identity
@@ -2693,17 +2693,17 @@
 -> Image r :+ Attributes (AttrMapSym1 r) CommonAttributes
 forall s t a b. ASetter s t a b -> b -> s -> t
 .~ Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a
-    s (IpeTextLabel IpeObject' TextLabel r
-i) Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a = IpeObject' TextLabel r -> IpeObject r
+a
+    s (IpeTextLabel IpeObject' TextLabel r
+i) Rec (Attr (AttrMapSym1 r)) CommonAttributes
+a = IpeObject' TextLabel r -> IpeObject r
 forall r. IpeObject' TextLabel r -> IpeObject r
 IpeTextLabel (IpeObject' TextLabel r -> IpeObject r)
 -> IpeObject' TextLabel r -> IpeObject r
 forall a b. (a -> b) -> a -> b
 $ TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes
 IpeObject' TextLabel r
-i(TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
+i(TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> ((TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
     -> TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes
@@ -2723,7 +2723,7 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
+select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
   -> Identity (Rec (Attr (AttrMapSym1 r)) CommonAttributes))
  -> (TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes)
  -> Identity
@@ -2733,17 +2733,17 @@
 -> TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes
 forall s t a b. ASetter s t a b -> b -> s -> t
 .~ Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a
-    s (IpeMiniPage IpeObject' MiniPage r
-i)  Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a = IpeObject' MiniPage r -> IpeObject r
+a
+    s (IpeMiniPage IpeObject' MiniPage r
+i)  Rec (Attr (AttrMapSym1 r)) CommonAttributes
+a = IpeObject' MiniPage r -> IpeObject r
 forall r. IpeObject' MiniPage r -> IpeObject r
 IpeMiniPage  (IpeObject' MiniPage r -> IpeObject r)
 -> IpeObject' MiniPage r -> IpeObject r
 forall a b. (a -> b) -> a -> b
 $ MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes
 IpeObject' MiniPage r
-i(MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
+i(MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> ((MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
     -> MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
 -> MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes
@@ -2763,7 +2763,7 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
+select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
   -> Identity (Rec (Attr (AttrMapSym1 r)) CommonAttributes))
  -> (MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes)
  -> Identity
@@ -2773,10 +2773,10 @@
 -> MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes
 forall s t a b. ASetter s t a b -> b -> s -> t
 .~ Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a
-    s (IpeUse IpeObject' IpeSymbol r
-i)       Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a = IpeObject' IpeSymbol r -> IpeObject r
+a
+    s (IpeUse IpeObject' IpeSymbol r
+i)       Rec (Attr (AttrMapSym1 r)) CommonAttributes
+a = IpeObject' IpeSymbol r -> IpeObject r
 forall r. IpeObject' IpeSymbol r -> IpeObject r
 IpeUse       (IpeObject' IpeSymbol r -> IpeObject r)
 -> IpeObject' IpeSymbol r -> IpeObject r
@@ -2787,7 +2787,7 @@
      '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
         'Size]
 IpeObject' IpeSymbol r
-i(IpeSymbol r
+i(IpeSymbol r
  :+ Attributes
       (AttrMapSym1 r)
       '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen,
@@ -2831,7 +2831,7 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
+select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
   -> Identity (Rec (Attr (AttrMapSym1 r)) CommonAttributes))
  -> (IpeSymbol r
      :+ Attributes
@@ -2857,10 +2857,10 @@
            'Size]
 forall s t a b. ASetter s t a b -> b -> s -> t
 .~ Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a
-    s (IpePath IpeObject' Path r
-i)      Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a = IpeObject' Path r -> IpeObject r
+a
+    s (IpePath IpeObject' Path r
+i)      Rec (Attr (AttrMapSym1 r)) CommonAttributes
+a = IpeObject' Path r -> IpeObject r
 forall r. IpeObject' Path r -> IpeObject r
 IpePath      (IpeObject' Path r -> IpeObject r)
 -> IpeObject' Path r -> IpeObject r
@@ -2872,7 +2872,7 @@
         'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow,
         'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]
 IpeObject' Path r
-i(Path r
+i(Path r
  :+ Attributes
       (AttrMapSym1 r)
       '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash,
@@ -2921,7 +2921,7 @@
 (CommonAttributes ⊆ AttributesOf g) =>
 Lens'
   (IpeObject' g r) (Rec (Attr (AttrMapSym1 r)) CommonAttributes)
-select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
+select ((Rec (Attr (AttrMapSym1 r)) CommonAttributes
   -> Identity (Rec (Attr (AttrMapSym1 r)) CommonAttributes))
  -> (Path r
      :+ Attributes
@@ -2951,30 +2951,30 @@
            'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient]
 forall s t a b. ASetter s t a b -> b -> s -> t
 .~ Rec (Attr (AttrMapSym1 r)) CommonAttributes
-a
+a
 
 -- | collect all non-group objects
-flattenGroups :: [IpeObject r] -> [IpeObject r]
+flattenGroups :: [IpeObject r] -> [IpeObject r]
 flattenGroups :: forall r. [IpeObject r] -> [IpeObject r]
 flattenGroups = (IpeObject r -> [IpeObject r]) -> [IpeObject r] -> [IpeObject r]
 forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
 concatMap IpeObject r -> [IpeObject r]
 forall r. IpeObject r -> [IpeObject r]
-flattenGroups'
+flattenGroups'
   where
-    flattenGroups'                              :: IpeObject r -> [IpeObject r]
-    flattenGroups' :: forall r. IpeObject r -> [IpeObject r]
-flattenGroups' (IpeGroup (Group [IpeObject r]
-gs :+ IpeAttributes Group r
-ats)) =
+    flattenGroups'                              :: IpeObject r -> [IpeObject r]
+    flattenGroups' :: forall r. IpeObject r -> [IpeObject r]
+flattenGroups' (IpeGroup (Group [IpeObject r]
+gs :+ IpeAttributes Group r
+ats)) =
       (IpeObject r -> IpeObject r) -> [IpeObject r] -> [IpeObject r]
 forall a b. (a -> b) -> [a] -> [b]
 map (Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
 -> IpeObject r -> IpeObject r
 forall {p} {a}. p -> a -> a
-applyAts Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
+applyAts Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
 IpeAttributes Group r
-ats) ([IpeObject r] -> [IpeObject r])
+ats) ([IpeObject r] -> [IpeObject r])
 -> ([IpeObject r] -> [IpeObject r])
 -> [IpeObject r]
 -> [IpeObject r]
@@ -2983,17 +2983,17 @@
 forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
 concatMap IpeObject r -> [IpeObject r]
 forall r. IpeObject r -> [IpeObject r]
-flattenGroups' ([IpeObject r] -> [IpeObject r]) -> [IpeObject r] -> [IpeObject r]
+flattenGroups' ([IpeObject r] -> [IpeObject r]) -> [IpeObject r] -> [IpeObject r]
 forall a b. (a -> b) -> a -> b
 $ [IpeObject r]
-gs
+gs
         where
-          applyAts :: p -> a -> a
-applyAts p
+          applyAts :: p -> a -> a
+applyAts p
 _ = a -> a
 forall a. a -> a
 id
-    flattenGroups' IpeObject r
-o                            = [IpeObject r
-o]
+    flattenGroups' IpeObject r
+o                            = [IpeObject r
+o]
 
\ No newline at end of file diff --git a/haddocks/hgeometry/ipe/src/Ipe.FromIpe.html b/haddocks/hgeometry/ipe/src/Ipe.FromIpe.html index ec449aaf3..212c36262 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.FromIpe.html +++ b/haddocks/hgeometry/ipe/src/Ipe.FromIpe.html @@ -21,77 +21,84 @@
, _asPolyLine , _asSimplePolygon , _asConvexPolygon - -- , _asSomePolygon, _asSimplePolygon, _asMultiPolygon + , _asPolygonalDomain - -- * Dealing with Attributes - , _withAttrs - - -- * Default readers - , HasDefaultFromIpe(..) - - -- * Reading all elements of a particular type - , readAll, readAllDeep, readAllFrom - ) where - -import Control.Lens hiding (Simple) -import Data.Kind (Type) -import qualified Data.Sequence as Seq -import HGeometry.Ball -import HGeometry.Box -import qualified HGeometry.Box as Box -import HGeometry.Ellipse (Ellipse, _EllipseCircle) -import HGeometry.Ext -import HGeometry.LineSegment -import HGeometry.Number.Radical -import HGeometry.Point -import qualified HGeometry.PolyLine as PolyLine -import HGeometry.Polygon.Class -import HGeometry.Polygon.Convex -import HGeometry.Polygon.Simple -import HGeometry.Properties -import HGeometry.Triangle -import Ipe.Path -import Ipe.Reader -import Ipe.Types -import System.OsPath - --------------------------------------------------------------------------------- - --- import qualified Data.List.NonEmpty as NonEmpty --- import Ipe.Attributes --- import Ipe.Color(IpeColor(..)) --------------------------------------------------------------------------------- --- $setup --- >>> :set -XOverloadedStrings --- >>> import Ipe.Attributes --- >>> import Ipe.Color(IpeColor(..)) --- >>> import qualified Data.List.NonEmpty as NonEmpty --- >>> :{ --- let testPath :: Path Int --- testPath = Path . fromSingleton . PolyLineSegment --- . PolyLine.polyLineFromPoints . NonEmpty.fromList --- $ [ origin, Point2 10 10, Point2 200 100 ] --- testPathAttrs :: IpeAttributes Path Int --- testPathAttrs = attr SStroke (IpeColor "red") --- testObject :: IpeObject Int --- testObject = IpePath (testPath :+ testPathAttrs) --- :} - --- testPath :: Path Int --- testPath = Path . fromSingleton . PolyLineSegment --- . PolyLine.polyLineFromPoints . NonEmpty.fromList --- $ [ origin, Point2 10 10, Point2 200 100 ] --- testPathAttrs :: IpeAttributes Path Int --- testPathAttrs = attr SStroke (IpeColor "red") --- testObject :: IpeObject Int --- testObject = IpePath (testPath :+ testPathAttrs) - - - --- | Extracts the point from a Symbol. When creating a symbol this --- creates a disk that supports a stroke color. -_asPoint :: Prism' (IpeSymbol r) (Point 2 r) -_asPoint :: forall r (p :: * -> * -> *) (f :: * -> *). + , toPolygonalDomain + + -- * Dealing with Attributes + , _withAttrs + + -- * Default readers + , HasDefaultFromIpe(..) + + -- * Reading all elements of a particular type + , readAll, readAllDeep, readAllFrom + ) where + +import Control.Lens hiding (Simple) +import Data.Kind (Type) +import qualified Data.Sequence as Seq +import Data.Vector.NonEmpty (NonEmptyVector) +import HGeometry.Ball +import HGeometry.Box +import qualified HGeometry.Box as Box +import HGeometry.Cyclic +import HGeometry.Ellipse (Ellipse, _EllipseCircle) +import HGeometry.Ext +import HGeometry.Foldable.Util +import HGeometry.LineSegment +import HGeometry.Number.Radical +import HGeometry.Point +import qualified HGeometry.PolyLine as PolyLine +import HGeometry.Polygon.Class +import HGeometry.Polygon.Convex +import HGeometry.Polygon.Simple +import HGeometry.Polygon.WithHoles +import HGeometry.Properties +import HGeometry.Triangle +import Ipe.Path +import Ipe.Reader +import Ipe.Types +import System.OsPath +import Witherable + +-------------------------------------------------------------------------------- + +-- import qualified Data.List.NonEmpty as NonEmpty +-- import Ipe.Attributes +-- import Ipe.Color(IpeColor(..)) +-------------------------------------------------------------------------------- +-- $setup +-- >>> :set -XOverloadedStrings +-- >>> import Ipe.Attributes +-- >>> import Ipe.Color(IpeColor(..)) +-- >>> import qualified Data.List.NonEmpty as NonEmpty +-- >>> :{ +-- let testPath :: Path Int +-- testPath = Path . fromSingleton . PolyLineSegment +-- . PolyLine.polyLineFromPoints . NonEmpty.fromList +-- $ [ origin, Point2 10 10, Point2 200 100 ] +-- testPathAttrs :: IpeAttributes Path Int +-- testPathAttrs = attr SStroke (IpeColor "red") +-- testObject :: IpeObject Int +-- testObject = IpePath (testPath :+ testPathAttrs) +-- :} + +-- testPath :: Path Int +-- testPath = Path . fromSingleton . PolyLineSegment +-- . PolyLine.polyLineFromPoints . NonEmpty.fromList +-- $ [ origin, Point2 10 10, Point2 200 100 ] +-- testPathAttrs :: IpeAttributes Path Int +-- testPathAttrs = attr SStroke (IpeColor "red") +-- testObject :: IpeObject Int +-- testObject = IpePath (testPath :+ testPathAttrs) + + + +-- | Extracts the point from a Symbol. When creating a symbol this +-- creates a disk that supports a stroke color. +_asPoint :: Prism' (IpeSymbol r) (Point 2 r) +_asPoint :: forall r (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r)) _asPoint = (Point 2 r -> IpeSymbol r) @@ -117,13 +124,13 @@ Functor f => (Point 2 r -> f (Point 2 r')) -> IpeSymbol r -> f (IpeSymbol r') symbolPoint) - --- | Try to convert a path into a line segment, fails if the path is not a line --- segment or a polyline with more than two points. --- --- -_asLineSegment :: Prism' (Path r) (LineSegment AnEndPoint (Point 2 r)) -_asLineSegment :: forall r (p :: * -> * -> *) (f :: * -> *). + +-- | Try to convert a path into a line segment, fails if the path is not a line +-- segment or a polyline with more than two points. +-- +-- +_asLineSegment :: Prism' (Path r) (LineSegment AnEndPoint (Point 2 r)) +_asLineSegment :: forall r (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p (LineSegment AnEndPoint (Point 2 r)) (f (LineSegment AnEndPoint (Point 2 r))) @@ -152,13 +159,13 @@ Prism' polyLine lineSegment Prism' (PolyLine (Point 2 r)) (LineSegment AnEndPoint (Point 2 r)) PolyLine._PolyLineLineSegment - --- | Try to convert a path into a line segment, fails if the path is not a line --- segment or a polyline with more than two points. --- --- -_asClosedLineSegment :: Prism' (Path r) (ClosedLineSegment (Point 2 r)) -_asClosedLineSegment :: forall r (p :: * -> * -> *) (f :: * -> *). + +-- | Try to convert a path into a line segment, fails if the path is not a line +-- segment or a polyline with more than two points. +-- +-- +_asClosedLineSegment :: Prism' (Path r) (ClosedLineSegment (Point 2 r)) +_asClosedLineSegment :: forall r (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p (ClosedLineSegment (Point 2 r)) (f (ClosedLineSegment (Point 2 r))) @@ -187,13 +194,13 @@ Prism' polyLine lineSegment Prism' (PolyLine (Point 2 r)) (ClosedLineSegment (Point 2 r)) PolyLine._PolyLineLineSegment - --- | Convert to a polyline. Ignores all non-polyline parts --- --- >>> testPath ^? _asPolyLine --- Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100]) -_asPolyLine :: Prism' (Path r) (PolyLine.PolyLine (Point 2 r)) -_asPolyLine :: forall r (p :: * -> * -> *) (f :: * -> *). + +-- | Convert to a polyline. Ignores all non-polyline parts +-- +-- >>> testPath ^? _asPolyLine +-- Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100]) +_asPolyLine :: Prism' (Path r) (PolyLine.PolyLine (Point 2 r)) +_asPolyLine :: forall r (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (Path r) (f (Path r)) @@ -204,11 +211,11 @@ forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b prism' PolyLine (Point 2 r) -> Path r forall {r}. PolyLine (Point 2 r) -> Path r -poly2path Path r -> Maybe (PolyLine (Point 2 r)) -path2poly - where - poly2path :: PolyLine (Point 2 r) -> Path r -poly2path = Seq (PathSegment r) -> Path r +poly2path Path r -> Maybe (PolyLine (Point 2 r)) +path2poly + where + poly2path :: PolyLine (Point 2 r) -> Path r +poly2path = Seq (PathSegment r) -> Path r forall r. Seq (PathSegment r) -> Path r Path (Seq (PathSegment r) -> Path r) -> (PolyLine (Point 2 r) -> Seq (PathSegment r)) @@ -225,8 +232,8 @@ . PolyLine (Point 2 r) -> PathSegment r forall r. PolyLine (Point 2 r) -> PathSegment r PolyLineSegment - path2poly :: Path r -> Maybe (PolyLine (Point 2 r)) -path2poly = Getting + path2poly :: Path r -> Maybe (PolyLine (Point 2 r)) +path2poly = Getting (First (PolyLine (Point 2 r))) (Path r) (PolyLine (Point 2 r)) -> Path r -> Maybe (PolyLine (Point 2 r)) forall s (m :: * -> *) a. @@ -281,12 +288,12 @@ p (PolyLine (Point 2 r)) (f (PolyLine (Point 2 r))) -> p (PathSegment r) (f (PathSegment r)) _PolyLineSegment) - -- TODO: Check that the path actually is a polyline, rather - -- than ignoring everything that does not fit - --- | Convert to a simple polygon -_asSimplePolygon :: Prism' (Path r) (SimplePolygon (Point 2 r)) -_asSimplePolygon :: forall r (p :: * -> * -> *) (f :: * -> *). + -- TODO: Check that the path actually is a polyline, rather + -- than ignoring everything that does not fit + +-- | Convert to a simple polygon +_asSimplePolygon :: Prism' (Path r) (SimplePolygon (Point 2 r)) +_asSimplePolygon :: forall r (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) -> p (Path r) (f (Path r)) @@ -303,10 +310,10 @@ polygonToPath Path r -> Maybe (SimplePolygon (Point 2 r)) forall r. Path r -> Maybe (SimplePolygon (Point 2 r)) pathToPolygon - --- | Convert to a convex polygon -_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r)) -_asConvexPolygon :: forall r. + +-- | Convert to a convex polygon +_asConvexPolygon :: (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r)) +_asConvexPolygon :: forall r. (Num r, Ord r) => Prism' (Path r) (ConvexPolygon (Point 2 r)) _asConvexPolygon = p (SimplePolygon (Point 2 r)) (f (SimplePolygon (Point 2 r))) @@ -329,10 +336,221 @@ Prism' (SimplePolygonF f point) (ConvexPolygonF f point) Prism' (SimplePolygon (Point 2 r)) (ConvexPolygon (Point 2 r)) _ConvexPolygon - --- | Tries to convert a path into a rectangle. -_asRectangle :: forall r. (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r)) -_asRectangle :: forall r. (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r)) + +-- | Convert to a polygonal domain +_asPolygonalDomain :: Prism' (Path r) (PolygonalDomain (Point 2 r)) +_asPolygonalDomain :: forall r (p :: * -> * -> *) (f :: * -> *). +(Choice p, Applicative f) => +p (PolygonalDomain (Point 2 r)) (f (PolygonalDomain (Point 2 r))) +-> p (Path r) (f (Path r)) +_asPolygonalDomain = (PolygonalDomain (Point 2 r) -> Path r) +-> (Path r -> Maybe (PolygonalDomain (Point 2 r))) +-> Prism + (Path r) + (Path r) + (PolygonalDomain (Point 2 r)) + (PolygonalDomain (Point 2 r)) +forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b +prism' PolygonalDomain (Point 2 r) -> Path r +forall {g :: * -> *} {r}. +(Foldable g, Functor g) => +PolygonalDomainF g (Cyclic NonEmptyVector) (Point 2 r) -> Path r +toPath Path r -> Maybe (PolygonalDomain (Point 2 r)) +forall {h' :: * -> *} {r}. +HasFromFoldable h' => +Path r +-> Maybe (PolygonalDomainF h' (Cyclic NonEmptyVector) (Point 2 r)) +toDomain + where + toPath :: PolygonalDomainF g (Cyclic NonEmptyVector) (Point 2 r) -> Path r +toPath (PolygonalDomain SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) +outer' g (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +holes') = + Seq (PathSegment r) -> Path r +forall r. Seq (PathSegment r) -> Path r +Path (Seq (PathSegment r) -> Path r) -> Seq (PathSegment r) -> Path r +forall a b. (a -> b) -> a -> b +$ (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) -> PathSegment r +forall {r}. SimplePolygon (Point 2 r) -> PathSegment r +pathPiece SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) +outer' PathSegment r -> Seq (PathSegment r) -> Seq (PathSegment r) +forall a. a -> Seq a -> Seq a +Seq.<| g (PathSegment r) -> Seq (PathSegment r) +forall (f :: * -> *) (g :: * -> *) a. +(HasFromFoldable f, Foldable g) => +g a -> f a +forall (g :: * -> *) a. Foldable g => g a -> Seq a +fromFoldable ((SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) + -> PathSegment r) +-> g (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +-> g (PathSegment r) +forall a b. (a -> b) -> g a -> g b +forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +fmap SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) -> PathSegment r +forall {r}. SimplePolygon (Point 2 r) -> PathSegment r +pathPiece g (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +holes')) + pathPiece :: SimplePolygon (Point 2 r) -> PathSegment r +pathPiece = Orientation -> SimplePolygon (Point 2 r) -> PathSegment r +forall r. Orientation -> SimplePolygon (Point 2 r) -> PathSegment r +PolygonPath Orientation +AsIs + + toDomain :: Path r +-> Maybe (PolygonalDomainF h' (Cyclic NonEmptyVector) (Point 2 r)) +toDomain Path r +path = ASetter + (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) + (PolygonalDomainF h' (Cyclic NonEmptyVector) (Point 2 r)) + (Seq (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (h' (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) +-> (Seq (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) + -> h' (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) +-> PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r) +-> PolygonalDomainF h' (Cyclic NonEmptyVector) (Point 2 r) +forall s t a b. ASetter s t a b -> (a -> b) -> s -> t +over ASetter + (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) + (PolygonalDomainF h' (Cyclic NonEmptyVector) (Point 2 r)) + (Seq (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (h' (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) +forall (h :: * -> *) (f1 :: * -> *) point (h' :: * -> *) + (f2 :: * -> *). +Functor f2 => +(h (SimplePolygonF f1 point) -> f2 (h' (SimplePolygonF f1 point))) +-> PolygonalDomainF h f1 point -> f2 (PolygonalDomainF h' f1 point) +theHoles Seq (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +-> h' (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +forall (f :: * -> *) (g :: * -> *) a. +(HasFromFoldable f, Foldable g) => +g a -> f a +forall (g :: * -> *) a. Foldable g => g a -> h' a +fromFoldable (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r) + -> PolygonalDomainF h' (Cyclic NonEmptyVector) (Point 2 r)) +-> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) +-> Maybe (PolygonalDomainF h' (Cyclic NonEmptyVector) (Point 2 r)) +forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b +<$> Path r +-> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) +forall r. +Path r +-> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) +toPolygonalDomain Path r +path + +-- | Convert to a path to a Polygonal Domain +toPolygonalDomain :: Path r + -> Maybe (PolygonalDomainF Seq.Seq (Cyclic NonEmptyVector) (Point 2 r)) +toPolygonalDomain :: forall r. +Path r +-> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) +toPolygonalDomain Path r +path = case (PathSegment r + -> Maybe (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) +-> Seq (PathSegment r) +-> Seq (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +forall a b. (a -> Maybe b) -> Seq a -> Seq b +forall (f :: * -> *) a b. +Filterable f => +(a -> Maybe b) -> f a -> f b +mapMaybe (Getting + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (PathSegment r) + (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +-> PathSegment r +-> Maybe (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +forall s (m :: * -> *) a. +MonadReader s m => +Getting (First a) s a -> m (Maybe a) +preview (((Orientation, SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) + -> Const + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (Orientation, SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) +-> PathSegment r +-> Const + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (PathSegment r) +forall r (p :: * -> * -> *) (f :: * -> *). +(Choice p, Applicative f) => +p (Orientation, SimplePolygon (Point 2 r)) + (f (Orientation, SimplePolygon (Point 2 r))) +-> p (PathSegment r) (f (PathSegment r)) +_PolygonPath(((Orientation, SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) + -> Const + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (Orientation, SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + -> PathSegment r + -> Const + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (PathSegment r)) +-> ((SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) + -> Const + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + -> (Orientation, + SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) + -> Const + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (Orientation, SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) +-> Getting + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (PathSegment r) + (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +forall b c a. (b -> c) -> (a -> b) -> a -> c +.(SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) + -> Const + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) +-> (Orientation, + SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +-> Const + (First (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) + (Orientation, SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +forall s t a b. Field2 s t a b => Lens s t a b +Lens + (Orientation, SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) + (Orientation, SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) + (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) + (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +_2)) (Path r +pathPath r +-> Getting (Seq (PathSegment r)) (Path r) (Seq (PathSegment r)) +-> Seq (PathSegment r) +forall s a. s -> Getting a s a -> a +^.Getting (Seq (PathSegment r)) (Path r) (Seq (PathSegment r)) +forall r r' (p :: * -> * -> *) (f :: * -> *). +(Profunctor p, Functor f) => +p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) +-> p (Path r) (f (Path r')) +pathSegments) of + SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) +outer' Seq.:<| Seq (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +holes' -> PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r) +-> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) +forall a. a -> Maybe a +Just (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r) + -> Maybe + (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r))) +-> PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r) +-> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) +forall a b. (a -> b) -> a -> b +$ SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) +-> Seq (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +-> PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r) +forall (h :: * -> *) (f :: * -> *) point. +SimplePolygonF f point +-> h (SimplePolygonF f point) -> PolygonalDomainF h f point +PolygonalDomain SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) +outer' Seq (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +holes' + Seq (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) +_ -> Maybe (PolygonalDomainF Seq (Cyclic NonEmptyVector) (Point 2 r)) +forall a. Maybe a +Nothing + +-- | Tries to convert a path into a rectangle. +_asRectangle :: forall r. (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r)) +_asRectangle :: forall r. (Num r, Ord r) => Prism' (Path r) (Rectangle (Point 2 r)) _asRectangle = (Rectangle (Point 2 r) -> Path r) -> (Path r -> Maybe (Rectangle (Point 2 r))) -> Prism @@ -340,11 +558,11 @@ forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b prism' Rectangle (Point 2 r) -> Path r Rectangle (Point 2 r) -> Path (NumType (Rectangle (Point 2 r))) -rectToPath Path r -> Maybe (Rectangle (Point 2 r)) -pathToRect - where - rectToPath :: Rectangle (Point 2 r) -> Path (NumType (Rectangle (Point 2 r))) -rectToPath = AReview +rectToPath Path r -> Maybe (Rectangle (Point 2 r)) +pathToRect + where + rectToPath :: Rectangle (Point 2 r) -> Path (NumType (Rectangle (Point 2 r))) +rectToPath = AReview (Path (NumType (Rectangle (Point 2 r)))) (SimplePolygon (Point 2 (NumType (Rectangle (Point 2 r))))) -> SimplePolygon (Point 2 (NumType (Rectangle (Point 2 r)))) @@ -386,11 +604,11 @@ (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Corners point Box.corners - -- shoudln't I reverse these corners - pathToRect :: Path r -> Maybe (Rectangle (Point 2 r)) -pathToRect Path r -p = Path r -pPath r + -- shoudln't I reverse these corners + pathToRect :: Path r -> Maybe (Rectangle (Point 2 r)) +pathToRect Path r +p = Path r +pPath r -> Getting (First (SimplePolygon (Point 2 r))) (Path r) @@ -411,13 +629,13 @@ forall a b. Maybe a -> (a -> Maybe b) -> Maybe b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= SimplePolygon (Point 2 r) -> Maybe (Rectangle (Point 2 r)) -asRect - - asRect :: SimplePolygon (Point 2 r) -> Maybe (Rectangle (Point 2 r)) - asRect :: SimplePolygon (Point 2 r) -> Maybe (Rectangle (Point 2 r)) -asRect SimplePolygon (Point 2 r) -pg = case SimplePolygon (Point 2 r) -pgSimplePolygon (Point 2 r) +asRect + + asRect :: SimplePolygon (Point 2 r) -> Maybe (Rectangle (Point 2 r)) + asRect :: SimplePolygon (Point 2 r) -> Maybe (Rectangle (Point 2 r)) +asRect SimplePolygon (Point 2 r) +pg = case SimplePolygon (Point 2 r) +pgSimplePolygon (Point 2 r) -> Getting (Endo [Point 2 r]) (SimplePolygon (Point 2 r)) (Point 2 r) -> [Point 2 r] @@ -435,12 +653,12 @@ (SimplePolygon (Point 2 r)) (Vertex (SimplePolygon (Point 2 r))) outerBoundary of - [Point 2 r -a,Point 2 r -b,Point 2 r -c,Point 2 r -d] - | Point 2 r -> Point 2 r -> Bool + [Point 2 r +a,Point 2 r +b,Point 2 r +c,Point 2 r +d] + | Point 2 r -> Point 2 r -> Bool forall {s} {s}. (NumType s ~ NumType s, Assert @@ -452,9 +670,9 @@ Eq (NumType s), Point_ s (Dimension s) (NumType s), Point_ s (Dimension s) (NumType s)) => s -> s -> Bool -isH Point 2 r -a Point 2 r -b Bool -> Bool -> Bool +isH Point 2 r +a Point 2 r +b Bool -> Bool -> Bool && Point 2 r -> Point 2 r -> Bool forall {s} {s}. (NumType s ~ NumType s, @@ -467,9 +685,9 @@ Eq (NumType s), Point_ s (Dimension s) (NumType s), Point_ s (Dimension s) (NumType s)) => s -> s -> Bool -isV Point 2 r -b Point 2 r -c Bool -> Bool -> Bool +isV Point 2 r +b Point 2 r +c Bool -> Bool -> Bool && Point 2 r -> Point 2 r -> Bool forall {s} {s}. (NumType s ~ NumType s, @@ -482,9 +700,9 @@ Eq (NumType s), Point_ s (Dimension s) (NumType s), Point_ s (Dimension s) (NumType s)) => s -> s -> Bool -isH Point 2 r -c Point 2 r -d Bool -> Bool -> Bool +isH Point 2 r +c Point 2 r +d Bool -> Bool -> Bool && Point 2 r -> Point 2 r -> Bool forall {s} {s}. (NumType s ~ NumType s, @@ -497,11 +715,11 @@ Eq (NumType s), Point_ s (Dimension s) (NumType s), Point_ s (Dimension s) (NumType s)) => s -> s -> Bool -isV Point 2 r -d Point 2 r -a -> - if Point 2 r -aPoint 2 r -> Getting r (Point 2 r) r -> r +isV Point 2 r +d Point 2 r +a -> + if Point 2 r +aPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -511,7 +729,7 @@ xCoord r -> r -> Bool forall a. Ord a => a -> a -> Bool < Point 2 r -bPoint 2 r -> Getting r (Point 2 r) r -> r +bPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -523,16 +741,16 @@ Just (Point 2 r -> Point 2 r -> Rectangle (Point 2 r) forall point. (Dimension point ~ 2) => point -> point -> Box point Rectangle Point 2 r -a Point 2 r -c) - else Rectangle (Point 2 r) -> Maybe (Rectangle (Point 2 r)) +a Point 2 r +c) + else Rectangle (Point 2 r) -> Maybe (Rectangle (Point 2 r)) forall a. a -> Maybe a Just (Point 2 r -> Point 2 r -> Rectangle (Point 2 r) forall point. (Dimension point ~ 2) => point -> point -> Box point Rectangle Point 2 r -c Point 2 r -a) - | Point 2 r -> Point 2 r -> Bool +c Point 2 r +a) + | Point 2 r -> Point 2 r -> Bool forall {s} {s}. (NumType s ~ NumType s, Assert @@ -544,9 +762,9 @@ Eq (NumType s), Point_ s (Dimension s) (NumType s), Point_ s (Dimension s) (NumType s)) => s -> s -> Bool -isV Point 2 r -a Point 2 r -b Bool -> Bool -> Bool +isV Point 2 r +a Point 2 r +b Bool -> Bool -> Bool && Point 2 r -> Point 2 r -> Bool forall {s} {s}. (NumType s ~ NumType s, @@ -559,9 +777,9 @@ Eq (NumType s), Point_ s (Dimension s) (NumType s), Point_ s (Dimension s) (NumType s)) => s -> s -> Bool -isH Point 2 r -b Point 2 r -c Bool -> Bool -> Bool +isH Point 2 r +b Point 2 r +c Bool -> Bool -> Bool && Point 2 r -> Point 2 r -> Bool forall {s} {s}. (NumType s ~ NumType s, @@ -574,9 +792,9 @@ Eq (NumType s), Point_ s (Dimension s) (NumType s), Point_ s (Dimension s) (NumType s)) => s -> s -> Bool -isV Point 2 r -c Point 2 r -d Bool -> Bool -> Bool +isV Point 2 r +c Point 2 r +d Bool -> Bool -> Bool && Point 2 r -> Point 2 r -> Bool forall {s} {s}. (NumType s ~ NumType s, @@ -589,11 +807,11 @@ Eq (NumType s), Point_ s (Dimension s) (NumType s), Point_ s (Dimension s) (NumType s)) => s -> s -> Bool -isH Point 2 r -d Point 2 r -a -> - if Point 2 r -aPoint 2 r -> Getting r (Point 2 r) r -> r +isH Point 2 r +d Point 2 r +a -> + if Point 2 r +aPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -603,7 +821,7 @@ yCoord r -> r -> Bool forall a. Ord a => a -> a -> Bool < Point 2 r -bPoint 2 r -> Getting r (Point 2 r) r -> r +bPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -615,25 +833,25 @@ Just (Point 2 r -> Point 2 r -> Rectangle (Point 2 r) forall point. (Dimension point ~ 2) => point -> point -> Box point Rectangle Point 2 r -d Point 2 r -b) - else Rectangle (Point 2 r) -> Maybe (Rectangle (Point 2 r)) +d Point 2 r +b) + else Rectangle (Point 2 r) -> Maybe (Rectangle (Point 2 r)) forall a. a -> Maybe a Just (Point 2 r -> Point 2 r -> Rectangle (Point 2 r) forall point. (Dimension point ~ 2) => point -> point -> Box point Rectangle Point 2 r -b Point 2 r -d) - [Point 2 r] +b Point 2 r +d) + [Point 2 r] _ -> Maybe (Rectangle (Point 2 r)) forall a. Maybe a Nothing - - isH :: s -> s -> Bool -isH s -p s -q = s -ps -> Getting (NumType s) s (NumType s) -> NumType s + + isH :: s -> s -> Bool +isH s +p s +q = s +ps -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -643,7 +861,7 @@ yCoord NumType s -> NumType s -> Bool forall a. Eq a => a -> a -> Bool == s -qs -> Getting (NumType s) s (NumType s) -> NumType s +qs -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -651,11 +869,11 @@ IndexedLens' Int point r IndexedLens' Int s (NumType s) yCoord -- edge pq is horizontal - isV :: s -> s -> Bool -isV s -p s -q = s -ps -> Getting (NumType s) s (NumType s) -> NumType s + isV :: s -> s -> Bool +isV s +p s +q = s +ps -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -665,7 +883,7 @@ xCoord NumType s -> NumType s -> Bool forall a. Eq a => a -> a -> Bool == s -qs -> Getting (NumType s) s (NumType s) -> NumType s +qs -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -673,13 +891,13 @@ IndexedLens' Int point r IndexedLens' Int s (NumType s) xCoord -- edge pq is vertical - - - - --- | Convert to a triangle -_asTriangle :: Prism' (Path r) (Triangle (Point 2 r)) -_asTriangle :: forall r (p :: * -> * -> *) (f :: * -> *). + + + + +-- | Convert to a triangle +_asTriangle :: Prism' (Path r) (Triangle (Point 2 r)) +_asTriangle :: forall r (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p (Triangle (Point 2 r)) (f (Triangle (Point 2 r))) -> p (Path r) (f (Path r)) @@ -690,12 +908,12 @@ forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b prism' Triangle (Point 2 r) -> Path r forall {s}. Triangle (PointF (Vector 2 s)) -> Path s -triToPath Path r -> Maybe (Triangle (Point 2 r)) +triToPath Path r -> Maybe (Triangle (Point 2 r)) forall {r'}. Path r' -> Maybe (Triangle (PointF (Vector 2 r'))) -path2tri - where - triToPath :: Triangle (PointF (Vector 2 s)) -> Path s -triToPath = SimplePolygon (PointF (Vector 2 s)) -> Path s +path2tri + where + triToPath :: Triangle (PointF (Vector 2 s)) -> Path s +triToPath = SimplePolygon (PointF (Vector 2 s)) -> Path s forall r. SimplePolygon (Point 2 r) -> Path r polygonToPath (SimplePolygon (PointF (Vector 2 s)) -> Path s) -> (Triangle (PointF (Vector 2 s)) @@ -712,14 +930,14 @@ Foldable1 f => f (PointF (Vector 2 s)) -> SimplePolygon (PointF (Vector 2 s)) uncheckedFromCCWPoints - path2tri :: Path r' + path2tri :: Path r' -> Maybe (Triangle (Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))))) -path2tri Path r' -p = case Path r' -pPath r' +path2tri Path r' +p = case Path r' +pPath r' -> Getting (Endo [SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))]) @@ -887,15 +1105,15 @@ (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))) (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))) _2 of - [] -> Maybe + [] -> Maybe (Triangle (Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))))) forall a. Maybe a Nothing - [SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r')) -pg] -> case SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r')) -pgSimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r')) + [SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r')) +pg] -> case SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r')) +pgSimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r')) -> Getting (Endo [Vertex @@ -927,13 +1145,13 @@ (Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r')))) vertices of - [Vertex + [Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))) -a,Vertex +a,Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))) -b,Vertex +b,Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))) -c] -> Triangle +c] -> Triangle (Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r')))) -> Maybe @@ -968,12 +1186,12 @@ forall point. point -> point -> point -> Triangle point Triangle Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))) -a Vertex +a Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))) -b Vertex +b Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))) -c - [Vertex +c + [Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r')))] _ -> Maybe (Triangle @@ -981,22 +1199,22 @@ (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))))) forall a. Maybe a Nothing - [SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))] + [SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))] _ -> Maybe (Triangle (Vertex (SimplePolygonF (Cyclic NonEmptyVector) (PointF (Vector 2 r'))))) forall a. Maybe a Nothing - - - -- an ellipse is an affine transformation of the unit disk - - --- (Disk origin 1) (Vector2 1 1) - -_asEllipse :: Prism' (Path r) (Ellipse r) -_asEllipse :: forall r (p :: * -> * -> *) (f :: * -> *). + + + -- an ellipse is an affine transformation of the unit disk + + +-- (Disk origin 1) (Vector2 1 1) + +_asEllipse :: Prism' (Path r) (Ellipse r) +_asEllipse :: forall r (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p (Ellipse r) (f (Ellipse r)) -> p (Path r) (f (Path r)) _asEllipse = (Ellipse r -> Path r) @@ -1005,12 +1223,12 @@ forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b prism' Ellipse r -> Path r forall {r}. Ellipse r -> Path r -toPath Path r -> Maybe (Ellipse r) +toPath Path r -> Maybe (Ellipse r) forall {r'}. Path r' -> Maybe (Ellipse r') -toEllipse - where - toPath :: Ellipse r -> Path r -toPath = Seq (PathSegment r) -> Path r +toEllipse + where + toPath :: Ellipse r -> Path r +toPath = Seq (PathSegment r) -> Path r forall r. Seq (PathSegment r) -> Path r Path (Seq (PathSegment r) -> Path r) -> (Ellipse r -> Seq (PathSegment r)) -> Ellipse r -> Path r @@ -1023,10 +1241,10 @@ . Ellipse r -> PathSegment r forall r. Ellipse r -> PathSegment r EllipseSegment - toEllipse :: Path r' -> Maybe (Ellipse r') -toEllipse Path r' -p = case Path r' -pPath r' + toEllipse :: Path r' -> Maybe (Ellipse r') +toEllipse Path r' +p = case Path r' +pPath r' -> Getting (Endo [Ellipse r']) (Path r') (Ellipse r') -> [Ellipse r'] forall s a. s -> Getting (Endo [a]) s a -> [a] @@ -1070,18 +1288,18 @@ p (Ellipse r) (f (Ellipse r)) -> p (PathSegment r) (f (PathSegment r)) _EllipseSegment of - [Ellipse r' -e] -> Ellipse r' -> Maybe (Ellipse r') + [Ellipse r' +e] -> Ellipse r' -> Maybe (Ellipse r') forall a. a -> Maybe a Just Ellipse r' -e - [Ellipse r'] +e + [Ellipse r'] _ -> Maybe (Ellipse r') forall a. Maybe a Nothing - -_asCircle :: (Radical r, Eq r) => Prism' (Path r) (Circle (Point 2 r)) -_asCircle :: forall r. (Radical r, Eq r) => Prism' (Path r) (Circle (Point 2 r)) + +_asCircle :: (Radical r, Eq r) => Prism' (Path r) (Circle (Point 2 r)) +_asCircle :: forall r. (Radical r, Eq r) => Prism' (Path r) (Circle (Point 2 r)) _asCircle = p (Ellipse r) (f (Ellipse r)) -> p (Path r) (f (Path r)) forall r (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => @@ -1099,10 +1317,10 @@ Prism' (Ellipse r) (Circle (Point 2 r)) Prism' (Ellipse r) (Circle (Point 2 r)) _EllipseCircle --- FIXME: For reading we should not need the Radical constraint! - -_asDisk :: (Radical r, Eq r) => Prism' (Path r) (Disk (Point 2 r)) -_asDisk :: forall r. (Radical r, Eq r) => Prism' (Path r) (Disk (Point 2 r)) +-- FIXME: For reading we should not need the Radical constraint! + +_asDisk :: (Radical r, Eq r) => Prism' (Path r) (Disk (Point 2 r)) +_asDisk :: forall r. (Radical r, Eq r) => Prism' (Path r) (Disk (Point 2 r)) _asDisk = p (Circle (Point 2 r)) (f (Circle (Point 2 r))) -> p (Path r) (f (Path r)) forall r. (Radical r, Eq r) => Prism' (Path r) (Circle (Point 2 r)) @@ -1135,23 +1353,23 @@ p (Circle point) (f (Circle point')) -> p (Disk point) (f (Disk point')) _DiskCircle - - --- -- | Convert to a multipolygon --- _asMultiPolygon :: Prism' (Path r) (MultiPolygon () r) --- _asMultiPolygon = _asSomePolygon._Right - --- _asPolygon :: Prism' (Path r) (forall t. Polygon t () r) --- _asPolygon = prism' polygonToPath (fmap (either id id) . pathToPolygon) - --- _asSomePolygon :: Prism' (Path r) (SomePolygon () r) --- _asSomePolygon = prism' embed pathToPolygon --- where --- embed = either polygonToPath polygonToPath - - -polygonToPath :: SimplePolygon (Point 2 r) -> Path r -polygonToPath :: forall r. SimplePolygon (Point 2 r) -> Path r + + +-- -- | Convert to a multipolygon +-- _asMultiPolygon :: Prism' (Path r) (MultiPolygon () r) +-- _asMultiPolygon = _asSomePolygon._Right + +-- _asPolygon :: Prism' (Path r) (forall t. Polygon t () r) +-- _asPolygon = prism' polygonToPath (fmap (either id id) . pathToPolygon) + +-- _asSomePolygon :: Prism' (Path r) (SomePolygon () r) +-- _asSomePolygon = prism' embed pathToPolygon +-- where +-- embed = either polygonToPath polygonToPath + + +polygonToPath :: SimplePolygon (Point 2 r) -> Path r +polygonToPath :: forall r. SimplePolygon (Point 2 r) -> Path r polygonToPath = Seq (PathSegment r) -> Path r forall r. Seq (PathSegment r) -> Path r Path (Seq (PathSegment r) -> Path r) @@ -1170,16 +1388,16 @@ forall r. Orientation -> SimplePolygon (Point 2 r) -> PathSegment r PolygonPath Orientation AsIs - - --- polygonToPath (MultiPolygon vs hs) = Path . LSeq.fromNonEmpty . fmap PolygonPath --- $ vs :| hs - -pathToPolygon :: Path r -> Maybe (SimplePolygon (Point 2 r)) -pathToPolygon :: forall r. Path r -> Maybe (SimplePolygon (Point 2 r)) -pathToPolygon Path r -p = case Path r -pPath r + + +-- polygonToPath (MultiPolygon vs hs) = Path . LSeq.fromNonEmpty . fmap PolygonPath +-- $ vs :| hs + +pathToPolygon :: Path r -> Maybe (SimplePolygon (Point 2 r)) +pathToPolygon :: forall r. Path r -> Maybe (SimplePolygon (Point 2 r)) +pathToPolygon Path r +p = case Path r +pPath r -> Getting (Endo [SimplePolygon (Point 2 r)]) (Path r) @@ -1275,38 +1493,38 @@ (SimplePolygon (Point 2 r)) (SimplePolygon (Point 2 r)) _2 of - [SimplePolygon (Point 2 r) -pg] -> SimplePolygon (Point 2 r) -> Maybe (SimplePolygon (Point 2 r)) + [SimplePolygon (Point 2 r) +pg] -> SimplePolygon (Point 2 r) -> Maybe (SimplePolygon (Point 2 r)) forall a. a -> Maybe a Just SimplePolygon (Point 2 r) -pg - [SimplePolygon (Point 2 r)] +pg + [SimplePolygon (Point 2 r)] _ -> Maybe (SimplePolygon (Point 2 r)) forall a. Maybe a Nothing - -- vs:hs -> Just . Right $ MultiPolygon vs hs - - - - - --------------------------------------------------------------------------------- - - --- | Use the first prism to select the ipe object to depicle with, and the second --- how to select the geometry object from there on. Then we can select the geometry --- object, directly with its attributes here. --- --- >>> testObject ^? _withAttrs _IpePath _asPolyLine --- Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100] :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "red"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr}) -_withAttrs :: Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g - -> Prism' (IpeObject r) (g :+ IpeAttributes i r) -_withAttrs :: forall r (i :: * -> *) g. + -- vs:hs -> Just . Right $ MultiPolygon vs hs + + + + + +-------------------------------------------------------------------------------- + + +-- | Use the first prism to select the ipe object to depicle with, and the second +-- how to select the geometry object from there on. Then we can select the geometry +-- object, directly with its attributes here. +-- +-- >>> testObject ^? _withAttrs _IpePath _asPolyLine +-- Just (PolyLine [Point2 0 0,Point2 10 10,Point2 200 100] :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "red"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr}) +_withAttrs :: Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g + -> Prism' (IpeObject r) (g :+ IpeAttributes i r) +_withAttrs :: forall r (i :: * -> *) g. Prism' (IpeObject r) (i r :+ IpeAttributes i r) -> Prism' (i r) g -> Prism' (IpeObject r) (g :+ IpeAttributes i r) -_withAttrs Prism' (IpeObject r) (i r :+ Attributes' r (AttributesOf i)) -po Prism' (i r) g -pg = ((g :+ Attributes' r (AttributesOf i)) -> IpeObject r) +_withAttrs Prism' (IpeObject r) (i r :+ Attributes' r (AttributesOf i)) +po Prism' (i r) g +pg = ((g :+ Attributes' r (AttributesOf i)) -> IpeObject r) -> (IpeObject r -> Maybe (g :+ Attributes' r (AttributesOf i))) -> Prism (IpeObject r) @@ -1315,16 +1533,16 @@ (g :+ Attributes' r (AttributesOf i)) forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b prism' (g :+ Attributes' r (AttributesOf i)) -> IpeObject r -g2o IpeObject r -> Maybe (g :+ Attributes' r (AttributesOf i)) -o2g - where - g2o :: (g :+ Attributes' r (AttributesOf i)) -> IpeObject r -g2o = AReview (IpeObject r) (i r :+ Attributes' r (AttributesOf i)) +g2o IpeObject r -> Maybe (g :+ Attributes' r (AttributesOf i)) +o2g + where + g2o :: (g :+ Attributes' r (AttributesOf i)) -> IpeObject r +g2o = AReview (IpeObject r) (i r :+ Attributes' r (AttributesOf i)) -> (i r :+ Attributes' r (AttributesOf i)) -> IpeObject r forall b (m :: * -> *) t. MonadReader b m => AReview t b -> m t review AReview (IpeObject r) (i r :+ Attributes' r (AttributesOf i)) Prism' (IpeObject r) (i r :+ Attributes' r (AttributesOf i)) -po ((i r :+ Attributes' r (AttributesOf i)) -> IpeObject r) +po ((i r :+ Attributes' r (AttributesOf i)) -> IpeObject r) -> ((g :+ Attributes' r (AttributesOf i)) -> i r :+ Attributes' r (AttributesOf i)) -> (g :+ Attributes' r (AttributesOf i)) @@ -1351,10 +1569,10 @@ forall b (m :: * -> *) t. MonadReader b m => AReview t b -> m t review AReview (i r) g Prism' (i r) g -pg) - o2g :: IpeObject r -> Maybe (g :+ Attributes' r (AttributesOf i)) -o2g IpeObject r -o = Getting +pg) + o2g :: IpeObject r -> Maybe (g :+ Attributes' r (AttributesOf i)) +o2g IpeObject r +o = Getting (First (i r :+ Attributes' r (AttributesOf i))) (IpeObject r) (i r :+ Attributes' r (AttributesOf i)) @@ -1367,21 +1585,21 @@ (IpeObject r) (i r :+ Attributes' r (AttributesOf i)) Prism' (IpeObject r) (i r :+ Attributes' r (AttributesOf i)) -po IpeObject r -o Maybe (i r :+ Attributes' r (AttributesOf i)) +po IpeObject r +o Maybe (i r :+ Attributes' r (AttributesOf i)) -> ((i r :+ Attributes' r (AttributesOf i)) -> Maybe (g :+ Attributes' r (AttributesOf i))) -> Maybe (g :+ Attributes' r (AttributesOf i)) forall a b. Maybe a -> (a -> Maybe b) -> Maybe b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b ->>= \(i r -i :+ Attributes' r (AttributesOf i) -ats) -> (g +>>= \(i r +i :+ Attributes' r (AttributesOf i) +ats) -> (g -> Attributes' r (AttributesOf i) -> g :+ Attributes' r (AttributesOf i) forall core extra. core -> extra -> core :+ extra :+ Attributes' r (AttributesOf i) -ats) (g -> g :+ Attributes' r (AttributesOf i)) +ats) (g -> g :+ Attributes' r (AttributesOf i)) -> Maybe g -> Maybe (g :+ Attributes' r (AttributesOf i)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Getting (First g) (i r) g -> i r -> Maybe g @@ -1390,27 +1608,27 @@ Getting (First a) s a -> m (Maybe a) preview Getting (First g) (i r) g Prism' (i r) g -pg i r -i - - - - - --- instance HasDefaultIpeObject Path where --- defaultIpeObject' = _IpePath - - - - -class HasDefaultFromIpe g where - type DefaultFromIpe g :: Type -> Type - defaultFromIpe :: (r ~ NumType g) - => Prism' (IpeObject r) (g :+ IpeAttributes (DefaultFromIpe g) r) - -instance HasDefaultFromIpe (Point 2 r) where - type DefaultFromIpe (Point 2 r) = IpeSymbol - defaultFromIpe :: forall r. +pg i r +i + + + + + +-- instance HasDefaultIpeObject Path where +-- defaultIpeObject' = _IpePath + + + + +class HasDefaultFromIpe g where + type DefaultFromIpe g :: Type -> Type + defaultFromIpe :: (r ~ NumType g) + => Prism' (IpeObject r) (g :+ IpeAttributes (DefaultFromIpe g) r) + +instance HasDefaultFromIpe (Point 2 r) where + type DefaultFromIpe (Point 2 r) = IpeSymbol + defaultFromIpe :: forall r. (r ~ NumType (Point 2 r)) => Prism' (IpeObject r) @@ -1436,10 +1654,10 @@ p (Point 2 r) (f (Point 2 r)) -> p (IpeSymbol r) (f (IpeSymbol r)) Prism' (IpeSymbol r) (Point 2 r) _asPoint - -instance HasDefaultFromIpe (ClosedLineSegment (Point 2 r)) where - type DefaultFromIpe (ClosedLineSegment (Point 2 r)) = Path - defaultFromIpe :: forall r. + +instance HasDefaultFromIpe (ClosedLineSegment (Point 2 r)) where + type DefaultFromIpe (ClosedLineSegment (Point 2 r)) = Path + defaultFromIpe :: forall r. (r ~ NumType (ClosedLineSegment (Point 2 r))) => Prism' (IpeObject r) @@ -1475,10 +1693,10 @@ -> p (Path r) (f (Path r)) Prism' (Path r) (ClosedLineSegment (Point 2 r)) _asClosedLineSegment - -instance HasDefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) where - type DefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) = Path - defaultFromIpe :: forall r. + +instance HasDefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) where + type DefaultFromIpe (LineSegment AnEndPoint (Point 2 r)) = Path + defaultFromIpe :: forall r. (r ~ NumType (LineSegment AnEndPoint (Point 2 r))) => Prism' (IpeObject r) @@ -1514,10 +1732,10 @@ -> p (Path r) (f (Path r)) Prism' (Path r) (LineSegment AnEndPoint (Point 2 r)) _asLineSegment - -instance HasDefaultFromIpe (Ellipse r) where - type DefaultFromIpe (Ellipse r) = Path - defaultFromIpe :: forall r. + +instance HasDefaultFromIpe (Ellipse r) where + type DefaultFromIpe (Ellipse r) = Path + defaultFromIpe :: forall r. (r ~ NumType (Ellipse r)) => Prism' (IpeObject r) @@ -1543,10 +1761,10 @@ p (Ellipse r) (f (Ellipse r)) -> p (Path r) (f (Path r)) Prism' (Path r) (Ellipse r) _asEllipse - -instance (Radical r, Eq r) => HasDefaultFromIpe (Circle (Point 2 r)) where - type DefaultFromIpe (Circle (Point 2 r)) = Path - defaultFromIpe :: forall r. + +instance (Radical r, Eq r) => HasDefaultFromIpe (Circle (Point 2 r)) where + type DefaultFromIpe (Circle (Point 2 r)) = Path + defaultFromIpe :: forall r. (r ~ NumType (Circle (Point 2 r))) => Prism' (IpeObject r) @@ -1575,10 +1793,10 @@ Prism' (Path r) (Circle (Point 2 r)) Prism' (Path r) (Circle (Point 2 r)) _asCircle - -instance (Radical r, Eq r) => HasDefaultFromIpe (Disk (Point 2 r)) where - type DefaultFromIpe (Disk (Point 2 r)) = Path - defaultFromIpe :: forall r. + +instance (Radical r, Eq r) => HasDefaultFromIpe (Disk (Point 2 r)) where + type DefaultFromIpe (Disk (Point 2 r)) = Path + defaultFromIpe :: forall r. (r ~ NumType (Disk (Point 2 r))) => Prism' (IpeObject r) @@ -1606,10 +1824,10 @@ Prism' (Path r) (Disk (Point 2 r)) Prism' (Path r) (Disk (Point 2 r)) _asDisk - -instance HasDefaultFromIpe (PolyLine.PolyLine (Point 2 r)) where - type DefaultFromIpe (PolyLine.PolyLine (Point 2 r)) = Path - defaultFromIpe :: forall r. + +instance HasDefaultFromIpe (PolyLine.PolyLine (Point 2 r)) where + type DefaultFromIpe (PolyLine.PolyLine (Point 2 r)) = Path + defaultFromIpe :: forall r. (r ~ NumType (PolyLine (Point 2 r))) => Prism' (IpeObject r) @@ -1640,11 +1858,11 @@ -> p (Path r) (f (Path r)) Prism' (Path r) (PolyLine (Point 2 r)) _asPolyLine - - -instance HasDefaultFromIpe (SimplePolygon (Point 2 r)) where - type DefaultFromIpe (SimplePolygon (Point 2 r)) = Path - defaultFromIpe :: forall r. + + +instance HasDefaultFromIpe (SimplePolygon (Point 2 r)) where + type DefaultFromIpe (SimplePolygon (Point 2 r)) = Path + defaultFromIpe :: forall r. (r ~ NumType (SimplePolygon (Point 2 r))) => Prism' (IpeObject r) @@ -1675,14 +1893,14 @@ -> p (Path r) (f (Path r)) Prism' (Path r) (SimplePolygon (Point 2 r)) _asSimplePolygon - --- instance HasDefaultFromIpe (MultiPolygon () r) where --- type DefaultFromIpe (MultiPolygon () r) = Path --- defaultFromIpe = _withAttrs _IpePath _asMultiPolygon - -instance (Num r, Ord r) => HasDefaultFromIpe (Rectangle (Point 2 r)) where - type DefaultFromIpe (Rectangle (Point 2 r)) = Path - defaultFromIpe :: forall r. + +-- instance HasDefaultFromIpe (MultiPolygon () r) where +-- type DefaultFromIpe (MultiPolygon () r) = Path +-- defaultFromIpe = _withAttrs _IpePath _asMultiPolygon + +instance (Num r, Ord r) => HasDefaultFromIpe (Rectangle (Point 2 r)) where + type DefaultFromIpe (Rectangle (Point 2 r)) = Path + defaultFromIpe :: forall r. (r ~ NumType (Rectangle (Point 2 r))) => Prism' (IpeObject r) @@ -1711,17 +1929,17 @@ Prism' (Path r) (Rectangle (Point 2 r)) Prism' (Path r) (Rectangle (Point 2 r)) _asRectangle - - --- | Read all g's from some ipe page(s). -readAll :: forall g r. (HasDefaultFromIpe g, r ~ NumType g) - => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] -readAll :: forall g r. + + +-- | Read all g's from some ipe page(s). +readAll :: forall g r. (HasDefaultFromIpe g, r ~ NumType g) + => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] +readAll :: forall g r. (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] -readAll IpePage r -p = IpePage r -pIpePage r +readAll IpePage r +p = IpePage r +pIpePage r -> Getting (Endo [g :+ Attributes' r (AttributesOf (DefaultFromIpe g))]) (IpePage r) @@ -1825,16 +2043,16 @@ (IpeObject (NumType g)) (g :+ IpeAttributes (DefaultFromIpe g) (NumType g)) defaultFromIpe - --- | Read all 'a's looking into groups -readAllDeep :: forall g r. (HasDefaultFromIpe g, r ~ NumType g) - => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] -readAllDeep :: forall g r. + +-- | Read all 'a's looking into groups +readAllDeep :: forall g r. (HasDefaultFromIpe g, r ~ NumType g) + => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] +readAllDeep :: forall g r. (HasDefaultFromIpe g, r ~ NumType g) => IpePage r -> [g :+ IpeAttributes (DefaultFromIpe g) r] -readAllDeep IpePage r -p = IpePage r -pIpePage r +readAllDeep IpePage r +p = IpePage r +pIpePage r -> Getting (Endo [g :+ Attributes' r (AttributesOf (DefaultFromIpe g))]) (IpePage r) @@ -1977,16 +2195,16 @@ (IpeObject (NumType g)) (g :+ IpeAttributes (DefaultFromIpe g) (NumType g)) defaultFromIpe - --- | Convenience function from reading all g's from an ipe file. If there --- is an error reading or parsing the file the error is "thrown away". -readAllFrom :: forall g r. (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) - => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r] -readAllFrom :: forall g r. + +-- | Convenience function from reading all g's from an ipe file. If there +-- is an error reading or parsing the file the error is "thrown away". +readAllFrom :: forall g r. (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) + => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r] +readAllFrom :: forall g r. (HasDefaultFromIpe g, r ~ NumType g, Coordinate r, Eq r) => OsPath -> IO [g :+ IpeAttributes (DefaultFromIpe g) r] -readAllFrom OsPath -fp = (IpePage (NumType g) +readAllFrom OsPath +fp = (IpePage (NumType g) -> [g :+ Attributes' r (AttributesOf (DefaultFromIpe g))]) -> Either Text (IpePage (NumType g)) -> [g :+ Attributes' r (AttributesOf (DefaultFromIpe g))] @@ -2011,31 +2229,31 @@ (Coordinate r, Eq r) => OsPath -> IO (Either Text (IpePage r)) readSinglePageFile OsPath -fp - --- | Helper to produce a singleton sequence -fromSingleton :: a -> Seq.Seq a -fromSingleton :: forall a. a -> Seq a +fp + +-- | Helper to produce a singleton sequence +fromSingleton :: a -> Seq.Seq a +fromSingleton :: forall a. a -> Seq a fromSingleton = a -> Seq a forall a. a -> Seq a Seq.singleton - --- | recursively flatten all groups into one big list -flattenContent :: [IpeObject r] -> [IpeObject r] -flattenContent :: forall r. [IpeObject r] -> [IpeObject r] + +-- | recursively flatten all groups into one big list +flattenContent :: [IpeObject r] -> [IpeObject r] +flattenContent :: forall r. [IpeObject r] -> [IpeObject r] flattenContent = (IpeObject r -> [IpeObject r]) -> [IpeObject r] -> [IpeObject r] forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap ((IpeObject r -> [IpeObject r]) -> [IpeObject r] -> [IpeObject r]) -> (IpeObject r -> [IpeObject r]) -> [IpeObject r] -> [IpeObject r] forall a b. (a -> b) -> a -> b $ \case - IpeGroup (Group [IpeObject r] -gr :+ IpeAttributes Group r + IpeGroup (Group [IpeObject r] +gr :+ IpeAttributes Group r _) -> [IpeObject r] -> [IpeObject r] forall r. [IpeObject r] -> [IpeObject r] flattenContent [IpeObject r] -gr - IpeObject r -obj -> [IpeObject r -obj] -
\ No newline at end of file +gr + IpeObject r +obj -> [IpeObject r +obj] + \ No newline at end of file diff --git a/haddocks/hgeometry/ipe/src/Ipe.IpeOut.html b/haddocks/hgeometry/ipe/src/Ipe.IpeOut.html index a6fbf37a1..9eea0fd59 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.IpeOut.html +++ b/haddocks/hgeometry/ipe/src/Ipe.IpeOut.html @@ -61,21 +61,21 @@ -------------------------------------------------------------------------------- -- * The IpeOut type and the default combinator to use it -type IpeOut g i r = g -> IpeObject' i r +type IpeOut g i r = g -> IpeObject' i r -- | Give the option to draw zero, one or more things, i.e. by -- choosing f ~ Maybe or f ~ [] -type IpeOut' f g i r = g -> f (IpeObject' i r) +type IpeOut' f g i r = g -> f (IpeObject' i r) -- | Add attributes to an IpeObject' -(!) :: IpeObject' i r -> IpeAttributes i r -> IpeObject' i r +(!) :: IpeObject' i r -> IpeAttributes i r -> IpeObject' i r ! :: forall (i :: * -> *) r. IpeObject' i r -> IpeAttributes i r -> IpeObject' i r -(!) IpeObject' i r -i Attributes' r (AttributesOf i) -ats = IpeObject' i r -iIpeObject' i r +(!) IpeObject' i r +i Attributes' r (AttributesOf i) +ats = IpeObject' i r +iIpeObject' i r -> (IpeObject' i r -> IpeObject' i r) -> IpeObject' i r forall a b. a -> (a -> b) -> b &(Attributes' r (AttributesOf i) @@ -96,7 +96,7 @@ -> Attributes' r (AttributesOf i) -> Attributes' r (AttributesOf i) forall a. Semigroup a => a -> a -> a <> Attributes' r (AttributesOf i) -ats) +ats) -- | Render an ipe object -- @@ -114,7 +114,7 @@ -- :} -- IpeGroup (Group [IpePath (Path {_pathSegments = fromList [PolygonPath AsIs (SimplePolygon [Point2 0 0,Point2 10 10,Point2 100 200])]} :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, Attr IpeColor (Named "red"), NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})] :+ Attrs {Attr LayerName {_layerName = "alpha"}, NoAttr, NoAttr, NoAttr, NoAttr}) -- -iO :: ToObject i => IpeObject' i r -> IpeObject r +iO :: ToObject i => IpeObject' i r -> IpeObject r iO :: forall (i :: * -> *) r. ToObject i => IpeObject' i r -> IpeObject r iO = IpeObject' i r -> IpeObject r forall r. IpeObject' i r -> IpeObject r @@ -133,17 +133,17 @@ -- -- >>> iO'' [ myPolygon , myPolygon ] $ attr SLayer "alpha" -- IpeGroup (Group [IpePath (Path {_pathSegments = fromList [PolygonPath AsIs (SimplePolygon [Point2 0 0,Point2 10 10,Point2 100 200])]} :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr}),IpePath (Path {_pathSegments = fromList [PolygonPath AsIs (SimplePolygon [Point2 0 0,Point2 10 10,Point2 100 200])]} :+ Attrs {NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr, NoAttr})] :+ Attrs {Attr LayerName {_layerName = "alpha"}, NoAttr, NoAttr, NoAttr, NoAttr}) -iO'' :: ( HasDefaultIpeOut g, NumType g ~ r - , DefaultIpeOut g ~ i, ToObject i - ) => g -> IpeAttributes i r - -> IpeObject r +iO'' :: ( HasDefaultIpeOut g, NumType g ~ r + , DefaultIpeOut g ~ i, ToObject i + ) => g -> IpeAttributes i r + -> IpeObject r iO'' :: forall g r (i :: * -> *). (HasDefaultIpeOut g, NumType g ~ r, DefaultIpeOut g ~ i, ToObject i) => g -> IpeAttributes i r -> IpeObject r -iO'' g -g IpeAttributes i r -ats = IpeObject' i r -> IpeObject r +iO'' g +g IpeAttributes i r +ats = IpeObject' i r -> IpeObject r forall (i :: * -> *) r. ToObject i => IpeObject' i r -> IpeObject r iO (IpeObject' i r -> IpeObject r) -> IpeObject' i r -> IpeObject r forall a b. (a -> b) -> a -> b @@ -152,14 +152,14 @@ HasDefaultIpeOut g => IpeOut g (DefaultIpeOut g) (NumType g) defIO g -g IpeObject' i r -> IpeAttributes i r -> IpeObject' i r +g IpeObject' i r -> IpeAttributes i r -> IpeObject' i r forall (i :: * -> *) r. IpeObject' i r -> IpeAttributes i r -> IpeObject' i r ! IpeAttributes i r -ats +ats -- | generate an ipe object without any specific attributes -iO' :: HasDefaultIpeOut g => g -> IpeObject (NumType g) +iO' :: HasDefaultIpeOut g => g -> IpeObject (NumType g) iO' :: forall g. HasDefaultIpeOut g => g -> IpeObject (NumType g) iO' = IpeObject' (DefaultIpeOut g) (NumType g) -> IpeObject (NumType g) forall (i :: * -> *) r. ToObject i => IpeObject' i r -> IpeObject r @@ -179,23 +179,23 @@ -- | Class that specifies a default conversion from a geometry type g into an -- ipe object. -class ToObject (DefaultIpeOut g) => HasDefaultIpeOut g where - type DefaultIpeOut g :: Type -> Type +class ToObject (DefaultIpeOut g) => HasDefaultIpeOut g where + type DefaultIpeOut g :: Type -> Type - defIO :: IpeOut g (DefaultIpeOut g) (NumType g) + defIO :: IpeOut g (DefaultIpeOut g) (NumType g) -instance (HasDefaultIpeOut g, a ~ IpeAttributes (DefaultIpeOut g) (NumType g)) - => HasDefaultIpeOut (g :+ a) where - type DefaultIpeOut (g :+ a) = DefaultIpeOut g - defIO :: IpeOut (g :+ a) (DefaultIpeOut (g :+ a)) (NumType (g :+ a)) -defIO (g -g :+ a -ats) = IpeOut g (DefaultIpeOut g) (NumType g) +instance (HasDefaultIpeOut g, a ~ IpeAttributes (DefaultIpeOut g) (NumType g)) + => HasDefaultIpeOut (g :+ a) where + type DefaultIpeOut (g :+ a) = DefaultIpeOut g + defIO :: IpeOut (g :+ a) (DefaultIpeOut (g :+ a)) (NumType (g :+ a)) +defIO (g +g :+ a +ats) = IpeOut g (DefaultIpeOut g) (NumType g) forall g. HasDefaultIpeOut g => IpeOut g (DefaultIpeOut g) (NumType g) defIO g -g (DefaultIpeOut g (NumType g) +g (DefaultIpeOut g (NumType g) :+ IpeAttributes (DefaultIpeOut g) (NumType g)) -> IpeAttributes (DefaultIpeOut g) (NumType g) -> DefaultIpeOut g (NumType g) @@ -204,11 +204,11 @@ IpeObject' i r -> IpeAttributes i r -> IpeObject' i r ! a IpeAttributes (DefaultIpeOut g) (NumType g) -ats +ats -instance HasDefaultIpeOut a => HasDefaultIpeOut [a] where - type DefaultIpeOut [a] = Group - defIO :: IpeOut [a] (DefaultIpeOut [a]) (NumType [a]) +instance HasDefaultIpeOut a => HasDefaultIpeOut [a] where + type DefaultIpeOut [a] = Group + defIO :: IpeOut [a] (DefaultIpeOut [a]) (NumType [a]) defIO = [IpeObject (NumType a)] -> Group (NumType a) :+ Attributes @@ -245,9 +245,9 @@ IpeOut g (DefaultIpeOut g) (NumType g) defIO) -instance HasDefaultIpeOut a => HasDefaultIpeOut (NonEmpty a) where - type DefaultIpeOut (NonEmpty a) = Group - defIO :: IpeOut +instance HasDefaultIpeOut a => HasDefaultIpeOut (NonEmpty a) where + type DefaultIpeOut (NonEmpty a) = Group + defIO :: IpeOut (NonEmpty a) (DefaultIpeOut (NonEmpty a)) (NumType (NonEmpty a)) defIO = [IpeObject (NumType a)] -> Group (NumType a) @@ -291,11 +291,11 @@ forall (t :: * -> *) a. Foldable t => t a -> [a] toList -instance (HasDefaultIpeOut a, HasDefaultIpeOut b - , DefaultIpeOut a ~ DefaultIpeOut b, NumType a ~ NumType b - ) => HasDefaultIpeOut (Either a b) where - type DefaultIpeOut (Either a b) = DefaultIpeOut a - defIO :: IpeOut +instance (HasDefaultIpeOut a, HasDefaultIpeOut b + , DefaultIpeOut a ~ DefaultIpeOut b, NumType a ~ NumType b + ) => HasDefaultIpeOut (Either a b) where + type DefaultIpeOut (Either a b) = DefaultIpeOut a + defIO :: IpeOut (Either a b) (DefaultIpeOut (Either a b)) (NumType (Either a b)) defIO = (a -> DefaultIpeOut b (NumType b) @@ -322,9 +322,9 @@ IpeOut g (DefaultIpeOut g) (NumType g) defIO -instance HasDefaultIpeOut (Point 2 r) where - type DefaultIpeOut (Point 2 r) = IpeSymbol - defIO :: IpeOut +instance HasDefaultIpeOut (Point 2 r) where + type DefaultIpeOut (Point 2 r) = IpeSymbol + defIO :: IpeOut (Point 2 r) (DefaultIpeOut (Point 2 r)) (NumType (Point 2 r)) defIO = IpeOut (Point 2 r) IpeSymbol r IpeOut @@ -332,11 +332,11 @@ forall r. IpeOut (Point 2 r) IpeSymbol r ipeDiskMark -instance ( IxValue (endPoint (Point 2 r)) ~ Point 2 r - , EndPoint_ (endPoint (Point 2 r)) - ) => HasDefaultIpeOut (LineSegment endPoint (Point 2 r)) where - type DefaultIpeOut (LineSegment endPoint (Point 2 r)) = Path - defIO :: IpeOut +instance ( IxValue (endPoint (Point 2 r)) ~ Point 2 r + , EndPoint_ (endPoint (Point 2 r)) + ) => HasDefaultIpeOut (LineSegment endPoint (Point 2 r)) where + type DefaultIpeOut (LineSegment endPoint (Point 2 r)) = Path + defIO :: IpeOut (LineSegment endPoint (Point 2 r)) (DefaultIpeOut (LineSegment endPoint (Point 2 r))) (NumType (LineSegment endPoint (Point 2 r))) @@ -350,9 +350,9 @@ IpeOut lineSegment Path r ipeLineSegment -instance HasDefaultIpeOut (PolyLine (Point 2 r)) where - type DefaultIpeOut (PolyLine (Point 2 r)) = Path - defIO :: IpeOut +instance HasDefaultIpeOut (PolyLine (Point 2 r)) where + type DefaultIpeOut (PolyLine (Point 2 r)) = Path + defIO :: IpeOut (PolyLine (Point 2 r)) (DefaultIpeOut (PolyLine (Point 2 r))) (NumType (PolyLine (Point 2 r))) @@ -364,9 +364,9 @@ forall r. IpeOut (PolyLine (Point 2 r)) Path r ipePolyLine -instance (Fractional r, Ord r, Show r) => HasDefaultIpeOut (LinePV 2 r) where - type DefaultIpeOut (LinePV 2 r) = Path - defIO :: IpeOut +instance (Fractional r, Ord r, Show r) => HasDefaultIpeOut (LinePV 2 r) where + type DefaultIpeOut (LinePV 2 r) = Path + defIO :: IpeOut (LinePV 2 r) (DefaultIpeOut (LinePV 2 r)) (NumType (LinePV 2 r)) defIO = IpeOut (LinePV 2 r) Path r IpeOut @@ -376,12 +376,12 @@ IpeOut (LinePV 2 r) Path r ipeLine -instance (Fractional r, Ord r, Show r) => HasDefaultIpeOut (LineEQ r) where - type DefaultIpeOut (LineEQ r) = Path - defIO :: IpeOut (LineEQ r) (DefaultIpeOut (LineEQ r)) (NumType (LineEQ r)) -defIO (LineEQ r -a r -b) = IpeOut (LinePV 2 (NumType (LineEQ r))) Path (NumType (LineEQ r)) +instance (Fractional r, Ord r, Show r) => HasDefaultIpeOut (LineEQ r) where + type DefaultIpeOut (LineEQ r) = Path + defIO :: IpeOut (LineEQ r) (DefaultIpeOut (LineEQ r)) (NumType (LineEQ r)) +defIO (LineEQ r +a r +b) = IpeOut (LinePV 2 (NumType (LineEQ r))) Path (NumType (LineEQ r)) forall r. (Ord r, Fractional r, Show r) => IpeOut (LinePV 2 r) Path r @@ -391,18 +391,18 @@ $ r -> r -> LinePV 2 r forall r. Num r => r -> r -> LinePV 2 r fromLinearFunction r -a r -b +a r +b -instance (Fractional r, Ord r, Show r) => HasDefaultIpeOut (VerticalOrLineEQ r) where - type DefaultIpeOut (VerticalOrLineEQ r) = Path - defIO :: IpeOut +instance (Fractional r, Ord r, Show r) => HasDefaultIpeOut (VerticalOrLineEQ r) where + type DefaultIpeOut (VerticalOrLineEQ r) = Path + defIO :: IpeOut (VerticalOrLineEQ r) (DefaultIpeOut (VerticalOrLineEQ r)) (NumType (VerticalOrLineEQ r)) defIO = \case - VerticalLineThrough r -x -> IpeOut + VerticalLineThrough r +x -> IpeOut (LinePV 2 (NumType (VerticalOrLineEQ r))) Path (NumType (VerticalOrLineEQ r)) @@ -421,18 +421,18 @@ $ r -> LinePV 2 r forall r line. (Line_ line 2 r, Num r) => r -> line verticalLine r -x - NonVertical LineEQ r -l -> IpeOut (LineEQ r) (DefaultIpeOut (LineEQ r)) (NumType (LineEQ r)) +x + NonVertical LineEQ r +l -> IpeOut (LineEQ r) (DefaultIpeOut (LineEQ r)) (NumType (LineEQ r)) forall g. HasDefaultIpeOut g => IpeOut g (DefaultIpeOut g) (NumType g) defIO LineEQ r -l +l -instance (Fractional r, Ord r, Point_ point 2 r,Show r, Show point) => HasDefaultIpeOut (HalfLine point) where - type DefaultIpeOut (HalfLine point) = Path - defIO :: IpeOut +instance (Fractional r, Ord r, Point_ point 2 r,Show r, Show point) => HasDefaultIpeOut (HalfLine point) where + type DefaultIpeOut (HalfLine point) = Path + defIO :: IpeOut (HalfLine point) (DefaultIpeOut (HalfLine point)) (NumType (HalfLine point)) @@ -446,11 +446,11 @@ IpeOut (HalfLine point) Path r ipeHalfLine -instance ( VertexContainer f (Point 2 r) - , HasFromFoldable1 f - ) => HasDefaultIpeOut (SimplePolygonF f (Point 2 r)) where - type DefaultIpeOut (SimplePolygonF f (Point 2 r)) = Path - defIO :: IpeOut +instance ( VertexContainer f (Point 2 r) + , HasFromFoldable1 f + ) => HasDefaultIpeOut (SimplePolygonF f (Point 2 r)) where + type DefaultIpeOut (SimplePolygonF f (Point 2 r)) = Path + defIO :: IpeOut (SimplePolygonF f (Point 2 r)) (DefaultIpeOut (SimplePolygonF f (Point 2 r))) (NumType (SimplePolygonF f (Point 2 r))) @@ -464,12 +464,12 @@ IpeOut polygon Path r ipePolygon -instance ( HoleContainer h f (Point 2 r) - , HasFromFoldable1 f +instance ( HoleContainer h f (Point 2 r) + , HasFromFoldable1 f ) - => HasDefaultIpeOut (PolygonalDomainF h f (Point 2 r)) where - type DefaultIpeOut (PolygonalDomainF h f (Point 2 r)) = Path - defIO :: IpeOut + => HasDefaultIpeOut (PolygonalDomainF h f (Point 2 r)) where + type DefaultIpeOut (PolygonalDomainF h f (Point 2 r)) = Path + defIO :: IpeOut (PolygonalDomainF h f (Point 2 r)) (DefaultIpeOut (PolygonalDomainF h f (Point 2 r))) (NumType (PolygonalDomainF h f (Point 2 r))) @@ -483,11 +483,11 @@ IpeOut polygon Path r ipePolygon -instance ( VertexContainer f (Point 2 r) - , HasFromFoldable1 f - ) => HasDefaultIpeOut (ConvexPolygonF f (Point 2 r)) where - type DefaultIpeOut (ConvexPolygonF f (Point 2 r)) = Path - defIO :: IpeOut +instance ( VertexContainer f (Point 2 r) + , HasFromFoldable1 f + ) => HasDefaultIpeOut (ConvexPolygonF f (Point 2 r)) where + type DefaultIpeOut (ConvexPolygonF f (Point 2 r)) = Path + defIO :: IpeOut (ConvexPolygonF f (Point 2 r)) (DefaultIpeOut (ConvexPolygonF f (Point 2 r))) (NumType (ConvexPolygonF f (Point 2 r))) @@ -526,9 +526,9 @@ ConvexPolygonF f point -> SimplePolygonF f point toSimplePolygon -instance HasDefaultIpeOut (Ellipse r) where - type DefaultIpeOut (Ellipse r) = Path - defIO :: IpeOut +instance HasDefaultIpeOut (Ellipse r) where + type DefaultIpeOut (Ellipse r) = Path + defIO :: IpeOut (Ellipse r) (DefaultIpeOut (Ellipse r)) (NumType (Ellipse r)) defIO = IpeOut (Ellipse r) Path r IpeOut @@ -536,9 +536,9 @@ forall r. IpeOut (Ellipse r) Path r ipeEllipse -instance Radical r => HasDefaultIpeOut (Disk (Point 2 r)) where - type DefaultIpeOut (Disk (Point 2 r)) = Path - defIO :: IpeOut +instance Radical r => HasDefaultIpeOut (Disk (Point 2 r)) where + type DefaultIpeOut (Disk (Point 2 r)) = Path + defIO :: IpeOut (Disk (Point 2 r)) (DefaultIpeOut (Disk (Point 2 r))) (NumType (Disk (Point 2 r))) @@ -550,9 +550,9 @@ forall r. Radical r => IpeOut (Disk (Point 2 r)) Path r ipeDisk -instance Radical r => HasDefaultIpeOut (Circle (Point 2 r)) where - type DefaultIpeOut (Circle (Point 2 r)) = Path - defIO :: IpeOut +instance Radical r => HasDefaultIpeOut (Circle (Point 2 r)) where + type DefaultIpeOut (Circle (Point 2 r)) = Path + defIO :: IpeOut (Circle (Point 2 r)) (DefaultIpeOut (Circle (Point 2 r))) (NumType (Circle (Point 2 r))) @@ -564,9 +564,9 @@ forall r. Radical r => IpeOut (Circle (Point 2 r)) Path r ipeCircle -instance Num r => HasDefaultIpeOut (Rectangle (Point 2 r)) where - type DefaultIpeOut (Rectangle (Point 2 r)) = Path - defIO :: IpeOut +instance Num r => HasDefaultIpeOut (Rectangle (Point 2 r)) where + type DefaultIpeOut (Rectangle (Point 2 r)) = Path + defIO :: IpeOut (Rectangle (Point 2 r)) (DefaultIpeOut (Rectangle (Point 2 r))) (NumType (Rectangle (Point 2 r))) @@ -579,9 +579,9 @@ ipeRectangle -instance HasDefaultIpeOut (Group r) where - type DefaultIpeOut (Group r) = Group - defIO :: IpeOut (Group r) (DefaultIpeOut (Group r)) (NumType (Group r)) +instance HasDefaultIpeOut (Group r) where + type DefaultIpeOut (Group r) = Group + defIO :: IpeOut (Group r) (DefaultIpeOut (Group r)) (NumType (Group r)) defIO = (Group r -> IpeAttributes (DefaultIpeOut (Group r)) (NumType (Group r)) -> Group r @@ -595,15 +595,15 @@ -------------------------------------------------------------------------------- -- * Point Converters -ipeMark :: Text -> IpeOut (Point 2 r) IpeSymbol r +ipeMark :: Text -> IpeOut (Point 2 r) IpeSymbol r ipeMark :: forall r. Text -> IpeOut (Point 2 r) IpeSymbol r -ipeMark Text -n Point 2 r -p = Point 2 r -> Text -> IpeSymbol r +ipeMark Text +n Point 2 r +p = Point 2 r -> Text -> IpeSymbol r forall r. Point 2 r -> Text -> IpeSymbol r Symbol Point 2 r -p Text -n IpeSymbol r +p Text +n IpeSymbol r -> Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen, @@ -621,7 +621,7 @@ forall a. Monoid a => a mempty -ipeDiskMark :: IpeOut (Point 2 r) IpeSymbol r +ipeDiskMark :: IpeOut (Point 2 r) IpeSymbol r ipeDiskMark :: forall r. IpeOut (Point 2 r) IpeSymbol r ipeDiskMark = Text -> IpeOut (Point 2 r) IpeSymbol r forall r. Text -> IpeOut (Point 2 r) IpeSymbol r @@ -633,30 +633,30 @@ -- | Size of the default bounding box used to clip lines and -- half-lines in the default IpeOuts. -defaultBox :: Num r => Rectangle (Point 2 r) +defaultBox :: Num r => Rectangle (Point 2 r) defaultBox :: forall r. Num r => Rectangle (Point 2 r) -defaultBox = let z :: r -z = r +defaultBox = let z :: r +z = r 1000 - z' :: r -z' = r -> r + z' :: r +z' = r -> r forall a. Num a => a -> a negate r -z +z in Point 2 r -> Point 2 r -> Box (Point 2 r) forall point. (Dimension point ~ 2) => point -> point -> Box point Rectangle (r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -z' r -z') (r -> r -> Point 2 r +z' r +z') (r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -z r -z) +z r +z) -- | Renders a line as a Path. The line is clipped to the 'defaultBox' -ipeLine :: (Ord r, Fractional r, Show r) => IpeOut (LinePV 2 r) Path r +ipeLine :: (Ord r, Fractional r, Show r) => IpeOut (LinePV 2 r) Path r ipeLine :: forall r. (Ord r, Fractional r, Show r) => IpeOut (LinePV 2 r) Path r @@ -671,20 +671,20 @@ -- | Renders the line in the given box. -- -- pre: the intersection of the box with the line is non-empty -ipeLineIn :: forall r. (Ord r, Fractional r, Show r) - => Rectangle (Point 2 r) -> IpeOut (LinePV 2 r) Path r +ipeLineIn :: forall r. (Ord r, Fractional r, Show r) + => Rectangle (Point 2 r) -> IpeOut (LinePV 2 r) Path r ipeLineIn :: forall r. (Ord r, Fractional r, Show r) => Rectangle (Point 2 r) -> IpeOut (LinePV 2 r) Path r -ipeLineIn Rectangle (Point 2 r) -bBox LinePV 2 r -l = case LinePV 2 r -l LinePV 2 r +ipeLineIn Rectangle (Point 2 r) +bBox LinePV 2 r +l = case LinePV 2 r +l LinePV 2 r -> Rectangle (Point 2 r) -> Intersection (LinePV 2 r) (Rectangle (Point 2 r)) forall g h. IsIntersectableWith g h => g -> h -> Intersection g h `intersect` Rectangle (Point 2 r) -bBox of +bBox of Maybe (LineBoxIntersection 2 r) Intersection (LinePV 2 r) (Rectangle (Point 2 r)) Nothing -> String @@ -708,24 +708,24 @@ forall a. HasCallStack => String -> a error String "ipeLineIn: precondition failed, single point" - Just (Line_x_Box_LineSegment ClosedLineSegment (Point 2 r) -s) -> IpeOut (ClosedLineSegment (Point 2 r)) Path r + Just (Line_x_Box_LineSegment ClosedLineSegment (Point 2 r) +s) -> IpeOut (ClosedLineSegment (Point 2 r)) Path r forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r) => IpeOut lineSegment Path r ipeLineSegment ClosedLineSegment (Point 2 r) -s +s -- | Renders an Halfine. -- -- pre: the intersection of the box with the line is non-empty -ipeHalfLine :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r +ipeHalfLine :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r ipeHalfLine :: forall r point. (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r -ipeHalfLine = \(HalfLine point -p Vector (Dimension point) (NumType point) -v) -> Rectangle (Point 2 r) -> IpeOut (HalfLine (Point 2 r)) Path r +ipeHalfLine = \(HalfLine point +p Vector (Dimension point) (NumType point) +v) -> Rectangle (Point 2 r) -> IpeOut (HalfLine (Point 2 r)) Path r forall r point. (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => Rectangle point -> IpeOut (HalfLine point) Path r @@ -740,7 +740,7 @@ forall point. point -> Vector (Dimension point) (NumType point) -> HalfLine point HalfLine (point -ppoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r +ppoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point (Point 2 r) forall point (d :: Nat) r. @@ -749,23 +749,23 @@ Lens' point (Point 2 r) asPoint) Vector (Dimension point) (NumType point) Vector (Dimension (Point 2 r)) (NumType (Point 2 r)) -v +v -- | Renders a ray, i.e. a half line drawing an arrow in the direction -- of the ray. -- -- pre: the intersection of the box with the line is non-empty -ipeRay :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r +ipeRay :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r ipeRay :: forall r point. (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r -ipeRay = \HalfLine point -hl -> HalfLine point -> IpeObject' Path r +ipeRay = \HalfLine point +hl -> HalfLine point -> IpeObject' Path r forall r point. (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => IpeOut (HalfLine point) Path r ipeHalfLine HalfLine point -hl IpeObject' Path r -> IpeAttributes Path r -> IpeObject' Path r +hl IpeObject' Path r -> IpeAttributes Path r -> IpeObject' Path r forall (i :: * -> *) r. IpeObject' i r -> IpeAttributes i r -> IpeObject' i r ! SAttributeUniverse 'Arrow @@ -787,20 +787,20 @@ -- | Renders the HalfLine in the given box. -- -- pre: the intersection of the box with the halfline is a line segment -ipeHalfLineIn :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) - => Rectangle point -> IpeOut (HalfLine point) Path r +ipeHalfLineIn :: (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) + => Rectangle point -> IpeOut (HalfLine point) Path r ipeHalfLineIn :: forall r point. (Ord r, Fractional r, Point_ point 2 r, Show r, Show point) => Rectangle point -> IpeOut (HalfLine point) Path r -ipeHalfLineIn Rectangle point -bBox HalfLine point -hl = case HalfLine point -hl HalfLine point +ipeHalfLineIn Rectangle point +bBox HalfLine point +hl = case HalfLine point +hl HalfLine point -> Rectangle point -> Intersection (HalfLine point) (Rectangle point) forall g h. IsIntersectableWith g h => g -> h -> Intersection g h `intersect` Rectangle point -bBox of +bBox of Maybe (HalfLineBoxIntersection (Point 2 r)) Intersection (HalfLine point) (Rectangle point) Nothing -> String -> IpeObject' Path r @@ -817,8 +817,8 @@ <> (HalfLine point, Rectangle point) -> String forall a. Show a => a -> String show (HalfLine point -hl,Rectangle point -bBox) +hl,Rectangle point +bBox) Just (HalfLine_x_Box_Point Point 2 r _) -> String @@ -831,22 +831,22 @@ forall a. HasCallStack => String -> a error String "ipeHalfLineIn: precondition failed, single point" - Just (HalfLine_x_Box_LineSegment ClosedLineSegment (Point 2 r) -seg) -> IpeOut (ClosedLineSegment (Point 2 r)) Path r + Just (HalfLine_x_Box_LineSegment ClosedLineSegment (Point 2 r) +seg) -> IpeOut (ClosedLineSegment (Point 2 r)) Path r forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r) => IpeOut lineSegment Path r ipeLineSegment ClosedLineSegment (Point 2 r) -seg +seg -- | Renders an line segment to a Path -ipeLineSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) - => IpeOut lineSegment Path r +ipeLineSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) + => IpeOut lineSegment Path r ipeLineSegment :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r) => IpeOut lineSegment Path r -ipeLineSegment lineSegment -s = (PathSegment r -> Path r +ipeLineSegment lineSegment +s = (PathSegment r -> Path r forall r. PathSegment r -> Path r path (PathSegment r -> Path r) -> (lineSegment -> PathSegment r) -> lineSegment -> Path r @@ -858,7 +858,7 @@ pathSegment (lineSegment -> Path r) -> lineSegment -> Path r forall a b. (a -> b) -> a -> b $ lineSegment -s) Path r +s) Path r -> Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash, @@ -880,10 +880,10 @@ mempty -- | Renders a polyline to a Path -ipePolyLine :: IpeOut (PolyLine (Point 2 r)) Path r +ipePolyLine :: IpeOut (PolyLine (Point 2 r)) Path r ipePolyLine :: forall r. IpeOut (PolyLine (Point 2 r)) Path r -ipePolyLine PolyLine (Point 2 r) -p = (PathSegment r -> Path r +ipePolyLine PolyLine (Point 2 r) +p = (PathSegment r -> Path r forall r. PathSegment r -> Path r path (PathSegment r -> Path r) -> (PolyLine (Point 2 r) -> PathSegment r) @@ -895,7 +895,7 @@ PolyLineSegment (PolyLine (Point 2 r) -> Path r) -> PolyLine (Point 2 r) -> Path r forall a b. (a -> b) -> a -> b $ PolyLine (Point 2 r) -p) Path r +p) Path r -> Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash, @@ -917,15 +917,15 @@ mempty -- | Renders an Ellipse to a Path -ipeEllipse :: IpeOut (Ellipse r) Path r +ipeEllipse :: IpeOut (Ellipse r) Path r ipeEllipse :: forall r. IpeOut (Ellipse r) Path r -ipeEllipse = \Ellipse r -e -> PathSegment r -> Path r +ipeEllipse = \Ellipse r +e -> PathSegment r -> Path r forall r. PathSegment r -> Path r path (Ellipse r -> PathSegment r forall r. Ellipse r -> PathSegment r EllipseSegment Ellipse r -e) Path r +e) Path r -> Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash, @@ -947,7 +947,7 @@ mempty -- | Renders a circle to a Path -ipeCircle :: Radical r => IpeOut (Circle (Point 2 r)) Path r +ipeCircle :: Radical r => IpeOut (Circle (Point 2 r)) Path r ipeCircle :: forall r. Radical r => IpeOut (Circle (Point 2 r)) Path r ipeCircle = Ellipse r -> Path r @@ -981,15 +981,15 @@ circleToEllipse -- | Renders a Disk to a Path -ipeDisk :: Radical r => IpeOut (Disk (Point 2 r)) Path r +ipeDisk :: Radical r => IpeOut (Disk (Point 2 r)) Path r ipeDisk :: forall r. Radical r => IpeOut (Disk (Point 2 r)) Path r -ipeDisk Disk (Point 2 r) -d = IpeOut (Circle (Point 2 r)) Path r +ipeDisk Disk (Point 2 r) +d = IpeOut (Circle (Point 2 r)) Path r forall r. Radical r => IpeOut (Circle (Point 2 r)) Path r ipeCircle (Disk (Point 2 r) -> Circle (Point 2 r) forall point. Ball point -> Sphere point MkSphere Disk (Point 2 r) -d) (Path r :+ Attributes (AttrMapSym1 r) (AttributesOf Path)) +d) (Path r :+ Attributes (AttrMapSym1 r) (AttributesOf Path)) -> Attributes (AttrMapSym1 r) (AttributesOf Path) -> Path r :+ Attributes (AttrMapSym1 r) (AttributesOf Path) forall (i :: * -> *) r. @@ -1011,17 +1011,17 @@ "0.722 0.145 0.137") -- | Renders a Bezier curve to a Path -ipeBezier :: IpeOut (CubicBezier (Point 2 r)) Path r +ipeBezier :: IpeOut (CubicBezier (Point 2 r)) Path r ipeBezier :: forall r. IpeOut (CubicBezier (Point 2 r)) Path r -ipeBezier CubicBezier (Point 2 r) -b = (PathSegment r -> Path r +ipeBezier CubicBezier (Point 2 r) +b = (PathSegment r -> Path r forall r. PathSegment r -> Path r path (PathSegment r -> Path r) -> PathSegment r -> Path r forall a b. (a -> b) -> a -> b $ CubicBezier (Point 2 r) -> PathSegment r forall r. CubicBezier (Point 2 r) -> PathSegment r CubicBezierSegment CubicBezier (Point 2 r) -b) Path r +b) Path r -> Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash, @@ -1043,7 +1043,7 @@ mempty -- | Helper to construct a path from a singleton item -path :: PathSegment r -> Path r +path :: PathSegment r -> Path r path :: forall r. PathSegment r -> Path r path = Seq (PathSegment r) -> Path r forall r. Seq (PathSegment r) -> Path r @@ -1057,8 +1057,8 @@ Seq.singleton -- | Construct a PolyLine path segment -pathSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) - => lineSegment -> PathSegment r +pathSegment :: (LineSegment_ lineSegment point, Point_ point 2 r) + => lineSegment -> PathSegment r pathSegment :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r) => lineSegment -> PathSegment r @@ -1095,11 +1095,11 @@ HasEnd s (Vertex c), Point_ (Vertex c) (Dimension c) (NumType c)) => s -> c -lineSegmentToPolyLine +lineSegmentToPolyLine where - lineSegmentToPolyLine :: s -> c -lineSegmentToPolyLine s -s = NonEmpty (Vertex c) -> c + lineSegmentToPolyLine :: s -> c +lineSegmentToPolyLine s +s = NonEmpty (Vertex c) -> c forall polyLine point (f :: * -> *). (ConstructablePolyLine_ polyLine point, Foldable1 f) => f point -> polyLine @@ -1112,13 +1112,13 @@ NonEmpty.fromList ([Vertex c] -> c) -> [Vertex c] -> c forall a b. (a -> b) -> a -> b $ [s -ss -> Getting (Vertex c) s (Vertex c) -> Vertex c +ss -> Getting (Vertex c) s (Vertex c) -> Vertex c forall s a. s -> Getting a s a -> a ^.Getting (Vertex c) s (Vertex c) forall seg p. HasStart seg p => Lens' seg p Lens' s (Vertex c) start, s -ss -> Getting (Vertex c) s (Vertex c) -> Vertex c +ss -> Getting (Vertex c) s (Vertex c) -> Vertex c forall s a. s -> Getting a s a -> a ^.Getting (Vertex c) s (Vertex c) forall seg p. HasEnd seg p => Lens' seg p @@ -1126,18 +1126,18 @@ end] -- | Render as a polygon -ipePolygon :: Polygon_ polygon point r => IpeOut polygon Path r +ipePolygon :: Polygon_ polygon point r => IpeOut polygon Path r ipePolygon :: forall polygon point r. Polygon_ polygon point r => IpeOut polygon Path r -ipePolygon polygon -pg = Seq (PathSegment r) -> Path r +ipePolygon polygon +pg = Seq (PathSegment r) -> Path r forall r. Seq (PathSegment r) -> Path r Path (PathSegment r -outer PathSegment r -> Seq (PathSegment r) -> Seq (PathSegment r) +outer PathSegment r -> Seq (PathSegment r) -> Seq (PathSegment r) forall s a. Cons s s a a => a -> s -> s <| Seq (PathSegment r) -inners) Path r +inners) Path r -> Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash, @@ -1158,16 +1158,16 @@ forall a. Monoid a => a mempty where - outer :: PathSegment r -outer = polygon -> PathSegment r + outer :: PathSegment r +outer = polygon -> PathSegment r forall polygon point r. (HasOuterBoundary polygon, Point_ point 2 r, Vertex polygon ~ point) => polygon -> PathSegment r toPolygonPathSegment polygon -pg - inners :: Seq (PathSegment r) -inners = SimplePolygonF (HoleF polygon) point -> PathSegment r +pg + inners :: Seq (PathSegment r) +inners = SimplePolygonF (HoleF polygon) point -> PathSegment r forall polygon point r. (HasOuterBoundary polygon, Point_ point 2 r, Vertex polygon ~ point) => @@ -1182,7 +1182,7 @@ (SimplePolygonF (HoleF polygon) point) -> polygon -> Seq (SimplePolygonF (HoleF polygon) point) forall {a} {s}. Getting (Seq a) s a -> s -> Seq a -toSequenceOf Getting +toSequenceOf Getting (Seq (SimplePolygonF (HoleF polygon) point)) polygon (SimplePolygonF (HoleF polygon) point) @@ -1196,19 +1196,19 @@ IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) holes polygon -pg - toSequenceOf :: Getting (Seq a) s a -> s -> Seq a -toSequenceOf Getting (Seq a) s a -l = Getting (Seq a) s a -> (a -> Seq a) -> s -> Seq a +pg + toSequenceOf :: Getting (Seq a) s a -> s -> Seq a +toSequenceOf Getting (Seq a) s a +l = Getting (Seq a) s a -> (a -> Seq a) -> s -> Seq a forall r s a. Getting r s a -> (a -> r) -> s -> r foldMapOf Getting (Seq a) s a -l a -> Seq a +l a -> Seq a forall a. a -> Seq a Seq.singleton -- | Helper type to build a path segment -toPolygonPathSegment :: ( HasOuterBoundary polygon, Point_ point 2 r, Vertex polygon ~ point) - => polygon -> PathSegment r +toPolygonPathSegment :: ( HasOuterBoundary polygon, Point_ point 2 r, Vertex polygon ~ point) + => polygon -> PathSegment r toPolygonPathSegment :: forall polygon point r. (HasOuterBoundary polygon, Point_ point 2 r, Vertex polygon ~ point) => @@ -1263,11 +1263,11 @@ -- the polygon just using the outerBoundaryFold, but whatever. -- | Draw a polygon -ipeSimplePolygon :: IpeOut (SimplePolygon (Point 2 r)) Path r +ipeSimplePolygon :: IpeOut (SimplePolygon (Point 2 r)) Path r ipeSimplePolygon :: forall r. IpeOut (SimplePolygon (Point 2 r)) Path r -ipeSimplePolygon SimplePolygon (Point 2 r) -pg = SimplePolygon (Point 2 r) -pgSimplePolygon (Point 2 r) +ipeSimplePolygon SimplePolygon (Point 2 r) +pg = SimplePolygon (Point 2 r) +pgSimplePolygon (Point 2 r) -> Getting (Path r) (SimplePolygon (Point 2 r)) (Path r) -> Path r forall s a. s -> Getting a s a -> a ^.AReview (Path r) (SimplePolygon (Point 2 r)) @@ -1301,10 +1301,10 @@ -- | Draw a Rectangle -ipeRectangle :: Num r => IpeOut (Rectangle (Point 2 r)) Path r +ipeRectangle :: Num r => IpeOut (Rectangle (Point 2 r)) Path r ipeRectangle :: forall r. Num r => IpeOut (Rectangle (Point 2 r)) Path r -ipeRectangle Rectangle (Point 2 r) -r = IpeOut (SimplePolygon (Point 2 r)) Path r +ipeRectangle Rectangle (Point 2 r) +r = IpeOut (SimplePolygon (Point 2 r)) Path r forall r. IpeOut (SimplePolygon (Point 2 r)) Path r ipeSimplePolygon IpeOut (SimplePolygon (Point 2 r)) Path r -> ([Point 2 r] -> SimplePolygon (Point 2 r)) @@ -1330,37 +1330,37 @@ -> [Point 2 r] -> IpeObject' Path r forall a b. (a -> b) -> a -> b $ [Point 2 r -tl,Point 2 r -tr,Point 2 r -br,Point 2 r -bl] +tl,Point 2 r +tr,Point 2 r +br,Point 2 r +bl] where - Corners Point 2 r -tl Point 2 r -tr Point 2 r -br Point 2 r -bl = Rectangle (Point 2 r) -> Corners (Point 2 r) + Corners Point 2 r +tl Point 2 r +tr Point 2 r +br Point 2 r +bl = Rectangle (Point 2 r) -> Corners (Point 2 r) forall r rectangle point. (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Corners point corners Rectangle (Point 2 r) -r +r -------------------------------------------------------------------------------- -- * Group Converters -ipeGroup :: Foldable f => IpeOut (f (IpeObject r)) Group r +ipeGroup :: Foldable f => IpeOut (f (IpeObject r)) Group r ipeGroup :: forall (f :: * -> *) r. Foldable f => IpeOut (f (IpeObject r)) Group r -ipeGroup f (IpeObject r) -xs = [IpeObject r] -> Group r +ipeGroup f (IpeObject r) +xs = [IpeObject r] -> Group r forall r. [IpeObject r] -> Group r Group (f (IpeObject r) -> [IpeObject r] forall a. f a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] toList f (IpeObject r) -xs) Group r +xs) Group r -> Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip] -> Group r :+ Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip] @@ -1374,15 +1374,15 @@ -- * Text Converters -- | Creates an text label -ipeLabel :: IpeOut (Text :+ Point 2 r) TextLabel r +ipeLabel :: IpeOut (Text :+ Point 2 r) TextLabel r ipeLabel :: forall r. IpeOut (Text :+ Point 2 r) TextLabel r -ipeLabel (Text -txt :+ Point 2 r -p) = Text -> Point 2 r -> TextLabel r +ipeLabel (Text +txt :+ Point 2 r +p) = Text -> Point 2 r -> TextLabel r forall r. Text -> Point 2 r -> TextLabel r Label Text -txt Point 2 r -p TextLabel r +txt Point 2 r +p TextLabel r -> Attributes' r CommonAttributes -> TextLabel r :+ Attributes' r CommonAttributes forall core extra. core -> extra -> core :+ extra @@ -1392,10 +1392,10 @@ -- | Annotate an IpeOut with a label -labelled :: (Show lbl, NumType g ~ r, ToObject i) - => (g -> Point 2 r) -- ^ where to place the label - -> IpeOut g i r -- ^ how to draw the geometric object - -> IpeOut (g :+ lbl) Group r +labelled :: (Show lbl, NumType g ~ r, ToObject i) + => (g -> Point 2 r) -- ^ where to place the label + -> IpeOut g i r -- ^ how to draw the geometric object + -> IpeOut (g :+ lbl) Group r labelled :: forall lbl g r (i :: * -> *). (Show lbl, NumType g ~ r, ToObject i) => (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r @@ -1414,21 +1414,21 @@ mempty -- | Annotate an IpeOut with a label -labelledWith :: (Show lbl, NumType g ~ r, ToObject i) - => IpeAttributes TextLabel r -- ^ attributes for the label - -> (g -> Point 2 r) -- ^ where to place the label - -> IpeOut g i r -- ^ how to draw the geometric object - -> IpeOut (g :+ lbl) Group r +labelledWith :: (Show lbl, NumType g ~ r, ToObject i) + => IpeAttributes TextLabel r -- ^ attributes for the label + -> (g -> Point 2 r) -- ^ where to place the label + -> IpeOut g i r -- ^ how to draw the geometric object + -> IpeOut (g :+ lbl) Group r labelledWith :: forall lbl g r (i :: * -> *). (Show lbl, NumType g ~ r, ToObject i) => IpeAttributes TextLabel r -> (g -> Point 2 r) -> IpeOut g i r -> IpeOut (g :+ lbl) Group r -labelledWith IpeAttributes TextLabel r -ats g -> Point 2 r -pos IpeOut g i r -f (g -g :+ lbl -lbl) = IpeOut [IpeObject r] Group r +labelledWith IpeAttributes TextLabel r +ats g -> Point 2 r +pos IpeOut g i r +f (g +g :+ lbl +lbl) = IpeOut [IpeObject r] Group r forall (f :: * -> *) r. Foldable f => IpeOut (f (IpeObject r)) Group r @@ -1437,8 +1437,8 @@ iO (IpeObject' i r -> IpeObject r) -> IpeObject' i r -> IpeObject r forall a b. (a -> b) -> a -> b $ IpeOut g i r -f g -g +f g +g , IpeObject' TextLabel r -> IpeObject r forall (i :: * -> *) r. ToObject i => IpeObject' i r -> IpeObject r iO (IpeObject' TextLabel r -> IpeObject r) @@ -1450,15 +1450,15 @@ Text.pack (lbl -> String forall a. Show a => a -> String show lbl -lbl) Text -> Point 2 r -> Text :+ Point 2 r +lbl) Text -> Point 2 r -> Text :+ Point 2 r forall core extra. core -> extra -> core :+ extra :+ g -> Point 2 r -pos g -g) IpeObject' TextLabel r +pos g +g) IpeObject' TextLabel r -> IpeAttributes TextLabel r -> IpeObject' TextLabel r forall (i :: * -> *) r. IpeObject' i r -> IpeAttributes i r -> IpeObject' i r ! IpeAttributes TextLabel r -ats +ats ] \ No newline at end of file diff --git a/haddocks/hgeometry/ipe/src/Ipe.IpeRender.html b/haddocks/hgeometry/ipe/src/Ipe.IpeRender.html index c6e7b2660..a31ff3972 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.IpeRender.html +++ b/haddocks/hgeometry/ipe/src/Ipe.IpeRender.html @@ -1,4 +1,4 @@ -
--------------------------------------------------------------------------------
+
--------------------------------------------------------------------------------
 -- |
 -- Module      :  Ipe.IpeRender
 -- Copyright   :  (C) Frank Staals
@@ -27,52 +27,52 @@
                                        -> OsPath -- ^ output file path
                                        -> IO ()
 ipeRenderWith :: Options -> FileType -> OsPath -> OsPath -> IO ()
-ipeRenderWith Options
-options FileType
-fType OsPath
-inFp OsPath
-outFp =
+ipeRenderWith Options
+options FileType
+fType OsPath
+inFp OsPath
+outFp =
     do
-      inFp'  <- OsPath -> IO String
+      inFp'  <- OsPath -> IO String
 decodeFS OsPath
-inFp
-      outFp' <- decodeFS outFp
-      Process.withProcessWait (Process.proc "iperender" $ args inFp' outFp') $ \Process () () ()
-_iperenderProc ->
+inFp
+      outFp' <- decodeFS outFp
+      Process.withProcessWait (Process.proc "iperender" $ args inFp' outFp') $ \Process () () ()
+_iperenderProc ->
         () -> IO ()
 forall a. a -> IO a
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure ()
   where
-    args :: String -> String -> [String]
-args String
-inFp' String
-outFp' =
+    args :: String -> String -> [String]
+args String
+inFp' String
+outFp' =
            [ String
 "-" String -> String -> String
 forall a. Semigroup a => a -> a -> a
 <> FileType -> String
 forall a. Show a => a -> String
 show FileType
-fType
+fType
            , String
 "-page", Int -> String
 forall a. Show a => a -> String
 show (Options -> Int
 pageNumber Options
-options)
+options)
            , String
 "-view", Int -> String
 forall a. Show a => a -> String
 show (Options -> Int
 viewNumber Options
-options)
+options)
            , String
 "-resolution", Int -> String
 forall a. Show a => a -> String
 show (Options -> Int
 resolution Options
-options)
+options)
            ] [String] -> [String] -> [String]
 forall a. Semigroup a => a -> a -> a
 <>
@@ -82,7 +82,7 @@
 forall a. Eq a => a -> a -> Bool
 == Options -> Background
 transparent Options
-options ] [String] -> [String] -> [String]
+options ] [String] -> [String] -> [String]
 forall a. Semigroup a => a -> a -> a
 <>
            [ String
@@ -91,13 +91,13 @@
 forall a. Eq a => a -> a -> Bool
 == Options -> Crop
 crop Options
-options ] [String] -> [String] -> [String]
+options ] [String] -> [String] -> [String]
 forall a. Semigroup a => a -> a -> a
 <>
            [ String
-inFp'
+inFp'
            , String
-outFp'
+outFp'
            ]
 
 -- | Call 'iperender' with the default options.
@@ -113,7 +113,7 @@
 
 -- | Output filetypes supported by iperender
 data FileType = PNG | EPS | PDF | SVG
-  deriving (FileType -> FileType -> Bool
+  deriving (FileType -> FileType -> Bool
 (FileType -> FileType -> Bool)
 -> (FileType -> FileType -> Bool) -> Eq FileType
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -121,7 +121,7 @@
 == :: FileType -> FileType -> Bool
 $c/= :: FileType -> FileType -> Bool
 /= :: FileType -> FileType -> Bool
-Eq,Eq FileType
+Eq,Eq FileType
 Eq FileType =>
 (FileType -> FileType -> Ordering)
 -> (FileType -> FileType -> Bool)
@@ -158,7 +158,7 @@
 max :: FileType -> FileType -> FileType
 $cmin :: FileType -> FileType -> FileType
 min :: FileType -> FileType -> FileType
-Ord,Int -> FileType
+Ord,Int -> FileType
 FileType -> Int
 FileType -> [FileType]
 FileType -> FileType
@@ -201,8 +201,8 @@
 enumFromThenTo :: FileType -> FileType -> FileType -> [FileType]
 Enum)
 
-instance Show FileType where
-  show :: FileType -> String
+instance Show FileType where
+  show :: FileType -> String
 show = \case
     FileType
 PNG -> String
@@ -228,7 +228,7 @@
 transparent :: Background
                        , Options -> Crop
 crop        :: Crop
-                       } deriving (Int -> Options -> String -> String
+                       } deriving (Int -> Options -> String -> String
 [Options] -> String -> String
 Options -> String
 (Int -> Options -> String -> String)
@@ -244,7 +244,7 @@
 show :: Options -> String
 $cshowList :: [Options] -> String -> String
 showList :: [Options] -> String -> String
-Show,Options -> Options -> Bool
+Show,Options -> Options -> Bool
 (Options -> Options -> Bool)
 -> (Options -> Options -> Bool) -> Eq Options
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -252,7 +252,7 @@
 == :: Options -> Options -> Bool
 $c/= :: Options -> Options -> Bool
 /= :: Options -> Options -> Bool
-Eq,Eq Options
+Eq,Eq Options
 Eq Options =>
 (Options -> Options -> Ordering)
 -> (Options -> Options -> Bool)
@@ -305,7 +305,7 @@
 -- | Whether or not to render a transparent background in output png
 -- images.
 data Background = OpaqueBackground | TransparentBackground
-  deriving (Int -> Background -> String -> String
+  deriving (Int -> Background -> String -> String
 [Background] -> String -> String
 Background -> String
 (Int -> Background -> String -> String)
@@ -321,7 +321,7 @@
 show :: Background -> String
 $cshowList :: [Background] -> String -> String
 showList :: [Background] -> String -> String
-Show,ReadPrec [Background]
+Show,ReadPrec [Background]
 ReadPrec Background
 Int -> ReadS Background
 ReadS [Background]
@@ -341,7 +341,7 @@
 readPrec :: ReadPrec Background
 $creadListPrec :: ReadPrec [Background]
 readListPrec :: ReadPrec [Background]
-Read,Background -> Background -> Bool
+Read,Background -> Background -> Bool
 (Background -> Background -> Bool)
 -> (Background -> Background -> Bool) -> Eq Background
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -349,7 +349,7 @@
 == :: Background -> Background -> Bool
 $c/= :: Background -> Background -> Bool
 /= :: Background -> Background -> Bool
-Eq,Eq Background
+Eq,Eq Background
 Eq Background =>
 (Background -> Background -> Ordering)
 -> (Background -> Background -> Bool)
@@ -386,7 +386,7 @@
 max :: Background -> Background -> Background
 $cmin :: Background -> Background -> Background
 min :: Background -> Background -> Background
-Ord,Int -> Background
+Ord,Int -> Background
 Background -> Int
 Background -> [Background]
 Background -> Background
@@ -431,7 +431,7 @@
 
 -- | Whether or not to crop the output image.
 data Crop = NoCrop | Crop
-  deriving (Int -> Crop -> String -> String
+  deriving (Int -> Crop -> String -> String
 [Crop] -> String -> String
 Crop -> String
 (Int -> Crop -> String -> String)
@@ -445,7 +445,7 @@
 show :: Crop -> String
 $cshowList :: [Crop] -> String -> String
 showList :: [Crop] -> String -> String
-Show,ReadPrec [Crop]
+Show,ReadPrec [Crop]
 ReadPrec Crop
 Int -> ReadS Crop
 ReadS [Crop]
@@ -462,14 +462,14 @@
 readPrec :: ReadPrec Crop
 $creadListPrec :: ReadPrec [Crop]
 readListPrec :: ReadPrec [Crop]
-Read,Crop -> Crop -> Bool
+Read,Crop -> Crop -> Bool
 (Crop -> Crop -> Bool) -> (Crop -> Crop -> Bool) -> Eq Crop
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 $c== :: Crop -> Crop -> Bool
 == :: Crop -> Crop -> Bool
 $c/= :: Crop -> Crop -> Bool
 /= :: Crop -> Crop -> Bool
-Eq,Eq Crop
+Eq,Eq Crop
 Eq Crop =>
 (Crop -> Crop -> Ordering)
 -> (Crop -> Crop -> Bool)
@@ -506,7 +506,7 @@
 max :: Crop -> Crop -> Crop
 $cmin :: Crop -> Crop -> Crop
 min :: Crop -> Crop -> Crop
-Ord,Int -> Crop
+Ord,Int -> Crop
 Crop -> Int
 Crop -> [Crop]
 Crop -> Crop
diff --git a/haddocks/hgeometry/ipe/src/Ipe.IpeToIpe.html b/haddocks/hgeometry/ipe/src/Ipe.IpeToIpe.html
index 0516987f3..84dd8df77 100644
--- a/haddocks/hgeometry/ipe/src/Ipe.IpeToIpe.html
+++ b/haddocks/hgeometry/ipe/src/Ipe.IpeToIpe.html
@@ -1,4 +1,4 @@
-
{-# LANGUAGE QuasiQuotes #-}
+
{-# LANGUAGE QuasiQuotes #-}
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Ipe.IpeToIpe
@@ -31,34 +31,34 @@
                                       -> OsPath -- ^ output file path
                                       -> IO ()
 ipeToIpeWith :: Options -> FileType -> OsPath -> OsPath -> IO ()
-ipeToIpeWith Options
-options FileType
-fType OsPath
-inFp OsPath
-outFp =
+ipeToIpeWith Options
+options FileType
+fType OsPath
+inFp OsPath
+outFp =
     do
-      inFp'  <- OsPath -> IO String
+      inFp'  <- OsPath -> IO String
 decodeFS OsPath
-inFp
-      outFp' <- decodeFS outFp
-      Process.withProcessWait (Process.proc "ipetoipe" $ args inFp' outFp') $ \Process () () ()
-_iperenderProc ->
+inFp
+      outFp' <- decodeFS outFp
+      Process.withProcessWait (Process.proc "ipetoipe" $ args inFp' outFp') $ \Process () () ()
+_iperenderProc ->
         () -> IO ()
 forall a. a -> IO a
 forall (f :: * -> *) a. Applicative f => a -> f a
 pure ()
   where
-    args :: String -> String -> [String]
-args String
-inFp' String
-outFp' =
+    args :: String -> String -> [String]
+args String
+inFp' String
+outFp' =
            [ String
 "-" String -> String -> String
 forall a. Semigroup a => a -> a -> a
 <> FileType -> String
 forall a. Show a => a -> String
 show FileType
-fType ] [String] -> [String] -> [String]
+fType ] [String] -> [String] -> [String]
 forall a. Semigroup a => a -> a -> a
 <>
            [[String]] -> [String]
@@ -66,11 +66,11 @@
 concat [ [ String
 "-pages", ClosedInterval Int -> String
 forall {a}. Show a => ClosedInterval a -> String
-pageRange ClosedInterval Int
-r ] | PageRange ClosedInterval Int
-r <- [Options -> PageRange
+pageRange ClosedInterval Int
+r ] | PageRange ClosedInterval Int
+r <- [Options -> PageRange
 pages Options
-options] ] [String] -> [String] -> [String]
+options] ] [String] -> [String] -> [String]
 forall a. Semigroup a => a -> a -> a
 <>
            [[String]] -> [String]
@@ -78,13 +78,13 @@
 concat [ [ String
 "-view", Int -> Int -> String
 forall {a} {a}. (Show a, Show a) => a -> a -> String
-pageView Int
-p Int
-v ] | Just (Int
-p,Int
-v) <- [Options -> Maybe (Int, Int)
+pageView Int
+p Int
+v ] | Just (Int
+p,Int
+v) <- [Options -> Maybe (Int, Int)
 singleView Options
-options] ] [String] -> [String] -> [String]
+options] ] [String] -> [String] -> [String]
 forall a. Semigroup a => a -> a -> a
 <>
            [ String
@@ -93,13 +93,13 @@
 forall a. Eq a => a -> a -> Bool
 == Options -> Export
 export Options
-options ] [String] -> [String] -> [String]
+options ] [String] -> [String] -> [String]
 forall a. Semigroup a => a -> a -> a
 <>
            [ String
 "-runlatex" | Options -> Bool
 runLatex Options
-options] [String] -> [String] -> [String]
+options] [String] -> [String] -> [String]
 forall a. Semigroup a => a -> a -> a
 <>
            [ String
@@ -108,21 +108,21 @@
 forall a. Eq a => a -> a -> Bool
 == Options -> NoZip
 nozip Options
-options ] [String] -> [String] -> [String]
+options ] [String] -> [String] -> [String]
 forall a. Semigroup a => a -> a -> a
 <>
            [ String
-inFp'
+inFp'
            , String
-outFp'
+outFp'
            ]
-    pageRange :: ClosedInterval a -> String
-pageRange (ClosedInterval a
-l a
-u) = a -> String
+    pageRange :: ClosedInterval a -> String
+pageRange (ClosedInterval a
+l a
+u) = a -> String
 forall a. Show a => a -> String
 show a
-l String -> String -> String
+l String -> String -> String
 forall a. Semigroup a => a -> a -> a
 <> String
 "-" String -> String -> String
@@ -130,14 +130,14 @@
 <> a -> String
 forall a. Show a => a -> String
 show a
-u
-    pageView :: a -> a -> String
-pageView a
-p a
-v = a -> String
+u
+    pageView :: a -> a -> String
+pageView a
+p a
+v = a -> String
 forall a. Show a => a -> String
 show a
-p String -> String -> String
+p String -> String -> String
 forall a. Semigroup a => a -> a -> a
 <> String
 "-" String -> String -> String
@@ -145,7 +145,7 @@
 <> a -> String
 forall a. Show a => a -> String
 show a
-v
+v
 
 
 -- | Call 'ipetoipe' with the default options.
@@ -162,28 +162,28 @@
 -- on the path.
 --
 -- Note this will write soem intermediate file to your system temp dir.
-writeIpeFileAsPdf      :: IpeWriteText r => OsPath -> IpeFile r -> IO ()
+writeIpeFileAsPdf      :: IpeWriteText r => OsPath -> IpeFile r -> IO ()
 writeIpeFileAsPdf :: forall r. IpeWriteText r => OsPath -> IpeFile r -> IO ()
-writeIpeFileAsPdf OsPath
-fp IpeFile r
-f = do num    <- forall a (m :: * -> *). (Random a, MonadIO m) => m a
+writeIpeFileAsPdf OsPath
+fp IpeFile r
+f = do num    <- forall a (m :: * -> *). (Random a, MonadIO m) => m a
 randomIO @Int
-                            tempDir <- getTemporaryDirectory
-                            num' <- encodeUtf $ show num
-                            let xmlFp = OsPath
-tempDir OsPath -> OsPath -> OsPath
+                            tempDir <- getTemporaryDirectory
+                            num' <- encodeUtf $ show num
+                            let xmlFp = OsPath
+tempDir OsPath -> OsPath -> OsPath
 </> [osp|writeipepdf|] OsPath -> OsPath -> OsPath
 forall a. Semigroup a => a -> a -> a
 <> OsPath
-num' OsPath -> OsPath -> OsPath
+num' OsPath -> OsPath -> OsPath
 <.> [osp|ipe|]
-                            writeIpeFile xmlFp f
-                            ipeToIpe PDF xmlFp fp
-                            removeFile xmlFp
+                            writeIpeFile xmlFp f
+                            ipeToIpe PDF xmlFp fp
+                            removeFile xmlFp
 
 
 data FileType = PDF | XML
-  deriving (FileType -> FileType -> Bool
+  deriving (FileType -> FileType -> Bool
 (FileType -> FileType -> Bool)
 -> (FileType -> FileType -> Bool) -> Eq FileType
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -191,7 +191,7 @@
 == :: FileType -> FileType -> Bool
 $c/= :: FileType -> FileType -> Bool
 /= :: FileType -> FileType -> Bool
-Eq,Int -> FileType
+Eq,Int -> FileType
 FileType -> Int
 FileType -> [FileType]
 FileType -> FileType
@@ -234,8 +234,8 @@
 enumFromThenTo :: FileType -> FileType -> FileType -> [FileType]
 Enum)
 
-instance Show FileType where
-  show :: FileType -> String
+instance Show FileType where
+  show :: FileType -> String
 show = \case
     FileType
 PDF -> String
@@ -245,7 +245,7 @@
 "xml"
 
 data Export = RetainIpeInfo | Export
-  deriving (Int -> Export -> String -> String
+  deriving (Int -> Export -> String -> String
 [Export] -> String -> String
 Export -> String
 (Int -> Export -> String -> String)
@@ -261,7 +261,7 @@
 show :: Export -> String
 $cshowList :: [Export] -> String -> String
 showList :: [Export] -> String -> String
-Show,Export -> Export -> Bool
+Show,Export -> Export -> Bool
 (Export -> Export -> Bool)
 -> (Export -> Export -> Bool) -> Eq Export
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -269,7 +269,7 @@
 == :: Export -> Export -> Bool
 $c/= :: Export -> Export -> Bool
 /= :: Export -> Export -> Bool
-Eq,Int -> Export
+Eq,Int -> Export
 Export -> Int
 Export -> [Export]
 Export -> Export
@@ -316,7 +316,7 @@
 type ViewNumber = Int
 
 data MarkedView = All | OnlyMarkedViews
-  deriving (Int -> MarkedView -> String -> String
+  deriving (Int -> MarkedView -> String -> String
 [MarkedView] -> String -> String
 MarkedView -> String
 (Int -> MarkedView -> String -> String)
@@ -332,7 +332,7 @@
 show :: MarkedView -> String
 $cshowList :: [MarkedView] -> String -> String
 showList :: [MarkedView] -> String -> String
-Show,MarkedView -> MarkedView -> Bool
+Show,MarkedView -> MarkedView -> Bool
 (MarkedView -> MarkedView -> Bool)
 -> (MarkedView -> MarkedView -> Bool) -> Eq MarkedView
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -340,7 +340,7 @@
 == :: MarkedView -> MarkedView -> Bool
 $c/= :: MarkedView -> MarkedView -> Bool
 /= :: MarkedView -> MarkedView -> Bool
-Eq,Int -> MarkedView
+Eq,Int -> MarkedView
 MarkedView -> Int
 MarkedView -> [MarkedView]
 MarkedView -> MarkedView
@@ -384,7 +384,7 @@
 Enum)
 
 data NoZip = NoZip | Zip
-  deriving (Int -> NoZip -> String -> String
+  deriving (Int -> NoZip -> String -> String
 [NoZip] -> String -> String
 NoZip -> String
 (Int -> NoZip -> String -> String)
@@ -398,14 +398,14 @@
 show :: NoZip -> String
 $cshowList :: [NoZip] -> String -> String
 showList :: [NoZip] -> String -> String
-Show,NoZip -> NoZip -> Bool
+Show,NoZip -> NoZip -> Bool
 (NoZip -> NoZip -> Bool) -> (NoZip -> NoZip -> Bool) -> Eq NoZip
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
 $c== :: NoZip -> NoZip -> Bool
 == :: NoZip -> NoZip -> Bool
 $c/= :: NoZip -> NoZip -> Bool
 /= :: NoZip -> NoZip -> Bool
-Eq,Int -> NoZip
+Eq,Int -> NoZip
 NoZip -> Int
 NoZip -> [NoZip]
 NoZip -> NoZip
@@ -450,7 +450,7 @@
 
 data PageRange = EntireFile
                | PageRange (ClosedInterval PageNumber)
-               deriving (Int -> PageRange -> String -> String
+               deriving (Int -> PageRange -> String -> String
 [PageRange] -> String -> String
 PageRange -> String
 (Int -> PageRange -> String -> String)
@@ -466,7 +466,7 @@
 show :: PageRange -> String
 $cshowList :: [PageRange] -> String -> String
 showList :: [PageRange] -> String -> String
-Show,PageRange -> PageRange -> Bool
+Show,PageRange -> PageRange -> Bool
 (PageRange -> PageRange -> Bool)
 -> (PageRange -> PageRange -> Bool) -> Eq PageRange
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -488,7 +488,7 @@
 runLatex   :: Bool
                        , Options -> NoZip
 nozip      :: NoZip
-                       } deriving (Int -> Options -> String -> String
+                       } deriving (Int -> Options -> String -> String
 [Options] -> String -> String
 Options -> String
 (Int -> Options -> String -> String)
@@ -504,7 +504,7 @@
 show :: Options -> String
 $cshowList :: [Options] -> String -> String
 showList :: [Options] -> String -> String
-Show,Options -> Options -> Bool
+Show,Options -> Options -> Bool
 (Options -> Options -> Bool)
 -> (Options -> Options -> Bool) -> Eq Options
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
diff --git a/haddocks/hgeometry/ipe/src/Ipe.Layer.html b/haddocks/hgeometry/ipe/src/Ipe.Layer.html
index c98320463..7150cf17e 100644
--- a/haddocks/hgeometry/ipe/src/Ipe.Layer.html
+++ b/haddocks/hgeometry/ipe/src/Ipe.Layer.html
@@ -20,7 +20,7 @@
 
 -- | Defines an Layer in Ipe.
 newtype LayerName = LayerName {LayerName -> Text
-_layerName :: Text } deriving (Int -> LayerName -> ShowS
+_layerName :: Text } deriving (Int -> LayerName -> ShowS
 [LayerName] -> ShowS
 LayerName -> String
 (Int -> LayerName -> ShowS)
@@ -35,7 +35,7 @@
 show :: LayerName -> String
 $cshowList :: [LayerName] -> ShowS
 showList :: [LayerName] -> ShowS
-Show,ReadPrec [LayerName]
+Show,ReadPrec [LayerName]
 ReadPrec LayerName
 Int -> ReadS LayerName
 ReadS [LayerName]
@@ -55,7 +55,7 @@
 readPrec :: ReadPrec LayerName
 $creadListPrec :: ReadPrec [LayerName]
 readListPrec :: ReadPrec [LayerName]
-Read,LayerName -> LayerName -> Bool
+Read,LayerName -> LayerName -> Bool
 (LayerName -> LayerName -> Bool)
 -> (LayerName -> LayerName -> Bool) -> Eq LayerName
 forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
@@ -63,7 +63,7 @@
 == :: LayerName -> LayerName -> Bool
 $c/= :: LayerName -> LayerName -> Bool
 /= :: LayerName -> LayerName -> Bool
-Eq,Eq LayerName
+Eq,Eq LayerName
 Eq LayerName =>
 (LayerName -> LayerName -> Ordering)
 -> (LayerName -> LayerName -> Bool)
@@ -100,7 +100,7 @@
 max :: LayerName -> LayerName -> LayerName
 $cmin :: LayerName -> LayerName -> LayerName
 min :: LayerName -> LayerName -> LayerName
-Ord,String -> LayerName
+Ord,String -> LayerName
 (String -> LayerName) -> IsString LayerName
 forall a. (String -> a) -> IsString a
 $cfromString :: String -> LayerName
diff --git a/haddocks/hgeometry/ipe/src/Ipe.Matrix.html b/haddocks/hgeometry/ipe/src/Ipe.Matrix.html
index aa1ec2b43..01d5b53e3 100644
--- a/haddocks/hgeometry/ipe/src/Ipe.Matrix.html
+++ b/haddocks/hgeometry/ipe/src/Ipe.Matrix.html
@@ -23,25 +23,25 @@
 --------------------------------------------------------------------------------
 
 -- | Takes and applies the ipe Matrix attribute of this item.
-applyMatrix'              :: ( IsTransformable (i r)
-                             , AT.Matrix  AttributesOf i
-                             , Dimension (i r) ~ 2, r ~ NumType (i r))
-                          => IpeObject' i r -> IpeObject' i r
+applyMatrix'              :: ( IsTransformable (i r)
+                             , AT.Matrix  AttributesOf i
+                             , Dimension (i r) ~ 2, r ~ NumType (i r))
+                          => IpeObject' i r -> IpeObject' i r
 applyMatrix' :: forall (i :: * -> *) r.
 (IsTransformable (i r), 'Matrix ∈ AttributesOf i,
  Dimension (i r) ~ 2, r ~ NumType (i r)) =>
 IpeObject' i r -> IpeObject' i r
-applyMatrix' o :: IpeObject' i r
-o@(i r
-i :+ IpeAttributes i r
-ats) = IpeObject' i r
+applyMatrix' o :: IpeObject' i r
+o@(i r
+i :+ IpeAttributes i r
+ats) = IpeObject' i r
 -> (Matrix 3 3 r -> IpeObject' i r)
 -> Maybe (Matrix 3 3 r)
 -> IpeObject' i r
 forall b a. b -> (a -> b) -> Maybe a -> b
 maybe IpeObject' i r
-o (\Matrix 3 3 r
-m -> Transformation (Dimension (i r)) (NumType (i r)) -> i r -> i r
+o (\Matrix 3 3 r
+m -> Transformation (Dimension (i r)) (NumType (i r)) -> i r -> i r
 forall g.
 IsTransformable g =>
 Transformation (Dimension g) (NumType g) -> g -> g
@@ -49,17 +49,17 @@
 forall (d :: Nat) r. Matrix (d + 1) (d + 1) r -> Transformation d r
 Transformation Matrix 3 3 r
 Matrix (2 + 1) (2 + 1) r
-m) i r
-i i r -> IpeAttributes i r -> IpeObject' i r
+m) i r
+i i r -> IpeAttributes i r -> IpeObject' i r
 forall core extra. core -> extra -> core :+ extra
 :+ IpeAttributes i r
-ats') Maybe (Apply (AttrMapSym1 r) 'Matrix)
+ats') Maybe (Apply (AttrMapSym1 r) 'Matrix)
 Maybe (Matrix 3 3 r)
-mm
+mm
   where
-    (Maybe (Apply (AttrMapSym1 r) 'Matrix)
-mm,IpeAttributes i r
-ats') = Proxy 'Matrix
+    (Maybe (Apply (AttrMapSym1 r) 'Matrix)
+mm,IpeAttributes i r
+ats') = Proxy 'Matrix
 -> IpeAttributes i r
 -> (Maybe (Apply (AttrMapSym1 r) 'Matrix), IpeAttributes i r)
 forall {u} (proxy :: u -> *) (at :: u) (ats :: [u])
@@ -70,13 +70,13 @@
 takeAttr (Proxy 'Matrix
 forall {k} (t :: k). Proxy t
 Proxy :: Proxy AT.Matrix) IpeAttributes i r
-ats
+ats
 
 -- | Applies the matrix to an ipe object if it has one.
-applyMatrix                  :: (Fractional r, Eq r) => IpeObject r -> IpeObject r
+applyMatrix                  :: (Fractional r, Eq r) => IpeObject r -> IpeObject r
 applyMatrix :: forall r. (Fractional r, Eq r) => IpeObject r -> IpeObject r
-applyMatrix (IpeGroup IpeObject' Group r
-i)     = (Group r
+applyMatrix (IpeGroup IpeObject' Group r
+i)     = (Group r
  :+ Attributes
       (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip])
 -> IpeObject r
@@ -122,7 +122,7 @@
 :+ Attributes
      (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]
 IpeObject' Group r
-i(Group r
+i(Group r
  :+ Attributes
       (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip])
 -> ((Group r
@@ -210,8 +210,8 @@
                              -- note that for a group we first (recursively)
                              -- apply the matrices, and then apply
                              -- the matrix of the group to its members.
-applyMatrix (IpeImage IpeObject' Image r
-i)     = IpeObject' Image r -> IpeObject r
+applyMatrix (IpeImage IpeObject' Image r
+i)     = IpeObject' Image r -> IpeObject r
 forall r. IpeObject' Image r -> IpeObject r
 IpeImage     (IpeObject' Image r -> IpeObject r)
 -> IpeObject' Image r -> IpeObject r
@@ -222,9 +222,9 @@
  Dimension (i r) ~ 2, r ~ NumType (i r)) =>
 IpeObject' i r -> IpeObject' i r
 applyMatrix' IpeObject' Image r
-i
-applyMatrix (IpeTextLabel IpeObject' TextLabel r
-i) = IpeObject' TextLabel r -> IpeObject r
+i
+applyMatrix (IpeTextLabel IpeObject' TextLabel r
+i) = IpeObject' TextLabel r -> IpeObject r
 forall r. IpeObject' TextLabel r -> IpeObject r
 IpeTextLabel (IpeObject' TextLabel r -> IpeObject r)
 -> IpeObject' TextLabel r -> IpeObject r
@@ -235,9 +235,9 @@
  Dimension (i r) ~ 2, r ~ NumType (i r)) =>
 IpeObject' i r -> IpeObject' i r
 applyMatrix' IpeObject' TextLabel r
-i
-applyMatrix (IpeMiniPage IpeObject' MiniPage r
-i)  = IpeObject' MiniPage r -> IpeObject r
+i
+applyMatrix (IpeMiniPage IpeObject' MiniPage r
+i)  = IpeObject' MiniPage r -> IpeObject r
 forall r. IpeObject' MiniPage r -> IpeObject r
 IpeMiniPage  (IpeObject' MiniPage r -> IpeObject r)
 -> IpeObject' MiniPage r -> IpeObject r
@@ -248,9 +248,9 @@
  Dimension (i r) ~ 2, r ~ NumType (i r)) =>
 IpeObject' i r -> IpeObject' i r
 applyMatrix' IpeObject' MiniPage r
-i
-applyMatrix (IpeUse IpeObject' IpeSymbol r
-i)       = IpeObject' IpeSymbol r -> IpeObject r
+i
+applyMatrix (IpeUse IpeObject' IpeSymbol r
+i)       = IpeObject' IpeSymbol r -> IpeObject r
 forall r. IpeObject' IpeSymbol r -> IpeObject r
 IpeUse       (IpeObject' IpeSymbol r -> IpeObject r)
 -> IpeObject' IpeSymbol r -> IpeObject r
@@ -261,9 +261,9 @@
  Dimension (i r) ~ 2, r ~ NumType (i r)) =>
 IpeObject' i r -> IpeObject' i r
 applyMatrix' IpeObject' IpeSymbol r
-i
-applyMatrix (IpePath IpeObject' Path r
-i)      = IpeObject' Path r -> IpeObject r
+i
+applyMatrix (IpePath IpeObject' Path r
+i)      = IpeObject' Path r -> IpeObject r
 forall r. IpeObject' Path r -> IpeObject r
 IpePath      (IpeObject' Path r -> IpeObject r)
 -> IpeObject' Path r -> IpeObject r
@@ -274,14 +274,14 @@
  Dimension (i r) ~ 2, r ~ NumType (i r)) =>
 IpeObject' i r -> IpeObject' i r
 applyMatrix' IpeObject' Path r
-i
+i
 
 -- | Applies all matrices in the file.
-applyMatrices   :: (Fractional r, Eq r) => IpeFile r -> IpeFile r
+applyMatrices   :: (Fractional r, Eq r) => IpeFile r -> IpeFile r
 applyMatrices :: forall r. (Fractional r, Eq r) => IpeFile r -> IpeFile r
-applyMatrices IpeFile r
-f = IpeFile r
-fIpeFile r -> (IpeFile r -> IpeFile r) -> IpeFile r
+applyMatrices IpeFile r
+f = IpeFile r
+fIpeFile r -> (IpeFile r -> IpeFile r) -> IpeFile r
 forall a b. a -> (a -> b) -> b
 &(NonEmpty (IpePage r) -> Identity (NonEmpty (IpePage r)))
 -> IpeFile r -> Identity (IpeFile r)
@@ -314,11 +314,11 @@
 applyMatricesPage
 
 -- | Applies all Matrices on a given page.
-applyMatricesPage   :: (Fractional r, Eq r) => IpePage r -> IpePage r
+applyMatricesPage   :: (Fractional r, Eq r) => IpePage r -> IpePage r
 applyMatricesPage :: forall r. (Fractional r, Eq r) => IpePage r -> IpePage r
-applyMatricesPage IpePage r
-p = IpePage r
-pIpePage r -> (IpePage r -> IpePage r) -> IpePage r
+applyMatricesPage IpePage r
+p = IpePage r
+pIpePage r -> (IpePage r -> IpePage r) -> IpePage r
 forall a b. a -> (a -> b) -> b
 &([IpeObject r] -> Identity [IpeObject r])
 -> IpePage r -> Identity (IpePage r)
diff --git a/haddocks/hgeometry/ipe/src/Ipe.ParserPrimitives.html b/haddocks/hgeometry/ipe/src/Ipe.ParserPrimitives.html
index a7cb075ae..bc2b48b18 100644
--- a/haddocks/hgeometry/ipe/src/Ipe.ParserPrimitives.html
+++ b/haddocks/hgeometry/ipe/src/Ipe.ParserPrimitives.html
@@ -19,32 +19,32 @@
 import           Text.ParserCombinators.Parsec hiding (Parser,try)
 
 
-runP'     :: Parser a -> T.Text -> (a, T.Text)
+runP'     :: Parser a -> T.Text -> (a, T.Text)
 runP' :: forall a. Parser a -> Text -> (a, Text)
-runP' Parser a
-p Text
-s = case Parser a -> Text -> Either ParseError (a, Text)
+runP' Parser a
+p Text
+s = case Parser a -> Text -> Either ParseError (a, Text)
 forall a. Parser a -> Text -> Either ParseError (a, Text)
 runP Parser a
-p Text
-s of
-             Left  ParseError
-e -> [Char] -> (a, Text)
+p Text
+s of
+             Left  ParseError
+e -> [Char] -> (a, Text)
 forall a. HasCallStack => [Char] -> a
 error ([Char] -> (a, Text)) -> [Char] -> (a, Text)
 forall a b. (a -> b) -> a -> b
 $ ParseError -> [Char]
 forall a. Show a => a -> [Char]
 show ParseError
-e
-             Right (a, Text)
-x -> (a, Text)
-x
+e
+             Right (a, Text)
+x -> (a, Text)
+x
 
-runP   :: Parser a -> T.Text -> Either ParseError (a,T.Text)
+runP   :: Parser a -> T.Text -> Either ParseError (a,T.Text)
 runP :: forall a. Parser a -> Text -> Either ParseError (a, Text)
-runP Parser a
-p = Parsec Text () (a, Text)
+runP Parser a
+p = Parsec Text () (a, Text)
 -> [Char] -> Text -> Either ParseError (a, Text)
 forall s t a.
 Stream s Identity t =>
@@ -53,7 +53,7 @@
 -> Parser a -> ParsecT Text () Identity (Text -> (a, Text))
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> Parser a
-p ParsecT Text () Identity (Text -> (a, Text))
+p ParsecT Text () Identity (Text -> (a, Text))
 -> ParsecT Text () Identity Text -> Parsec Text () (a, Text)
 forall a b.
 ParsecT Text () Identity (a -> b)
@@ -68,20 +68,20 @@
 ----------------------------------------------------------------------------
 -- | reexporting some standard combinators
 
-pMany :: Parser a -> Parser [a]
+pMany :: Parser a -> Parser [a]
 pMany :: forall a. Parser a -> Parser [a]
 pMany = ParsecT Text () Identity a -> ParsecT Text () Identity [a]
 forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m [a]
 many
 
-pMany1 :: Parser a -> Parser [a]
+pMany1 :: Parser a -> Parser [a]
 pMany1 :: forall a. Parser a -> Parser [a]
 pMany1 = ParsecT Text () Identity a -> ParsecT Text () Identity [a]
 forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m [a]
 many1
 
 
-pChoice :: [Parser a] -> Parser a
+pChoice :: [Parser a] -> Parser a
 pChoice :: forall a. [Parser a] -> Parser a
 pChoice = [ParsecT Text () Identity a] -> ParsecT Text () Identity a
 forall s (m :: * -> *) t u a.
@@ -117,15 +117,15 @@
 -- string parced (i.e. number of digits) and the resulting antural number.
 pPaddedNatural :: Parser (Int, Integer)
 pPaddedNatural :: Parser (Int, Integer)
-pPaddedNatural = (\[Char]
-s -> ([Char] -> Int
+pPaddedNatural = (\[Char]
+s -> ([Char] -> Int
 forall a. [a] -> Int
 forall (t :: * -> *) a. Foldable t => t a -> Int
 length [Char]
-s, [Char] -> Integer
+s, [Char] -> Integer
 forall a. Read a => [Char] -> a
 read [Char]
-s)) ([Char] -> (Int, Integer))
+s)) ([Char] -> (Int, Integer))
 -> ParsecT Text () Identity [Char] -> Parser (Int, Integer)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> Parser Char -> ParsecT Text () Identity [Char]
@@ -183,7 +183,7 @@
 forall s (m :: * -> *) u. Stream s m Char => ParsecT s u m Char
 newline)
 
-pMaybe :: Parser a -> Parser (Maybe a)
+pMaybe :: Parser a -> Parser (Maybe a)
 pMaybe :: forall a. Parser a -> Parser (Maybe a)
 pMaybe = ParsecT Text () Identity a -> ParsecT Text () Identity (Maybe a)
 forall s (m :: * -> *) t u a.
@@ -191,7 +191,7 @@
 ParsecT s u m a -> ParsecT s u m (Maybe a)
 optionMaybe
 
-pCount :: Int -> Parser a -> Parser [a]
+pCount :: Int -> Parser a -> Parser [a]
 pCount :: forall a. Int -> Parser a -> Parser [a]
 pCount = Int -> ParsecT Text () Identity a -> ParsecT Text () Identity [a]
 forall s (m :: * -> *) t u a.
@@ -199,7 +199,7 @@
 Int -> ParsecT s u m a -> ParsecT s u m [a]
 count
 
-pSepBy :: Parser a -> Parser b -> Parser [a]
+pSepBy :: Parser a -> Parser b -> Parser [a]
 pSepBy :: forall a b. Parser a -> Parser b -> Parser [a]
 pSepBy = ParsecT Text () Identity a
 -> ParsecT Text () Identity b -> ParsecT Text () Identity [a]
@@ -210,23 +210,23 @@
 
 
 -- | infix variant of notfollowed by
-pNotFollowedBy :: Parser a -> Parser b -> Parser a
-Parser a
-p pNotFollowedBy :: forall a b. Parser a -> Parser b -> Parser a
-`pNotFollowedBy` Parser b
-q = do { x <- Parser a
-p ; notFollowedBy' q ; return x }
+pNotFollowedBy :: Parser a -> Parser b -> Parser a
+Parser a
+p pNotFollowedBy :: forall a b. Parser a -> Parser b -> Parser a
+`pNotFollowedBy` Parser b
+q = do { x <- Parser a
+p ; notFollowedBy' q ; return x }
     where
       -- | copy of the original notFollowedBy but replaced the error message
       -- to get rid of the Show dependency
-      notFollowedBy' :: ParsecT s u m a -> ParsecT s u m ()
-notFollowedBy' ParsecT s u m a
-z     = ParsecT s u m () -> ParsecT s u m ()
+      notFollowedBy' :: ParsecT s u m a -> ParsecT s u m ()
+notFollowedBy' ParsecT s u m a
+z     = ParsecT s u m () -> ParsecT s u m ()
 forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m a
 try (do{ _ <- ParsecT s u m a -> ParsecT s u m a
 forall s u (m :: * -> *) a. ParsecT s u m a -> ParsecT s u m a
 try ParsecT s u m a
-z; unexpected "not followed by" }
+z; unexpected "not followed by" }
                                     ParsecT s u m () -> ParsecT s u m () -> ParsecT s u m ()
 forall s u (m :: * -> *) a.
 ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a
@@ -242,47 +242,47 @@
 infix 1 <*><>, <*><
 
 -- | Runs parser q ``in reverse'' on the end of the input stream
-(<*><>) ::  (Reversable s, Stream s m t)
-        => ParsecT s u m (a -> b) -> ParsecT s u m a -> ParsecT s u m b
-ParsecT s u m (a -> b)
-p <*><> :: forall s (m :: * -> *) t u a b.
+(<*><>) ::  (Reversable s, Stream s m t)
+        => ParsecT s u m (a -> b) -> ParsecT s u m a -> ParsecT s u m b
+ParsecT s u m (a -> b)
+p <*><> :: forall s (m :: * -> *) t u a b.
 (Reversable s, Stream s m t) =>
 ParsecT s u m (a -> b) -> ParsecT s u m a -> ParsecT s u m b
-<*><> ParsecT s u m a
-q = do
+<*><> ParsecT s u m a
+q = do
   ParsecT s u m ()
 forall s (m :: * -> *) t u.
 (Reversable s, Stream s m t) =>
 ParsecT s u m ()
 rev
-  x <- ParsecT s u m a
-q
+  x <- ParsecT s u m a
+q
   rev
-  f <- p
-  return $ f x
+  f <- p
+  return $ f x
 
 
-(<*><)   :: (Stream s m t, Reversable s)
-          => ParsecT s u m b -> ParsecT s u m a -> ParsecT s u m b
-ParsecT s u m b
-p <*>< :: forall s (m :: * -> *) t u b a.
+(<*><)   :: (Stream s m t, Reversable s)
+          => ParsecT s u m b -> ParsecT s u m a -> ParsecT s u m b
+ParsecT s u m b
+p <*>< :: forall s (m :: * -> *) t u b a.
 (Stream s m t, Reversable s) =>
 ParsecT s u m b -> ParsecT s u m a -> ParsecT s u m b
-<*>< ParsecT s u m a
-q = b -> a -> b
+<*>< ParsecT s u m a
+q = b -> a -> b
 forall a b. a -> b -> a
 const (b -> a -> b) -> ParsecT s u m b -> ParsecT s u m (a -> b)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> ParsecT s u m b
-p ParsecT s u m (a -> b) -> ParsecT s u m a -> ParsecT s u m b
+p ParsecT s u m (a -> b) -> ParsecT s u m a -> ParsecT s u m b
 forall s (m :: * -> *) t u a b.
 (Reversable s, Stream s m t) =>
 ParsecT s u m (a -> b) -> ParsecT s u m a -> ParsecT s u m b
 <*><> ParsecT s u m a
-q
+q
 
 
-rev :: (Reversable s, Stream s m t) => ParsecT s u m ()
+rev :: (Reversable s, Stream s m t) => ParsecT s u m ()
 rev :: forall s (m :: * -> *) t u.
 (Reversable s, Stream s m t) =>
 ParsecT s u m ()
@@ -317,58 +317,58 @@
 infixr 2 <***>, ***>, <***
 
 -- | run the parsers in reverse order, first q, then p
-(<***>) :: Monad m => m (t -> b) -> m t -> m b
-m (t -> b)
-p <***> :: forall (m :: * -> *) t b. Monad m => m (t -> b) -> m t -> m b
-<***> m t
-q = do
-  x <- m t
-q
-  f <- p
-  return $ f x
+(<***>) :: Monad m => m (t -> b) -> m t -> m b
+m (t -> b)
+p <***> :: forall (m :: * -> *) t b. Monad m => m (t -> b) -> m t -> m b
+<***> m t
+q = do
+  x <- m t
+q
+  f <- p
+  return $ f x
 
 -- | the variants with missing brackets
-(***>) :: Monad m => m a -> m b -> m b
-m a
-p ***> :: forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
-***> m b
-q = (\a
-_ b
-s -> b
-s) (a -> b -> b) -> m a -> m (b -> b)
+(***>) :: Monad m => m a -> m b -> m b
+m a
+p ***> :: forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
+***> m b
+q = (\a
+_ b
+s -> b
+s) (a -> b -> b) -> m a -> m (b -> b)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> m a
-p m (b -> b) -> m b -> m b
+p m (b -> b) -> m b -> m b
 forall (m :: * -> *) t b. Monad m => m (t -> b) -> m t -> m b
 <***> m b
-q
+q
 
-(<***) :: Monad m => m b -> m t -> m b
-m b
-p <*** :: forall (m :: * -> *) b t. Monad m => m b -> m t -> m b
-<*** m t
-q = (\b
-s t
+(<***) :: Monad m => m b -> m t -> m b
+m b
+p <*** :: forall (m :: * -> *) b t. Monad m => m b -> m t -> m b
+<*** m t
+q = (\b
+s t
 _ -> b
-s) (b -> t -> b) -> m b -> m (t -> b)
+s) (b -> t -> b) -> m b -> m (t -> b)
 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
 <$> m b
-p m (t -> b) -> m t -> m b
+p m (t -> b) -> m t -> m b
 forall (m :: * -> *) t b. Monad m => m (t -> b) -> m t -> m b
 <***> m t
-q
+q
 
-class Reversable s where
-  reverseS :: s -> s
+class Reversable s where
+  reverseS :: s -> s
 
-instance Reversable [c] where
-  reverseS :: [c] -> [c]
+instance Reversable [c] where
+  reverseS :: [c] -> [c]
 reverseS = [c] -> [c]
 forall c. [c] -> [c]
 reverse
 
 instance Reversable T.Text where
-  reverseS :: Text -> Text
+  reverseS :: Text -> Text
 reverseS = Text -> Text
 T.reverse
 
\ No newline at end of file diff --git a/haddocks/hgeometry/ipe/src/Ipe.Path.html b/haddocks/hgeometry/ipe/src/Ipe.Path.html index 21849115a..9f166eaa4 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.Path.html +++ b/haddocks/hgeometry/ipe/src/Ipe.Path.html @@ -54,7 +54,7 @@
-- | Polygons in ipe may be given in CCW order, or in CW order. Since simple polygon -- normalizes the order, we actually store the original orientation. data Orientation = AsIs | Reversed - deriving (Int -> Orientation -> ShowS + deriving (Int -> Orientation -> ShowS [Orientation] -> ShowS Orientation -> String (Int -> Orientation -> ShowS) @@ -69,7 +69,7 @@ show :: Orientation -> String $cshowList :: [Orientation] -> ShowS showList :: [Orientation] -> ShowS -Show,Orientation -> Orientation -> Bool +Show,Orientation -> Orientation -> Bool (Orientation -> Orientation -> Bool) -> (Orientation -> Orientation -> Bool) -> Eq Orientation forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -77,7 +77,7 @@ == :: Orientation -> Orientation -> Bool $c/= :: Orientation -> Orientation -> Bool /= :: Orientation -> Orientation -> Bool -Eq,Eq Orientation +Eq,Eq Orientation Eq Orientation => (Orientation -> Orientation -> Ordering) -> (Orientation -> Orientation -> Bool) @@ -117,17 +117,17 @@ Ord) -- | Paths consist of Path Segments. PathSegments come in the following forms: -data PathSegment r = PolyLineSegment (PolyLine (Point 2 r)) +data PathSegment r = PolyLineSegment (PolyLine (Point 2 r)) | PolygonPath {-# UNPACK #-}!Orientation - (SimplePolygon (Point 2 r)) - | CubicBezierSegment (CubicBezier (Point 2 r)) - | QuadraticBezierSegment (QuadraticBezier (Point 2 r)) - | EllipseSegment (Ellipse r) + (SimplePolygon (Point 2 r)) + | CubicBezierSegment (CubicBezier (Point 2 r)) + | QuadraticBezierSegment (QuadraticBezier (Point 2 r)) + | EllipseSegment (Ellipse r) -- TODO | ArcSegment | SplineSegment -- (Spline 2 r) | ClosedSplineSegment -- (ClosedSpline 2 r) - deriving (Int -> PathSegment r -> ShowS + deriving (Int -> PathSegment r -> ShowS [PathSegment r] -> ShowS PathSegment r -> String (Int -> PathSegment r -> ShowS) @@ -145,7 +145,7 @@ show :: PathSegment r -> String $cshowList :: forall r. Show r => [PathSegment r] -> ShowS showList :: [PathSegment r] -> ShowS -Show,PathSegment r -> PathSegment r -> Bool +Show,PathSegment r -> PathSegment r -> Bool (PathSegment r -> PathSegment r -> Bool) -> (PathSegment r -> PathSegment r -> Bool) -> Eq (PathSegment r) forall r. Eq r => PathSegment r -> PathSegment r -> Bool @@ -155,31 +155,31 @@ $c/= :: forall r. Eq r => PathSegment r -> PathSegment r -> Bool /= :: PathSegment r -> PathSegment r -> Bool Eq) -makePrisms ''PathSegment +makePrisms ''PathSegment -type instance NumType (PathSegment r) = r -type instance Dimension (PathSegment r) = 2 +type instance NumType (PathSegment r) = r +type instance Dimension (PathSegment r) = 2 -instance Functor PathSegment where - fmap :: forall a b. (a -> b) -> PathSegment a -> PathSegment b +instance Functor PathSegment where + fmap :: forall a b. (a -> b) -> PathSegment a -> PathSegment b fmap = (a -> b) -> PathSegment a -> PathSegment b forall (t :: * -> *) a b. Traversable t => (a -> b) -> t a -> t b fmapDefault -instance Foldable PathSegment where - foldMap :: forall m a. Monoid m => (a -> m) -> PathSegment a -> m -foldMap = (a -> m) -> PathSegment a -> m +instance Foldable PathSegment where + foldMap :: forall m a. Monoid m => (a -> m) -> PathSegment a -> m +foldMap = (a -> m) -> PathSegment a -> m forall (t :: * -> *) m a. (Traversable t, Monoid m) => (a -> m) -> t a -> m foldMapDefault -instance Traversable PathSegment where - traverse :: forall (f :: * -> *) a b. +instance Traversable PathSegment where + traverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> PathSegment a -> f (PathSegment b) -traverse a -> f b -f = \case - PolyLineSegment PolyLine (Point 2 a) -p -> PolyLine (Point 2 b) -> PathSegment b +traverse a -> f b +f = \case + PolyLineSegment PolyLine (Point 2 a) +p -> PolyLine (Point 2 b) -> PathSegment b forall r. PolyLine (Point 2 r) -> PathSegment r PolyLineSegment (PolyLine (Point 2 b) -> PathSegment b) @@ -232,14 +232,14 @@ (NumType (Point 2 a)) (NumType (Point 2 b)) coordinates) a -> f b -f PolyLine (Point 2 a) -p - PolygonPath Orientation -o SimplePolygon (Point 2 a) -p -> Orientation -> SimplePolygon (Point 2 b) -> PathSegment b +f PolyLine (Point 2 a) +p + PolygonPath Orientation +o SimplePolygon (Point 2 a) +p -> Orientation -> SimplePolygon (Point 2 b) -> PathSegment b forall r. Orientation -> SimplePolygon (Point 2 r) -> PathSegment r PolygonPath Orientation -o +o (SimplePolygon (Point 2 b) -> PathSegment b) -> f (SimplePolygon (Point 2 b)) -> f (PathSegment b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -302,10 +302,10 @@ (NumType (Point 2 a)) (NumType (Point 2 b)) coordinates) a -> f b -f SimplePolygon (Point 2 a) -p - CubicBezierSegment CubicBezier (Point 2 a) -b -> CubicBezier (Point 2 b) -> PathSegment b +f SimplePolygon (Point 2 a) +p + CubicBezierSegment CubicBezier (Point 2 a) +b -> CubicBezier (Point 2 b) -> PathSegment b forall r. CubicBezier (Point 2 r) -> PathSegment r CubicBezierSegment (CubicBezier (Point 2 b) -> PathSegment b) @@ -367,10 +367,10 @@ (NumType (Point 2 a)) (NumType (Point 2 b)) coordinates) a -> f b -f CubicBezier (Point 2 a) -b - QuadraticBezierSegment QuadraticBezier (Point 2 a) -b -> QuadraticBezier (Point 2 b) -> PathSegment b +f CubicBezier (Point 2 a) +b + QuadraticBezierSegment QuadraticBezier (Point 2 a) +b -> QuadraticBezier (Point 2 b) -> PathSegment b forall r. QuadraticBezier (Point 2 r) -> PathSegment r QuadraticBezierSegment (QuadraticBezier (Point 2 b) -> PathSegment b) @@ -435,10 +435,10 @@ (NumType (Point 2 a)) (NumType (Point 2 b)) coordinates) a -> f b -f QuadraticBezier (Point 2 a) -b - EllipseSegment Ellipse a -e -> Ellipse b -> PathSegment b +f QuadraticBezier (Point 2 a) +b + EllipseSegment Ellipse a +e -> Ellipse b -> PathSegment b forall r. Ellipse r -> PathSegment r EllipseSegment (Ellipse b -> PathSegment b) -> f (Ellipse b) -> f (PathSegment b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -450,8 +450,8 @@ Applicative f => (a -> f b) -> Ellipse a -> f (Ellipse b) traverse a -> f b -f Ellipse a -e +f Ellipse a +e PathSegment a ArcSegment -> PathSegment b -> f (PathSegment b) forall a. a -> f a @@ -475,15 +475,15 @@ ClosedSplineSegment -instance (Fractional r, Eq r) => IsTransformable (PathSegment r) where - transformBy :: Transformation +instance (Fractional r, Eq r) => IsTransformable (PathSegment r) where + transformBy :: Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -> PathSegment r -> PathSegment r -transformBy Transformation +transformBy Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -t = \case - PolyLineSegment PolyLine (Point 2 r) -p -> PolyLine (Point 2 r) -> PathSegment r +t = \case + PolyLineSegment PolyLine (Point 2 r) +p -> PolyLine (Point 2 r) -> PathSegment r forall r. PolyLine (Point 2 r) -> PathSegment r PolyLineSegment (PolyLine (Point 2 r) -> PathSegment r) -> PolyLine (Point 2 r) -> PathSegment r @@ -498,14 +498,14 @@ (Dimension (PolyLine (Point 2 r))) (NumType (PolyLine (Point 2 r))) Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -t PolyLine (Point 2 r) -p - PolygonPath Orientation -o SimplePolygon (Point 2 r) -p -> Orientation -> SimplePolygon (Point 2 r) -> PathSegment r +t PolyLine (Point 2 r) +p + PolygonPath Orientation +o SimplePolygon (Point 2 r) +p -> Orientation -> SimplePolygon (Point 2 r) -> PathSegment r forall r. Orientation -> SimplePolygon (Point 2 r) -> PathSegment r PolygonPath Orientation -o (Transformation +o (Transformation (Dimension (SimplePolygon (Point 2 r))) (NumType (SimplePolygon (Point 2 r))) -> SimplePolygon (Point 2 r) -> SimplePolygon (Point 2 r) @@ -517,10 +517,10 @@ (NumType (SimplePolygon (Point 2 r))) Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -t SimplePolygon (Point 2 r) -p) - CubicBezierSegment CubicBezier (Point 2 r) -b -> CubicBezier (Point 2 r) -> PathSegment r +t SimplePolygon (Point 2 r) +p) + CubicBezierSegment CubicBezier (Point 2 r) +b -> CubicBezier (Point 2 r) -> PathSegment r forall r. CubicBezier (Point 2 r) -> PathSegment r CubicBezierSegment (CubicBezier (Point 2 r) -> PathSegment r) -> CubicBezier (Point 2 r) -> PathSegment r @@ -537,10 +537,10 @@ (NumType (CubicBezier (Point 2 r))) Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -t CubicBezier (Point 2 r) -b - QuadraticBezierSegment QuadraticBezier (Point 2 r) -b -> QuadraticBezier (Point 2 r) -> PathSegment r +t CubicBezier (Point 2 r) +b + QuadraticBezierSegment QuadraticBezier (Point 2 r) +b -> QuadraticBezier (Point 2 r) -> PathSegment r forall r. QuadraticBezier (Point 2 r) -> PathSegment r QuadraticBezierSegment (QuadraticBezier (Point 2 r) -> PathSegment r) -> QuadraticBezier (Point 2 r) -> PathSegment r @@ -557,10 +557,10 @@ (NumType (QuadraticBezier (Point 2 r))) Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -t QuadraticBezier (Point 2 r) -b - EllipseSegment Ellipse r -e -> Ellipse r -> PathSegment r +t QuadraticBezier (Point 2 r) +b + EllipseSegment Ellipse r +e -> Ellipse r -> PathSegment r forall r. Ellipse r -> PathSegment r EllipseSegment (Ellipse r -> PathSegment r) -> Ellipse r -> PathSegment r forall a b. (a -> b) -> a -> b @@ -572,8 +572,8 @@ transformBy Transformation (Dimension (Ellipse r)) (NumType (Ellipse r)) Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) -t Ellipse r -e +t Ellipse r +e -- TODO: PathSegment r ArcSegment -> PathSegment r @@ -590,9 +590,9 @@ -- | A path is a non-empty sequence of PathSegments. -newtype Path r = Path { forall r. Path r -> Seq (PathSegment r) -_pathSegments :: Seq.Seq (PathSegment r) } - deriving (Int -> Path r -> ShowS +newtype Path r = Path { forall r. Path r -> Seq (PathSegment r) +_pathSegments :: Seq.Seq (PathSegment r) } + deriving (Int -> Path r -> ShowS [Path r] -> ShowS Path r -> String (Int -> Path r -> ShowS) @@ -608,7 +608,7 @@ show :: Path r -> String $cshowList :: forall r. Show r => [Path r] -> ShowS showList :: [Path r] -> ShowS -Show,Path r -> Path r -> Bool +Show,Path r -> Path r -> Bool (Path r -> Path r -> Bool) -> (Path r -> Path r -> Bool) -> Eq (Path r) forall r. Eq r => Path r -> Path r -> Bool @@ -617,7 +617,7 @@ == :: Path r -> Path r -> Bool $c/= :: forall r. Eq r => Path r -> Path r -> Bool /= :: Path r -> Path r -> Bool -Eq,(forall a b. (a -> b) -> Path a -> Path b) +Eq,(forall a b. (a -> b) -> Path a -> Path b) -> (forall a b. a -> Path b -> Path a) -> Functor Path forall a b. a -> Path b -> Path a forall a b. (a -> b) -> Path a -> Path b @@ -628,7 +628,7 @@ fmap :: forall a b. (a -> b) -> Path a -> Path b $c<$ :: forall a b. a -> Path b -> Path a <$ :: forall a b. a -> Path b -> Path a -Functor,(forall m. Monoid m => Path m -> m) +Functor,(forall m. Monoid m => Path m -> m) -> (forall m a. Monoid m => (a -> m) -> Path a -> m) -> (forall m a. Monoid m => (a -> m) -> Path a -> m) -> (forall a b. (a -> b -> b) -> b -> Path a -> b) @@ -710,7 +710,7 @@ sum :: forall a. Num a => Path a -> a $cproduct :: forall a. Num a => Path a -> a product :: forall a. Num a => Path a -> a -Foldable,Functor Path +Foldable,Functor Path Foldable Path (Functor Path, Foldable Path) => (forall (f :: * -> *) a b. @@ -759,7 +759,7 @@ (a -> m b) -> Path a -> m (Path b) $csequence :: forall (m :: * -> *) a. Monad m => Path (m a) -> m (Path a) sequence :: forall (m :: * -> *) a. Monad m => Path (m a) -> m (Path a) -Traversable,(forall x. Path r -> Rep (Path r) x) +Traversable,(forall x. Path r -> Rep (Path r) x) -> (forall x. Rep (Path r) x -> Path r) -> Generic (Path r) forall x. Rep (Path r) x -> Path r forall x. Path r -> Rep (Path r) x @@ -772,7 +772,7 @@ $cto :: forall r x. Rep (Path r) x -> Path r to :: forall x. Rep (Path r) x -> Path r Generic) - deriving newtype (NonEmpty (Path r) -> Path r + deriving newtype (NonEmpty (Path r) -> Path r Path r -> Path r -> Path r (Path r -> Path r -> Path r) -> (NonEmpty (Path r) -> Path r) @@ -796,7 +796,7 @@ Semigroup) -- | Lens/Iso to access the sequcne of segments of the path -pathSegments :: Iso (Path r) (Path r') (Seq.Seq (PathSegment r)) (Seq.Seq (PathSegment r')) +pathSegments :: Iso (Path r) (Path r') (Seq.Seq (PathSegment r)) (Seq.Seq (PathSegment r')) pathSegments :: forall r r' (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => p (Seq (PathSegment r)) (f (Seq (PathSegment r'))) @@ -807,15 +807,15 @@ Iso (Path r) (Path r') (Seq (PathSegment r)) (Seq (PathSegment r')) coerced -type instance NumType (Path r) = r -type instance Dimension (Path r) = 2 +type instance NumType (Path r) = r +type instance Dimension (Path r) = 2 -instance (Fractional r, Eq r) => IsTransformable (Path r) where - transformBy :: Transformation (Dimension (Path r)) (NumType (Path r)) +instance (Fractional r, Eq r) => IsTransformable (Path r) where + transformBy :: Transformation (Dimension (Path r)) (NumType (Path r)) -> Path r -> Path r -transformBy Transformation (Dimension (Path r)) (NumType (Path r)) -t (Path Seq (PathSegment r) -s) = Seq (PathSegment r) -> Path r +transformBy Transformation (Dimension (Path r)) (NumType (Path r)) +t (Path Seq (PathSegment r) +s) = Seq (PathSegment r) -> Path r forall r. Seq (PathSegment r) -> Path r Path (Seq (PathSegment r) -> Path r) -> Seq (PathSegment r) -> Path r forall a b. (a -> b) -> a -> b @@ -832,23 +832,23 @@ transformBy Transformation (Dimension (PathSegment r)) (NumType (PathSegment r)) Transformation (Dimension (Path r)) (NumType (Path r)) -t) Seq (PathSegment r) -s +t) Seq (PathSegment r) +s -------------------------------------------------------------------------------- -- | type that represents a path in ipe. -data Operation r = MoveTo (Point 2 r) - | LineTo (Point 2 r) - | Ellipse (Matrix 3 3 r) - | ArcTo (Matrix 3 3 r) (Point 2 r) - | Spline [Point 2 r] - | ClosedSpline [Point 2 r] +data Operation r = MoveTo (Point 2 r) + | LineTo (Point 2 r) + | Ellipse (Matrix 3 3 r) + | ArcTo (Matrix 3 3 r) (Point 2 r) + | Spline [Point 2 r] + | ClosedSpline [Point 2 r] | ClosePath -- these should be deprecated - | CurveTo (Point 2 r) (Point 2 r) (Point 2 r) - | QCurveTo (Point 2 r) (Point 2 r) - deriving (Operation r -> Operation r -> Bool + | CurveTo (Point 2 r) (Point 2 r) (Point 2 r) + | QCurveTo (Point 2 r) (Point 2 r) + deriving (Operation r -> Operation r -> Bool (Operation r -> Operation r -> Bool) -> (Operation r -> Operation r -> Bool) -> Eq (Operation r) forall r. Eq r => Operation r -> Operation r -> Bool @@ -857,7 +857,7 @@ == :: Operation r -> Operation r -> Bool $c/= :: forall r. Eq r => Operation r -> Operation r -> Bool /= :: Operation r -> Operation r -> Bool -Eq,Int -> Operation r -> ShowS +Eq,Int -> Operation r -> ShowS [Operation r] -> ShowS Operation r -> String (Int -> Operation r -> ShowS) @@ -876,28 +876,28 @@ $cshowList :: forall r. Show r => [Operation r] -> ShowS showList :: [Operation r] -> ShowS Show) -makePrisms ''Operation +makePrisms ''Operation -instance Functor Operation where - fmap :: forall a b. (a -> b) -> Operation a -> Operation b +instance Functor Operation where + fmap :: forall a b. (a -> b) -> Operation a -> Operation b fmap = (a -> b) -> Operation a -> Operation b forall (t :: * -> *) a b. Traversable t => (a -> b) -> t a -> t b fmapDefault -instance Foldable Operation where - foldMap :: forall m a. Monoid m => (a -> m) -> Operation a -> m +instance Foldable Operation where + foldMap :: forall m a. Monoid m => (a -> m) -> Operation a -> m foldMap = (a -> m) -> Operation a -> m forall (t :: * -> *) m a. (Traversable t, Monoid m) => (a -> m) -> t a -> m foldMapDefault -instance Traversable Operation where - traverse :: forall (f :: * -> *) a b. +instance Traversable Operation where + traverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> Operation a -> f (Operation b) -traverse a -> f b -f = let coordinates' :: (NumType (Point 2 a) -> f (NumType (Point 2 b))) +traverse a -> f b +f = let coordinates' :: (NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' = ATraversal +coordinates' = ATraversal (Point 2 a) (Point 2 b) (NumType (Point 2 a)) (NumType (Point 2 b)) -> Traversal (Point 2 a) (Point 2 b) (NumType (Point 2 a)) (NumType (Point 2 b)) @@ -914,9 +914,9 @@ (NumType (Point 2 a)) (NumType (Point 2 b)) coordinates - elements' :: (NumType (Matrix 3 3 a) -> f (NumType (Matrix 3 3 b))) + elements' :: (NumType (Matrix 3 3 a) -> f (NumType (Matrix 3 3 b))) -> Matrix 3 3 a -> f (Matrix 3 3 b) -elements' = ATraversal +elements' = ATraversal (Matrix 3 3 a) (Matrix 3 3 b) (NumType (Matrix 3 3 a)) @@ -944,63 +944,63 @@ (NumType (Matrix 3 3 b)) elements in \case - MoveTo Point 2 a -p -> Point 2 b -> Operation b + MoveTo Point 2 a +p -> Point 2 b -> Operation b forall r. Point 2 r -> Operation r MoveTo (Point 2 b -> Operation b) -> f (Point 2 b) -> f (Operation b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f Point 2 a -p - LineTo Point 2 a -p -> Point 2 b -> Operation b +f Point 2 a +p + LineTo Point 2 a +p -> Point 2 b -> Operation b forall r. Point 2 r -> Operation r LineTo (Point 2 b -> Operation b) -> f (Point 2 b) -> f (Operation b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f Point 2 a -p - Ellipse Matrix 3 3 a -m -> Matrix 3 3 b -> Operation b +f Point 2 a +p + Ellipse Matrix 3 3 a +m -> Matrix 3 3 b -> Operation b forall r. Matrix 3 3 r -> Operation r Ellipse (Matrix 3 3 b -> Operation b) -> f (Matrix 3 3 b) -> f (Operation b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (NumType (Matrix 3 3 a) -> f (NumType (Matrix 3 3 b))) -> Matrix 3 3 a -> f (Matrix 3 3 b) -elements' a -> f b +elements' a -> f b NumType (Matrix 3 3 a) -> f (NumType (Matrix 3 3 b)) -f Matrix 3 3 a -m - ArcTo Matrix 3 3 a -m Point 2 a -p -> Matrix 3 3 b -> Point 2 b -> Operation b +f Matrix 3 3 a +m + ArcTo Matrix 3 3 a +m Point 2 a +p -> Matrix 3 3 b -> Point 2 b -> Operation b forall r. Matrix 3 3 r -> Point 2 r -> Operation r ArcTo (Matrix 3 3 b -> Point 2 b -> Operation b) -> f (Matrix 3 3 b) -> f (Point 2 b -> Operation b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (NumType (Matrix 3 3 a) -> f (NumType (Matrix 3 3 b))) -> Matrix 3 3 a -> f (Matrix 3 3 b) -elements' a -> f b +elements' a -> f b NumType (Matrix 3 3 a) -> f (NumType (Matrix 3 3 b)) -f Matrix 3 3 a -m f (Point 2 b -> Operation b) -> f (Point 2 b) -> f (Operation b) +f Matrix 3 3 a +m f (Point 2 b -> Operation b) -> f (Point 2 b) -> f (Operation b) forall a b. f (a -> b) -> f a -> f b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f Point 2 a -p - Spline [Point 2 a] -pts -> [Point 2 b] -> Operation b +f Point 2 a +p + Spline [Point 2 a] +pts -> [Point 2 b] -> Operation b forall r. [Point 2 r] -> Operation r Spline ([Point 2 b] -> Operation b) -> f [Point 2 b] -> f (Operation b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -1013,12 +1013,12 @@ (a -> f b) -> [a] -> f [b] traverse ((NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f) [Point 2 a] -pts - ClosedSpline [Point 2 a] -pts -> [Point 2 b] -> Operation b +f) [Point 2 a] +pts + ClosedSpline [Point 2 a] +pts -> [Point 2 b] -> Operation b forall r. [Point 2 r] -> Operation r ClosedSpline ([Point 2 b] -> Operation b) -> f [Point 2 b] -> f (Operation b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -1031,10 +1031,10 @@ (a -> f b) -> [a] -> f [b] traverse ((NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f) [Point 2 a] -pts +f) [Point 2 a] +pts Operation a ClosePath -> Operation b -> f (Operation b) forall a. a -> f a @@ -1042,56 +1042,56 @@ pure Operation b forall r. Operation r ClosePath - CurveTo Point 2 a -p Point 2 a -q Point 2 a -r -> Point 2 b -> Point 2 b -> Point 2 b -> Operation b + CurveTo Point 2 a +p Point 2 a +q Point 2 a +r -> Point 2 b -> Point 2 b -> Point 2 b -> Operation b forall r. Point 2 r -> Point 2 r -> Point 2 r -> Operation r CurveTo (Point 2 b -> Point 2 b -> Point 2 b -> Operation b) -> f (Point 2 b) -> f (Point 2 b -> Point 2 b -> Operation b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f Point 2 a -p f (Point 2 b -> Point 2 b -> Operation b) +f Point 2 a +p f (Point 2 b -> Point 2 b -> Operation b) -> f (Point 2 b) -> f (Point 2 b -> Operation b) forall a b. f (a -> b) -> f a -> f b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f Point 2 a -q f (Point 2 b -> Operation b) -> f (Point 2 b) -> f (Operation b) +f Point 2 a +q f (Point 2 b -> Operation b) -> f (Point 2 b) -> f (Operation b) forall a b. f (a -> b) -> f a -> f b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f Point 2 a -r - QCurveTo Point 2 a -p Point 2 a -q -> Point 2 b -> Point 2 b -> Operation b +f Point 2 a +r + QCurveTo Point 2 a +p Point 2 a +q -> Point 2 b -> Point 2 b -> Operation b forall r. Point 2 r -> Point 2 r -> Operation r QCurveTo (Point 2 b -> Point 2 b -> Operation b) -> f (Point 2 b) -> f (Point 2 b -> Operation b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f Point 2 a -p f (Point 2 b -> Operation b) -> f (Point 2 b) -> f (Operation b) +f Point 2 a +p f (Point 2 b -> Operation b) -> f (Point 2 b) -> f (Operation b) forall a b. f (a -> b) -> f a -> f b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (NumType (Point 2 a) -> f (NumType (Point 2 b))) -> Point 2 a -> f (Point 2 b) -coordinates' a -> f b +coordinates' a -> f b NumType (Point 2 a) -> f (NumType (Point 2 b)) -f Point 2 a -q +f Point 2 a +q
\ No newline at end of file diff --git a/haddocks/hgeometry/ipe/src/Ipe.PathParser.html b/haddocks/hgeometry/ipe/src/Ipe.PathParser.html index 3993c7b23..97ddee99d 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.PathParser.html +++ b/haddocks/hgeometry/ipe/src/Ipe.PathParser.html @@ -40,83 +40,83 @@
----------------------------------------------------------------------- -- | Represent stuff that can be used as a coordinate in ipe. (similar to show/read) -class Fractional r => Coordinate r where +class Fractional r => Coordinate r where -- reads a coordinate. The input is an integer representing the -- part before the decimal point, and a length and an integer -- representing the part after the decimal point - fromSeq :: Integer -> Maybe (Int, Integer) -> r - default fromSeq :: (Ord r, Fractional r) => Integer -> Maybe (Int, Integer) -> r - fromSeq = Integer -> Maybe (Int, Integer) -> r + fromSeq :: Integer -> Maybe (Int, Integer) -> r + default fromSeq :: (Ord r, Fractional r) => Integer -> Maybe (Int, Integer) -> r + fromSeq = Integer -> Maybe (Int, Integer) -> r forall r. (Ord r, Fractional r) => Integer -> Maybe (Int, Integer) -> r defaultFromSeq -defaultFromSeq :: (Ord r, Fractional r) - => Integer -> Maybe (Int, Integer) -> r +defaultFromSeq :: (Ord r, Fractional r) + => Integer -> Maybe (Int, Integer) -> r defaultFromSeq :: forall r. (Ord r, Fractional r) => Integer -> Maybe (Int, Integer) -> r -defaultFromSeq Integer -x Maybe (Int, Integer) +defaultFromSeq Integer +x Maybe (Int, Integer) Nothing = Integer -> r forall a. Num a => Integer -> a fromInteger Integer -x -defaultFromSeq Integer -x (Just (Int -l,Integer -y)) = let x' :: r -x' = Integer -> r +x +defaultFromSeq Integer +x (Just (Int +l,Integer +y)) = let x' :: r +x' = Integer -> r forall a. Num a => Integer -> a fromInteger Integer -x - y' :: r -y' = Integer -> r +x + y' :: r +y' = Integer -> r forall a. Num a => Integer -> a fromInteger Integer -y - asDecimal :: r -> r -asDecimal r -a = r -a r -> r -> r +y + asDecimal :: r -> r +asDecimal r +a = r +a r -> r -> r forall a. Num a => a -> a -> a * (r 0.1 r -> Int -> r forall a b. (Num a, Integral b) => a -> b -> a ^ Int -l) - z :: r -z = if r -x' r -> r -> Bool +l) + z :: r +z = if r +x' r -> r -> Bool forall a. Ord a => a -> a -> Bool < r 0 then (-r 1) else r 1 in r -z r -> r -> r +z r -> r -> r forall a. Num a => a -> a -> a * (r -> r forall a. Num a => a -> a abs r -x' r -> r -> r +x' r -> r -> r forall a. Num a => a -> a -> a + r -> r -asDecimal r -y') +asDecimal r +y') -instance HasResolution p => Coordinate (Fixed p) -instance Coordinate Double -instance Coordinate Float -instance Coordinate (Ratio Integer) -instance Coordinate (RealNumber p) +instance HasResolution p => Coordinate (Fixed p) +instance Coordinate Double +instance Coordinate Float +instance Coordinate (Ratio Integer) +instance Coordinate (RealNumber p) ----------------------------------------------------------------------- -- | Running the parsers -- | Read/parse a single coordinate value. -readCoordinate :: Coordinate r => Text -> Either Text r +readCoordinate :: Coordinate r => Text -> Either Text r readCoordinate :: forall r. Coordinate r => Text -> Either Text r readCoordinate = Parser r -> Text -> Either Text r forall a. Parser a -> Text -> Either Text a @@ -125,7 +125,7 @@ pCoordinate -- | Read/parse a single point -readPoint :: Coordinate r => Text -> Either Text (Point 2 r) +readPoint :: Coordinate r => Text -> Either Text (Point 2 r) readPoint :: forall r. Coordinate r => Text -> Either Text (Point 2 r) readPoint = Parser (Point 2 r) -> Text -> Either Text (Point 2 r) forall a. Parser a -> Text -> Either Text a @@ -134,10 +134,10 @@ pPoint -- | Run a parser -runParser :: Parser a -> Text -> Either Text a +runParser :: Parser a -> Text -> Either Text a runParser :: forall a. Parser a -> Text -> Either Text a -runParser Parser a -p = (ParseError -> Text) +runParser
Parser a +p = (ParseError -> Text) -> ((a, Text) -> a) -> Either ParseError (a, Text) -> Either Text a forall a b c d. (a -> b) -> (c -> d) -> Either a c -> Either b d forall (p :: * -> * -> *) a b c d. @@ -152,10 +152,10 @@ . Parser a -> Text -> Either ParseError (a, Text) forall a. Parser a -> Text -> Either ParseError (a, Text) runP Parser a -p +p
-- Collect errors -data Either' l r = Left' l | Right' r deriving (Int -> Either' l r -> ShowS +data Either' l r = Left' l | Right' r deriving (Int -> Either' l r -> ShowS [Either' l r] -> ShowS Either' l r -> String (Int -> Either' l r -> ShowS) @@ -173,7 +173,7 @@ show :: Either' l r -> String $cshowList :: forall l r. (Show l, Show r) => [Either' l r] -> ShowS showList :: [Either' l r] -> ShowS -Show,Either' l r -> Either' l r -> Bool +Show,Either' l r -> Either' l r -> Bool (Either' l r -> Either' l r -> Bool) -> (Either' l r -> Either' l r -> Bool) -> Eq (Either' l r) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -184,77 +184,77 @@ /= :: Either' l r -> Either' l r -> Bool Eq) -instance (Semigroup l, Semigroup r) => Semigroup (Either' l r) where - (Left' l -l) <> :: Either' l r -> Either' l r -> Either' l r -<> (Left' l -l') = l -> Either' l r +instance (Semigroup l, Semigroup r) => Semigroup (Either' l r) where + (Left' l +l) <> :: Either' l r -> Either' l r -> Either' l r +<> (Left' l +l') = l -> Either' l r forall l r. l -> Either' l r Left' (l -> Either' l r) -> l -> Either' l r forall a b. (a -> b) -> a -> b $ l -l l -> l -> l +l l -> l -> l forall a. Semigroup a => a -> a -> a <> l -l' - (Left' l -l) <> Either' l r +l' + (Left' l +l) <> Either' l r _ = l -> Either' l r forall l r. l -> Either' l r Left' l -l +l Either' l r -_ <> (Left' l -l') = l -> Either' l r +_ <> (Left' l +l') = l -> Either' l r forall l r. l -> Either' l r Left' l -l' - (Right' r -r) <> (Right' r -r') = r -> Either' l r +l' + (Right' r +r) <> (Right' r +r') = r -> Either' l r forall l r. r -> Either' l r Right' (r -> Either' l r) -> r -> Either' l r forall a b. (a -> b) -> a -> b $ r -r r -> r -> r +r r -> r -> r forall a. Semigroup a => a -> a -> a <> r -r' +r' -instance (Semigroup l, Semigroup r, Monoid r) => Monoid (Either' l r) where - mempty :: Either' l r +instance (Semigroup l, Semigroup r, Monoid r) => Monoid (Either' l r) where + mempty :: Either' l r mempty = r -> Either' l r forall l r. r -> Either' l r Right' r forall a. Monoid a => a mempty - mappend :: Either' l r -> Either' l r -> Either' l r + mappend :: Either' l r -> Either' l r -> Either' l r mappend = Either' l r -> Either' l r -> Either' l r forall a. Semigroup a => a -> a -> a (<>) -either' :: (l -> a) -> (r -> a) -> Either' l r -> a +either' :: (l -> a) -> (r -> a) -> Either' l r -> a either' :: forall l a r. (l -> a) -> (r -> a) -> Either' l r -> a -either' l -> a -lf r -> a -_ (Left' l -l) = l -> a -lf l -l +either' l -> a +lf r -> a +_ (Left' l +l) = l -> a +lf l +l either' l -> a -_ r -> a -rf (Right' r -r) = r -> a -rf r -r +_ r -> a +rf (Right' r +r) = r -> a +rf r +r -- TODO: Use Validation instead of this home-brew one -- | Parse a sequence of path operations. -readPathOperations :: Coordinate r => Text -> Either Text [Operation r] +readPathOperations :: Coordinate r => Text -> Either Text [Operation r] readPathOperations :: forall r. Coordinate r => Text -> Either Text [Operation r] readPathOperations = Either' [ParseError] [Operation r] -> Either Text [Operation r] forall {b}. Either' [ParseError] b -> Either Text b -unWrap (Either' [ParseError] [Operation r] -> Either Text [Operation r]) +unWrap (Either' [ParseError] [Operation r] -> Either Text [Operation r]) -> (Text -> Either' [ParseError] [Operation r]) -> Text -> Either Text [Operation r] @@ -274,7 +274,7 @@ map (Either ParseError (Operation r, Text) -> Either' [ParseError] [Operation r] forall {a} {b} {b}. Either a (b, b) -> Either' [a] [b] -wrap (Either ParseError (Operation r, Text) +wrap (Either ParseError (Operation r, Text) -> Either' [ParseError] [Operation r]) -> (Text -> Either ParseError (Operation r, Text)) -> Text @@ -290,7 +290,7 @@ -> (Text -> [Text]) -> Text -> [Either' [ParseError] [Operation r]] forall b c a. (b -> c) -> (a -> b) -> a -> c . [Text] -> [Text] -clean ([Text] -> [Text]) -> (Text -> [Text]) -> Text -> [Text] +clean ([Text] -> [Text]) -> (Text -> [Text]) -> Text -> [Text] forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Text -> [Text] splitKeepDelims String @@ -298,8 +298,8 @@ where -- Unwrap the Either'. If it is a Left containing all our errors, -- combine them into one error. Otherwise just ReWrap it in an proper Either - unWrap :: Either' [ParseError] b -> Either Text b -unWrap = ([ParseError] -> Either Text b) + unWrap :: Either' [ParseError] b -> Either Text b +unWrap = ([ParseError] -> Either Text b) -> (b -> Either Text b) -> Either' [ParseError] b -> Either Text b forall l a r. (l -> a) -> (r -> a) -> Either' l r -> a either' (Text -> Either Text b @@ -314,8 +314,8 @@ -- for the lefts: wrap the error in a list, for the rights: we only care -- about the result, so wrap that in a list as well. Collecting the -- results is done using the Semigroup instance of Either' - wrap :: Either a (b, b) -> Either' [a] [b] -wrap = (a -> Either' [a] [b]) + wrap :: Either a (b, b) -> Either' [a] [b] +wrap = (a -> Either' [a] [b]) -> ((b, b) -> Either' [a] [b]) -> Either a (b, b) -> Either' [a] [b] @@ -339,12 +339,12 @@ forall a b. (a, b) -> a fst) -- Split the input string in pieces, each piece represents one operation - trim :: Text -> Text -trim = (Char -> Bool) -> Text -> Text + trim :: Text -> Text +trim = (Char -> Bool) -> Text -> Text T.dropWhile Char -> Bool isSpace - clean :: [Text] -> [Text] -clean = (Text -> Bool) -> [Text] -> [Text] + clean :: [Text] -> [Text] +clean = (Text -> Bool) -> [Text] -> [Text] forall a. (a -> Bool) -> [a] -> [a] filter (Bool -> Bool not (Bool -> Bool) -> (Text -> Bool) -> Text -> Bool @@ -355,7 +355,7 @@ . (Text -> Text) -> [Text] -> [Text] forall a b. (a -> b) -> [a] -> [b] map Text -> Text -trim +trim -- TODO: Do the splitting on the Text rather than unpacking and packing -- the thing @@ -391,48 +391,48 @@ splitKeepDelims :: [Char] -> Text -> [Text] splitKeepDelims :: String -> Text -> [Text] -splitKeepDelims String -delims Text -t = [Text] -> ((Char, Text) -> [Text]) -> Maybe (Char, Text) -> [Text] +splitKeepDelims String +delims Text +t = [Text] -> ((Char, Text) -> [Text]) -> Maybe (Char, Text) -> [Text] forall b a. b -> (a -> b) -> Maybe a -> b maybe [Text] -mPref (Char, Text) -> [Text] -continue (Maybe (Char, Text) -> [Text]) -> Maybe (Char, Text) -> [Text] +mPref (Char, Text) -> [Text] +continue (Maybe (Char, Text) -> [Text]) -> Maybe (Char, Text) -> [Text] forall a b. (a -> b) -> a -> b $ Text -> Maybe (Char, Text) T.uncons Text -rest +rest where - mPref :: [Text] -mPref = if Text -> Bool + mPref :: [Text] +mPref = if Text -> Bool T.null Text -pref then [] else [Text -pref] - (Text -pref,Text -rest) = (Char -> Bool) -> Text -> (Text, Text) +pref then [] else [Text +pref] + (Text +pref,Text +rest) = (Char -> Bool) -> Text -> (Text, Text) T.break (Char -> String -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` String -delims) Text -t - continue :: (Char, Text) -> [Text] -continue (Char -c,Text -t') = Text -pref Text -> Char -> Text +delims) Text +t + continue :: (Char, Text) -> [Text] +continue (Char +c,Text +t') = Text +pref Text -> Char -> Text `T.snoc` Char -c Text -> [Text] -> [Text] +c Text -> [Text] -> [Text] forall a. a -> [a] -> [a] : String -> Text -> [Text] splitKeepDelims String -delims Text -t' +delims Text +t' -- | Try to read/parse a matrix. -readMatrix :: Coordinate r => Text -> Either Text (Matrix 3 3 r) +readMatrix :: Coordinate r => Text -> Either Text (Matrix 3 3 r) readMatrix :: forall r. Coordinate r => Text -> Either Text (Matrix 3 3 r) readMatrix = Parser (Matrix 3 3 r) -> Text -> Either Text (Matrix 3 3 r) forall a. Parser a -> Text -> Either Text a @@ -441,7 +441,7 @@ pMatrix -- | Try to read/parse a Rectangle -readRectangle :: Coordinate r => Text -> Either Text (Rectangle (Point 2 r)) +readRectangle :: Coordinate r => Text -> Either Text (Rectangle (Point 2 r)) readRectangle :: forall r. Coordinate r => Text -> Either Text (Rectangle (Point 2 r)) @@ -456,7 +456,7 @@ -- * The parsers themselves -- | Parse an operation -pOperation :: forall r. Coordinate r => Parser (Operation r) +pOperation :: forall r. Coordinate r => Parser (Operation r) pOperation :: forall r. Coordinate r => Parser (Operation r) pOperation = [Parser (Operation r)] -> Parser (Operation r) forall a. [Parser a] -> Parser a @@ -471,7 +471,7 @@ -> Char -> ParsecT Text () Identity (Point 2 r) forall {b}. ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char +*>> Char 'm' , Point 2 r -> Operation r forall r. Point 2 r -> Operation r @@ -484,7 +484,7 @@ -> Char -> ParsecT Text () Identity (Point 2 r) forall {b}. ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char +*>> Char 'l' , Matrix 3 3 r -> Operation r forall r. Matrix 3 3 r -> Operation r @@ -497,7 +497,7 @@ -> Char -> ParsecT Text () Identity (Matrix 3 3 r) forall {b}. ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char +*>> Char 'e' , Matrix 3 3 r -> Point 2 r -> Operation r forall r. Matrix 3 3 r -> Point 2 r -> Operation r @@ -514,11 +514,11 @@ -> ParsecT Text () Identity a -> ParsecT Text () Identity b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT Text () Identity (Point 2 r) -pPoint' ParsecT Text () Identity (Point 2 r) +pPoint' ParsecT Text () Identity (Point 2 r) -> Char -> ParsecT Text () Identity (Point 2 r) forall {b}. ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char +*>> Char 'a' , [Point 2 r] -> Operation r forall r. [Point 2 r] -> Operation r @@ -535,7 +535,7 @@ -> Char -> ParsecT Text () Identity [Point 2 r] forall {b}. ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char +*>> Char 'c' , [Point 2 r] -> Operation r forall r. [Point 2 r] -> Operation r @@ -552,7 +552,7 @@ -> Char -> ParsecT Text () Identity [Point 2 r] forall {b}. ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char +*>> Char 'u' , Char -> Parser Char pChar Char @@ -576,11 +576,11 @@ -> ParsecT Text () Identity a -> ParsecT Text () Identity b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT Text () Identity (Point 2 r) -pPoint' ParsecT Text () Identity (Point 2 r) +pPoint' ParsecT Text () Identity (Point 2 r) -> Char -> ParsecT Text () Identity (Point 2 r) forall {b}. ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char +*>> Char 'q' , Point 2 r -> Point 2 r -> Point 2 r -> Operation r forall r. Point 2 r -> Point 2 r -> Point 2 r -> Operation r @@ -598,18 +598,18 @@ -> ParsecT Text () Identity a -> ParsecT Text () Identity b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT Text () Identity (Point 2 r) -pPoint' ParsecT Text () Identity (Point 2 r -> Operation r) +pPoint' ParsecT Text () Identity (Point 2 r -> Operation r) -> ParsecT Text () Identity (Point 2 r) -> Parser (Operation r) forall a b. ParsecT Text () Identity (a -> b) -> ParsecT Text () Identity a -> ParsecT Text () Identity b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT Text () Identity (Point 2 r) -pPoint' ParsecT Text () Identity (Point 2 r) +pPoint' ParsecT Text () Identity (Point 2 r) -> Char -> ParsecT Text () Identity (Point 2 r) forall {b}. ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char +*>> Char 'c' , [Point 2 r] -> Operation r forall r. [Point 2 r] -> Operation r @@ -626,12 +626,12 @@ -> Char -> ParsecT Text () Identity [Point 2 r] forall {b}. ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char +*>> Char 's' ] where - pPoint' :: ParsecT Text () Identity (Point 2 r) -pPoint' = Parser String + pPoint' :: ParsecT Text () Identity (Point 2 r) +pPoint' = Parser String pWhiteSpace Parser String -> ParsecT Text () Identity (Point 2 r) -> ParsecT Text () Identity (Point 2 r) @@ -642,11 +642,11 @@ *> ParsecT Text () Identity (Point 2 r) forall r. Coordinate r => Parser (Point 2 r) pPoint - ParsecT Text () Identity b -p *>> :: ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b -*>> Char -c = ParsecT Text () Identity b -p ParsecT Text () Identity b + ParsecT Text () Identity b +p *>> :: ParsecT Text () Identity b -> Char -> ParsecT Text () Identity b +*>> Char +c = ParsecT Text () Identity b +p ParsecT Text () Identity b -> Parser Char -> ParsecT Text () Identity b forall s (m :: * -> *) t u b a. (Stream s m t, Reversable s) => @@ -656,10 +656,10 @@ forall (m :: * -> *) a b. Monad m => m a -> m b -> m b ***> Char -> Parser Char pChar Char -c +c -- * Parse a Point -pPoint :: Coordinate r => Parser (Point 2 r) +pPoint :: Coordinate r => Parser (Point 2 r) pPoint :: forall r. Coordinate r => Parser (Point 2 r) pPoint = r -> r -> Point 2 r forall r. r -> r -> Point 2 r @@ -688,7 +688,7 @@ pCoordinate -- * Parse a single coordinate. -pCoordinate :: Coordinate r => Parser r +pCoordinate :: Coordinate r => Parser r pCoordinate :: forall r. Coordinate r => Parser r pCoordinate = Integer -> Maybe (Int, Integer) -> r forall r. Coordinate r => Integer -> Maybe (Int, Integer) -> r @@ -705,10 +705,10 @@ -> ParsecT Text () Identity a -> ParsecT Text () Identity b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> ParsecT Text () Identity (Maybe (Int, Integer)) -pDecimal +pDecimal where - pDecimal :: ParsecT Text () Identity (Maybe (Int, Integer)) -pDecimal = Parser (Int, Integer) + pDecimal :: ParsecT Text () Identity (Maybe (Int, Integer)) +pDecimal = Parser (Int, Integer) -> ParsecT Text () Identity (Maybe (Int, Integer)) forall a. Parser a -> Parser (Maybe a) pMaybe (Char -> Parser Char @@ -723,7 +723,7 @@ -- | Parser for a rectangle -pRectangle :: Coordinate r => Parser (Rectangle (Point 2 r)) +pRectangle :: Coordinate r => Parser (Rectangle (Point 2 r)) pRectangle :: forall r. Coordinate r => Parser (Rectangle (Point 2 r)) pRectangle = Point 2 r -> Point 2 r -> Box (Point 2 r) forall point. point -> point -> Box point @@ -755,17 +755,17 @@ pPoint -- | Parser for a matrix. -pMatrix :: Coordinate r => Parser (Matrix 3 3 r) +pMatrix :: Coordinate r => Parser (Matrix 3 3 r) pMatrix :: forall r. Coordinate r => Parser (Matrix 3 3 r) -pMatrix = (\r -a [r] -b -> [r] -> Matrix 3 3 r +pMatrix = (\r +a [r] +b -> [r] -> Matrix 3 3 r forall r. Coordinate r => [r] -> Matrix 3 3 r mkMatrix (r -ar -> [r] -> [r] +ar -> [r] -> [r] forall a. a -> [a] -> [a] :[r] -b)) (r -> [r] -> Matrix 3 3 r) +b)) (r -> [r] -> Matrix 3 3 r) -> ParsecT Text () Identity r -> ParsecT Text () Identity ([r] -> Matrix 3 3 r) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -795,15 +795,15 @@ -- | Generate a matrix from a list of 6 coordinates. -mkMatrix :: Coordinate r => [r] -> Matrix 3 3 r +mkMatrix :: Coordinate r => [r] -> Matrix 3 3 r mkMatrix :: forall r. Coordinate r => [r] -> Matrix 3 3 r -mkMatrix [r -a,r -b,r -c,r -d,r -e,r -f] = Vector 3 (Vector 3 r) -> Matrix 3 3 r +mkMatrix [r +a,r +b,r +c,r +d,r +e,r +f] = Vector 3 (Vector 3 r) -> Matrix 3 3 r forall (n :: Nat) (m :: Nat) r. Vector n (Vector m r) -> Matrix n m r Matrix (Vector 3 (Vector 3 r) -> Matrix 3 3 r) @@ -814,15 +814,15 @@ Vector3 (r -> r -> r -> Vector 3 r forall r. r -> r -> r -> Vector 3 r Vector3 r -a r -c r -e) +a r +c r +e) (r -> r -> r -> Vector 3 r forall r. r -> r -> r -> Vector 3 r Vector3 r -b r -d r -f) +b r +d r +f) (r -> r -> r -> Vector 3 r forall r. r -> r -> r -> Vector 3 r Vector3 r diff --git a/haddocks/hgeometry/ipe/src/Ipe.Reader.html b/haddocks/hgeometry/ipe/src/Ipe.Reader.html index 88cef7fff..9eeb8463a 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.Reader.html +++ b/haddocks/hgeometry/ipe/src/Ipe.Reader.html @@ -79,8 +79,8 @@ -- | Given a file path, tries to read an ipe file -readRawIpeFile :: (Coordinate r, Eq r) - => OsPath -> IO (Either ConversionError (IpeFile r)) +readRawIpeFile :: (Coordinate r, Eq r) + => OsPath -> IO (Either ConversionError (IpeFile r)) readRawIpeFile :: forall r. (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r)) @@ -104,8 +104,8 @@ -- | Given a file path, tries to read an ipe file. -- -- This function applies all matrices to objects. -readIpeFile :: (Coordinate r, Eq r) - => OsPath -> IO (Either ConversionError (IpeFile r)) +readIpeFile :: (Coordinate r, Eq r) + => OsPath -> IO (Either ConversionError (IpeFile r)) readIpeFile :: forall r. (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpeFile r)) @@ -143,8 +143,8 @@ -- This function applies all matrices, and it makes sure there is at -- least one layer and view in the page. -- -readSinglePageFile :: (Coordinate r, Eq r) - => OsPath -> IO (Either ConversionError (IpePage r)) +readSinglePageFile :: (Coordinate r, Eq r) + => OsPath -> IO (Either ConversionError (IpePage r)) readSinglePageFile :: forall r. (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r)) @@ -162,7 +162,7 @@ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap IpeFile r -> IpePage r forall r. IpeFile r -> IpePage r -f) (IO (Either ConversionError (IpeFile r)) +f) (IO (Either ConversionError (IpeFile r)) -> IO (Either ConversionError (IpePage r))) -> (OsPath -> IO (Either ConversionError (IpeFile r))) -> OsPath @@ -174,10 +174,10 @@ OsPath -> IO (Either ConversionError (IpeFile r)) readIpeFile where - f :: IpeFile r -> IpePage r - f :: forall r. IpeFile r -> IpePage r -f IpeFile r -i = IpePage r -> IpePage r + f :: IpeFile r -> IpePage r + f :: forall r. IpeFile r -> IpePage r +f IpeFile r +i = IpePage r -> IpePage r forall r. IpePage r -> IpePage r withDefaults (IpePage r -> IpePage r) -> (NonEmpty (IpePage r) -> IpePage r) @@ -190,7 +190,7 @@ -> NonEmpty (IpePage r) -> IpePage r forall a b. (a -> b) -> a -> b $ IpeFile r -iIpeFile r +iIpeFile r -> Getting (NonEmpty (IpePage r)) (IpeFile r) (NonEmpty (IpePage r)) -> NonEmpty (IpePage r) @@ -204,46 +204,46 @@ -- | Tries to read a single page file, throws an error when this -- fails. See 'readSinglePageFile' for further details. -readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r) +readSinglePageFileThrow :: (Coordinate r, Eq r) => OsPath -> IO (IpePage r) readSinglePageFileThrow :: forall r. (Coordinate r, Eq r) => OsPath -> IO (IpePage r) -readSinglePageFileThrow OsPath -fp = OsPath -> IO (Either ConversionError (IpePage r)) +readSinglePageFileThrow OsPath +fp = OsPath -> IO (Either ConversionError (IpePage r)) forall r. (Coordinate r, Eq r) => OsPath -> IO (Either ConversionError (IpePage r)) readSinglePageFile OsPath -fp IO (Either ConversionError (IpePage r)) +fp IO (Either ConversionError (IpePage r)) -> (Either ConversionError (IpePage r) -> IO (IpePage r)) -> IO (IpePage r) forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - Left ConversionError -err -> String -> IO (IpePage r) + Left ConversionError +err -> String -> IO (IpePage r) forall a. String -> IO a forall (m :: * -> *) a. MonadFail m => String -> m a fail (ConversionError -> String forall a. Show a => a -> String show ConversionError -err) - Right IpePage r -p -> IpePage r -> IO (IpePage r) +err) + Right IpePage r +p -> IpePage r -> IO (IpePage r) forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure IpePage r -p +p -- | Given a Bytestring, try to parse the bytestring into anything that is -- IpeReadable, i.e. any of the Ipe elements. -fromIpeXML :: IpeRead (t r) => B.ByteString -> Either ConversionError (t r) +fromIpeXML :: IpeRead (t r) => B.ByteString -> Either ConversionError (t r) fromIpeXML :: forall {k} (t :: k -> *) (r :: k). IpeRead (t r) => ByteString -> Either ConversionError (t r) -fromIpeXML ByteString -b = ByteString +fromIpeXML ByteString +b = ByteString -> Either ConversionError (Node ConversionError ConversionError) readXML ByteString -b Either ConversionError (Node ConversionError ConversionError) +b Either ConversionError (Node ConversionError ConversionError) -> (Node ConversionError ConversionError -> Either ConversionError (t r)) -> Either ConversionError (t r) @@ -296,24 +296,24 @@ -------------------------------------------------------------------------------- -- | Reading an ipe elemtn from a Text value -class IpeReadText t where - ipeReadText :: Text -> Either ConversionError t +class IpeReadText t where + ipeReadText :: Text -> Either ConversionError t -- | Reading an ipe lement from Xml -class IpeRead t where - ipeRead :: Node Text Text -> Either ConversionError t +class IpeRead t where + ipeRead :: Node Text Text -> Either ConversionError t -------------------------------------------------------------------------------- -- ReadText instances instance IpeReadText Text where - ipeReadText :: ConversionError -> Either ConversionError ConversionError + ipeReadText :: ConversionError -> Either ConversionError ConversionError ipeReadText = ConversionError -> Either ConversionError ConversionError forall a b. b -> Either a b Right instance IpeReadText Int where - ipeReadText :: ConversionError -> Either ConversionError Int + ipeReadText :: ConversionError -> Either ConversionError Int ipeReadText = (Integer -> Int) -> Either ConversionError Integer -> Either ConversionError Int forall a b. @@ -331,16 +331,16 @@ runParser Parser Integer pInteger -instance Coordinate r => IpeReadText (Point 2 r) where - ipeReadText :: ConversionError -> Either ConversionError (Point 2 r) +instance Coordinate r => IpeReadText (Point 2 r) where + ipeReadText :: ConversionError -> Either ConversionError (Point 2 r) ipeReadText = ConversionError -> Either ConversionError (Point 2 r) forall r. Coordinate r => ConversionError -> Either ConversionError (Point 2 r) readPoint -instance Coordinate r => IpeReadText (Matrix.Matrix 3 3 r) where - ipeReadText :: ConversionError -> Either ConversionError (Matrix 3 3 r) +instance Coordinate r => IpeReadText (Matrix.Matrix 3 3 r) where + ipeReadText :: ConversionError -> Either ConversionError (Matrix 3 3 r) ipeReadText = ConversionError -> Either ConversionError (Matrix 3 3 r) forall r. Coordinate r => @@ -348,7 +348,7 @@ readMatrix instance IpeReadText LayerName where - ipeReadText :: ConversionError -> Either ConversionError LayerName + ipeReadText :: ConversionError -> Either ConversionError LayerName ipeReadText = LayerName -> Either ConversionError LayerName forall a b. b -> Either a b Right (LayerName -> Either ConversionError LayerName) @@ -360,7 +360,7 @@ LayerName instance IpeReadText PinType where - ipeReadText :: ConversionError -> Either ConversionError PinType + ipeReadText :: ConversionError -> Either ConversionError PinType ipeReadText ConversionError "yes" = PinType -> Either ConversionError PinType forall a b. b -> Either a b @@ -388,7 +388,7 @@ "invalid PinType" instance IpeReadText TransformationTypes where - ipeReadText :: ConversionError -> Either ConversionError TransformationTypes + ipeReadText :: ConversionError -> Either ConversionError TransformationTypes ipeReadText ConversionError "affine" = TransformationTypes -> Either ConversionError TransformationTypes forall a b. b -> Either a b @@ -411,7 +411,7 @@ "invalid TransformationType" instance IpeReadText FillType where - ipeReadText :: ConversionError -> Either ConversionError FillType + ipeReadText :: ConversionError -> Either ConversionError FillType ipeReadText ConversionError "wind" = FillType -> Either ConversionError FillType forall a b. b -> Either a b @@ -428,18 +428,18 @@ Left ConversionError "invalid FillType" -instance Coordinate r => IpeReadText (IpeArrow r) where - ipeReadText :: ConversionError -> Either ConversionError (IpeArrow r) -ipeReadText ConversionError -t = case (Char -> Bool) -> ConversionError -> [ConversionError] +instance Coordinate r => IpeReadText (IpeArrow r) where + ipeReadText :: ConversionError -> Either ConversionError (IpeArrow r) +ipeReadText ConversionError +t = case (Char -> Bool) -> ConversionError -> [ConversionError] T.split (Char -> Char -> Bool forall a. Eq a => a -> a -> Bool == Char '/') ConversionError -t of - [ConversionError -n,ConversionError -s] -> ConversionError -> IpeSize r -> IpeArrow r +t of + [ConversionError +n,ConversionError +s] -> ConversionError -> IpeSize r -> IpeArrow r forall r. ConversionError -> IpeSize r -> IpeArrow r IpeArrow (ConversionError -> IpeSize r -> IpeArrow r) -> Either ConversionError ConversionError @@ -449,7 +449,7 @@ forall a. a -> Either ConversionError a forall (f :: * -> *) a. Applicative f => a -> f a pure ConversionError -n Either ConversionError (IpeSize r -> IpeArrow r) +n Either ConversionError (IpeSize r -> IpeArrow r) -> Either ConversionError (IpeSize r) -> Either ConversionError (IpeArrow r) forall a b. @@ -461,17 +461,17 @@ IpeReadText t => ConversionError -> Either ConversionError t ipeReadText ConversionError -s +s [ConversionError] _ -> ConversionError -> Either ConversionError (IpeArrow r) forall a b. a -> Either a b Left ConversionError "ipeArrow: name contains not exactly 1 / " -instance Coordinate r => IpeReadText (IpeDash r) where - ipeReadText :: ConversionError -> Either ConversionError (IpeDash r) -ipeReadText ConversionError -t = IpeDash r -> Either ConversionError (IpeDash r) +instance Coordinate r => IpeReadText (IpeDash r) where + ipeReadText :: ConversionError -> Either ConversionError (IpeDash r) +ipeReadText ConversionError +t = IpeDash r -> Either ConversionError (IpeDash r) forall a b. b -> Either a b Right (IpeDash r -> Either ConversionError (IpeDash r)) -> (ConversionError -> IpeDash r) @@ -484,12 +484,12 @@ -> ConversionError -> Either ConversionError (IpeDash r) forall a b. (a -> b) -> a -> b $ ConversionError -t +t -- TODO: Implement proper parsing here instance IpeReadText HorizontalAlignment where - ipeReadText :: ConversionError -> Either ConversionError HorizontalAlignment + ipeReadText :: ConversionError -> Either ConversionError HorizontalAlignment ipeReadText = \case ConversionError "left" -> HorizontalAlignment -> Either ConversionError HorizontalAlignment @@ -513,7 +513,7 @@ "invalid HorizontalAlignment" instance IpeReadText VerticalAlignment where - ipeReadText :: ConversionError -> Either ConversionError VerticalAlignment + ipeReadText :: ConversionError -> Either ConversionError VerticalAlignment ipeReadText = \case ConversionError "top" -> VerticalAlignment -> Either ConversionError VerticalAlignment @@ -542,68 +542,68 @@ "invalid VerticalAlignment" -ipeReadTextWith :: (Text -> Either t v) -> Text -> Either ConversionError (IpeValue v) +ipeReadTextWith :: (Text -> Either t v) -> Text -> Either ConversionError (IpeValue v) ipeReadTextWith :: forall t v. (ConversionError -> Either t v) -> ConversionError -> Either ConversionError (IpeValue v) -ipeReadTextWith ConversionError -> Either t v -f ConversionError -t = case ConversionError -> Either t v -f ConversionError -t of - Right v -v -> IpeValue v -> Either ConversionError (IpeValue v) +ipeReadTextWith ConversionError -> Either t v +f ConversionError +t = case ConversionError -> Either t v +f ConversionError +t of + Right v +v -> IpeValue v -> Either ConversionError (IpeValue v) forall a b. b -> Either a b Right (v -> IpeValue v forall v. v -> IpeValue v Valued v -v) +v) Left t _ -> IpeValue v -> Either ConversionError (IpeValue v) forall a b. b -> Either a b Right (ConversionError -> IpeValue v forall v. ConversionError -> IpeValue v Named ConversionError -t) +t) -instance Coordinate r => IpeReadText (Rectangle (Point 2 r)) where - ipeReadText :: ConversionError -> Either ConversionError (Rectangle (Point 2 r)) +instance Coordinate r => IpeReadText (Rectangle (Point 2 r)) where + ipeReadText :: ConversionError -> Either ConversionError (Rectangle (Point 2 r)) ipeReadText = ConversionError -> Either ConversionError (Rectangle (Point 2 r)) forall r. Coordinate r => ConversionError -> Either ConversionError (Rectangle (Point 2 r)) readRectangle -instance Coordinate r => IpeReadText (RGB r) where - ipeReadText :: ConversionError -> Either ConversionError (RGB r) +instance Coordinate r => IpeReadText (RGB r) where + ipeReadText :: ConversionError -> Either ConversionError (RGB r) ipeReadText = Parser (RGB r) -> ConversionError -> Either ConversionError (RGB r) forall a. Parser a -> ConversionError -> Either ConversionError a runParser (Parser (RGB r) -pRGB Parser (RGB r) -> Parser (RGB r) -> Parser (RGB r) +pRGB Parser (RGB r) -> Parser (RGB r) -> Parser (RGB r) forall a. ParsecT ConversionError () Identity a -> ParsecT ConversionError () Identity a -> ParsecT ConversionError () Identity a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> Parser (RGB r) -pGrey) +pGrey) where - pGrey :: Parser (RGB r) -pGrey = (\r -c -> r -> r -> r -> RGB r + pGrey :: Parser (RGB r) +pGrey = (\r +c -> r -> r -> r -> RGB r forall a. a -> a -> a -> RGB a RGB r -c r -c r -c) (r -> RGB r) +c r +c r +c) (r -> RGB r) -> ParsecT ConversionError () Identity r -> Parser (RGB r) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> ParsecT ConversionError () Identity r forall r. Coordinate r => Parser r pCoordinate - pRGB :: Parser (RGB r) -pRGB = r -> r -> r -> RGB r + pRGB :: Parser (RGB r) +pRGB = r -> r -> r -> RGB r forall a. a -> a -> a -> RGB a RGB (r -> r -> r -> RGB r) -> ParsecT ConversionError () Identity r @@ -652,8 +652,8 @@ forall r. Coordinate r => Parser r pCoordinate -instance Coordinate r => IpeReadText (IpeColor r) where - ipeReadText :: ConversionError -> Either ConversionError (IpeColor r) +instance Coordinate r => IpeReadText (IpeColor r) where + ipeReadText :: ConversionError -> Either ConversionError (IpeColor r) ipeReadText = (IpeValue (RGB r) -> IpeColor r) -> Either ConversionError (IpeValue (RGB r)) -> Either ConversionError (IpeColor r) @@ -679,8 +679,8 @@ ConversionError -> Either ConversionError t ipeReadText -instance Coordinate r => IpeReadText (IpePen r) where - ipeReadText :: ConversionError -> Either ConversionError (IpePen r) +instance Coordinate r => IpeReadText (IpePen r) where + ipeReadText :: ConversionError -> Either ConversionError (IpePen r) ipeReadText = (IpeValue r -> IpePen r) -> Either ConversionError (IpeValue r) -> Either ConversionError (IpePen r) @@ -706,8 +706,8 @@ ConversionError -> Either ConversionError r readCoordinate -instance Coordinate r => IpeReadText (IpeSize r) where - ipeReadText :: ConversionError -> Either ConversionError (IpeSize r) +instance Coordinate r => IpeReadText (IpeSize r) where + ipeReadText :: ConversionError -> Either ConversionError (IpeSize r) ipeReadText = (IpeValue r -> IpeSize r) -> Either ConversionError (IpeValue r) -> Either ConversionError (IpeSize r) @@ -734,24 +734,24 @@ readCoordinate -instance Coordinate r => IpeReadText [Operation r] where - ipeReadText :: ConversionError -> Either ConversionError [Operation r] +instance Coordinate r => IpeReadText [Operation r] where + ipeReadText :: ConversionError -> Either ConversionError [Operation r] ipeReadText = ConversionError -> Either ConversionError [Operation r] forall r. Coordinate r => ConversionError -> Either ConversionError [Operation r] readPathOperations -instance (Coordinate r, Fractional r, Eq r) => IpeReadText (NonEmpty.NonEmpty (PathSegment r)) where - ipeReadText :: ConversionError +instance (Coordinate r, Fractional r, Eq r) => IpeReadText (NonEmpty.NonEmpty (PathSegment r)) where + ipeReadText :: ConversionError -> Either ConversionError (NonEmpty (PathSegment r)) -ipeReadText ConversionError -t = ConversionError -> Either ConversionError [Operation r] +ipeReadText ConversionError +t = ConversionError -> Either ConversionError [Operation r] forall t. IpeReadText t => ConversionError -> Either ConversionError t ipeReadText ConversionError -t Either ConversionError [Operation r] +t Either ConversionError [Operation r] -> ([Operation r] -> Either ConversionError (NonEmpty (PathSegment r))) -> Either ConversionError (NonEmpty (PathSegment r)) @@ -763,44 +763,44 @@ forall {a} {r}. (IsString a, Eq r, Fractional r) => [Operation r] -> Either a (NonEmpty (PathSegment r)) -fromOpsN +fromOpsN where - fromOpsN :: [Operation r] -> Either a (NonEmpty (PathSegment r)) -fromOpsN [Operation r] -xs = case [Operation r] -> Either a [PathSegment r] + fromOpsN :: [Operation r] -> Either a (NonEmpty (PathSegment r)) +fromOpsN [Operation r] +xs = case [Operation r] -> Either a [PathSegment r] forall {a} {r}. (IsString a, Eq r, Fractional r) => [Operation r] -> Either a [PathSegment r] -fromOps [Operation r] -xs of - Left a -l -> a -> Either a (NonEmpty (PathSegment r)) +fromOps [Operation r] +xs of + Left a +l -> a -> Either a (NonEmpty (PathSegment r)) forall a b. a -> Either a b Left a -l +l Right [] -> a -> Either a (NonEmpty (PathSegment r)) forall a b. a -> Either a b Left a "No path segments produced" - Right (PathSegment r -p:[PathSegment r] -ps) -> NonEmpty (PathSegment r) -> Either a (NonEmpty (PathSegment r)) + Right (PathSegment r +p:[PathSegment r] +ps) -> NonEmpty (PathSegment r) -> Either a (NonEmpty (PathSegment r)) forall a b. b -> Either a b Right (NonEmpty (PathSegment r) -> Either a (NonEmpty (PathSegment r))) -> NonEmpty (PathSegment r) -> Either a (NonEmpty (PathSegment r)) forall a b. (a -> b) -> a -> b $ PathSegment r -p PathSegment r -> [PathSegment r] -> NonEmpty (PathSegment r) +p PathSegment r -> [PathSegment r] -> NonEmpty (PathSegment r) forall a. a -> [a] -> NonEmpty a NonEmpty.:| [PathSegment r] -ps +ps - fromOps :: [Operation r] -> Either a [PathSegment r] -fromOps [] = [PathSegment r] -> Either a [PathSegment r] + fromOps :: [Operation r] -> Either a [PathSegment r] +fromOps [] = [PathSegment r] -> Either a [PathSegment r] forall a b. b -> Either a b Right [] - fromOps [Ellipse Matrix 3 3 r -m] = [PathSegment r] -> Either a [PathSegment r] + fromOps [Ellipse Matrix 3 3 r +m] = [PathSegment r] -> Either a [PathSegment r] forall a b. b -> Either a b Right [Ellipse r -> PathSegment r forall r. Ellipse r -> PathSegment r @@ -821,45 +821,45 @@ ellipseMatrix) (Matrix 3 3 r -> PathSegment r) -> Matrix 3 3 r -> PathSegment r forall a b. (a -> b) -> a -> b $ Matrix 3 3 r -m] - fromOps (MoveTo Point 2 r -p:[Operation r] -xs) = Point 2 r -> [Operation r] -> Either a [PathSegment r] -fromOps' Point 2 r -p [Operation r] -xs - fromOps [Operation r] +m] + fromOps (MoveTo Point 2 r +p:[Operation r] +xs) = Point 2 r -> [Operation r] -> Either a [PathSegment r] +fromOps' Point 2 r +p [Operation r] +xs + fromOps [Operation r] _ = a -> Either a [PathSegment r] forall a b. a -> Either a b Left a "Path should start with a move to" - fromOps' :: Point 2 r -> [Operation r] -> Either a [PathSegment r] -fromOps' Point 2 r + fromOps' :: Point 2 r -> [Operation r] -> Either a [PathSegment r] +fromOps' Point 2 r _ [] = a -> Either a [PathSegment r] forall a b. a -> Either a b Left a "Found only a MoveTo operation" - fromOps' Point 2 r -s (LineTo Point 2 r -q:[Operation r] -ops) = let ([Operation r] -ls,[Operation r] -xs) = APrism (Operation r) (Operation r) (Point 2 r) (Point 2 r) + fromOps' Point 2 r +s (LineTo Point 2 r +q:[Operation r] +ops) = let ([Operation r] +ls,[Operation r] +xs) = APrism (Operation r) (Operation r) (Point 2 r) (Point 2 r) -> [Operation r] -> ([Operation r], [Operation r]) forall {a} {t} {a} {b}. APrism a t a b -> [a] -> ([a], [a]) -span' APrism (Operation r) (Operation r) (Point 2 r) (Point 2 r) +span' APrism (Operation r) (Operation r) (Point 2 r) (Point 2 r) forall r (p :: * -> * -> *) (f :: * -> *). (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r)) _LineTo [Operation r] -ops - pts :: NonEmpty (Point 2 r) -pts = Point 2 r -s Point 2 r -> [Point 2 r] -> NonEmpty (Point 2 r) +ops + pts :: NonEmpty (Point 2 r) +pts = Point 2 r +s Point 2 r -> [Point 2 r] -> NonEmpty (Point 2 r) forall a. a -> [a] -> NonEmpty a NonEmpty.:| Point 2 r -qPoint 2 r -> [Point 2 r] -> [Point 2 r] +qPoint 2 r -> [Point 2 r] -> [Point 2 r] forall a. a -> [a] -> [a] :(Operation r -> Maybe (Point 2 r)) -> [Operation r] -> [Point 2 r] forall a b. (a -> Maybe b) -> [a] -> [b] @@ -872,9 +872,9 @@ (Choice p, Applicative f) => p (Point 2 r) (f (Point 2 r)) -> p (Operation r) (f (Operation r)) _LineTo) [Operation r] -ls - mPoly :: Maybe (SimplePolygon (Point 2 r)) -mPoly = NonEmpty (Point 2 r) -> Maybe (SimplePolygon (Point 2 r)) +ls + mPoly :: Maybe (SimplePolygon (Point 2 r)) +mPoly = NonEmpty (Point 2 r) -> Maybe (SimplePolygon (Point 2 r)) forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable f, ConstructableSimplePolygon simplePolygon point r) => @@ -885,9 +885,9 @@ (SimplePolygon (Point 2 r)) (Point 2 r) r) => f (Point 2 r) -> Maybe (SimplePolygon (Point 2 r)) Polygon.fromPoints NonEmpty (Point 2 r) -pts - pl :: PolyLine (Point 2 r) -pl = NonEmpty (Point 2 r) -> PolyLine (Point 2 r) +pts + pl :: PolyLine (Point 2 r) +pl = NonEmpty (Point 2 r) -> PolyLine (Point 2 r) forall polyLine point (f :: * -> *). (ConstructablePolyLine_ polyLine point, Foldable1 f) => f point -> polyLine @@ -895,47 +895,47 @@ Foldable1 f => f (Point 2 r) -> PolyLine (Point 2 r) polyLineFromPoints NonEmpty (Point 2 r) -pts - or' :: Orientation -or' = if NonEmpty (Point 2 r) -> Bool +pts + or' :: Orientation +or' = if NonEmpty (Point 2 r) -> Bool forall r. (Eq r, Num r) => NonEmpty (Point 2 r) -> Bool isCounterClockwise NonEmpty (Point 2 r) -pts +pts then Orientation Ipe.Path.AsIs else Orientation Ipe.Path.Reversed in case [Operation r] -xs of +xs of (Operation r -ClosePath : [Operation r] -xs') -> case Maybe (SimplePolygon (Point 2 r)) -mPoly of +ClosePath : [Operation r] +xs') -> case Maybe (SimplePolygon (Point 2 r)) +mPoly of Maybe (SimplePolygon (Point 2 r)) Nothing -> a -> Either a [PathSegment r] forall a b. a -> Either a b Left a "simple polygon failed" - Just SimplePolygon (Point 2 r) -poly -> Orientation -> SimplePolygon (Point 2 r) -> PathSegment r + Just SimplePolygon (Point 2 r) +poly -> Orientation -> SimplePolygon (Point 2 r) -> PathSegment r forall r. Orientation -> SimplePolygon (Point 2 r) -> PathSegment r PolygonPath Orientation -or' SimplePolygon (Point 2 r) -poly PathSegment r -> [Operation r] -> Either a [PathSegment r] -<<| [Operation r] -xs' +or' SimplePolygon (Point 2 r) +poly PathSegment r -> [Operation r] -> Either a [PathSegment r] +<<| [Operation r] +xs' [Operation r] _ -> PolyLine (Point 2 r) -> PathSegment r forall r. PolyLine (Point 2 r) -> PathSegment r PolyLineSegment PolyLine (Point 2 r) -pl PathSegment r -> [Operation r] -> Either a [PathSegment r] -<<| [Operation r] -xs +pl PathSegment r -> [Operation r] -> Either a [PathSegment r] +<<| [Operation r] +xs - fromOps' Point 2 r -s [Spline [Point 2 r -a, Point 2 r -b]] = [PathSegment r] -> Either a [PathSegment r] + fromOps' Point 2 r +s [Spline [Point 2 r +a, Point 2 r +b]] = [PathSegment r] -> Either a [PathSegment r] forall a b. b -> Either a b Right [QuadraticBezier (Point 2 r) -> PathSegment r forall r. QuadraticBezier (Point 2 r) -> PathSegment r @@ -945,14 +945,14 @@ $ Point 2 r -> Point 2 r -> Point 2 r -> QuadraticBezier (Point 2 r) forall point. point -> point -> point -> QuadraticBezier point Bezier2 Point 2 r -s Point 2 r -a Point 2 r -b] - fromOps' Point 2 r -s [Spline [Point 2 r -a, Point 2 r -b, Point 2 r -c]] = [PathSegment r] -> Either a [PathSegment r] +s Point 2 r +a Point 2 r +b] + fromOps' Point 2 r +s [Spline [Point 2 r +a, Point 2 r +b, Point 2 r +c]] = [PathSegment r] -> Either a [PathSegment r] forall a b. b -> Either a b Right [CubicBezier (Point 2 r) -> PathSegment r forall r. CubicBezier (Point 2 r) -> PathSegment r @@ -963,13 +963,13 @@ -> Point 2 r -> Point 2 r -> Point 2 r -> CubicBezier (Point 2 r) forall point. point -> point -> point -> point -> CubicBezier point Bezier3 Point 2 r -s Point 2 r -a Point 2 r -b Point 2 r -c] - fromOps' Point 2 r -s [Spline [Point 2 r] -ps] = [PathSegment r] -> Either a [PathSegment r] +s Point 2 r +a Point 2 r +b Point 2 r +c] + fromOps' Point 2 r +s [Spline [Point 2 r] +ps] = [PathSegment r] -> Either a [PathSegment r] forall a b. b -> Either a b Right ([PathSegment r] -> Either a [PathSegment r]) -> [PathSegment r] -> Either a [PathSegment r] @@ -988,15 +988,15 @@ -> [Point 2 r] -> [CubicBezier (Point 2 r)] forall a b. (a -> b) -> a -> b $ Point 2 r -s Point 2 r -> [Point 2 r] -> [Point 2 r] +s Point 2 r -> [Point 2 r] -> [Point 2 r] forall a. a -> [a] -> [a] : [Point 2 r] -ps +ps -- these will not occur anymore with recent ipe files - fromOps' Point 2 r -s [QCurveTo Point 2 r -a Point 2 r -b] = [PathSegment r] -> Either a [PathSegment r] + fromOps' Point 2 r +s [QCurveTo Point 2 r +a Point 2 r +b] = [PathSegment r] -> Either a [PathSegment r] forall a b. b -> Either a b Right [QuadraticBezier (Point 2 r) -> PathSegment r forall r. QuadraticBezier (Point 2 r) -> PathSegment r @@ -1006,14 +1006,14 @@ $ Point 2 r -> Point 2 r -> Point 2 r -> QuadraticBezier (Point 2 r) forall point. point -> point -> point -> QuadraticBezier point Bezier2 Point 2 r -s Point 2 r -a Point 2 r -b] - fromOps' Point 2 r -s [CurveTo Point 2 r -a Point 2 r -b Point 2 r -c] = [PathSegment r] -> Either a [PathSegment r] +s Point 2 r +a Point 2 r +b] + fromOps' Point 2 r +s [CurveTo Point 2 r +a Point 2 r +b Point 2 r +c] = [PathSegment r] -> Either a [PathSegment r] forall a b. b -> Either a b Right [CubicBezier (Point 2 r) -> PathSegment r forall r. CubicBezier (Point 2 r) -> PathSegment r @@ -1024,20 +1024,20 @@ -> Point 2 r -> Point 2 r -> Point 2 r -> CubicBezier (Point 2 r) forall point. point -> point -> point -> point -> CubicBezier point Bezier3 Point 2 r -s Point 2 r -a Point 2 r -b Point 2 r -c] - fromOps' Point 2 r +s Point 2 r +a Point 2 r +b Point 2 r +c] + fromOps' Point 2 r _ [Operation r] _ = a -> Either a [PathSegment r] forall a b. a -> Either a b Left a "fromOpts': rest not implemented yet." - span' :: APrism a t a b -> [a] -> ([a], [a]) -span' APrism a t a b -pr = (a -> Bool) -> [a] -> ([a], [a]) + span' :: APrism a t a b -> [a] -> ([a], [a]) +span' APrism a t a b +pr = (a -> Bool) -> [a] -> ([a], [a]) forall a. (a -> Bool) -> [a] -> ([a], [a]) L.span (Bool -> Bool not (Bool -> Bool) -> (a -> Bool) -> a -> Bool @@ -1045,33 +1045,33 @@ . APrism a t a b -> a -> Bool forall s t a b. APrism s t a b -> s -> Bool isn't APrism a t a b -pr) +pr) - PathSegment r -x <<| :: PathSegment r -> [Operation r] -> Either a [PathSegment r] -<<| [Operation r] -xs = (PathSegment r -xPathSegment r -> [PathSegment r] -> [PathSegment r] + PathSegment r +x <<| :: PathSegment r -> [Operation r] -> Either a [PathSegment r] +<<| [Operation r] +xs = (PathSegment r +xPathSegment r -> [PathSegment r] -> [PathSegment r] forall a. a -> [a] -> [a] :) ([PathSegment r] -> [PathSegment r]) -> Either a [PathSegment r] -> Either a [PathSegment r] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Operation r] -> Either a [PathSegment r] -fromOps [Operation r] -xs +fromOps [Operation r] +xs -- | test if the sequence of points, forming a simple polygon, is in CCW order -isCounterClockwise :: (Eq r, Num r) => NonEmpty.NonEmpty (Point 2 r) -> Bool +isCounterClockwise :: (Eq r, Num r) => NonEmpty.NonEmpty (Point 2 r) -> Bool isCounterClockwise :: forall r. (Eq r, Num r) => NonEmpty (Point 2 r) -> Bool -isCounterClockwise = (\r -x -> r -x r -> r -> Bool +isCounterClockwise = (\r +x -> r +x r -> r -> Bool forall a. Eq a => a -> a -> Bool == r -> r forall a. Num a => a -> a abs r -x) (r -> Bool) +x) (r -> Bool) -> (NonEmpty (Point 2 r) -> r) -> NonEmpty (Point 2 r) -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . NonEmpty (Point 2 r) -> r @@ -1085,15 +1085,15 @@ (TypeError ...), Num (NumType s), Point_ s (Dimension s) (NumType s)) => NonEmpty s -> NumType s -signedArea2X' +signedArea2X' where - signedArea2X' :: NonEmpty s -> NumType s -signedArea2X' NonEmpty s -poly = [NumType s] -> NumType s + signedArea2X' :: NonEmpty s -> NumType s +signedArea2X' NonEmpty s +poly = [NumType s] -> NumType s forall a. Num a => [a] -> a forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum [ s -ps -> Getting (NumType s) s (NumType s) -> NumType s +ps -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -1103,7 +1103,7 @@ xCoord NumType s -> NumType s -> NumType s forall a. Num a => a -> a -> a * s -qs -> Getting (NumType s) s (NumType s) -> NumType s +qs -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -1113,7 +1113,7 @@ yCoord NumType s -> NumType s -> NumType s forall a. Num a => a -> a -> a - s -qs -> Getting (NumType s) s (NumType s) -> NumType s +qs -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -1123,7 +1123,7 @@ xCoord NumType s -> NumType s -> NumType s forall a. Num a => a -> a -> a * s -ps -> Getting (NumType s) s (NumType s) -> NumType s +ps -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -1131,103 +1131,103 @@ IndexedLens' Int point r IndexedLens' Int s (NumType s) yCoord - | (s -p,s -q) <- NonEmpty s -> [(s, s)] + | (s +p,s +q) <- NonEmpty s -> [(s, s)] forall {b}. NonEmpty b -> [(b, b)] -edges NonEmpty s -poly +edges NonEmpty s +poly ] - edges :: NonEmpty b -> [(b, b)] -edges NonEmpty b -poly = let poly' :: [b] -poly' = NonEmpty b -> [b] + edges :: NonEmpty b -> [(b, b)] +edges NonEmpty b +poly = let poly' :: [b] +poly' = NonEmpty b -> [b] forall a. NonEmpty a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] F.toList NonEmpty b -poly in [b] -> [b] -> [(b, b)] +poly in [b] -> [b] -> [(b, b)] forall a b. [a] -> [b] -> [(a, b)] zip [b] -poly' (NonEmpty b -> [b] +poly' (NonEmpty b -> [b] forall a. NonEmpty a -> [a] NonEmpty.tail NonEmpty b -poly [b] -> [b] -> [b] +poly [b] -> [b] -> [b] forall a. Semigroup a => a -> a -> a <> [b] -poly') +poly') -- | Read a list of control points of a uniform cubic B-spline and conver it -- to cubic Bezier pieces -splineToCubicBeziers :: Fractional r => [Point 2 r] -> [CubicBezier (Point 2 r)] +splineToCubicBeziers :: Fractional r => [Point 2 r] -> [CubicBezier (Point 2 r)] splineToCubicBeziers :: forall r. Fractional r => [Point 2 r] -> [CubicBezier (Point 2 r)] -splineToCubicBeziers [Point 2 r -a, Point 2 r -b, Point 2 r -c, Point 2 r -d] = [Point 2 r +splineToCubicBeziers [Point 2 r +a, Point 2 r +b, Point 2 r +c, Point 2 r +d] = [Point 2 r -> Point 2 r -> Point 2 r -> Point 2 r -> CubicBezier (Point 2 r) forall point. point -> point -> point -> point -> CubicBezier point Bezier3 Point 2 r -a Point 2 r -b Point 2 r -c Point 2 r -d] -splineToCubicBeziers (Point 2 r -a : Point 2 r -b : Point 2 r -c : Point 2 r -d : [Point 2 r] -rest) = - let p :: Point 2 r -p = Point 2 r -b Point 2 r -> Vector 2 r -> Point 2 r +a Point 2 r +b Point 2 r +c Point 2 r +d] +splineToCubicBeziers (Point 2 r +a : Point 2 r +b : Point 2 r +c : Point 2 r +d : [Point 2 r] +rest) = + let p :: Point 2 r +p = Point 2 r +b Point 2 r -> Vector 2 r -> Point 2 r forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> Vector d r -> point .+^ ((Point 2 r -c Point 2 r -> Point 2 r -> Vector 2 r +c Point 2 r -> Point 2 r -> Vector 2 r forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. Point 2 r -b) Vector 2 r -> r -> Vector 2 r +b) Vector 2 r -> r -> Vector 2 r forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector ^/ r 2) - q :: Point 2 r -q = Point 2 r -c Point 2 r -> Vector 2 r -> Point 2 r + q :: Point 2 r +q = Point 2 r +c Point 2 r -> Vector 2 r -> Point 2 r forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> Vector d r -> point .+^ ((Point 2 r -d Point 2 r -> Point 2 r -> Vector 2 r +d Point 2 r -> Point 2 r -> Vector 2 r forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. Point 2 r -c) Vector 2 r -> r -> Vector 2 r +c) Vector 2 r -> r -> Vector 2 r forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector ^/ r 3) - r :: Point 2 r -r = Point 2 r -p Point 2 r -> Vector 2 r -> Point 2 r + r :: Point 2 r +r = Point 2 r +p Point 2 r -> Vector 2 r -> Point 2 r forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> Vector d r -> point .+^ ((Point 2 r -q Point 2 r -> Point 2 r -> Vector 2 r +q Point 2 r -> Point 2 r -> Vector 2 r forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. Point 2 r -p) Vector 2 r -> r -> Vector 2 r +p) Vector 2 r -> r -> Vector 2 r forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector @@ -1237,33 +1237,33 @@ -> Point 2 r -> Point 2 r -> Point 2 r -> CubicBezier (Point 2 r) forall point. point -> point -> point -> point -> CubicBezier point Bezier3 Point 2 r -a Point 2 r -b Point 2 r -p Point 2 r -r) CubicBezier (Point 2 r) +a Point 2 r +b Point 2 r +p Point 2 r +r) CubicBezier (Point 2 r) -> [CubicBezier (Point 2 r)] -> [CubicBezier (Point 2 r)] forall a. a -> [a] -> [a] : [Point 2 r] -> [CubicBezier (Point 2 r)] forall r. Fractional r => [Point 2 r] -> [CubicBezier (Point 2 r)] splineToCubicBeziers (Point 2 r -r Point 2 r -> [Point 2 r] -> [Point 2 r] +r Point 2 r -> [Point 2 r] -> [Point 2 r] forall a. a -> [a] -> [a] : Point 2 r -q Point 2 r -> [Point 2 r] -> [Point 2 r] +q Point 2 r -> [Point 2 r] -> [Point 2 r] forall a. a -> [a] -> [a] : Point 2 r -d Point 2 r -> [Point 2 r] -> [Point 2 r] +d Point 2 r -> [Point 2 r] -> [Point 2 r] forall a. a -> [a] -> [a] : [Point 2 r] -rest) +rest) splineToCubicBeziers [Point 2 r] _ = String -> [CubicBezier (Point 2 r)] forall a. HasCallStack => String -> a error String "splineToCubicBeziers needs at least four points" -instance (Coordinate r, Fractional r, Eq r) => IpeReadText (Path r) where - ipeReadText :: ConversionError -> Either ConversionError (Path r) +instance (Coordinate r, Fractional r, Eq r) => IpeReadText (Path r) where + ipeReadText :: ConversionError -> Either ConversionError (Path r) ipeReadText = (NonEmpty (PathSegment r) -> Path r) -> Either ConversionError (NonEmpty (PathSegment r)) -> Either ConversionError (Path r) @@ -1279,7 +1279,7 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . NonEmpty (PathSegment r) -> Seq (PathSegment r) forall a. NonEmpty a -> Seq a -fromNonEmpty') (Either ConversionError (NonEmpty (PathSegment r)) +fromNonEmpty') (Either ConversionError (NonEmpty (PathSegment r)) -> Either ConversionError (Path r)) -> (ConversionError -> Either ConversionError (NonEmpty (PathSegment r))) @@ -1293,9 +1293,9 @@ ConversionError -> Either ConversionError t ipeReadText where - fromNonEmpty' :: NonEmpty.NonEmpty a -> Seq.Seq a - fromNonEmpty' :: forall a. NonEmpty a -> Seq a -fromNonEmpty' = NonEmpty a -> Seq a + fromNonEmpty' :: NonEmpty.NonEmpty a -> Seq.Seq a + fromNonEmpty' :: forall a. NonEmpty a -> Seq a +fromNonEmpty' = NonEmpty a -> Seq a forall (f :: * -> *) (g :: * -> *) a. (HasFromFoldable f, Foldable g) => g a -> f a @@ -1311,17 +1311,17 @@ -- name of the attribute, and calling the right ipeReadText value. This class -- is just so that reifyConstraint in `ipeReadRec` can select the right -- typeclass when building the rec. -class IpeReadAttr t where - ipeReadAttr :: Text -> Node Text Text -> Either ConversionError t +class IpeReadAttr t where + ipeReadAttr :: Text -> Node Text Text -> Either ConversionError t -instance IpeReadText (Apply f at) => IpeReadAttr (Attr f at) where - ipeReadAttr :: ConversionError +instance IpeReadText (Apply f at) => IpeReadAttr (Attr f at) where + ipeReadAttr :: ConversionError -> Node ConversionError ConversionError -> Either ConversionError (Attr f at) -ipeReadAttr ConversionError -n (Element ConversionError -_ [(ConversionError, ConversionError)] -ats [Node ConversionError ConversionError] +ipeReadAttr ConversionError +n (Element ConversionError +_ [(ConversionError, ConversionError)] +ats [Node ConversionError ConversionError] _) = Maybe (Apply f at) -> Attr f at forall u (f :: TyFun u (*) -> *) (label :: u). Maybe (Apply f label) -> Attr f label @@ -1346,8 +1346,8 @@ -> [(ConversionError, ConversionError)] -> Maybe ConversionError forall a b. Eq a => a -> [(a, b)] -> Maybe b lookup ConversionError -n [(ConversionError, ConversionError)] -ats) +n [(ConversionError, ConversionError)] +ats) ipeReadAttr ConversionError _ Node ConversionError ConversionError _ = ConversionError -> Either ConversionError (Attr f at) @@ -1356,9 +1356,9 @@ "IpeReadAttr: Element expected, Text found" -- | Combination of zipRecWith and traverse -zipTraverseWith :: forall f g h i (rs :: [AttributeUniverse]). Applicative h - => (forall (x :: AttributeUniverse). f x -> g x -> h (i x)) - -> Rec f rs -> Rec g rs -> h (Rec i rs) +zipTraverseWith :: forall f g h i (rs :: [AttributeUniverse]). Applicative h + => (forall (x :: AttributeUniverse). f x -> g x -> h (i x)) + -> Rec f rs -> Rec g rs -> h (Rec i rs) zipTraverseWith :: forall (f :: AttributeUniverse -> *) (g :: AttributeUniverse -> *) (h :: * -> *) (i :: AttributeUniverse -> *) (rs :: [AttributeUniverse]). @@ -1375,12 +1375,12 @@ Rec i '[] forall {u} (a :: u -> *). Rec a '[] RNil -zipTraverseWith forall (x :: AttributeUniverse). f x -> g x -> h (i x) -f (f r -x :& Rec f rs -xs) (g r -y :& Rec g rs -ys) = i r -> Rec i rs -> Rec i rs +zipTraverseWith forall (x :: AttributeUniverse). f x -> g x -> h (i x) +f (f r +x :& Rec f rs +xs) (g r +y :& Rec g rs +ys) = i r -> Rec i rs -> Rec i rs i r -> Rec i rs -> Rec i (r : rs) forall {u} (a :: u -> *) (r :: u) (rs :: [u]). a r -> Rec a rs -> Rec a (r : rs) @@ -1389,10 +1389,10 @@ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> f r -> g r -> h (i r) forall (x :: AttributeUniverse). f x -> g x -> h (i x) -f f r -x g r +f f r +x g r g r -y h (Rec i rs -> Rec i rs) -> h (Rec i rs) -> h (Rec i rs) +y h (Rec i rs -> Rec i rs) -> h (Rec i rs) -> h (Rec i rs) forall a b. h (a -> b) -> h a -> h b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (forall (x :: AttributeUniverse). f x -> g x -> h (i x)) @@ -1405,22 +1405,22 @@ -> Rec f rs -> Rec g rs -> h (Rec i rs) zipTraverseWith f x -> g x -> h (i x) forall (x :: AttributeUniverse). f x -> g x -> h (i x) -f Rec f rs -xs Rec g rs +f Rec f rs +xs Rec g rs Rec g rs -ys +ys -- | Reading the Attributes into a Rec (Attr f), all based on the types of f -- (the type family mapping labels to types), and a list of labels (ats). -ipeReadRec :: forall f ats. - ( RecApplicative ats - , ReifyConstraint IpeReadAttr (Attr f) ats - , RecAll (Attr f) ats IpeReadAttr - , AllConstrained IpeAttrName ats +ipeReadRec :: forall f ats. + ( RecApplicative ats + , ReifyConstraint IpeReadAttr (Attr f) ats + , RecAll (Attr f) ats IpeReadAttr + , AllConstrained IpeAttrName ats ) - => Proxy f -> Proxy ats + => Proxy f -> Proxy ats -> Node Text Text - -> Either ConversionError (Rec (Attr f) ats) + -> Either ConversionError (Rec (Attr f) ats) ipeReadRec :: forall (f :: TyFun AttributeUniverse (*) -> *) (ats :: [AttributeUniverse]). (RecApplicative ats, ReifyConstraint IpeReadAttr (Attr f) ats, @@ -1431,8 +1431,8 @@ -> Either ConversionError (Rec (Attr f) ats) ipeReadRec Proxy f _ Proxy ats -_ Node ConversionError ConversionError -x = (forall (x :: AttributeUniverse). +_ Node ConversionError ConversionError +x = (forall (x :: AttributeUniverse). Const ConversionError x -> (:.) (Dict IpeReadAttr) (Attr f) x -> Either ConversionError (Attr f x)) @@ -1452,17 +1452,17 @@ Const ConversionError x -> (:.) (Dict IpeReadAttr) (Attr f) x -> Either ConversionError (Attr f x) -f (Rec (Attr Any) ats -> Rec (Const ConversionError) ats +f (Rec (Attr Any) ats -> Rec (Const ConversionError) ats forall (rs :: [AttributeUniverse]) (f :: AttributeUniverse -> *). AllConstrained IpeAttrName rs => Rec f rs -> Rec (Const ConversionError) rs writeAttrNames Rec (Attr Any) ats forall {f :: TyFun AttributeUniverse (*) -> *}. Rec (Attr f) ats -r) Rec (Dict IpeReadAttr :. Attr f) ats -r' +r) Rec (Dict IpeReadAttr :. Attr f) ats +r' where - r :: Rec (Attr f) ats -r = (forall (x :: AttributeUniverse). Attr f x) -> Rec (Attr f) ats + r :: Rec (Attr f) ats +r = (forall (x :: AttributeUniverse). Attr f x) -> Rec (Attr f) ats forall {u} (rs :: [u]) (f :: u -> *). RecApplicative rs => (forall (x :: u). f x) -> Rec f rs @@ -1474,8 +1474,8 @@ GAttr Maybe (Apply f x) forall a. Maybe a Nothing) - r' :: Rec (Dict IpeReadAttr :. Attr f) ats -r' = forall {u} (c :: * -> Constraint) (f :: u -> *) (rs :: [u]). + r' :: Rec (Dict IpeReadAttr :. Attr f) ats +r' = forall {u} (c :: * -> Constraint) (f :: u -> *) (rs :: [u]). ReifyConstraint c f rs => Rec f rs -> Rec (Dict c :. f) rs forall (c :: * -> Constraint) (f :: AttributeUniverse -> *) @@ -1484,19 +1484,19 @@ Rec f rs -> Rec (Dict c :. f) rs reifyConstraint @IpeReadAttr Rec (Attr f) ats forall {f :: TyFun AttributeUniverse (*) -> *}. Rec (Attr f) ats -r +r - f :: forall at. - Const Text at - -> (Dict IpeReadAttr :. Attr f) at - -> Either ConversionError (Attr f at) - f :: forall (x :: AttributeUniverse). + f :: forall at. + Const Text at + -> (Dict IpeReadAttr :. Attr f) at + -> Either ConversionError (Attr f at) + f :: forall (x :: AttributeUniverse). Const ConversionError x -> (:.) (Dict IpeReadAttr) (Attr f) x -> Either ConversionError (Attr f x) -f (Const ConversionError -n) (Compose (Dict Attr f at +f (Const ConversionError +n) (Compose (Dict Attr f at _)) = ConversionError -> Node ConversionError ConversionError -> Either ConversionError (Attr f at) @@ -1505,22 +1505,22 @@ ConversionError -> Node ConversionError ConversionError -> Either ConversionError t ipeReadAttr ConversionError -n Node ConversionError ConversionError -x +n Node ConversionError ConversionError +x -- | Reader for records. Given a proxy of some ipe type i, and a proxy of an -- coordinate type r, read the IpeAttributes for i from the xml node. -ipeReadAttrs :: forall proxy proxy' i r f ats. - ( f ~ AttrMapSym1 r, ats ~ AttributesOf i - , ReifyConstraint IpeReadAttr (Attr f) ats - , RecApplicative ats - , RecAll (Attr f) ats IpeReadAttr - , AllConstrained IpeAttrName ats +ipeReadAttrs :: forall proxy proxy' i r f ats. + ( f ~ AttrMapSym1 r, ats ~ AttributesOf i + , ReifyConstraint IpeReadAttr (Attr f) ats + , RecApplicative ats + , RecAll (Attr f) ats IpeReadAttr + , AllConstrained IpeAttrName ats ) - => proxy i -> proxy' r + => proxy i -> proxy' r -> Node Text Text - -> Either ConversionError (IpeAttributes i r) + -> Either ConversionError (IpeAttributes i r) ipeReadAttrs :: forall (proxy :: (* -> *) -> *) (proxy' :: * -> *) (i :: * -> *) r (f :: TyFun AttributeUniverse (*) -> *) (ats :: [AttributeUniverse]). @@ -1563,9 +1563,9 @@ -> Either ConversionError (Rec (Attr f) ats) ipeReadRec (Proxy f forall {k} (t :: k). Proxy t -Proxy :: Proxy f) (Proxy ats +Proxy :: Proxy f) (Proxy ats forall {k} (t :: k). Proxy t -Proxy :: Proxy ats) +Proxy :: Proxy ats) -- testSym :: B.ByteString @@ -1586,15 +1586,15 @@ -- | If we can ipeRead an ipe element, and we can ipeReadAttrs its attributes -- we can properly read an ipe object using ipeReadObject -ipeReadObject :: ( IpeRead (i r) - , f ~ AttrMapSym1 r, ats ~ AttributesOf i - , RecApplicative ats - , ReifyConstraint IpeReadAttr (Attr f) ats - , RecAll (Attr f) ats IpeReadAttr - , AllConstrained IpeAttrName ats +ipeReadObject :: ( IpeRead (i r) + , f ~ AttrMapSym1 r, ats ~ AttributesOf i + , RecApplicative ats + , ReifyConstraint IpeReadAttr (Attr f) ats + , RecAll (Attr f) ats IpeReadAttr + , AllConstrained IpeAttrName ats ) - => Proxy i -> proxy r -> Node Text Text - -> Either ConversionError (i r :+ IpeAttributes i r) + => Proxy i -> proxy r -> Node Text Text + -> Either ConversionError (i r :+ IpeAttributes i r) ipeReadObject :: forall (i :: * -> *) r (f :: TyFun AttributeUniverse (*) -> *) (ats :: [AttributeUniverse]) (proxy :: * -> *). (IpeRead (i r), f ~ AttrMapSym1 r, ats ~ AttributesOf i, @@ -1604,10 +1604,10 @@ -> proxy r -> Node ConversionError ConversionError -> Either ConversionError (i r :+ IpeAttributes i r) -ipeReadObject Proxy i -prI proxy r -prR Node ConversionError ConversionError -xml = i r -> Attributes' r ats -> i r :+ Attributes' r ats +ipeReadObject Proxy i +prI proxy r +prR Node ConversionError ConversionError +xml = i r -> Attributes' r ats -> i r :+ Attributes' r ats forall core extra. core -> extra -> core :+ extra (:+) (i r -> Attributes' r ats -> i r :+ Attributes' r ats) -> Either ConversionError (i r) @@ -1620,7 +1620,7 @@ IpeRead t => Node ConversionError ConversionError -> Either ConversionError t ipeRead Node ConversionError ConversionError -xml Either +xml Either ConversionError (Attributes' r ats -> i r :+ Attributes' r ats) -> Either ConversionError (Attributes' r ats) -> Either ConversionError (i r :+ Attributes' r ats) @@ -1644,39 +1644,39 @@ -> Node ConversionError ConversionError -> Either ConversionError (IpeAttributes i r) ipeReadAttrs Proxy i -prI proxy r -prR Node ConversionError ConversionError -xml +prI proxy r +prR Node ConversionError ConversionError +xml -------------------------------------------------------------------------------- -- | Ipe read instances -instance Coordinate r => IpeRead (IpeSymbol r) where - ipeRead :: Node ConversionError ConversionError +instance Coordinate r => IpeRead (IpeSymbol r) where + ipeRead :: Node ConversionError ConversionError -> Either ConversionError (IpeSymbol r) ipeRead (Element ConversionError -"use" [(ConversionError, ConversionError)] -ats [Node ConversionError ConversionError] +"use" [(ConversionError, ConversionError)] +ats [Node ConversionError ConversionError] _) = case ConversionError -> [(ConversionError, ConversionError)] -> Maybe ConversionError forall a b. Eq a => a -> [(a, b)] -> Maybe b lookup ConversionError "pos" [(ConversionError, ConversionError)] -ats of +ats of Maybe ConversionError Nothing -> ConversionError -> Either ConversionError (IpeSymbol r) forall a b. a -> Either a b Left ConversionError "symbol without position" - Just ConversionError -ps -> (Point 2 r -> ConversionError -> IpeSymbol r) + Just ConversionError +ps -> (Point 2 r -> ConversionError -> IpeSymbol r) -> ConversionError -> Point 2 r -> IpeSymbol r forall a b c. (a -> b -> c) -> b -> a -> c flip Point 2 r -> ConversionError -> IpeSymbol r forall r. Point 2 r -> ConversionError -> IpeSymbol r Symbol ConversionError -name (Point 2 r -> IpeSymbol r) +name (Point 2 r -> IpeSymbol r) -> Either ConversionError (Point 2 r) -> Either ConversionError (IpeSymbol r) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -1685,10 +1685,10 @@ IpeReadText t => ConversionError -> Either ConversionError t ipeReadText ConversionError -ps +ps where - name :: ConversionError -name = ConversionError -> Maybe ConversionError -> ConversionError + name :: ConversionError +name = ConversionError -> Maybe ConversionError -> ConversionError forall a. a -> Maybe a -> a fromMaybe ConversionError "mark/disk(sx)" (Maybe ConversionError -> ConversionError) @@ -1699,7 +1699,7 @@ forall a b. Eq a => a -> [(a, b)] -> Maybe b lookup ConversionError "name" [(ConversionError, ConversionError)] -ats +ats ipeRead Node ConversionError ConversionError _ = ConversionError -> Either ConversionError (IpeSymbol r) forall a b. a -> Either a b @@ -1738,30 +1738,30 @@ forall {a} {c :: * -> *} {tag} {b}. IsString a => NodeG c tag b -> Either a b -unT +unT where - unT :: NodeG c tag b -> Either a b -unT (Text b -t) = b -> Either a b + unT :: NodeG c tag b -> Either a b +unT (Text b +t) = b -> Either a b forall a b. b -> Either a b Right b -t - unT NodeG c tag b +t + unT NodeG c tag b _ = a -> Either a b forall a b. a -> Either a b Left a "allText: Expected Text, found an Element" -instance (Coordinate r, Fractional r, Eq r) => IpeRead (Path r) where - ipeRead :: Node ConversionError ConversionError +instance (Coordinate r, Fractional r, Eq r) => IpeRead (Path r) where + ipeRead :: Node ConversionError ConversionError -> Either ConversionError (Path r) ipeRead (Element ConversionError "path" [(ConversionError, ConversionError)] -_ [Node ConversionError ConversionError] -chs) = [Node ConversionError ConversionError] +_ [Node ConversionError ConversionError] +chs) = [Node ConversionError ConversionError] -> Either ConversionError ConversionError allText [Node ConversionError ConversionError] -chs Either ConversionError ConversionError +chs Either ConversionError ConversionError -> (ConversionError -> Either ConversionError (Path r)) -> Either ConversionError (Path r) forall a b. @@ -1780,12 +1780,12 @@ "path: expected element, found text" -lookup' :: Text -> [(Text,a)] -> Either ConversionError a +lookup' :: Text -> [(Text,a)] -> Either ConversionError a lookup' :: forall a. ConversionError -> [(ConversionError, a)] -> Either ConversionError a -lookup' ConversionError -k = Either ConversionError a +lookup' ConversionError +k = Either ConversionError a -> (a -> Either ConversionError a) -> Maybe a -> Either ConversionError a @@ -1799,7 +1799,7 @@ "lookup' " ConversionError -> ConversionError -> ConversionError forall a. Semigroup a => a -> a -> a <> ConversionError -k ConversionError -> ConversionError -> ConversionError +k ConversionError -> ConversionError -> ConversionError forall a. Semigroup a => a -> a -> a <> ConversionError " not found") a -> Either ConversionError a @@ -1812,21 +1812,21 @@ . ConversionError -> [(ConversionError, a)] -> Maybe a forall a b. Eq a => a -> [(a, b)] -> Maybe b lookup ConversionError -k +k -instance Coordinate r => IpeRead (TextLabel r) where - ipeRead :: Node ConversionError ConversionError +instance Coordinate r => IpeRead (TextLabel r) where + ipeRead :: Node ConversionError ConversionError -> Either ConversionError (TextLabel r) ipeRead (Element ConversionError -"text" [(ConversionError, ConversionError)] -ats [Node ConversionError ConversionError] -chs) +"text" [(ConversionError, ConversionError)] +ats [Node ConversionError ConversionError] +chs) | ConversionError -> [(ConversionError, ConversionError)] -> Maybe ConversionError forall a b. Eq a => a -> [(a, b)] -> Maybe b lookup ConversionError "type" [(ConversionError, ConversionError)] -ats Maybe ConversionError -> Maybe ConversionError -> Bool +ats Maybe ConversionError -> Maybe ConversionError -> Bool forall a. Eq a => a -> a -> Bool == ConversionError -> Maybe ConversionError forall a. a -> Maybe a @@ -1841,7 +1841,7 @@ <$> [Node ConversionError ConversionError] -> Either ConversionError ConversionError allText [Node ConversionError ConversionError] -chs +chs Either ConversionError (Point 2 r -> TextLabel r) -> Either ConversionError (Point 2 r) -> Either ConversionError (TextLabel r) @@ -1857,7 +1857,7 @@ -> [(ConversionError, a)] -> Either ConversionError a lookup' ConversionError "pos" [(ConversionError, ConversionError)] -ats Either ConversionError ConversionError +ats Either ConversionError ConversionError -> (ConversionError -> Either ConversionError (Point 2 r)) -> Either ConversionError (Point 2 r) forall a b. @@ -1882,19 +1882,19 @@ -instance Coordinate r => IpeRead (MiniPage r) where - ipeRead :: Node ConversionError ConversionError +instance Coordinate r => IpeRead (MiniPage r) where + ipeRead :: Node ConversionError ConversionError -> Either ConversionError (MiniPage r) ipeRead (Element ConversionError -"text" [(ConversionError, ConversionError)] -ats [Node ConversionError ConversionError] -chs) +"text" [(ConversionError, ConversionError)] +ats [Node ConversionError ConversionError] +chs) | ConversionError -> [(ConversionError, ConversionError)] -> Maybe ConversionError forall a b. Eq a => a -> [(a, b)] -> Maybe b lookup ConversionError "type" [(ConversionError, ConversionError)] -ats Maybe ConversionError -> Maybe ConversionError -> Bool +ats Maybe ConversionError -> Maybe ConversionError -> Bool forall a. Eq a => a -> a -> Bool == ConversionError -> Maybe ConversionError forall a. a -> Maybe a @@ -1909,7 +1909,7 @@ <$> [Node ConversionError ConversionError] -> Either ConversionError ConversionError allText [Node ConversionError ConversionError] -chs +chs Either ConversionError (Point 2 r -> r -> MiniPage r) -> Either ConversionError (Point 2 r) -> Either ConversionError (r -> MiniPage r) @@ -1925,7 +1925,7 @@ -> [(ConversionError, a)] -> Either ConversionError a lookup' ConversionError "pos" [(ConversionError, ConversionError)] -ats Either ConversionError ConversionError +ats Either ConversionError ConversionError -> (ConversionError -> Either ConversionError (Point 2 r)) -> Either ConversionError (Point 2 r) forall a b. @@ -1951,7 +1951,7 @@ -> [(ConversionError, a)] -> Either ConversionError a lookup' ConversionError "width" [(ConversionError, ConversionError)] -ats Either ConversionError ConversionError +ats Either ConversionError ConversionError -> (ConversionError -> Either ConversionError r) -> Either ConversionError r forall a b. @@ -1975,12 +1975,12 @@ "MiniPage: Expected element, found text" -instance Coordinate r => IpeRead (Image r) where - ipeRead :: Node ConversionError ConversionError +instance Coordinate r => IpeRead (Image r) where + ipeRead :: Node ConversionError ConversionError -> Either ConversionError (Image r) ipeRead (Element ConversionError -"image" [(ConversionError, ConversionError)] -ats [Node ConversionError ConversionError] +"image" [(ConversionError, ConversionError)] +ats [Node ConversionError ConversionError] _) = () -> Rectangle (Point 2 r) -> Image r forall r. () -> Rectangle (Point 2 r) -> Image r Image () (Rectangle (Point 2 r) -> Image r) @@ -1995,7 +1995,7 @@ -> [(ConversionError, a)] -> Either ConversionError a lookup' ConversionError "rect" [(ConversionError, ConversionError)] -ats Either ConversionError ConversionError +ats Either ConversionError ConversionError -> (ConversionError -> Either ConversionError (Rectangle (Point 2 r))) -> Either ConversionError (Rectangle (Point 2 r)) @@ -2014,11 +2014,11 @@ Left ConversionError "Image: Element expected, text found" -instance (Coordinate r, Fractional r, Eq r) => IpeRead (IpeObject r) where - ipeRead :: Node ConversionError ConversionError +instance (Coordinate r, Fractional r, Eq r) => IpeRead (IpeObject r) where + ipeRead :: Node ConversionError ConversionError -> Either ConversionError (IpeObject r) -ipeRead Node ConversionError ConversionError -x = [Either ConversionError (IpeObject r)] +ipeRead Node ConversionError ConversionError +x = [Either ConversionError (IpeObject r)] -> Either ConversionError (IpeObject r) forall a. [Either ConversionError a] -> Either ConversionError a firstRight [ (IpeSymbol r @@ -2060,8 +2060,8 @@ ipeReadObject (Proxy IpeSymbol forall {k} (t :: k). Proxy t Proxy :: Proxy IpeSymbol) Proxy r -r Node ConversionError ConversionError -x +r Node ConversionError ConversionError +x , (Path r :+ Attributes (AttrMapSym1 r) @@ -2104,8 +2104,8 @@ ipeReadObject (Proxy Path forall {k} (t :: k). Proxy t Proxy :: Proxy Path) Proxy r -r Node ConversionError ConversionError -x +r Node ConversionError ConversionError +x , (Group r :+ Attributes (AttrMapSym1 r) '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]) @@ -2139,8 +2139,8 @@ ipeReadObject (Proxy Group forall {k} (t :: k). Proxy t Proxy :: Proxy Group) Proxy r -r Node ConversionError ConversionError -x +r Node ConversionError ConversionError +x , (TextLabel r :+ Attributes (AttrMapSym1 r) CommonAttributes) -> IpeObject r IpeObject' TextLabel r -> IpeObject r @@ -2168,8 +2168,8 @@ ipeReadObject (Proxy TextLabel forall {k} (t :: k). Proxy t Proxy :: Proxy TextLabel) Proxy r -r Node ConversionError ConversionError -x +r Node ConversionError ConversionError +x , (MiniPage r :+ Attributes (AttrMapSym1 r) CommonAttributes) -> IpeObject r IpeObject' MiniPage r -> IpeObject r @@ -2197,8 +2197,8 @@ ipeReadObject (Proxy MiniPage forall {k} (t :: k). Proxy t Proxy :: Proxy MiniPage) Proxy r -r Node ConversionError ConversionError -x +r Node ConversionError ConversionError +x , (Image r :+ Attributes (AttrMapSym1 r) CommonAttributes) -> IpeObject r IpeObject' Image r -> IpeObject r @@ -2226,16 +2226,16 @@ ipeReadObject (Proxy Image forall {k} (t :: k). Proxy t Proxy :: Proxy Image) Proxy r -r Node ConversionError ConversionError -x +r Node ConversionError ConversionError +x ] where - r :: Proxy r -r = Proxy r + r :: Proxy r +r = Proxy r forall {k} (t :: k). Proxy t -Proxy :: Proxy r +Proxy :: Proxy r -firstRight :: [Either ConversionError a] -> Either ConversionError a +firstRight :: [Either ConversionError a] -> Either ConversionError a firstRight :: forall a. [Either ConversionError a] -> Either ConversionError a firstRight = Either ConversionError a -> (a -> Either ConversionError a) @@ -2283,13 +2283,13 @@ _Right) -instance (Coordinate r, Eq r) => IpeRead (Group r) where - ipeRead :: Node ConversionError ConversionError +instance (Coordinate r, Eq r) => IpeRead (Group r) where + ipeRead :: Node ConversionError ConversionError -> Either ConversionError (Group r) ipeRead (Element ConversionError "group" [(ConversionError, ConversionError)] -_ [Node ConversionError ConversionError] -chs) = Group r -> Either ConversionError (Group r) +_ [Node ConversionError ConversionError] +chs) = Group r -> Either ConversionError (Group r) forall a b. b -> Either a b Right (Group r -> Either ConversionError (Group r)) -> ([Node ConversionError ConversionError] -> Group r) @@ -2327,7 +2327,7 @@ -> Either ConversionError (Group r) forall a b. (a -> b) -> a -> b $ [Node ConversionError ConversionError] -chs +chs ipeRead Node ConversionError ConversionError _ = ConversionError -> Either ConversionError (Group r) forall a b. a -> Either a b @@ -2336,11 +2336,11 @@ instance IpeRead LayerName where - ipeRead :: Node ConversionError ConversionError + ipeRead :: Node ConversionError ConversionError -> Either ConversionError LayerName ipeRead (Element ConversionError -"layer" [(ConversionError, ConversionError)] -ats [Node ConversionError ConversionError] +"layer" [(ConversionError, ConversionError)] +ats [Node ConversionError ConversionError] _) = ConversionError -> LayerName LayerName (ConversionError -> LayerName) -> Either ConversionError ConversionError @@ -2354,7 +2354,7 @@ -> [(ConversionError, a)] -> Either ConversionError a lookup' ConversionError "name" [(ConversionError, ConversionError)] -ats +ats ipeRead Node ConversionError ConversionError _ = ConversionError -> Either ConversionError LayerName forall a b. a -> Either a b @@ -2362,13 +2362,13 @@ "layer: Expected element, found text" instance IpeRead View where - ipeRead :: Node ConversionError ConversionError -> Either ConversionError View + ipeRead :: Node ConversionError ConversionError -> Either ConversionError View ipeRead (Element ConversionError -"view" [(ConversionError, ConversionError)] -ats [Node ConversionError ConversionError] -_) = (\ConversionError -lrs LayerName -a -> [LayerName] -> LayerName -> View +"view" [(ConversionError, ConversionError)] +ats [Node ConversionError ConversionError] +_) = (\ConversionError +lrs LayerName +a -> [LayerName] -> LayerName -> View View ((ConversionError -> LayerName) -> [ConversionError] -> [LayerName] forall a b. (a -> b) -> [a] -> [b] map ConversionError -> LayerName @@ -2377,8 +2377,8 @@ forall a b. (a -> b) -> a -> b $ ConversionError -> [ConversionError] T.words ConversionError -lrs) LayerName -a) +lrs) LayerName +a) (ConversionError -> LayerName -> View) -> Either ConversionError ConversionError -> Either ConversionError (LayerName -> View) @@ -2391,7 +2391,7 @@ -> [(ConversionError, a)] -> Either ConversionError a lookup' ConversionError "layers" [(ConversionError, ConversionError)] -ats +ats Either ConversionError (LayerName -> View) -> Either ConversionError LayerName -> Either ConversionError View forall a b. @@ -2406,7 +2406,7 @@ -> [(ConversionError, a)] -> Either ConversionError a lookup' ConversionError "active" [(ConversionError, ConversionError)] -ats Either ConversionError ConversionError +ats Either ConversionError ConversionError -> (ConversionError -> Either ConversionError LayerName) -> Either ConversionError LayerName forall a b. @@ -2427,13 +2427,13 @@ -- TODO: this instance throws away all of our error collecting (and is pretty -- slow/stupid since it tries parsing all children with all parsers) -instance (Coordinate r, Eq r) => IpeRead (IpePage r) where - ipeRead :: Node ConversionError ConversionError +instance (Coordinate r, Eq r) => IpeRead (IpePage r) where + ipeRead :: Node ConversionError ConversionError -> Either ConversionError (IpePage r) ipeRead (Element ConversionError "page" [(ConversionError, ConversionError)] -_ [Node ConversionError ConversionError] -chs) = IpePage r -> Either ConversionError (IpePage r) +_ [Node ConversionError ConversionError] +chs) = IpePage r -> Either ConversionError (IpePage r) forall a b. b -> Either a b Right (IpePage r -> Either ConversionError (IpePage r)) -> IpePage r -> Either ConversionError (IpePage r) @@ -2445,17 +2445,17 @@ IpeRead a => [Node ConversionError ConversionError] -> [a] readAll [Node ConversionError ConversionError] -chs) ([Node ConversionError ConversionError] -> [View] +chs) ([Node ConversionError ConversionError] -> [View] forall a. IpeRead a => [Node ConversionError ConversionError] -> [a] readAll [Node ConversionError ConversionError] -chs) ([Node ConversionError ConversionError] -> [IpeObject r] +chs) ([Node ConversionError ConversionError] -> [IpeObject r] forall a. IpeRead a => [Node ConversionError ConversionError] -> [a] readAll [Node ConversionError ConversionError] -chs) +chs) ipeRead Node ConversionError ConversionError _ = ConversionError -> Either ConversionError (IpePage r) forall a b. a -> Either a b @@ -2469,7 +2469,7 @@ -- readObjects = withDef [] . readAll -- | try reading everything as an a. Throw away whatever fails. -readAll :: IpeRead a => [Node Text Text] -> [a] +readAll :: IpeRead a => [Node Text Text] -> [a] readAll :: forall a. IpeRead a => [Node ConversionError ConversionError] -> [a] @@ -2492,24 +2492,24 @@ ipeRead -instance (Coordinate r, Eq r) => IpeRead (IpeFile r) where - ipeRead :: Node ConversionError ConversionError +instance (Coordinate r, Eq r) => IpeRead (IpeFile r) where + ipeRead :: Node ConversionError ConversionError -> Either ConversionError (IpeFile r) ipeRead (Element ConversionError "ipe" [(ConversionError, ConversionError)] -_ [Node ConversionError ConversionError] -chs) = case [Node ConversionError ConversionError] -> [IpePage r] +_ [Node ConversionError ConversionError] +chs) = case [Node ConversionError ConversionError] -> [IpePage r] forall a. IpeRead a => [Node ConversionError ConversionError] -> [a] readAll [Node ConversionError ConversionError] -chs of +chs of [] -> ConversionError -> Either ConversionError (IpeFile r) forall a b. a -> Either a b Left ConversionError "Ipe: no pages found" - [IpePage r] -pgs -> IpeFile r -> Either ConversionError (IpeFile r) + [IpePage r] +pgs -> IpeFile r -> Either ConversionError (IpeFile r) forall a b. b -> Either a b Right (IpeFile r -> Either ConversionError (IpeFile r)) -> IpeFile r -> Either ConversionError (IpeFile r) @@ -2524,7 +2524,7 @@ Nothing [] ([IpePage r] -> NonEmpty (IpePage r) forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList [IpePage r] -pgs) +pgs) ipeRead Node ConversionError ConversionError _ = ConversionError -> Either ConversionError (IpeFile r) forall a b. a -> Either a b @@ -2533,13 +2533,13 @@ instance IpeRead IpeStyle where - ipeRead :: Node ConversionError ConversionError + ipeRead :: Node ConversionError ConversionError -> Either ConversionError IpeStyle ipeRead = \case - xml :: Node ConversionError ConversionError -xml@(Element ConversionError -"ipestyle" [(ConversionError, ConversionError)] -ats [Node ConversionError ConversionError] + xml :: Node ConversionError ConversionError +xml@(Element ConversionError +"ipestyle" [(ConversionError, ConversionError)] +ats [Node ConversionError ConversionError] _) -> IpeStyle -> Either ConversionError IpeStyle forall a b. b -> Either a b Right (IpeStyle -> Either ConversionError IpeStyle) @@ -2552,8 +2552,8 @@ forall a b. Eq a => a -> [(a, b)] -> Maybe b lookup ConversionError "name" [(ConversionError, ConversionError)] -ats) Node ConversionError ConversionError -xml +ats) Node ConversionError ConversionError +xml Node ConversionError ConversionError _ -> ConversionError -> Either ConversionError IpeStyle forall a b. a -> Either a b @@ -2594,28 +2594,28 @@ -- | Given a path to a stylesheet, add it to the ipe file with the -- highest priority. Throws an error when this fails. -addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r) +addStyleSheetFrom :: OsPath -> IpeFile r -> IO (IpeFile r) addStyleSheetFrom :: forall r. OsPath -> IpeFile r -> IO (IpeFile r) -addStyleSheetFrom OsPath -fp IpeFile r -f = OsPath -> IO (Either ConversionError IpeStyle) +addStyleSheetFrom OsPath +fp IpeFile r +f = OsPath -> IO (Either ConversionError IpeStyle) readIpeStylesheet OsPath -fp IO (Either ConversionError IpeStyle) +fp IO (Either ConversionError IpeStyle) -> (Either ConversionError IpeStyle -> IO (IpeFile r)) -> IO (IpeFile r) forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - Left ConversionError -err -> String -> IO (IpeFile r) + Left ConversionError +err -> String -> IO (IpeFile r) forall a. String -> IO a forall (m :: * -> *) a. MonadFail m => String -> m a fail (ConversionError -> String forall a. Show a => a -> String show ConversionError -err) - Right IpeStyle -s -> IpeFile r -> IO (IpeFile r) +err) + Right IpeStyle +s -> IpeFile r -> IO (IpeFile r) forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure (IpeFile r -> IO (IpeFile r)) -> IpeFile r -> IO (IpeFile r) @@ -2623,8 +2623,8 @@ $ IpeStyle -> IpeFile r -> IpeFile r forall r. IpeStyle -> IpeFile r -> IpeFile r addStyleSheet IpeStyle -s IpeFile r -f +s IpeFile r +f --------------------------------------------------------------------------------
\ No newline at end of file diff --git a/haddocks/hgeometry/ipe/src/Ipe.Types.html b/haddocks/hgeometry/ipe/src/Ipe.Types.html index 475ab4add..8b5ded45e 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.Types.html +++ b/haddocks/hgeometry/ipe/src/Ipe.Types.html @@ -75,14 +75,14 @@
, View -> LayerName _activeLayer :: LayerName } - deriving (View -> View -> Bool + deriving (View -> View -> Bool (View -> View -> Bool) -> (View -> View -> Bool) -> Eq View forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: View -> View -> Bool == :: View -> View -> Bool $c/= :: View -> View -> Bool /= :: View -> View -> Bool -Eq, Eq View +Eq, Eq View Eq View => (View -> View -> Ordering) -> (View -> View -> Bool) @@ -119,7 +119,7 @@ max :: View -> View -> View $cmin :: View -> View -> View min :: View -> View -> View -Ord, Int -> View -> ShowS +Ord, Int -> View -> ShowS [View] -> ShowS View -> String (Int -> View -> ShowS) @@ -132,7 +132,7 @@ show :: View -> String $cshowList :: [View] -> ShowS showList :: [View] -> ShowS -Show, (forall x. View -> Rep View x) +Show, (forall x. View -> Rep View x) -> (forall x. Rep View x -> View) -> Generic View forall x. Rep View x -> View forall x. View -> Rep View x @@ -147,37 +147,37 @@ -- | Lens to access the layers in this view layerNames :: Lens' View [LayerName] layerNames :: Lens' View [LayerName] -layerNames [LayerName] -> f [LayerName] -f (View [LayerName] -ns LayerName -a) = ([LayerName] -> View) -> f [LayerName] -> f View +layerNames [LayerName] -> f [LayerName] +f (View [LayerName] +ns LayerName +a) = ([LayerName] -> View) -> f [LayerName] -> f View forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\[LayerName] -ns' -> [LayerName] -> LayerName -> View +fmap (\[LayerName] +ns' -> [LayerName] -> LayerName -> View View [LayerName] -ns' LayerName -a) ([LayerName] -> f [LayerName] -f [LayerName] -ns) +ns' LayerName +a) ([LayerName] -> f [LayerName] +f [LayerName] +ns) {-# INLINE layerNames #-} -- | Lens to access the active layer activeLayer :: Lens' View LayerName activeLayer :: Lens' View LayerName -activeLayer LayerName -> f LayerName -f (View [LayerName] -ns LayerName -a) = (LayerName -> View) -> f LayerName -> f View +activeLayer LayerName -> f LayerName +f (View [LayerName] +ns LayerName +a) = (LayerName -> View) -> f LayerName -> f View forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\LayerName -a' -> [LayerName] -> LayerName -> View +fmap (\LayerName +a' -> [LayerName] -> LayerName -> View View [LayerName] -ns LayerName -a') (LayerName -> f LayerName -f LayerName -a) +ns LayerName +a') (LayerName -> f LayerName +f LayerName +a) {-# INLINE activeLayer #-} -- instance Default @@ -189,7 +189,7 @@ , IpeStyle -> Node Text Text _styleData :: Node Text Text } - deriving (IpeStyle -> IpeStyle -> Bool + deriving (IpeStyle -> IpeStyle -> Bool (IpeStyle -> IpeStyle -> Bool) -> (IpeStyle -> IpeStyle -> Bool) -> Eq IpeStyle forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -197,7 +197,7 @@ == :: IpeStyle -> IpeStyle -> Bool $c/= :: IpeStyle -> IpeStyle -> Bool /= :: IpeStyle -> IpeStyle -> Bool -Eq,Int -> IpeStyle -> ShowS +Eq,Int -> IpeStyle -> ShowS [IpeStyle] -> ShowS IpeStyle -> String (Int -> IpeStyle -> ShowS) @@ -210,7 +210,7 @@ show :: IpeStyle -> String $cshowList :: [IpeStyle] -> ShowS showList :: [IpeStyle] -> ShowS -Show,(forall x. IpeStyle -> Rep IpeStyle x) +Show,(forall x. IpeStyle -> Rep IpeStyle x) -> (forall x. Rep IpeStyle x -> IpeStyle) -> Generic IpeStyle forall x. Rep IpeStyle x -> IpeStyle forall x. IpeStyle -> Rep IpeStyle x @@ -225,37 +225,37 @@ -- | Lens to access the style name styleName :: Lens' IpeStyle (Maybe Text) styleName :: Lens' IpeStyle (Maybe Text) -styleName Maybe Text -> f (Maybe Text) -f (IpeStyle Maybe Text -n Node Text Text -sd) = (Maybe Text -> IpeStyle) -> f (Maybe Text) -> f IpeStyle +styleName Maybe Text -> f (Maybe Text) +f (IpeStyle Maybe Text +n Node Text Text +sd) = (Maybe Text -> IpeStyle) -> f (Maybe Text) -> f IpeStyle forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Maybe Text -n' -> Maybe Text -> Node Text Text -> IpeStyle +fmap (\Maybe Text +n' -> Maybe Text -> Node Text Text -> IpeStyle IpeStyle Maybe Text -n' Node Text Text -sd) (Maybe Text -> f (Maybe Text) -f Maybe Text -n) +n' Node Text Text +sd) (Maybe Text -> f (Maybe Text) +f Maybe Text +n) {-# INLINE styleName #-} -- | Lens to access the style data styleData :: Lens' IpeStyle (Node Text Text) styleData :: Lens' IpeStyle (Node Text Text) -styleData Node Text Text -> f (Node Text Text) -f (IpeStyle Maybe Text -n Node Text Text -sd) = (Node Text Text -> IpeStyle) -> f (Node Text Text) -> f IpeStyle +styleData Node Text Text -> f (Node Text Text) +f (IpeStyle Maybe Text +n Node Text Text +sd) = (Node Text Text -> IpeStyle) -> f (Node Text Text) -> f IpeStyle forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Node Text Text -sd' -> Maybe Text -> Node Text Text -> IpeStyle +fmap (\Node Text Text +sd' -> Maybe Text -> Node Text Text -> IpeStyle IpeStyle Maybe Text -n Node Text Text -sd') (Node Text Text -> f (Node Text Text) -f Node Text Text -sd) +n Node Text Text +sd') (Node Text Text -> f (Node Text Text) +f Node Text Text +sd) {-# INLINE styleData #-} -- | The "basic" ipe stylesheet @@ -287,7 +287,7 @@ , IpePreamble -> Text _preambleData :: Text } - deriving (IpePreamble -> IpePreamble -> Bool + deriving (IpePreamble -> IpePreamble -> Bool (IpePreamble -> IpePreamble -> Bool) -> (IpePreamble -> IpePreamble -> Bool) -> Eq IpePreamble forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -295,7 +295,7 @@ == :: IpePreamble -> IpePreamble -> Bool $c/= :: IpePreamble -> IpePreamble -> Bool /= :: IpePreamble -> IpePreamble -> Bool -Eq,ReadPrec [IpePreamble] +Eq,ReadPrec [IpePreamble] ReadPrec IpePreamble Int -> ReadS IpePreamble ReadS [IpePreamble] @@ -315,7 +315,7 @@ readPrec :: ReadPrec IpePreamble $creadListPrec :: ReadPrec [IpePreamble] readListPrec :: ReadPrec [IpePreamble] -Read,Int -> IpePreamble -> ShowS +Read,Int -> IpePreamble -> ShowS [IpePreamble] -> ShowS IpePreamble -> String (Int -> IpePreamble -> ShowS) @@ -330,7 +330,7 @@ show :: IpePreamble -> String $cshowList :: [IpePreamble] -> ShowS showList :: [IpePreamble] -> ShowS -Show,Eq IpePreamble +Show,Eq IpePreamble Eq IpePreamble => (IpePreamble -> IpePreamble -> Ordering) -> (IpePreamble -> IpePreamble -> Bool) @@ -367,7 +367,7 @@ max :: IpePreamble -> IpePreamble -> IpePreamble $cmin :: IpePreamble -> IpePreamble -> IpePreamble min :: IpePreamble -> IpePreamble -> IpePreamble -Ord,(forall x. IpePreamble -> Rep IpePreamble x) +Ord,(forall x. IpePreamble -> Rep IpePreamble x) -> (forall x. Rep IpePreamble x -> IpePreamble) -> Generic IpePreamble forall x. Rep IpePreamble x -> IpePreamble @@ -383,37 +383,37 @@ -- | Lens to access the encoding encoding :: Lens' IpePreamble (Maybe Text) encoding :: Lens' IpePreamble (Maybe Text) -encoding Maybe Text -> f (Maybe Text) -f (IpePreamble Maybe Text -e Text -pd) = (Maybe Text -> IpePreamble) -> f (Maybe Text) -> f IpePreamble +encoding Maybe Text -> f (Maybe Text) +f (IpePreamble Maybe Text +e Text +pd) = (Maybe Text -> IpePreamble) -> f (Maybe Text) -> f IpePreamble forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Maybe Text -e' -> Maybe Text -> Text -> IpePreamble +fmap (\Maybe Text +e' -> Maybe Text -> Text -> IpePreamble IpePreamble Maybe Text -e' Text -pd) (Maybe Text -> f (Maybe Text) -f Maybe Text -e) +e' Text +pd) (Maybe Text -> f (Maybe Text) +f Maybe Text +e) {-# INLINE encoding #-} -- | Lens to access the preambleData preambleData :: Lens' IpePreamble Text preambleData :: Lens' IpePreamble Text -preambleData Text -> f Text -f (IpePreamble Maybe Text -e Text -pd) = (Text -> IpePreamble) -> f Text -> f IpePreamble +preambleData Text -> f Text +f (IpePreamble Maybe Text +e Text +pd) = (Text -> IpePreamble) -> f Text -> f IpePreamble forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Text -pd' -> Maybe Text -> Text -> IpePreamble +fmap (\Text +pd' -> Maybe Text -> Text -> IpePreamble IpePreamble Maybe Text -e Text -pd') (Text -> f Text -f Text -pd) +e Text +pd') (Text -> f Text +f Text +pd) {-# INLINE preambleData #-} -- | Ipe Bitmap data @@ -424,14 +424,14 @@ -- | An IpePage is essentially a Group, together with a list of layers and a -- list of views. -data IpePage r = IpePage { forall r. IpePage r -> [LayerName] +data IpePage r = IpePage { forall r. IpePage r -> [LayerName] _layers :: [LayerName] , forall r. IpePage r -> [View] _views :: [View] , forall r. IpePage r -> [IpeObject r] -_content :: [IpeObject r] +_content :: [IpeObject r] } - deriving (IpePage r -> IpePage r -> Bool + deriving (IpePage r -> IpePage r -> Bool (IpePage r -> IpePage r -> Bool) -> (IpePage r -> IpePage r -> Bool) -> Eq (IpePage r) forall r. Eq r => IpePage r -> IpePage r -> Bool @@ -440,7 +440,7 @@ == :: IpePage r -> IpePage r -> Bool $c/= :: forall r. Eq r => IpePage r -> IpePage r -> Bool /= :: IpePage r -> IpePage r -> Bool -Eq,Int -> IpePage r -> ShowS +Eq,Int -> IpePage r -> ShowS [IpePage r] -> ShowS IpePage r -> String (Int -> IpePage r -> ShowS) @@ -458,7 +458,7 @@ show :: IpePage r -> String $cshowList :: forall r. Show r => [IpePage r] -> ShowS showList :: [IpePage r] -> ShowS -Show,(forall x. IpePage r -> Rep (IpePage r) x) +Show,(forall x. IpePage r -> Rep (IpePage r) x) -> (forall x. Rep (IpePage r) x -> IpePage r) -> Generic (IpePage r) forall x. Rep (IpePage r) x -> IpePage r @@ -474,97 +474,97 @@ Generic) -- | Lens to access the layers of an ipe page -layers :: Lens' (IpePage r) [LayerName] +layers :: Lens' (IpePage r) [LayerName] layers :: forall r (f :: * -> *). Functor f => ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r) -layers [LayerName] -> f [LayerName] -f (IpePage [LayerName] -lrs [View] -vs [IpeObject r] -cnts) = ([LayerName] -> IpePage r) -> f [LayerName] -> f (IpePage r) +layers [LayerName] -> f [LayerName] +f (IpePage [LayerName] +lrs [View] +vs [IpeObject r] +cnts) = ([LayerName] -> IpePage r) -> f [LayerName] -> f (IpePage r) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\[LayerName] -lrs' -> [LayerName] -> [View] -> [IpeObject r] -> IpePage r +fmap (\[LayerName] +lrs' -> [LayerName] -> [View] -> [IpeObject r] -> IpePage r forall r. [LayerName] -> [View] -> [IpeObject r] -> IpePage r IpePage [LayerName] -lrs' [View] -vs [IpeObject r] -cnts) ([LayerName] -> f [LayerName] -f [LayerName] -lrs) +lrs' [View] +vs [IpeObject r] +cnts) ([LayerName] -> f [LayerName] +f [LayerName] +lrs) {-# INLINE layers #-} -- | Lens to access the views of an ipe page -views :: Lens' (IpePage r) [View] +views :: Lens' (IpePage r) [View] views :: forall r (f :: * -> *). Functor f => ([View] -> f [View]) -> IpePage r -> f (IpePage r) -views [View] -> f [View] -f (IpePage [LayerName] -lrs [View] -vs [IpeObject r] -cnts) = ([View] -> IpePage r) -> f [View] -> f (IpePage r) +views [View] -> f [View] +f (IpePage [LayerName] +lrs [View] +vs [IpeObject r] +cnts) = ([View] -> IpePage r) -> f [View] -> f (IpePage r) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\[View] -vs' -> [LayerName] -> [View] -> [IpeObject r] -> IpePage r +fmap (\[View] +vs' -> [LayerName] -> [View] -> [IpeObject r] -> IpePage r forall r. [LayerName] -> [View] -> [IpeObject r] -> IpePage r IpePage [LayerName] -lrs [View] -vs' [IpeObject r] -cnts) ([View] -> f [View] -f [View] -vs) +lrs [View] +vs' [IpeObject r] +cnts) ([View] -> f [View] +f [View] +vs) {-# INLINE views #-} -- | Lens to access the content of an ipe page -content :: Lens (IpePage r) (IpePage r') [IpeObject r] [IpeObject r'] +content :: Lens (IpePage r) (IpePage r') [IpeObject r] [IpeObject r'] content :: forall r r' (f :: * -> *). Functor f => ([IpeObject r] -> f [IpeObject r']) -> IpePage r -> f (IpePage r') -content [IpeObject r] -> f [IpeObject r'] -f (IpePage [LayerName] -lrs [View] -vs [IpeObject r] -cnts) = ([IpeObject r'] -> IpePage r') +content [IpeObject r] -> f [IpeObject r'] +f (IpePage [LayerName] +lrs [View] +vs [IpeObject r] +cnts) = ([IpeObject r'] -> IpePage r') -> f [IpeObject r'] -> f (IpePage r') forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\[IpeObject r'] -cnts' -> [LayerName] -> [View] -> [IpeObject r'] -> IpePage r' +fmap (\[IpeObject r'] +cnts' -> [LayerName] -> [View] -> [IpeObject r'] -> IpePage r' forall r. [LayerName] -> [View] -> [IpeObject r] -> IpePage r IpePage [LayerName] -lrs [View] -vs [IpeObject r'] -cnts') ([IpeObject r] -> f [IpeObject r'] -f [IpeObject r] -cnts) +lrs [View] +vs [IpeObject r'] +cnts') ([IpeObject r] -> f [IpeObject r'] +f [IpeObject r] +cnts) {-# INLINE content #-} -- | Creates an empty page with one layer and view. -emptyPage :: IpePage r +emptyPage :: IpePage r emptyPage :: forall r. IpePage r emptyPage = [IpeObject r] -> IpePage r forall r. [IpeObject r] -> IpePage r fromContent [] -- | Creates a simple page with a single view. -fromContent :: [IpeObject r] -> IpePage r +fromContent :: [IpeObject r] -> IpePage r fromContent :: forall r. [IpeObject r] -> IpePage r -fromContent [IpeObject r] -obs = [LayerName] -> [View] -> [IpeObject r] -> IpePage r +fromContent [IpeObject r] +obs = [LayerName] -> [View] -> [IpeObject r] -> IpePage r forall r. [LayerName] -> [View] -> [IpeObject r] -> IpePage r IpePage [LayerName] -layers' [[LayerName] -> LayerName -> View +layers' [[LayerName] -> LayerName -> View View [LayerName] -layers' LayerName -a] [IpeObject r] -obs +layers' LayerName +a] [IpeObject r] +obs where - layers' :: [LayerName] -layers' = Set LayerName -> [LayerName] + layers' :: [LayerName] +layers' = Set LayerName -> [LayerName] forall a. Set a -> [a] Set.toList (Set LayerName -> [LayerName]) -> ([LayerName] -> Set LayerName) -> [LayerName] -> [LayerName] @@ -574,7 +574,7 @@ Set.fromList ([LayerName] -> [LayerName]) -> [LayerName] -> [LayerName] forall a b. (a -> b) -> a -> b $ LayerName -a LayerName -> [LayerName] -> [LayerName] +a LayerName -> [LayerName] -> [LayerName] forall a. a -> [a] -> [a] : (IpeObject r -> Maybe LayerName) -> [IpeObject r] -> [LayerName] forall a b. (a -> Maybe b) -> [a] -> [b] @@ -611,9 +611,9 @@ proxy at -> Lens' (Attributes f ats) (Maybe (Apply f at)) ixAttr SAttributeUniverse 'Layer SLayer) [IpeObject r] -obs - a :: LayerName -a = LayerName +obs + a :: LayerName +a = LayerName "alpha" -- | Makes sure that the page has at least one layer and at least one @@ -622,11 +622,11 @@ -- - if the page does not have any layers, it creates a layer named "alpha", and -- - if the page does not have any views, it creates a view in which all layers are visible. -- -withDefaults :: IpePage r -> IpePage r +withDefaults :: IpePage r -> IpePage r withDefaults :: forall r. IpePage r -> IpePage r -withDefaults IpePage r -p = case IpePage r -pIpePage r +withDefaults IpePage r +p = case IpePage r +pIpePage r -> Getting [LayerName] (IpePage r) [LayerName] -> [LayerName] forall s a. s -> Getting a s a -> a ^.Getting [LayerName] (IpePage r) [LayerName] @@ -635,20 +635,20 @@ ([LayerName] -> f [LayerName]) -> IpePage r -> f (IpePage r) layers of [] -> LayerName -> [LayerName] -> IpePage r -makeNonEmpty LayerName +makeNonEmpty LayerName "alpha" [] - (LayerName -l:[LayerName] -lrs) -> LayerName -> [LayerName] -> IpePage r -makeNonEmpty LayerName -l [LayerName] -lrs + (LayerName +l:[LayerName] +lrs) -> LayerName -> [LayerName] -> IpePage r +makeNonEmpty LayerName +l [LayerName] +lrs where - makeNonEmpty :: LayerName -> [LayerName] -> IpePage r -makeNonEmpty LayerName -l [LayerName] -lrs = IpePage r -pIpePage r -> (IpePage r -> IpePage r) -> IpePage r + makeNonEmpty :: LayerName -> [LayerName] -> IpePage r +makeNonEmpty LayerName +l [LayerName] +lrs = IpePage r +pIpePage r -> (IpePage r -> IpePage r) -> IpePage r forall a b. a -> (a -> b) -> b &([LayerName] -> Identity [LayerName]) -> IpePage r -> Identity (IpePage r) @@ -660,10 +660,10 @@ -> [LayerName] -> IpePage r -> IpePage r forall s t a b. ASetter s t a b -> b -> s -> t .~ (LayerName -lLayerName -> [LayerName] -> [LayerName] +lLayerName -> [LayerName] -> [LayerName] forall a. a -> [a] -> [a] :[LayerName] -lrs) +lrs) IpePage r -> (IpePage r -> IpePage r) -> IpePage r forall a b. a -> (a -> b) -> b &([View] -> Identity [View]) -> IpePage r -> Identity (IpePage r) @@ -676,26 +676,26 @@ %~ \case [] -> [[LayerName] -> LayerName -> View View (LayerName -lLayerName -> [LayerName] -> [LayerName] +lLayerName -> [LayerName] -> [LayerName] forall a. a -> [a] -> [a] :[LayerName] -lrs) LayerName -l] - [View] -vs -> [View] -vs +lrs) LayerName +l] + [View] +vs -> [View] +vs -- | This allows you to filter the objects on some layer. -- -- >>> let page = IpePage [] [] [] -- >>> page^..content.onLayer "myLayer" -- [] -onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r) +onLayer :: LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r) onLayer :: forall r. LayerName -> Getting (Endo [IpeObject r]) [IpeObject r] (IpeObject r) -onLayer LayerName -n = (IpeObject r -> Const (Endo [IpeObject r]) (IpeObject r)) +onLayer LayerName +n = (IpeObject r -> Const (Endo [IpeObject r]) (IpeObject r)) -> [IpeObject r] -> Const (Endo [IpeObject r]) [IpeObject r] forall (f :: * -> *) a. Foldable f => IndexedFold Int (f a) a IndexedFold Int [IpeObject r] (IpeObject r) @@ -714,9 +714,9 @@ forall (p :: * -> * -> *) (f :: * -> *) a. (Choice p, Applicative f) => (a -> Bool) -> Optic' p f a a -filtered (\IpeObject r -o -> IpeObject r -oIpeObject r +filtered (\IpeObject r +o -> IpeObject r +oIpeObject r -> Getting (First LayerName) (IpeObject r) LayerName -> Maybe LayerName forall s a. s -> Getting (First a) s a -> Maybe a @@ -753,7 +753,7 @@ == LayerName -> Maybe LayerName forall a. a -> Maybe a Just LayerName -n) +n) -- | Gets all objects that are visible in the given view. -- @@ -764,23 +764,23 @@ -- >>> let page = IpePage [] [] [] -- >>> page^.contentInView 0 -- [] -contentInView :: Word -> Getter (IpePage r) [IpeObject r] +contentInView :: Word -> Getter (IpePage r) [IpeObject r] contentInView :: forall r. Word -> Getter (IpePage r) [IpeObject r] contentInView (Word -> Int forall a b. (Integral a, Num b) => a -> b -fromIntegral -> Int -i) = (IpePage r -> [IpeObject r]) +fromIntegral -> Int +i) = (IpePage r -> [IpeObject r]) -> ([IpeObject r] -> f [IpeObject r]) -> IpePage r -> f (IpePage r) forall (p :: * -> * -> *) (f :: * -> *) s a. (Profunctor p, Contravariant f) => (s -> a) -> Optic' p f s a to IpePage r -> [IpeObject r] -inView' +inView' where - inView' :: IpePage r -> [IpeObject r] -inView' IpePage r -p = let lrs :: Set LayerName -lrs = [LayerName] -> Set LayerName + inView' :: IpePage r -> [IpeObject r] +inView' IpePage r +p = let lrs :: Set LayerName +lrs = [LayerName] -> Set LayerName forall a. Ord a => [a] -> Set a Set.fromList ([LayerName] -> Set LayerName) -> ([View] -> [LayerName]) -> [View] -> Set LayerName @@ -794,7 +794,7 @@ layerNames) ([View] -> Set LayerName) -> [View] -> Set LayerName forall a b. (a -> b) -> a -> b $ IpePage r -pIpePage r -> Getting (Endo [View]) (IpePage r) View -> [View] +pIpePage r -> Getting (Endo [View]) (IpePage r) View -> [View] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..([View] -> Const (Endo [View]) [View]) -> IpePage r -> Const (Endo [View]) (IpePage r) @@ -811,9 +811,9 @@ forall m. Ixed m => Index m -> Traversal' m (IxValue m) ix Int Index [View] -i +i in IpePage r -pIpePage r +pIpePage r -> Getting (Endo [IpeObject r]) (IpePage r) (IpeObject r) -> [IpeObject r] forall s a. s -> Getting (Endo [a]) s a -> [a] @@ -849,13 +849,13 @@ (a -> Bool) -> Optic' p f a a filtered (Set LayerName -> IpeObject r -> Bool forall {r}. Set LayerName -> IpeObject r -> Bool -inVisibleLayer Set LayerName -lrs) +inVisibleLayer Set LayerName +lrs) - inVisibleLayer :: Set (Apply (AttrMapSym1 r) 'Layer) -> IpeObject r -> Bool -inVisibleLayer Set (Apply (AttrMapSym1 r) 'Layer) -lrs IpeObject r -o = Bool + inVisibleLayer :: Set (Apply (AttrMapSym1 r) 'Layer) -> IpeObject r -> Bool +inVisibleLayer Set (Apply (AttrMapSym1 r) 'Layer) +lrs IpeObject r +o = Bool -> (Apply (AttrMapSym1 r) 'Layer -> Bool) -> Maybe (Apply (AttrMapSym1 r) 'Layer) -> Bool @@ -865,11 +865,11 @@ -> Set (Apply (AttrMapSym1 r) 'Layer) -> Bool forall a. Ord a => a -> Set a -> Bool `Set.member` Set (Apply (AttrMapSym1 r) 'Layer) -lrs) (Maybe (Apply (AttrMapSym1 r) 'Layer) -> Bool) +lrs) (Maybe (Apply (AttrMapSym1 r) 'Layer) -> Bool) -> Maybe (Apply (AttrMapSym1 r) 'Layer) -> Bool forall a b. (a -> b) -> a -> b $ IpeObject r -oIpeObject r +oIpeObject r -> Getting (First (Apply (AttrMapSym1 r) 'Layer)) (IpeObject r) @@ -920,14 +920,14 @@ -------------------------------------------------------------------------------- -- | A complete ipe file -data IpeFile r = IpeFile { forall r. IpeFile r -> Maybe IpePreamble +data IpeFile r = IpeFile { forall r. IpeFile r -> Maybe IpePreamble _preamble :: Maybe IpePreamble , forall r. IpeFile r -> [IpeStyle] _styles :: [IpeStyle] , forall r. IpeFile r -> NonEmpty (IpePage r) -_pages :: NE.NonEmpty (IpePage r) +_pages :: NE.NonEmpty (IpePage r) } - deriving (IpeFile r -> IpeFile r -> Bool + deriving (IpeFile r -> IpeFile r -> Bool (IpeFile r -> IpeFile r -> Bool) -> (IpeFile r -> IpeFile r -> Bool) -> Eq (IpeFile r) forall r. Eq r => IpeFile r -> IpeFile r -> Bool @@ -936,7 +936,7 @@ == :: IpeFile r -> IpeFile r -> Bool $c/= :: forall r. Eq r => IpeFile r -> IpeFile r -> Bool /= :: IpeFile r -> IpeFile r -> Bool -Eq,Int -> IpeFile r -> ShowS +Eq,Int -> IpeFile r -> ShowS [IpeFile r] -> ShowS IpeFile r -> String (Int -> IpeFile r -> ShowS) @@ -954,7 +954,7 @@ show :: IpeFile r -> String $cshowList :: forall r. Show r => [IpeFile r] -> ShowS showList :: [IpeFile r] -> ShowS -Show,(forall x. IpeFile r -> Rep (IpeFile r) x) +Show,(forall x. IpeFile r -> Rep (IpeFile r) x) -> (forall x. Rep (IpeFile r) x -> IpeFile r) -> Generic (IpeFile r) forall x. Rep (IpeFile r) x -> IpeFile r @@ -970,90 +970,90 @@ Generic) -- | Lens to access the preamble of an ipe file -preamble :: Lens' (IpeFile r) (Maybe IpePreamble) +preamble :: Lens' (IpeFile r) (Maybe IpePreamble) preamble :: forall r (f :: * -> *). Functor f => (Maybe IpePreamble -> f (Maybe IpePreamble)) -> IpeFile r -> f (IpeFile r) -preamble Maybe IpePreamble -> f (Maybe IpePreamble) -f (IpeFile Maybe IpePreamble -p [IpeStyle] -ss NonEmpty (IpePage r) -pgs) = (Maybe IpePreamble -> IpeFile r) +preamble Maybe IpePreamble -> f (Maybe IpePreamble) +f (IpeFile Maybe IpePreamble +p [IpeStyle] +ss NonEmpty (IpePage r) +pgs) = (Maybe IpePreamble -> IpeFile r) -> f (Maybe IpePreamble) -> f (IpeFile r) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Maybe IpePreamble -p' -> Maybe IpePreamble +fmap (\Maybe IpePreamble +p' -> Maybe IpePreamble -> [IpeStyle] -> NonEmpty (IpePage r) -> IpeFile r forall r. Maybe IpePreamble -> [IpeStyle] -> NonEmpty (IpePage r) -> IpeFile r IpeFile Maybe IpePreamble -p' [IpeStyle] -ss NonEmpty (IpePage r) -pgs) (Maybe IpePreamble -> f (Maybe IpePreamble) -f Maybe IpePreamble -p) +p' [IpeStyle] +ss NonEmpty (IpePage r) +pgs) (Maybe IpePreamble -> f (Maybe IpePreamble) +f Maybe IpePreamble +p) {-# INLINE preamble #-} -- | Lens to access the styles of an ipe file -styles :: Lens' (IpeFile r) [IpeStyle] +styles :: Lens' (IpeFile r) [IpeStyle] styles :: forall r (f :: * -> *). Functor f => ([IpeStyle] -> f [IpeStyle]) -> IpeFile r -> f (IpeFile r) -styles [IpeStyle] -> f [IpeStyle] -f (IpeFile Maybe IpePreamble -p [IpeStyle] -ss NonEmpty (IpePage r) -pgs) = ([IpeStyle] -> IpeFile r) -> f [IpeStyle] -> f (IpeFile r) +styles [IpeStyle] -> f [IpeStyle] +f (IpeFile Maybe IpePreamble +p [IpeStyle] +ss NonEmpty (IpePage r) +pgs) = ([IpeStyle] -> IpeFile r) -> f [IpeStyle] -> f (IpeFile r) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\[IpeStyle] -ss' -> Maybe IpePreamble +fmap (\[IpeStyle] +ss' -> Maybe IpePreamble -> [IpeStyle] -> NonEmpty (IpePage r) -> IpeFile r forall r. Maybe IpePreamble -> [IpeStyle] -> NonEmpty (IpePage r) -> IpeFile r IpeFile Maybe IpePreamble -p [IpeStyle] -ss' NonEmpty (IpePage r) -pgs) ([IpeStyle] -> f [IpeStyle] -f [IpeStyle] -ss) +p [IpeStyle] +ss' NonEmpty (IpePage r) +pgs) ([IpeStyle] -> f [IpeStyle] +f [IpeStyle] +ss) {-# INLINE styles #-} -- | Lens to access the pages of an ipe file -pages :: Lens (IpeFile r) (IpeFile r') (NE.NonEmpty (IpePage r)) (NE.NonEmpty (IpePage r')) +pages :: Lens (IpeFile r) (IpeFile r') (NE.NonEmpty (IpePage r)) (NE.NonEmpty (IpePage r')) pages :: forall r r' (f :: * -> *). Functor f => (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r'))) -> IpeFile r -> f (IpeFile r') -pages NonEmpty (IpePage r) -> f (NonEmpty (IpePage r')) -f (IpeFile Maybe IpePreamble -p [IpeStyle] -ss NonEmpty (IpePage r) -pgs) = (NonEmpty (IpePage r') -> IpeFile r') +pages NonEmpty (IpePage r) -> f (NonEmpty (IpePage r')) +f (IpeFile Maybe IpePreamble +p [IpeStyle] +ss NonEmpty (IpePage r) +pgs) = (NonEmpty (IpePage r') -> IpeFile r') -> f (NonEmpty (IpePage r')) -> f (IpeFile r') forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\NonEmpty (IpePage r') -pgs' -> Maybe IpePreamble +fmap (\NonEmpty (IpePage r') +pgs' -> Maybe IpePreamble -> [IpeStyle] -> NonEmpty (IpePage r') -> IpeFile r' forall r. Maybe IpePreamble -> [IpeStyle] -> NonEmpty (IpePage r) -> IpeFile r IpeFile Maybe IpePreamble -p [IpeStyle] -ss NonEmpty (IpePage r') -pgs') (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r')) -f NonEmpty (IpePage r) -pgs) +p [IpeStyle] +ss NonEmpty (IpePage r') +pgs') (NonEmpty (IpePage r) -> f (NonEmpty (IpePage r')) +f NonEmpty (IpePage r) +pgs) {-# INLINE pages #-} -- | Convenience constructor for creating an ipe file without preamble -- and with the default stylesheet. -ipeFile :: NE.NonEmpty (IpePage r) -> IpeFile r +ipeFile :: NE.NonEmpty (IpePage r) -> IpeFile r ipeFile :: forall r. NonEmpty (IpePage r) -> IpeFile r ipeFile = Maybe IpePreamble -> [IpeStyle] -> NonEmpty (IpePage r) -> IpeFile r @@ -1066,7 +1066,7 @@ basicIpeStyle] -- | Convenience function to construct an ipe file consisting of a single page. -singlePageFile :: IpePage r -> IpeFile r +singlePageFile :: IpePage r -> IpeFile r singlePageFile :: forall r. IpePage r -> IpeFile r singlePageFile = NonEmpty (IpePage r) -> IpeFile r forall r. NonEmpty (IpePage r) -> IpeFile r @@ -1078,7 +1078,7 @@ NE.:| []) -- | Create a single page ipe file from a list of IpeObjects -singlePageFromContent :: [IpeObject r] -> IpeFile r +singlePageFromContent :: [IpeObject r] -> IpeFile r singlePageFromContent :: forall r. [IpeObject r] -> IpeFile r singlePageFromContent = IpePage r -> IpeFile r forall r. IpePage r -> IpeFile r @@ -1092,12 +1092,12 @@ -- | Adds a stylesheet to the ipe file. This will be the first -- stylesheet, i.e. it has priority over all previously imported stylesheets. -addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r +addStyleSheet :: IpeStyle -> IpeFile r -> IpeFile r addStyleSheet :: forall r. IpeStyle -> IpeFile r -> IpeFile r -addStyleSheet IpeStyle -s IpeFile r -f = IpeFile r -fIpeFile r -> (IpeFile r -> IpeFile r) -> IpeFile r +addStyleSheet IpeStyle +s IpeFile r +f = IpeFile r +fIpeFile r -> (IpeFile r -> IpeFile r) -> IpeFile r forall a b. a -> (a -> b) -> b &([IpeStyle] -> Identity [IpeStyle]) -> IpeFile r -> Identity (IpeFile r) @@ -1109,7 +1109,7 @@ -> ([IpeStyle] -> [IpeStyle]) -> IpeFile r -> IpeFile r forall s t a b. ASetter s t a b -> (a -> b) -> s -> t %~ (IpeStyle -sIpeStyle -> [IpeStyle] -> [IpeStyle] +sIpeStyle -> [IpeStyle] -> [IpeStyle] forall a. a -> [a] -> [a] :)
\ No newline at end of file diff --git a/haddocks/hgeometry/ipe/src/Ipe.Value.html b/haddocks/hgeometry/ipe/src/Ipe.Value.html index 05c85edac..ae1d9e51e 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.Value.html +++ b/haddocks/hgeometry/ipe/src/Ipe.Value.html @@ -17,8 +17,8 @@
-------------------------------------------------------------------------------- -- | Many types either consist of a symbolc value, or a value of type v -data IpeValue v = Named Text | Valued v - deriving (Int -> IpeValue v -> ShowS +data IpeValue v = Named Text | Valued v + deriving (Int -> IpeValue v -> ShowS [IpeValue v] -> ShowS IpeValue v -> String (Int -> IpeValue v -> ShowS) @@ -36,7 +36,7 @@ show :: IpeValue v -> String $cshowList :: forall v. Show v => [IpeValue v] -> ShowS showList :: [IpeValue v] -> ShowS -Show,ReadPrec [IpeValue v] +Show,ReadPrec [IpeValue v] ReadPrec (IpeValue v) Int -> ReadS (IpeValue v) ReadS [IpeValue v] @@ -60,7 +60,7 @@ readPrec :: ReadPrec (IpeValue v) $creadListPrec :: forall v. Read v => ReadPrec [IpeValue v] readListPrec :: ReadPrec [IpeValue v] -Read,IpeValue v -> IpeValue v -> Bool +Read,IpeValue v -> IpeValue v -> Bool (IpeValue v -> IpeValue v -> Bool) -> (IpeValue v -> IpeValue v -> Bool) -> Eq (IpeValue v) forall v. Eq v => IpeValue v -> IpeValue v -> Bool @@ -69,7 +69,7 @@ == :: IpeValue v -> IpeValue v -> Bool $c/= :: forall v. Eq v => IpeValue v -> IpeValue v -> Bool /= :: IpeValue v -> IpeValue v -> Bool -Eq,Eq (IpeValue v) +Eq,Eq (IpeValue v) Eq (IpeValue v) => (IpeValue v -> IpeValue v -> Ordering) -> (IpeValue v -> IpeValue v -> Bool) @@ -110,7 +110,7 @@ max :: IpeValue v -> IpeValue v -> IpeValue v $cmin :: forall v. Ord v => IpeValue v -> IpeValue v -> IpeValue v min :: IpeValue v -> IpeValue v -> IpeValue v -Ord,(forall a b. (a -> b) -> IpeValue a -> IpeValue b) +Ord,(forall a b. (a -> b) -> IpeValue a -> IpeValue b) -> (forall a b. a -> IpeValue b -> IpeValue a) -> Functor IpeValue forall a b. a -> IpeValue b -> IpeValue a forall a b. (a -> b) -> IpeValue a -> IpeValue b @@ -121,7 +121,7 @@ fmap :: forall a b. (a -> b) -> IpeValue a -> IpeValue b $c<$ :: forall a b. a -> IpeValue b -> IpeValue a <$ :: forall a b. a -> IpeValue b -> IpeValue a -Functor,(forall m. Monoid m => IpeValue m -> m) +Functor,(forall m. Monoid m => IpeValue m -> m) -> (forall m a. Monoid m => (a -> m) -> IpeValue a -> m) -> (forall m a. Monoid m => (a -> m) -> IpeValue a -> m) -> (forall a b. (a -> b -> b) -> b -> IpeValue a -> b) @@ -203,7 +203,7 @@ sum :: forall a. Num a => IpeValue a -> a $cproduct :: forall a. Num a => IpeValue a -> a product :: forall a. Num a => IpeValue a -> a -Foldable,Functor IpeValue +Foldable,Functor IpeValue Foldable IpeValue (Functor IpeValue, Foldable IpeValue) => (forall (f :: * -> *) a b. @@ -262,8 +262,8 @@ sequence :: forall (m :: * -> *) a. Monad m => IpeValue (m a) -> m (IpeValue a) Traversable) -instance IsString (IpeValue v) where - fromString :: String -> IpeValue v +instance IsString (IpeValue v) where + fromString :: String -> IpeValue v fromString = Text -> IpeValue v forall v. Text -> IpeValue v Named (Text -> IpeValue v) -> (String -> Text) -> String -> IpeValue v diff --git a/haddocks/hgeometry/ipe/src/Ipe.Writer.html b/haddocks/hgeometry/ipe/src/Ipe.Writer.html index 6af5688b7..c0fd67fce 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.Writer.html +++ b/haddocks/hgeometry/ipe/src/Ipe.Writer.html @@ -68,7 +68,7 @@ -------------------------------------------------------------------------------- -- | Write an IpeFiele to file. -writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO () +writeIpeFile :: IpeWriteText r => OsPath -> IpeFile r -> IO () writeIpeFile :: forall r. IpeWriteText r => OsPath -> IpeFile r -> IO () writeIpeFile = (IpeFile r -> OsPath -> IO ()) -> OsPath -> IpeFile r -> IO () forall a b c. (a -> b -> c) -> b -> a -> c @@ -77,13 +77,13 @@ writeIpeFile' -- | Creates a single page ipe file with the given page -writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO () +writeIpePage :: IpeWriteText r => OsPath -> IpePage r -> IO () writeIpePage :: forall r. IpeWriteText r => OsPath -> IpePage r -> IO () -writeIpePage OsPath -fp = OsPath -> IpeFile r -> IO () +writeIpePage OsPath +fp = OsPath -> IpeFile r -> IO () forall r. IpeWriteText r => OsPath -> IpeFile r -> IO () writeIpeFile OsPath -fp (IpeFile r -> IO ()) +fp (IpeFile r -> IO ()) -> (IpePage r -> IpeFile r) -> IpePage r -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . IpePage r -> IpeFile r @@ -93,7 +93,7 @@ -- | Convert the input to ipeXml, and prints it to standard out in such a way -- that the copied text can be pasted into ipe as a geometry object. -printAsIpeSelection :: IpeWrite t => t -> IO () +printAsIpeSelection :: IpeWrite t => t -> IO () printAsIpeSelection :: forall t. IpeWrite t => t -> IO () printAsIpeSelection = ByteString -> IO () C.putStrLn (ByteString -> IO ()) -> (t -> ByteString) -> t -> IO () @@ -109,7 +109,7 @@ toIpeSelectionXML -- | Convert input into an ipe selection. -toIpeSelectionXML :: IpeWrite t => t -> Maybe B.ByteString +toIpeSelectionXML :: IpeWrite t => t -> Maybe B.ByteString toIpeSelectionXML :: forall t. IpeWrite t => t -> Maybe ByteString toIpeSelectionXML = (NodeG [] Text Text -> ByteString) -> Maybe (NodeG [] Text Text) -> Maybe ByteString @@ -128,25 +128,25 @@ forall {tag} {text}. IsString tag => NodeG [] tag text -> NodeG [] tag text -ipeSelection) (Maybe (NodeG [] Text Text) -> Maybe ByteString) +ipeSelection) (Maybe (NodeG [] Text Text) -> Maybe ByteString) -> (t -> Maybe (NodeG [] Text Text)) -> t -> Maybe ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . t -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite where - ipeSelection :: NodeG [] tag text -> NodeG [] tag text -ipeSelection NodeG [] tag text -x = tag -> [(tag, text)] -> [NodeG [] tag text] -> NodeG [] tag text + ipeSelection :: NodeG [] tag text -> NodeG [] tag text +ipeSelection NodeG [] tag text +x = tag -> [(tag, text)] -> [NodeG [] tag text] -> NodeG [] tag text forall (c :: * -> *) tag text. tag -> [(tag, text)] -> c (NodeG c tag text) -> NodeG c tag text Element tag "ipeselection" [] [NodeG [] tag text -x] +x] -- | Convert to Ipe xml -toIpeXML :: IpeWrite t => t -> Maybe B.ByteString +toIpeXML :: IpeWrite t => t -> Maybe B.ByteString toIpeXML :: forall t. IpeWrite t => t -> Maybe ByteString toIpeXML = (NodeG [] Text Text -> ByteString) -> Maybe (NodeG [] Text Text) -> Maybe ByteString @@ -165,16 +165,16 @@ -- | Convert to ipe XML and write the output to a file. -writeIpeFile' :: IpeWrite t => t -> OsPath -> IO () +writeIpeFile' :: IpeWrite t => t -> OsPath -> IO () writeIpeFile' :: forall t. IpeWrite t => t -> OsPath -> IO () -writeIpeFile' t -i OsPath -fp = IO () -> (ByteString -> IO ()) -> Maybe ByteString -> IO () +writeIpeFile' t +i OsPath +fp = IO () -> (ByteString -> IO ()) -> Maybe ByteString -> IO () forall b a. b -> (a -> b) -> Maybe a -> b maybe IO () -err (OsPath -> ByteString -> IO () +err (OsPath -> ByteString -> IO () File.writeFile OsPath -fp) (Maybe ByteString -> IO ()) +fp) (Maybe ByteString -> IO ()) -> (t -> Maybe ByteString) -> t -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . t -> Maybe ByteString @@ -182,10 +182,10 @@ toIpeXML (t -> IO ()) -> t -> IO () forall a b. (a -> b) -> a -> b $ t -i +i where - err :: IO () -err = Handle -> String -> IO () + err :: IO () +err = Handle -> String -> IO () hPutStrLn Handle stderr (String -> IO ()) -> String -> IO () forall a b. (a -> b) -> a -> b @@ -196,7 +196,7 @@ <> OsPath -> String forall a. Show a => a -> String show OsPath -fp String -> String -> String +fp String -> String -> String forall a. Semigroup a => a -> a -> a <> String "'not written" @@ -204,29 +204,29 @@ -------------------------------------------------------------------------------- -- | For types that can produce a text value -class IpeWriteText t where - ipeWriteText :: t -> Maybe Text +class IpeWriteText t where + ipeWriteText :: t -> Maybe Text -- | Types that correspond to an XML Element. All instances should produce an -- Element. If the type should produce a Node with the Text constructor, use -- the `IpeWriteText` typeclass instead. -class IpeWrite t where - ipeWrite :: t -> Maybe (Node Text Text) +class IpeWrite t where + ipeWrite :: t -> Maybe (Node Text Text) -instance IpeWrite t => IpeWrite [t] where - ipeWrite :: [t] -> Maybe (NodeG [] Text Text) -ipeWrite [t] -gs = case (t -> Maybe (NodeG [] Text Text)) -> [t] -> [NodeG [] Text Text] +instance IpeWrite t => IpeWrite [t] where + ipeWrite :: [t] -> Maybe (NodeG [] Text Text) +ipeWrite [t] +gs = case (t -> Maybe (NodeG [] Text Text)) -> [t] -> [NodeG [] Text Text] forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe t -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite [t] -gs of +gs of [] -> Maybe (NodeG [] Text Text) forall a. Maybe a Nothing - [NodeG [] Text Text] -ns -> (NodeG [] Text Text -> Maybe (NodeG [] Text Text) + [NodeG [] Text Text] +ns -> (NodeG [] Text Text -> Maybe (NodeG [] Text Text) forall a. a -> Maybe a Just (NodeG [] Text Text -> Maybe (NodeG [] Text Text)) -> NodeG [] Text Text -> Maybe (NodeG [] Text Text) @@ -237,10 +237,10 @@ tag -> [(tag, text)] -> c (NodeG c tag text) -> NodeG c tag text Element Text "group" [] [NodeG [] Text Text] -ns) +ns) -instance IpeWrite t => IpeWrite (NonEmpty t) where - ipeWrite :: NonEmpty t -> Maybe (NodeG [] Text Text) +instance IpeWrite t => IpeWrite (NonEmpty t) where + ipeWrite :: NonEmpty t -> Maybe (NodeG [] Text Text) ipeWrite = [t] -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite ([t] -> Maybe (NodeG [] Text Text)) @@ -251,8 +251,8 @@ forall (t :: * -> *) a. Foldable t => t a -> [a] F.toList -instance (IpeWrite l, IpeWrite r) => IpeWrite (Either l r) where - ipeWrite :: Either l r -> Maybe (NodeG [] Text Text) +instance (IpeWrite l, IpeWrite r) => IpeWrite (Either l r) where + ipeWrite :: Either l r -> Maybe (NodeG [] Text Text) ipeWrite = (l -> Maybe (NodeG [] Text Text)) -> (r -> Maybe (NodeG [] Text Text)) -> Either l r @@ -264,22 +264,22 @@ forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite -instance IpeWriteText (Apply f at) => IpeWriteText (Attr f at) where - ipeWriteText :: Attr f at -> Maybe Text -ipeWriteText Attr f at -att = Attr f at -> Maybe (Apply f at) +instance IpeWriteText (Apply f at) => IpeWriteText (Attr f at) where + ipeWriteText :: Attr f at -> Maybe Text +ipeWriteText Attr f at +att = Attr f at -> Maybe (Apply f at) forall u (f :: TyFun u (*) -> *) (label :: u). Attr f label -> Maybe (Apply f label) _getAttr Attr f at -att Maybe (Apply f at) -> (Apply f at -> Maybe Text) -> Maybe Text +att Maybe (Apply f at) -> (Apply f at -> Maybe Text) -> Maybe Text forall a b. Maybe a -> (a -> Maybe b) -> Maybe b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= Apply f at -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText -instance (IpeWriteText l, IpeWriteText r) => IpeWriteText (Either l r) where - ipeWriteText :: Either l r -> Maybe Text +instance (IpeWriteText l, IpeWriteText r) => IpeWriteText (Either l r) where + ipeWriteText :: Either l r -> Maybe Text ipeWriteText = (l -> Maybe Text) -> (r -> Maybe Text) -> Either l r -> Maybe Text forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either l -> Maybe Text @@ -290,19 +290,19 @@ -- | Functon to write all attributes in a Rec -ipeWriteAttrs :: ( RecordToList rs, RMap rs - , ReifyConstraint IpeWriteText (Attr f) rs - , AllConstrained IpeAttrName rs - , RecAll (Attr f) rs IpeWriteText - ) => IA.Attributes f rs -> [(Text,Text)] +ipeWriteAttrs :: ( RecordToList rs, RMap rs + , ReifyConstraint IpeWriteText (Attr f) rs + , AllConstrained IpeAttrName rs + , RecAll (Attr f) rs IpeWriteText + ) => IA.Attributes f rs -> [(Text,Text)] ipeWriteAttrs :: forall (rs :: [AttributeUniverse]) (f :: TyFun AttributeUniverse (*) -> *). (RecordToList rs, RMap rs, ReifyConstraint IpeWriteText (Attr f) rs, AllConstrained IpeAttrName rs, RecAll (Attr f) rs IpeWriteText) => Attributes f rs -> [(Text, Text)] -ipeWriteAttrs (Attrs Rec (Attr f) rs -r) = [Maybe (Text, Text)] -> [(Text, Text)] +ipeWriteAttrs (Attrs Rec (Attr f) rs +r) = [Maybe (Text, Text)] -> [(Text, Text)] forall a. [Maybe a] -> [a] catMaybes ([Maybe (Text, Text)] -> [(Text, Text)]) -> (Rec (Const (Maybe (Text, Text))) rs -> [Maybe (Text, Text)]) @@ -335,37 +335,37 @@ forall (a :: AttributeUniverse). Const Text a -> Const (Maybe Text) a -> Const (Maybe (Text, Text)) a -f (Rec (Attr f) rs -> Rec (Const Text) rs +f (Rec (Attr f) rs -> Rec (Const Text) rs forall (rs :: [AttributeUniverse]) (f :: AttributeUniverse -> *). AllConstrained IpeAttrName rs => Rec f rs -> Rec (Const Text) rs writeAttrNames Rec (Attr f) rs -r) +r) (Rec (Attr f) rs -> Rec (Const (Maybe Text)) rs forall {u} (rs :: [u]) (f :: u -> *). (RMap rs, ReifyConstraint IpeWriteText f rs, RecAll f rs IpeWriteText) => Rec f rs -> Rec (Const (Maybe Text)) rs writeAttrValues Rec (Attr f) rs -r) +r) where - f :: Const t b -> Const (f a) b -> Const (f (t, a)) b -f (Const t -n) (Const f a -mv) = f (t, a) -> Const (f (t, a)) b + f :: Const t b -> Const (f a) b -> Const (f (t, a)) b +f (Const t +n) (Const f a +mv) = f (t, a) -> Const (f (t, a)) b forall k a (b :: k). a -> Const a b Const (f (t, a) -> Const (f (t, a)) b) -> f (t, a) -> Const (f (t, a)) b forall a b. (a -> b) -> a -> b $ (t -n,) (a -> (t, a)) -> f a -> f (t, a) +n,) (a -> (t, a)) -> f a -> f (t, a) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> f a -mv +mv -- | Writing the attribute values -writeAttrValues :: ( RMap rs, ReifyConstraint IpeWriteText f rs - , RecAll f rs IpeWriteText) - => Rec f rs -> Rec (Const (Maybe Text)) rs +writeAttrValues :: ( RMap rs, ReifyConstraint IpeWriteText f rs + , RecAll f rs IpeWriteText) + => Rec f rs -> Rec (Const (Maybe Text)) rs writeAttrValues :: forall {u} (rs :: [u]) (f :: u -> *). (RMap rs, ReifyConstraint IpeWriteText f rs, RecAll f rs IpeWriteText) => @@ -378,8 +378,8 @@ (forall (x :: u). f x -> g x) -> Rec f rs -> Rec g rs forall (f :: u -> *) (g :: u -> *). (forall (x :: u). f x -> g x) -> Rec f rs -> Rec g rs -rmap (\(Compose (Dict f x -x)) -> Maybe Text -> Const (Maybe Text) x +rmap (\(Compose (Dict f x +x)) -> Maybe Text -> Const (Maybe Text) x forall k a (b :: k). a -> Const a b Const (Maybe Text -> Const (Maybe Text) x) -> Maybe Text -> Const (Maybe Text) x @@ -387,7 +387,7 @@ $ f x -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText f x -x) +x) (Rec (Dict IpeWriteText :. f) rs -> Rec (Const (Maybe Text)) rs) -> (Rec f rs -> Rec (Dict IpeWriteText :. f) rs) -> Rec f rs @@ -403,13 +403,13 @@ instance IpeWriteText Text where - ipeWriteText :: Text -> Maybe Text + ipeWriteText :: Text -> Maybe Text ipeWriteText = Text -> Maybe Text forall a. a -> Maybe a Just instance IpeWriteText String where - ipeWriteText :: String -> Maybe Text + ipeWriteText :: String -> Maybe Text ipeWriteText = Text -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText (Text -> Maybe Text) -> (String -> Text) -> String -> Maybe Text @@ -420,11 +420,11 @@ -- | Add attributes to a node addAtts :: Node Text Text -> [(Text,Text)] -> Node Text Text -n :: NodeG [] Text Text -n@(Element {}) addAtts :: NodeG [] Text Text -> [(Text, Text)] -> NodeG [] Text Text -`addAtts` [(Text, Text)] -ats = NodeG [] Text Text -n { eAttributes = ats ++ eAttributes n } +n :: NodeG [] Text Text +n@(Element {}) addAtts :: NodeG [] Text Text -> [(Text, Text)] -> NodeG [] Text Text +`addAtts` [(Text, Text)] +ats = NodeG [] Text Text +n { eAttributes = ats ++ eAttributes n } NodeG [] Text Text _ `addAtts` [(Text, Text)] _ = String -> NodeG [] Text Text @@ -434,71 +434,71 @@ -- | Same as `addAtts` but then for a Maybe node mAddAtts :: Maybe (Node Text Text) -> [(Text, Text)] -> Maybe (Node Text Text) -Maybe (NodeG [] Text Text) -mn mAddAtts :: Maybe (NodeG [] Text Text) +Maybe (NodeG [] Text Text) +mn mAddAtts :: Maybe (NodeG [] Text Text) -> [(Text, Text)] -> Maybe (NodeG [] Text Text) -`mAddAtts` [(Text, Text)] -ats = (NodeG [] Text Text -> NodeG [] Text Text) +`mAddAtts` [(Text, Text)] +ats = (NodeG [] Text Text -> NodeG [] Text Text) -> Maybe (NodeG [] Text Text) -> Maybe (NodeG [] Text Text) forall a b. (a -> b) -> Maybe a -> Maybe b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (NodeG [] Text Text -> [(Text, Text)] -> NodeG [] Text Text `addAtts` [(Text, Text)] -ats) Maybe (NodeG [] Text Text) -mn +ats) Maybe (NodeG [] Text Text) +mn -------------------------------------------------------------------------------- instance IpeWriteText Double where - ipeWriteText :: Double -> Maybe Text + ipeWriteText :: Double -> Maybe Text ipeWriteText = Double -> Maybe Text forall t. Show t => t -> Maybe Text writeByShow instance IpeWriteText Float where - ipeWriteText :: Float -> Maybe Text + ipeWriteText :: Float -> Maybe Text ipeWriteText = Float -> Maybe Text forall t. Show t => t -> Maybe Text writeByShow instance IpeWriteText Int where - ipeWriteText :: Int -> Maybe Text + ipeWriteText :: Int -> Maybe Text ipeWriteText = Int -> Maybe Text forall t. Show t => t -> Maybe Text writeByShow instance IpeWriteText Integer where - ipeWriteText :: Integer -> Maybe Text + ipeWriteText :: Integer -> Maybe Text ipeWriteText = Integer -> Maybe Text forall t. Show t => t -> Maybe Text writeByShow -instance IpeWriteText (RealNumber p) where - ipeWriteText :: RealNumber p -> Maybe Text +instance IpeWriteText (RealNumber p) where + ipeWriteText :: RealNumber p -> Maybe Text ipeWriteText = Rational -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText (Rational -> Maybe Text) -> (RealNumber p -> Rational) -> RealNumber p -> Maybe Text forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (Real a, Fractional b) => a -> b -realToFrac @(RealNumber p) @Rational +realToFrac @(RealNumber p) @Rational -instance HasResolution p => IpeWriteText (Fixed p) where - ipeWriteText :: Fixed p -> Maybe Text +instance HasResolution p => IpeWriteText (Fixed p) where + ipeWriteText :: Fixed p -> Maybe Text ipeWriteText = Fixed p -> Maybe Text forall t. Show t => t -> Maybe Text writeByShow -- | This instance converts the ratio to a Pico, and then displays that. -instance Integral a => IpeWriteText (Ratio a) where - ipeWriteText :: Ratio a -> Maybe Text +instance Integral a => IpeWriteText (Ratio a) where + ipeWriteText :: Ratio a -> Maybe Text ipeWriteText = Pico -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText (Pico -> Maybe Text) -> (Ratio a -> Pico) -> Ratio a -> Maybe Text forall b c a. (b -> c) -> (a -> b) -> a -> c . Pico -> Pico -f (Pico -> Pico) -> (Ratio a -> Pico) -> Ratio a -> Pico +f (Pico -> Pico) -> (Ratio a -> Pico) -> Ratio a -> Pico forall b c a. (b -> c) -> (a -> b) -> a -> c . Rational -> Pico forall a. Fractional a => Rational -> a @@ -508,13 +508,13 @@ forall a. Real a => a -> Rational toRational where - f :: Pico -> Pico - f :: Pico -> Pico -f = Pico -> Pico + f :: Pico -> Pico + f :: Pico -> Pico +f = Pico -> Pico forall a. a -> a id -writeByShow :: Show t => t -> Maybe Text +writeByShow :: Show t => t -> Maybe Text writeByShow :: forall t. Show t => t -> Maybe Text writeByShow = Text -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text @@ -560,37 +560,37 @@ sequence -instance IpeWriteText r => IpeWriteText (Point 2 r) where - ipeWriteText :: Point 2 r -> Maybe Text -ipeWriteText (Point2 r -x r -y) = [Maybe Text] -> Maybe Text +instance IpeWriteText r => IpeWriteText (Point 2 r) where + ipeWriteText :: Point 2 r -> Maybe Text +ipeWriteText (Point2 r +x r +y) = [Maybe Text] -> Maybe Text unwords' [r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText r -x, r -> Maybe Text +x, r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText r -y] +y] -------------------------------------------------------------------------------- -instance IpeWriteText v => IpeWriteText (IpeValue v) where - ipeWriteText :: IpeValue v -> Maybe Text -ipeWriteText (Named Text -t) = Text -> Maybe Text +instance IpeWriteText v => IpeWriteText (IpeValue v) where + ipeWriteText :: IpeValue v -> Maybe Text +ipeWriteText (Named Text +t) = Text -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Text -t - ipeWriteText (Valued v -v) = v -> Maybe Text +t + ipeWriteText (Valued v +v) = v -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText v -v +v instance IpeWriteText TransformationTypes where - ipeWriteText :: TransformationTypes -> Maybe Text + ipeWriteText :: TransformationTypes -> Maybe Text ipeWriteText TransformationTypes Affine = Text -> Maybe Text forall a. a -> Maybe a @@ -608,7 +608,7 @@ "translations" instance IpeWriteText PinType where - ipeWriteText :: PinType -> Maybe Text + ipeWriteText :: PinType -> Maybe Text ipeWriteText PinType No = Maybe Text forall a. Maybe a @@ -629,12 +629,12 @@ Just Text "v" -instance IpeWriteText r => IpeWriteText (RGB r) where - ipeWriteText :: RGB r -> Maybe Text -ipeWriteText (RGB r -r r -g r -b) = [Maybe Text] -> Maybe Text +instance IpeWriteText r => IpeWriteText (RGB r) where + ipeWriteText :: RGB r -> Maybe Text +ipeWriteText (RGB r +r r +g r +b) = [Maybe Text] -> Maybe Text unwords' ([Maybe Text] -> Maybe Text) -> ([r] -> [Maybe Text]) -> [r] -> Maybe Text forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -645,36 +645,36 @@ ipeWriteText ([r] -> Maybe Text) -> [r] -> Maybe Text forall a b. (a -> b) -> a -> b $ [r -r,r -g,r -b] +r,r +g,r +b] -deriving instance IpeWriteText r => IpeWriteText (IpeSize r) -deriving instance IpeWriteText r => IpeWriteText (IpePen r) -deriving instance IpeWriteText r => IpeWriteText (IpeColor r) +deriving instance IpeWriteText r => IpeWriteText (IpeSize r) +deriving instance IpeWriteText r => IpeWriteText (IpePen r) +deriving instance IpeWriteText r => IpeWriteText (IpeColor r) -instance IpeWriteText r => IpeWriteText (IpeDash r) where - ipeWriteText :: IpeDash r -> Maybe Text -ipeWriteText (DashNamed Text -t) = Text -> Maybe Text +instance IpeWriteText r => IpeWriteText (IpeDash r) where + ipeWriteText :: IpeDash r -> Maybe Text +ipeWriteText (DashNamed Text +t) = Text -> Maybe Text forall a. a -> Maybe a Just Text -t - ipeWriteText (DashPattern [r] -xs r -x) = (\[Text] -ts Text -t -> [Text] -> Text +t + ipeWriteText (DashPattern [r] +xs r +x) = (\[Text] +ts Text +t -> [Text] -> Text forall a. Monoid a => [a] -> a mconcat [ Text "[" , Text -> [Text] -> Text Text.intercalate Text " " [Text] -ts +ts , Text "] ", Text -t ]) +t ]) ([Text] -> Text -> Text) -> Maybe [Text] -> Maybe (Text -> Text) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (r -> Maybe Text) -> [r] -> Maybe [Text] @@ -685,17 +685,17 @@ mapM r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText [r] -xs +xs Maybe (Text -> Text) -> Maybe Text -> Maybe Text forall a b. Maybe (a -> b) -> Maybe a -> Maybe b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText r -x +x instance IpeWriteText FillType where - ipeWriteText :: FillType -> Maybe Text + ipeWriteText :: FillType -> Maybe Text ipeWriteText FillType Wind = Text -> Maybe Text forall a. a -> Maybe a @@ -707,40 +707,40 @@ Just Text "eofill" -instance IpeWriteText r => IpeWriteText (IpeArrow r) where - ipeWriteText :: IpeArrow r -> Maybe Text -ipeWriteText (IpeArrow Text -n IpeSize r -s) = (\Text -n' Text -s' -> Text -n' Text -> Text -> Text +instance IpeWriteText r => IpeWriteText (IpeArrow r) where + ipeWriteText :: IpeArrow r -> Maybe Text +ipeWriteText (IpeArrow Text +n IpeSize r +s) = (\Text +n' Text +s' -> Text +n' Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "/" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text -s') (Text -> Text -> Text) -> Maybe Text -> Maybe (Text -> Text) +s') (Text -> Text -> Text) -> Maybe Text -> Maybe (Text -> Text) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Text -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Text -n +n Maybe (Text -> Text) -> Maybe Text -> Maybe Text forall a b. Maybe (a -> b) -> Maybe a -> Maybe b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> IpeSize r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText IpeSize r -s +s -instance IpeWriteText r => IpeWriteText (Path r) where - ipeWriteText :: Path r -> Maybe Text +instance IpeWriteText r => IpeWriteText (Path r) where + ipeWriteText :: Path r -> Maybe Text ipeWriteText = (Seq Text -> Text) -> Maybe (Seq Text) -> Maybe Text forall a b. (a -> b) -> Maybe a -> Maybe b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Seq Text -> Text -concat' (Maybe (Seq Text) -> Maybe Text) +concat' (Maybe (Seq Text) -> Maybe Text) -> (Path r -> Maybe (Seq Text)) -> Path r -> Maybe Text forall b c a. (b -> c) -> (a -> b) -> a -> c . Seq (Maybe Text) -> Maybe (Seq Text) @@ -770,24 +770,24 @@ -> p (Path r) (f (Path r')) pathSegments where - concat' :: Seq Text -> Text -concat' = (Text -> Text -> Text) -> Seq Text -> Text + concat' :: Seq Text -> Text +concat' = (Text -> Text -> Text) -> Seq Text -> Text forall a. (a -> a -> a) -> Seq a -> a forall (t :: * -> *) a. Foldable t => (a -> a -> a) -> t a -> a -F.foldr1 (\Text -t Text -t' -> Text -t Text -> Text -> Text +F.foldr1 (\Text +t Text +t' -> Text +t Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text "\n" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text -t') +t') instance IpeWriteText HorizontalAlignment where - ipeWriteText :: HorizontalAlignment -> Maybe Text + ipeWriteText :: HorizontalAlignment -> Maybe Text ipeWriteText = \case HorizontalAlignment AlignLeft -> Text -> Maybe Text @@ -806,7 +806,7 @@ "right" instance IpeWriteText VerticalAlignment where - ipeWriteText :: VerticalAlignment -> Maybe Text + ipeWriteText :: VerticalAlignment -> Maybe Text ipeWriteText = \case VerticalAlignment AlignTop -> Text -> Maybe Text @@ -830,153 +830,153 @@ "baseline" -------------------------------------------------------------------------------- -instance IpeWriteText r => IpeWrite (IpeSymbol r) where - ipeWrite :: IpeSymbol r -> Maybe (NodeG [] Text Text) -ipeWrite (Symbol Point 2 r -p Text -n) = Text -> NodeG [] Text Text -f (Text -> NodeG [] Text Text) +instance IpeWriteText r => IpeWrite (IpeSymbol r) where + ipeWrite :: IpeSymbol r -> Maybe (NodeG [] Text Text) +ipeWrite (Symbol Point 2 r +p Text +n) = Text -> NodeG [] Text Text +f (Text -> NodeG [] Text Text) -> Maybe Text -> Maybe (NodeG [] Text Text) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -p +p where - f :: Text -> NodeG [] Text Text -f Text -ps = Text + f :: Text -> NodeG [] Text Text +f Text +ps = Text -> [(Text, Text)] -> [NodeG [] Text Text] -> NodeG [] Text Text forall (c :: * -> *) tag text. tag -> [(tag, text)] -> c (NodeG c tag text) -> NodeG c tag text Element Text "use" [ (Text "pos", Text -ps) +ps) , (Text "name", Text -n) +n) ] [] -------------------------------------------------------------------------------- -instance IpeWriteText r => IpeWriteText (Matrix.Matrix 3 3 r) where - ipeWriteText :: Matrix 3 3 r -> Maybe Text -ipeWriteText (Matrix.Matrix Vector 3 (Vector 3 r) -m) = [Maybe Text] -> Maybe Text +instance IpeWriteText r => IpeWriteText (Matrix.Matrix 3 3 r) where + ipeWriteText :: Matrix 3 3 r -> Maybe Text +ipeWriteText (Matrix.Matrix Vector 3 (Vector 3 r) +m) = [Maybe Text] -> Maybe Text unwords' [Maybe Text -a,Maybe Text -b,Maybe Text -c,Maybe Text -d,Maybe Text -e,Maybe Text -f] +a,Maybe Text +b,Maybe Text +c,Maybe Text +d,Maybe Text +e,Maybe Text +f] where - (Vector3 Vector 3 r -r1 Vector 3 r -r2 Vector 3 r + (Vector3 Vector 3 r +r1 Vector 3 r +r2 Vector 3 r _) = Vector 3 (Vector 3 r) -m +m - (Vector3 Maybe Text -a Maybe Text -c Maybe Text -e) = r -> Maybe Text + (Vector3 Maybe Text +a Maybe Text +c Maybe Text +e) = r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText (r -> Maybe Text) -> Vector 3 r -> Vector 3 (Maybe Text) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Vector 3 r -r1 - (Vector3 Maybe Text -b Maybe Text -d Maybe Text -f) = r -> Maybe Text +r1 + (Vector3 Maybe Text +b Maybe Text +d Maybe Text +f) = r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText (r -> Maybe Text) -> Vector 3 r -> Vector 3 (Maybe Text) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Vector 3 r -r2 +r2 -- TODO: The third row should be (0,0,1) I guess. -instance IpeWriteText r => IpeWriteText (Operation r) where - ipeWriteText :: Operation r -> Maybe Text -ipeWriteText (MoveTo Point 2 r -p) = [Maybe Text] -> Maybe Text +instance IpeWriteText r => IpeWriteText (Operation r) where + ipeWriteText :: Operation r -> Maybe Text +ipeWriteText (MoveTo Point 2 r +p) = [Maybe Text] -> Maybe Text unwords' [ Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -p, Text -> Maybe Text +p, Text -> Maybe Text forall a. a -> Maybe a Just Text "m"] - ipeWriteText (LineTo Point 2 r -p) = [Maybe Text] -> Maybe Text + ipeWriteText (LineTo Point 2 r +p) = [Maybe Text] -> Maybe Text unwords' [ Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -p, Text -> Maybe Text +p, Text -> Maybe Text forall a. a -> Maybe a Just Text "l"] - ipeWriteText (CurveTo Point 2 r -p Point 2 r -q Point 2 r -r) = [Maybe Text] -> Maybe Text + ipeWriteText (CurveTo Point 2 r +p Point 2 r +q Point 2 r +r) = [Maybe Text] -> Maybe Text unwords' [ Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -p +p , Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -q +q , Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -r, Text -> Maybe Text +r, Text -> Maybe Text forall a. a -> Maybe a Just Text "c"] - ipeWriteText (QCurveTo Point 2 r -p Point 2 r -q) = [Maybe Text] -> Maybe Text + ipeWriteText (QCurveTo Point 2 r +p Point 2 r +q) = [Maybe Text] -> Maybe Text unwords' [ Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -p +p , Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -q, Text -> Maybe Text +q, Text -> Maybe Text forall a. a -> Maybe a Just Text "q"] - ipeWriteText (Ellipse Matrix 3 3 r -m) = [Maybe Text] -> Maybe Text + ipeWriteText (Ellipse Matrix 3 3 r +m) = [Maybe Text] -> Maybe Text unwords' [ Matrix 3 3 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Matrix 3 3 r -m, Text -> Maybe Text +m, Text -> Maybe Text forall a. a -> Maybe a Just Text "e"] - ipeWriteText (ArcTo Matrix 3 3 r -m Point 2 r -p) = [Maybe Text] -> Maybe Text + ipeWriteText (ArcTo Matrix 3 3 r +m Point 2 r +p) = [Maybe Text] -> Maybe Text unwords' [ Matrix 3 3 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Matrix 3 3 r -m +m , Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -p, Text -> Maybe Text +p, Text -> Maybe Text forall a. a -> Maybe a Just Text "a"] - ipeWriteText (Spline [Point 2 r] -pts) = [Maybe Text] -> Maybe Text + ipeWriteText (Spline [Point 2 r] +pts) = [Maybe Text] -> Maybe Text unlines' ([Maybe Text] -> Maybe Text) -> [Maybe Text] -> Maybe Text forall a b. (a -> b) -> a -> b $ (Point 2 r -> Maybe Text) -> [Point 2 r] -> [Maybe Text] @@ -984,14 +984,14 @@ map Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText [Point 2 r] -pts [Maybe Text] -> [Maybe Text] -> [Maybe Text] +pts [Maybe Text] -> [Maybe Text] -> [Maybe Text] forall a. Semigroup a => a -> a -> a <> [Text -> Maybe Text forall a. a -> Maybe a Just Text "s"] - ipeWriteText (ClosedSpline [Point 2 r] -pts) = [Maybe Text] -> Maybe Text + ipeWriteText (ClosedSpline [Point 2 r] +pts) = [Maybe Text] -> Maybe Text unlines' ([Maybe Text] -> Maybe Text) -> [Maybe Text] -> Maybe Text forall a b. (a -> b) -> a -> b $ (Point 2 r -> Maybe Text) -> [Point 2 r] -> [Maybe Text] @@ -999,7 +999,7 @@ map Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText [Point 2 r] -pts [Maybe Text] -> [Maybe Text] -> [Maybe Text] +pts [Maybe Text] -> [Maybe Text] -> [Maybe Text] forall a. Semigroup a => a -> a -> a <> [Text -> Maybe Text forall a. a -> Maybe a @@ -1012,11 +1012,11 @@ "h" -instance (IpeWriteText r, Point_ point 2 r) => IpeWriteText (PolyLine point) where - ipeWriteText :: PolyLine point -> Maybe Text -ipeWriteText PolyLine point -pl = case PolyLine point -plPolyLine point +instance (IpeWriteText r, Point_ point 2 r) => IpeWriteText (PolyLine point) where + ipeWriteText :: PolyLine point -> Maybe Text +ipeWriteText PolyLine point +pl = case PolyLine point +plPolyLine point -> Getting (Endo [Point 2 r]) (PolyLine point) (Point 2 r) -> [Point 2 r] forall s a. s -> Getting (Endo [a]) s a -> [a] @@ -1048,9 +1048,9 @@ Lens' point (Point d r) Lens' point (Point 2 r) asPoint of - (Point 2 r -p : [Point 2 r] -rest) -> [Maybe Text] -> Maybe Text + (Point 2 r +p : [Point 2 r] +rest) -> [Maybe Text] -> Maybe Text unlines' ([Maybe Text] -> Maybe Text) -> ([Operation r] -> [Maybe Text]) -> [Operation r] -> Maybe Text forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -1063,14 +1063,14 @@ $ Point 2 r -> Operation r forall r. Point 2 r -> Operation r MoveTo Point 2 r -p Operation r -> [Operation r] -> [Operation r] +p Operation r -> [Operation r] -> [Operation r] forall a. a -> [a] -> [a] : (Point 2 r -> Operation r) -> [Point 2 r] -> [Operation r] forall a b. (a -> b) -> [a] -> [b] map Point 2 r -> Operation r forall r. Point 2 r -> Operation r LineTo [Point 2 r] -rest +rest [Point 2 r] _ -> String -> Maybe Text forall a. HasCallStack => String -> a @@ -1078,10 +1078,10 @@ "ipeWriteText. absurd. no vertices polyline" -- the polyline type guarantees that there is at least one point -instance (IpeWriteText r, Point_ point 2 r) => IpeWriteText (SimplePolygon point) where - ipeWriteText :: SimplePolygon point -> Maybe Text -ipeWriteText SimplePolygon point -pg = NonEmpty (Point 2 r) -> Maybe Text +instance (IpeWriteText r, Point_ point 2 r) => IpeWriteText (SimplePolygon point) where + ipeWriteText :: SimplePolygon point -> Maybe Text +ipeWriteText SimplePolygon point +pg = NonEmpty (Point 2 r) -> Maybe Text forall r. IpeWriteText r => NonEmpty (Point 2 r) -> Maybe Text ipeWriteTextPolygonVertices (NonEmpty (Point 2 r) -> Maybe Text) -> NonEmpty (Point 2 r) -> Maybe Text @@ -1120,14 +1120,14 @@ Lens' point (Point d r) Lens' point (Point 2 r) asPoint) SimplePolygon point -pg +pg -ipeWriteTextPolygonVertices :: IpeWriteText r => NonEmpty (Point 2 r) -> Maybe Text +ipeWriteTextPolygonVertices :: IpeWriteText r => NonEmpty (Point 2 r) -> Maybe Text ipeWriteTextPolygonVertices :: forall r. IpeWriteText r => NonEmpty (Point 2 r) -> Maybe Text ipeWriteTextPolygonVertices = \case - (Point 2 r -p :| [Point 2 r] -rest) -> [Maybe Text] -> Maybe Text + (Point 2 r +p :| [Point 2 r] +rest) -> [Maybe Text] -> Maybe Text unlines' ([Maybe Text] -> Maybe Text) -> ([Operation r] -> [Maybe Text]) -> [Operation r] -> Maybe Text forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -1140,21 +1140,21 @@ $ Point 2 r -> Operation r forall r. Point 2 r -> Operation r MoveTo Point 2 r -p Operation r -> [Operation r] -> [Operation r] +p Operation r -> [Operation r] -> [Operation r] forall a. a -> [a] -> [a] : (Point 2 r -> Operation r) -> [Point 2 r] -> [Operation r] forall a b. (a -> b) -> [a] -> [b] map Point 2 r -> Operation r forall r. Point 2 r -> Operation r LineTo [Point 2 r] -rest [Operation r] -> [Operation r] -> [Operation r] +rest [Operation r] -> [Operation r] -> [Operation r] forall a. [a] -> [a] -> [a] ++ [Operation r forall r. Operation r ClosePath] -instance (IpeWriteText r, Point_ point 2 r) => IpeWriteText (CubicBezier point) where - ipeWriteText :: CubicBezier point -> Maybe Text +instance (IpeWriteText r, Point_ point 2 r) => IpeWriteText (CubicBezier point) where + ipeWriteText :: CubicBezier point -> Maybe Text ipeWriteText ((point -> Point 2 r) -> CubicBezier point -> BezierSplineF (Vector 4) (Point 2 r) forall a b. @@ -1168,11 +1168,11 @@ Point_ point d r => Lens' point (Point d r) Lens' point (Point 2 r) -asPoint) -> Bezier3 Point 2 r -p Point 2 r -q Point 2 r -r Point 2 r -s) = +asPoint) -> Bezier3 Point 2 r +p Point 2 r +q Point 2 r +r Point 2 r +s) = [Maybe Text] -> Maybe Text unlines' ([Maybe Text] -> Maybe Text) -> ([Operation r] -> [Maybe Text]) -> [Operation r] -> Maybe Text @@ -1186,29 +1186,29 @@ $ [Point 2 r -> Operation r forall r. Point 2 r -> Operation r MoveTo Point 2 r -p, Point 2 r -> Point 2 r -> Point 2 r -> Operation r +p, Point 2 r -> Point 2 r -> Point 2 r -> Operation r forall r. Point 2 r -> Point 2 r -> Point 2 r -> Operation r CurveTo Point 2 r -q Point 2 r -r Point 2 r -s] +q Point 2 r +r Point 2 r +s] -instance IpeWriteText r => IpeWriteText (PathSegment r) where - ipeWriteText :: PathSegment r -> Maybe Text -ipeWriteText (PolyLineSegment PolyLine (Point 2 r) -p) = PolyLine (Point 2 r) -> Maybe Text +instance IpeWriteText r => IpeWriteText (PathSegment r) where + ipeWriteText :: PathSegment r -> Maybe Text +ipeWriteText (PolyLineSegment PolyLine (Point 2 r) +p) = PolyLine (Point 2 r) -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText PolyLine (Point 2 r) -p - ipeWriteText (PolygonPath Orientation -orient SimplePolygon (Point 2 r) -p) = case Orientation -orient of +p + ipeWriteText (PolygonPath Orientation +orient SimplePolygon (Point 2 r) +p) = case Orientation +orient of Orientation AsIs -> SimplePolygon (Point 2 r) -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText SimplePolygon (Point 2 r) -p +p Orientation Reversed -> NonEmpty (Point 2 r) -> Maybe Text forall r. IpeWriteText r => NonEmpty (Point 2 r) -> Maybe Text @@ -1255,16 +1255,16 @@ Lens' point (Point d r) Lens' (Point 2 r) (Point 2 r) asPoint) SimplePolygon (Point 2 r) -p - ipeWriteText (EllipseSegment Ellipse r -e) = Operation r -> Maybe Text +p + ipeWriteText (EllipseSegment Ellipse r +e) = Operation r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText (Operation r -> Maybe Text) -> Operation r -> Maybe Text forall a b. (a -> b) -> a -> b $ Matrix 3 3 r -> Operation r forall r. Matrix 3 3 r -> Operation r Ellipse (Ellipse r -eEllipse r +eEllipse r -> Getting (Matrix 3 3 r) (Ellipse r) (Matrix 3 3 r) -> Matrix 3 3 r forall s a. s -> Getting a s a -> a @@ -1274,22 +1274,22 @@ p (Matrix 3 3 r) (f (Matrix 3 3 s)) -> p (Ellipse r) (f (Ellipse s)) ellipseMatrix) - ipeWriteText (CubicBezierSegment CubicBezier (Point 2 r) -b) = CubicBezier (Point 2 r) -> Maybe Text + ipeWriteText (CubicBezierSegment CubicBezier (Point 2 r) +b) = CubicBezier (Point 2 r) -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText CubicBezier (Point 2 r) -b +b ipeWriteText PathSegment r _ = String -> Maybe Text forall a. HasCallStack => String -> a error String "ipeWriteText: PathSegment, not implemented yet." -instance IpeWriteText r => IpeWrite (Path r) where - ipeWrite :: Path r -> Maybe (NodeG [] Text Text) -ipeWrite Path r -p = (\Text -t -> Text +instance IpeWriteText r => IpeWrite (Path r) where + ipeWrite :: Path r -> Maybe (NodeG [] Text Text) +ipeWrite Path r +p = (\Text +t -> Text -> [(Text, Text)] -> [NodeG [] Text Text] -> NodeG [] Text Text forall (c :: * -> *) tag text. tag -> [(tag, text)] -> c (NodeG c tag text) -> NodeG c tag text @@ -1297,39 +1297,39 @@ "path" [] [Text -> NodeG [] Text Text forall (c :: * -> *) tag text. text -> NodeG c tag text Text Text -t]) (Text -> NodeG [] Text Text) +t]) (Text -> NodeG [] Text Text) -> Maybe Text -> Maybe (NodeG [] Text Text) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Path r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Path r -p +p -------------------------------------------------------------------------------- -instance (IpeWriteText r) => IpeWrite (Group r) where - ipeWrite :: Group r -> Maybe (NodeG [] Text Text) -ipeWrite (Group [IpeObject r] -gs) = [IpeObject r] -> Maybe (NodeG [] Text Text) +instance (IpeWriteText r) => IpeWrite (Group r) where + ipeWrite :: Group r -> Maybe (NodeG [] Text Text) +ipeWrite (Group [IpeObject r] +gs) = [IpeObject r] -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite [IpeObject r] -gs +gs -instance ( AllConstrained IpeAttrName rs - , RecordToList rs, RMap rs - , ReifyConstraint IpeWriteText (Attr f) rs - , RecAll (Attr f) rs IpeWriteText - , IpeWrite g - ) => IpeWrite (g :+ IA.Attributes f rs) where - ipeWrite :: (g :+ Attributes f rs) -> Maybe (NodeG [] Text Text) -ipeWrite (g -g :+ Attributes f rs -ats) = g -> Maybe (NodeG [] Text Text) +instance ( AllConstrained IpeAttrName rs + , RecordToList rs, RMap rs + , ReifyConstraint IpeWriteText (Attr f) rs + , RecAll (Attr f) rs IpeWriteText + , IpeWrite g + ) => IpeWrite (g :+ IA.Attributes f rs) where + ipeWrite :: (g :+ Attributes f rs) -> Maybe (NodeG [] Text Text) +ipeWrite (g +g :+ Attributes f rs +ats) = g -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite g -g Maybe (NodeG [] Text Text) +g Maybe (NodeG [] Text Text) -> [(Text, Text)] -> Maybe (NodeG [] Text Text) `mAddAtts` Attributes f rs -> [(Text, Text)] forall (rs :: [AttributeUniverse]) @@ -1339,17 +1339,17 @@ AllConstrained IpeAttrName rs, RecAll (Attr f) rs IpeWriteText) => Attributes f rs -> [(Text, Text)] ipeWriteAttrs Attributes f rs -ats +ats -instance IpeWriteText r => IpeWrite (MiniPage r) where - ipeWrite :: MiniPage r -> Maybe (NodeG [] Text Text) -ipeWrite (MiniPage Text -t Point 2 r -p r -w) = (\Text -pt Text -wt -> +instance IpeWriteText r => IpeWrite (MiniPage r) where + ipeWrite :: MiniPage r -> Maybe (NodeG [] Text Text) +ipeWrite (MiniPage Text +t Point 2 r +p r +w) = (\Text +pt Text +wt -> Text -> [(Text, Text)] -> [NodeG [] Text Text] -> NodeG [] Text Text forall (c :: * -> *) tag text. @@ -1357,24 +1357,24 @@ Element Text "text" [ (Text "pos", Text -pt) +pt) , (Text "type", Text "minipage") , (Text "width", Text -wt) +wt) ] [Text -> NodeG [] Text Text forall (c :: * -> *) tag text. text -> NodeG c tag text Text Text -t] +t] ) (Text -> Text -> NodeG [] Text Text) -> Maybe Text -> Maybe (Text -> NodeG [] Text Text) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -p +p Maybe (Text -> NodeG [] Text Text) -> Maybe Text -> Maybe (NodeG [] Text Text) forall a b. Maybe (a -> b) -> Maybe a -> Maybe b @@ -1382,17 +1382,17 @@ <*> r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText r -w +w -instance IpeWriteText r => IpeWrite (Image r) where - ipeWrite :: Image r -> Maybe (NodeG [] Text Text) -ipeWrite (Image () -d (Box Point 2 r -a Point 2 r -b)) = (\Text -dt Text -p Text -q -> +instance IpeWriteText r => IpeWrite (Image r) where + ipeWrite :: Image r -> Maybe (NodeG [] Text Text) +ipeWrite (Image () +d (Box Point 2 r +a Point 2 r +b)) = (\Text +dt Text +p Text +q -> Text -> [(Text, Text)] -> [NodeG [] Text Text] -> NodeG [] Text Text forall (c :: * -> *) tag text. @@ -1400,16 +1400,16 @@ Element Text "image" [(Text "rect", Text -p Text -> Text -> Text +p Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text " " Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text -q)] [Text -> NodeG [] Text Text +q)] [Text -> NodeG [] Text Text forall (c :: * -> *) tag text. text -> NodeG c tag text Text Text -dt] +dt] ) (Text -> Text -> Text -> NodeG [] Text Text) -> Maybe Text -> Maybe (Text -> Text -> NodeG [] Text Text) @@ -1417,7 +1417,7 @@ <$> () -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText () -d +d Maybe (Text -> Text -> NodeG [] Text Text) -> Maybe Text -> Maybe (Text -> NodeG [] Text Text) forall a b. Maybe (a -> b) -> Maybe a -> Maybe b @@ -1425,7 +1425,7 @@ <*> Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -a +a Maybe (Text -> NodeG [] Text Text) -> Maybe Text -> Maybe (NodeG [] Text Text) forall a b. Maybe (a -> b) -> Maybe a -> Maybe b @@ -1433,21 +1433,21 @@ <*> Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -b +b -- TODO: Replace this one with s.t. that writes the actual image payload instance IpeWriteText () where - ipeWriteText :: () -> Maybe Text + ipeWriteText :: () -> Maybe Text ipeWriteText () = Maybe Text forall a. Maybe a Nothing -instance IpeWriteText r => IpeWrite (TextLabel r) where - ipeWrite :: TextLabel r -> Maybe (NodeG [] Text Text) -ipeWrite (Label Text -t Point 2 r -p) = (\Text -pt -> +instance IpeWriteText r => IpeWrite (TextLabel r) where + ipeWrite :: TextLabel r -> Maybe (NodeG [] Text Text) +ipeWrite (Label Text +t Point 2 r +p) = (\Text +pt -> Text -> [(Text, Text)] -> [NodeG [] Text Text] -> NodeG [] Text Text forall (c :: * -> *) tag text. @@ -1455,27 +1455,27 @@ Element Text "text" [(Text "pos", Text -pt) +pt) ,(Text "type", Text "label") ] [Text -> NodeG [] Text Text forall (c :: * -> *) tag text. text -> NodeG c tag text Text Text -t] +t] ) (Text -> NodeG [] Text Text) -> Maybe Text -> Maybe (NodeG [] Text Text) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Point 2 r -> Maybe Text forall t. IpeWriteText t => t -> Maybe Text ipeWriteText Point 2 r -p +p -instance (IpeWriteText r) => IpeWrite (IpeObject r) where - ipeWrite :: IpeObject r -> Maybe (NodeG [] Text Text) -ipeWrite (IpeGroup IpeObject' Group r -g) = (Group r +instance (IpeWriteText r) => IpeWrite (IpeObject r) where + ipeWrite :: IpeObject r -> Maybe (NodeG [] Text Text) +ipeWrite (IpeGroup IpeObject' Group r +g) = (Group r :+ Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]) -> Maybe (NodeG [] Text Text) @@ -1483,30 +1483,30 @@ ipeWrite Group r :+ Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip] IpeObject' Group r -g - ipeWrite (IpeImage IpeObject' Image r -i) = (Image r :+ Attributes' r CommonAttributes) +g + ipeWrite (IpeImage IpeObject' Image r +i) = (Image r :+ Attributes' r CommonAttributes) -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite Image r :+ Attributes' r CommonAttributes IpeObject' Image r -i - ipeWrite (IpeTextLabel IpeObject' TextLabel r -l) = (TextLabel r :+ Attributes' r CommonAttributes) +i + ipeWrite (IpeTextLabel IpeObject' TextLabel r +l) = (TextLabel r :+ Attributes' r CommonAttributes) -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite TextLabel r :+ Attributes' r CommonAttributes IpeObject' TextLabel r -l - ipeWrite (IpeMiniPage IpeObject' MiniPage r -m) = (MiniPage r :+ Attributes' r CommonAttributes) +l + ipeWrite (IpeMiniPage IpeObject' MiniPage r +m) = (MiniPage r :+ Attributes' r CommonAttributes) -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite MiniPage r :+ Attributes' r CommonAttributes IpeObject' MiniPage r -m - ipeWrite (IpeUse IpeObject' IpeSymbol r -s) = (IpeSymbol r +m + ipeWrite (IpeUse IpeObject' IpeSymbol r +s) = (IpeSymbol r :+ Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen, @@ -1519,9 +1519,9 @@ '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen, 'Size] IpeObject' IpeSymbol r -s - ipeWrite (IpePath IpeObject' Path r -p) = (Path r +s + ipeWrite (IpePath IpeObject' Path r +p) = (Path r :+ Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash, @@ -1536,16 +1536,16 @@ 'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow, 'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient] IpeObject' Path r -p +p -------------------------------------------------------------------------------- -deriving instance IpeWriteText LayerName +deriving instance IpeWriteText LayerName instance IpeWrite LayerName where - ipeWrite :: LayerName -> Maybe (NodeG [] Text Text) -ipeWrite (LayerName Text -n) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) + ipeWrite :: LayerName -> Maybe (NodeG [] Text Text) +ipeWrite (LayerName Text +n) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) forall a. a -> Maybe a Just (NodeG [] Text Text -> Maybe (NodeG [] Text Text)) -> NodeG [] Text Text -> Maybe (NodeG [] Text Text) @@ -1557,13 +1557,13 @@ Element Text "layer" [(Text "name",Text -n)] [] +n)] [] instance IpeWrite View where - ipeWrite :: View -> Maybe (NodeG [] Text Text) -ipeWrite (View [LayerName] -lrs LayerName -act) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) + ipeWrite :: View -> Maybe (NodeG [] Text Text) +ipeWrite (View [LayerName] +lrs LayerName +act) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) forall a. a -> Maybe a Just (NodeG [] Text Text -> Maybe (NodeG [] Text Text)) -> NodeG [] Text Text -> Maybe (NodeG [] Text Text) @@ -1575,18 +1575,18 @@ Element Text "view" [ (Text "layers", Text -ls) +ls) , (Text "active", LayerName -actLayerName -> Getting Text LayerName Text -> Text +actLayerName -> Getting Text LayerName Text -> Text forall s a. s -> Getting a s a -> a ^.Getting Text LayerName Text Iso' LayerName Text layerName) ] [] where - ls :: Text -ls = [Text] -> Text + ls :: Text +ls = [Text] -> Text Text.unwords ([Text] -> Text) -> ([LayerName] -> [Text]) -> [LayerName] -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . (LayerName -> Text) -> [LayerName] -> [Text] @@ -1598,14 +1598,14 @@ layerName) ([LayerName] -> Text) -> [LayerName] -> Text forall a b. (a -> b) -> a -> b $ [LayerName] -lrs +lrs -instance (IpeWriteText r) => IpeWrite (IpePage r) where - ipeWrite :: IpePage r -> Maybe (NodeG [] Text Text) -ipeWrite (IpePage [LayerName] -lrs [View] -vs [IpeObject r] -objs) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) +instance (IpeWriteText r) => IpeWrite (IpePage r) where + ipeWrite :: IpePage r -> Maybe (NodeG [] Text Text) +ipeWrite (IpePage [LayerName] +lrs [View] +vs [IpeObject r] +objs) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) forall a. a -> Maybe a Just (NodeG [] Text Text -> Maybe (NodeG [] Text Text)) -> ([[Maybe (NodeG [] Text Text)]] -> NodeG [] Text Text) @@ -1642,39 +1642,39 @@ map LayerName -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite [LayerName] -lrs +lrs , (View -> Maybe (NodeG [] Text Text)) -> [View] -> [Maybe (NodeG [] Text Text)] forall a b. (a -> b) -> [a] -> [b] map View -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite [View] -vs +vs , (IpeObject r -> Maybe (NodeG [] Text Text)) -> [IpeObject r] -> [Maybe (NodeG [] Text Text)] forall a b. (a -> b) -> [a] -> [b] map IpeObject r -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite [IpeObject r] -objs +objs ] instance IpeWrite IpeStyle where - ipeWrite :: IpeStyle -> Maybe (NodeG [] Text Text) + ipeWrite :: IpeStyle -> Maybe (NodeG [] Text Text) ipeWrite (IpeStyle Maybe Text -_ NodeG [] Text Text -xml) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) +_ NodeG [] Text Text +xml) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) forall a. a -> Maybe a Just NodeG [] Text Text -xml +xml instance IpeWrite IpePreamble where - ipeWrite :: IpePreamble -> Maybe (NodeG [] Text Text) + ipeWrite :: IpePreamble -> Maybe (NodeG [] Text Text) ipeWrite (IpePreamble Maybe Text -_ Text -latex) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) +_ Text +latex) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) forall a. a -> Maybe a Just (NodeG [] Text Text -> Maybe (NodeG [] Text Text)) -> NodeG [] Text Text -> Maybe (NodeG [] Text Text) @@ -1687,15 +1687,15 @@ "preamble" [] [Text -> NodeG [] Text Text forall (c :: * -> *) tag text. text -> NodeG c tag text Text Text -latex] +latex] -- TODO: I probably want to do something with the encoding .... -instance (IpeWriteText r) => IpeWrite (IpeFile r) where - ipeWrite :: IpeFile r -> Maybe (NodeG [] Text Text) -ipeWrite (IpeFile Maybe IpePreamble -mp [IpeStyle] -ss NonEmpty (IpePage r) -pgs) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) +instance (IpeWriteText r) => IpeWrite (IpeFile r) where + ipeWrite :: IpeFile r -> Maybe (NodeG [] Text Text) +ipeWrite (IpeFile Maybe IpePreamble +mp [IpeStyle] +ss NonEmpty (IpePage r) +pgs) = NodeG [] Text Text -> Maybe (NodeG [] Text Text) forall a. a -> Maybe a Just (NodeG [] Text Text -> Maybe (NodeG [] Text Text)) -> NodeG [] Text Text -> Maybe (NodeG [] Text Text) @@ -1706,22 +1706,22 @@ tag -> [(tag, text)] -> c (NodeG c tag text) -> NodeG c tag text Element Text "ipe" [(Text, Text)] -ipeAtts [NodeG [] Text Text] -chs +ipeAtts [NodeG [] Text Text] +chs where - ipeAtts :: [(Text, Text)] -ipeAtts = [(Text + ipeAtts :: [(Text, Text)] +ipeAtts = [(Text "version",Text "70005"),(Text "creator", Text "HGeometry")] - chs :: [NodeG [] Text Text] -chs = [[NodeG [] Text Text]] -> [NodeG [] Text Text] + chs :: [NodeG [] Text Text] +chs = [[NodeG [] Text Text]] -> [NodeG [] Text Text] forall a. Monoid a => [a] -> a mconcat [ [Maybe (NodeG [] Text Text)] -> [NodeG [] Text Text] forall a. [Maybe a] -> [a] catMaybes [Maybe IpePreamble -mp Maybe IpePreamble +mp Maybe IpePreamble -> (IpePreamble -> Maybe (NodeG [] Text Text)) -> Maybe (NodeG [] Text Text) forall a b. Maybe a -> (a -> Maybe b) -> Maybe b @@ -1735,7 +1735,7 @@ mapMaybe IpeStyle -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite [IpeStyle] -ss +ss , (IpePage r -> Maybe (NodeG [] Text Text)) -> [IpePage r] -> [NodeG [] Text Text] forall a b. (a -> Maybe b) -> [a] -> [b] @@ -1753,7 +1753,7 @@ -> NonEmpty (IpePage r) -> [NodeG [] Text Text] forall a b. (a -> b) -> a -> b $ NonEmpty (IpePage r) -pgs +pgs ] @@ -1761,9 +1761,9 @@ -------------------------------------------------------------------------------- -instance (IpeWriteText r, Point_ point 2 r, Functor f, Foldable1 f - ) => IpeWrite (PolyLineF f point) where - ipeWrite :: PolyLineF f point -> Maybe (NodeG [] Text Text) +instance (IpeWriteText r, Point_ point 2 r, Functor f, Foldable1 f + ) => IpeWrite (PolyLineF f point) where + ipeWrite :: PolyLineF f point -> Maybe (NodeG [] Text Text) ipeWrite = Path r -> Maybe (NodeG [] Text Text) forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) ipeWrite (Path r -> Maybe (NodeG [] Text Text)) @@ -1777,13 +1777,13 @@ PolyLineF f point -> Path r fromPolyLine -fromPolyLine :: (Point_ point 2 r, Functor f, Foldable1 f) - => PolyLineF f point -> Path r +fromPolyLine :: (Point_ point 2 r, Functor f, Foldable1 f) + => PolyLineF f point -> Path r fromPolyLine :: forall point r (f :: * -> *). (Point_ point 2 r, Functor f, Foldable1 f) => PolyLineF f point -> Path r -fromPolyLine (PolyLine f point -vs) = +fromPolyLine (PolyLine f point +vs) = Seq (PathSegment r) -> Path r forall r. Seq (PathSegment r) -> Path r Path (Seq (PathSegment r) -> Path r) @@ -1829,19 +1829,19 @@ asPoint) (f point -> Path r) -> f point -> Path r forall a b. (a -> b) -> a -> b $ f point -vs +vs -instance ( IpeWriteText r - , EndPoint_ (endPoint point) - , IxValue (endPoint point) ~ point - , Vertex (LineSegment endPoint point) ~ point +instance ( IpeWriteText r + , EndPoint_ (endPoint point) + , IxValue (endPoint point) ~ point + , Vertex (LineSegment endPoint point) ~ point - , Point_ point 2 r - ) => IpeWrite (LineSegment endPoint point) where - ipeWrite :: LineSegment endPoint point -> Maybe (NodeG [] Text Text) + , Point_ point 2 r + ) => IpeWrite (LineSegment endPoint point) where + ipeWrite :: LineSegment endPoint point -> Maybe (NodeG [] Text Text) ipeWrite = forall t. IpeWrite t => t -> Maybe (NodeG [] Text Text) -ipeWrite @(PolyLineF NonEmpty point) (PolyLineF NonEmpty point -> Maybe (NodeG [] Text Text)) +ipeWrite @(PolyLineF NonEmpty point) (PolyLineF NonEmpty point -> Maybe (NodeG [] Text Text)) -> (LineSegment endPoint point -> PolyLineF NonEmpty point) -> LineSegment endPoint point -> Maybe (NodeG [] Text Text) @@ -1858,7 +1858,7 @@ _PolyLineLineSegment instance IpeWrite () where - ipeWrite :: () -> Maybe (NodeG [] Text Text) + ipeWrite :: () -> Maybe (NodeG [] Text Text) ipeWrite = Maybe (NodeG [] Text Text) -> () -> Maybe (NodeG [] Text Text) forall a b. a -> b -> a const Maybe (NodeG [] Text Text) diff --git a/haddocks/hgeometry/ipe/src/Ipe.html b/haddocks/hgeometry/ipe/src/Ipe.html index 74d660ebb..51f35e03a 100644 --- a/haddocks/hgeometry/ipe/src/Ipe.html +++ b/haddocks/hgeometry/ipe/src/Ipe.html @@ -71,33 +71,34 @@ , _asPolyLine , _asSimplePolygon , _asConvexPolygon - -- , _asSomePolygon, _asSimplePolygon, _asMultiPolygon - -- *** Dealing with Attributes - , _withAttrs - -- ** Default readers - , HasDefaultFromIpe(..) - - -- * Converting *to* IpeObjects - -- ** IpeWrite - , IpeWrite(..) - , IpeWriteText(..) - -- ** IpeOut - , module Ipe.IpeOut - -- ** Batch reexports - - -- , module Ipe.Types - -- , module Ipe.FromIpe - , module Ipe.Attributes - , module Ipe.Value - , IpeColor(..), named - ) where - -import Ipe.Types -import Ipe.Writer -import Ipe.Reader -import Ipe.IpeOut -import Ipe.FromIpe -import Ipe.Attributes -import Ipe.Value -import Ipe.Color - \ No newline at end of file + , _asPolygonalDomain + + -- *** Dealing with Attributes + , _withAttrs + -- ** Default readers + , HasDefaultFromIpe(..) + + -- * Converting *to* IpeObjects + -- ** IpeWrite + , IpeWrite(..) + , IpeWriteText(..) + -- ** IpeOut + , module Ipe.IpeOut + -- ** Batch reexports + + -- , module Ipe.Types + -- , module Ipe.FromIpe + , module Ipe.Attributes + , module Ipe.Value + , IpeColor(..), named + ) where + +import Ipe.Types +import Ipe.Writer +import Ipe.Reader +import Ipe.IpeOut +import Ipe.FromIpe +import Ipe.Attributes +import Ipe.Value +import Ipe.Color + \ No newline at end of file diff --git a/haddocks/hgeometry/miso/src/HGeometry.Miso.Event.Extra.html b/haddocks/hgeometry/miso/src/HGeometry.Miso.Event.Extra.html index cfa05e48e..cce72ce11 100644 --- a/haddocks/hgeometry/miso/src/HGeometry.Miso.Event.Extra.html +++ b/haddocks/hgeometry/miso/src/HGeometry.Miso.Event.Extra.html @@ -33,7 +33,7 @@ -------------------------------------------------------------------------------- -- | Scroll-wheel direction -data WheelDirection = Up | Down deriving (Int -> WheelDirection -> ShowS +data WheelDirection = Up | Down deriving (Int -> WheelDirection -> ShowS [WheelDirection] -> ShowS WheelDirection -> String (Int -> WheelDirection -> ShowS) @@ -48,7 +48,7 @@ show :: WheelDirection -> String $cshowList :: [WheelDirection] -> ShowS showList :: [WheelDirection] -> ShowS -Show,WheelDirection -> WheelDirection -> Bool +Show,WheelDirection -> WheelDirection -> Bool (WheelDirection -> WheelDirection -> Bool) -> (WheelDirection -> WheelDirection -> Bool) -> Eq WheelDirection forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -62,7 +62,7 @@ data Button = LeftButton | MiddleButton | RightButton - deriving (Int -> Button -> ShowS + deriving (Int -> Button -> ShowS [Button] -> ShowS Button -> String (Int -> Button -> ShowS) @@ -75,7 +75,7 @@ show :: Button -> String $cshowList :: [Button] -> ShowS showList :: [Button] -> ShowS -Show,Button -> Button -> Bool +Show,Button -> Button -> Bool (Button -> Button -> Bool) -> (Button -> Button -> Bool) -> Eq Button forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -86,7 +86,7 @@ Eq) -- | on wheel events -onWheel :: (WheelDirection -> action) -> Attribute action +onWheel :: (WheelDirection -> action) -> Attribute action onWheel :: forall action. (WheelDirection -> action) -> Attribute action onWheel = MisoString -> Decoder WheelDirection @@ -99,16 +99,16 @@ -> DecodeTarget -> Decoder WheelDirection forall a. (Value -> Parser a) -> DecodeTarget -> Decoder a Decoder Value -> Parser WheelDirection -dec DecodeTarget -dt) +dec DecodeTarget +dt) where - dt :: DecodeTarget -dt = [MisoString] -> DecodeTarget + dt :: DecodeTarget +dt = [MisoString] -> DecodeTarget DecodeTarget [MisoString] forall a. Monoid a => a mempty - dec :: Value -> Parser WheelDirection -dec = String + dec :: Value -> Parser WheelDirection +dec = String -> (Object -> Parser WheelDirection) -> Value -> Parser WheelDirection @@ -120,21 +120,21 @@ -> Value -> Parser WheelDirection forall a b. (a -> b) -> a -> b -$ \Object -o -> (Double -> WheelDirection -f (Double -> WheelDirection) +$ \Object +o -> (Double -> WheelDirection +f (Double -> WheelDirection) -> Parser Double -> Parser WheelDirection forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Object -o Object -> Key -> Parser Double +o Object -> Key -> Parser Double forall a. FromJSON a => Object -> Key -> Parser a .: Key "deltaY")) - f :: Double -> WheelDirection - f :: Double -> WheelDirection -f Double -x = if Double -x Double -> Double -> Bool + f :: Double -> WheelDirection + f :: Double -> WheelDirection +f Double +x = if Double +x Double -> Double -> Bool forall a. Ord a => a -> a -> Bool < Double 0 then WheelDirection @@ -142,7 +142,7 @@ Down -- | get the mouse button that was clicked -onClickWithButton :: (Button -> action) -> Attribute action +onClickWithButton :: (Button -> action) -> Attribute action onClickWithButton :: forall action. (Button -> action) -> Attribute action onClickWithButton = MisoString -> Decoder Button -> (Button -> action) -> Attribute action @@ -152,43 +152,43 @@ "click" ((Value -> Parser Button) -> DecodeTarget -> Decoder Button forall a. (Value -> Parser a) -> DecodeTarget -> Decoder a Decoder Value -> Parser Button -dec DecodeTarget -dt) +dec DecodeTarget +dt) where - dt :: DecodeTarget -dt = [MisoString] -> DecodeTarget + dt :: DecodeTarget +dt = [MisoString] -> DecodeTarget DecodeTarget [MisoString] forall a. Monoid a => a mempty - dec :: Value -> Parser Button - dec :: Value -> Parser Button -dec = String -> (Object -> Parser Button) -> Value -> Parser Button + dec :: Value -> Parser Button + dec :: Value -> Parser Button +dec = String -> (Object -> Parser Button) -> Value -> Parser Button forall a. String -> (Object -> Parser a) -> Value -> Parser a withObject String "event" ((Object -> Parser Button) -> Value -> Parser Button) -> (Object -> Parser Button) -> Value -> Parser Button forall a b. (a -> b) -> a -> b -$ \Object -o -> case Key -> Object -> Maybe Value +$ \Object +o -> case Key -> Object -> Maybe Value forall v. Key -> KeyMap v -> Maybe v Aeson.lookup Key "button" Object -o of +o of Maybe Value Nothing -> String -> Parser Button forall a. String -> Parser a forall (m :: * -> *) a. MonadFail m => String -> m a fail String "button not found?" - Just Value -v -> ((Scientific -> Parser Button) -> Value -> Parser Button) + Just Value +v -> ((Scientific -> Parser Button) -> Value -> Parser Button) -> Value -> (Scientific -> Parser Button) -> Parser Button forall a b c. (a -> b -> c) -> b -> a -> c flip (String -> (Scientific -> Parser Button) -> Value -> Parser Button forall a. String -> (Scientific -> Parser a) -> Value -> Parser a withScientific String "Button") Value -v ((Scientific -> Parser Button) -> Parser Button) +v ((Scientific -> Parser Button) -> Parser Button) -> (Scientific -> Parser Button) -> Parser Button forall a b. (a -> b) -> a -> b $ \case @@ -218,7 +218,7 @@ "unknown button" -- | Get right clicks -onRightClick :: action -> Attribute action +onRightClick :: action -> Attribute action onRightClick :: forall action. action -> Attribute action onRightClick = action -> Attribute action forall action. action -> Attribute action @@ -226,24 +226,24 @@ -- | prevent onContextMenu events -onContextMenu :: action -> Attribute action +onContextMenu :: action -> Attribute action onContextMenu :: forall action. action -> Attribute action -onContextMenu action -act = Options +onContextMenu action +act = Options -> MisoString -> Decoder () -> (() -> action) -> Attribute action forall r action. Options -> MisoString -> Decoder r -> (r -> action) -> Attribute action onWithOptions Options -disabled MisoString +disabled MisoString "contextmenu" Decoder () emptyDecoder (action -> () -> action forall a b. a -> b -> a const action -act) +act) where - disabled :: Options -disabled = Options + disabled :: Options +disabled = Options Event.defaultOptions { preventDefault = True , stopPropagation = False } @@ -297,10 +297,10 @@ -- onTouchEnd = on "touchend" touchDecoder -onTouchEnd :: action -> Attribute action +onTouchEnd :: action -> Attribute action onTouchEnd :: forall action. action -> Attribute action -onTouchEnd action -act = MisoString -> Decoder () -> (() -> action) -> Attribute action +onTouchEnd action +act = MisoString -> Decoder () -> (() -> action) -> Attribute action forall r action. MisoString -> Decoder r -> (r -> action) -> Attribute action on MisoString @@ -308,12 +308,12 @@ emptyDecoder (action -> () -> action forall a b. a -> b -> a const action -act) +act) -onTouchStart :: action -> Attribute action +onTouchStart :: action -> Attribute action onTouchStart :: forall action. action -> Attribute action -onTouchStart action -act = MisoString -> Decoder () -> (() -> action) -> Attribute action +onTouchStart action +act = MisoString -> Decoder () -> (() -> action) -> Attribute action forall r action. MisoString -> Decoder r -> (r -> action) -> Attribute action on MisoString @@ -321,12 +321,12 @@ emptyDecoder (action -> () -> action forall a b. a -> b -> a const action -act) +act) -onTouchMove :: action -> Attribute action +onTouchMove :: action -> Attribute action onTouchMove :: forall action. action -> Attribute action -onTouchMove action -act = MisoString -> Decoder () -> (() -> action) -> Attribute action +onTouchMove action +act = MisoString -> Decoder () -> (() -> action) -> Attribute action forall r action. MisoString -> Decoder r -> (r -> action) -> Attribute action on MisoString @@ -334,5 +334,5 @@ emptyDecoder (action -> () -> action forall a b. a -> b -> a const action -act) +act) \ No newline at end of file diff --git a/haddocks/hgeometry/miso/src/HGeometry.Miso.FFI.Extra.html b/haddocks/hgeometry/miso/src/HGeometry.Miso.FFI.Extra.html index 4bf1dac38..c4612aabc 100644 --- a/haddocks/hgeometry/miso/src/HGeometry.Miso.FFI.Extra.html +++ b/haddocks/hgeometry/miso/src/HGeometry.Miso.FFI.Extra.html @@ -18,9 +18,9 @@ -- | call the "getBoundingClientRect" function of an object getBoundingClientRect :: JSVal -> JSM JSVal getBoundingClientRect :: JSVal -> JSM JSVal -getBoundingClientRect JSVal -e = JSVal -e JSVal -> Getting (JSM JSVal) JSVal (JSM JSVal) -> JSM JSVal +getBoundingClientRect JSVal +e = JSVal +e JSVal -> Getting (JSM JSVal) JSVal (JSM JSVal) -> JSM JSVal forall s a. s -> Getting a s a -> a ^. String -> JSF forall name. ToJSString name => name -> JSF diff --git a/haddocks/hgeometry/miso/src/HGeometry.Miso.Subscription.MouseExtra.html b/haddocks/hgeometry/miso/src/HGeometry.Miso.Subscription.MouseExtra.html index 898394de5..c768f64b9 100644 --- a/haddocks/hgeometry/miso/src/HGeometry.Miso.Subscription.MouseExtra.html +++ b/haddocks/hgeometry/miso/src/HGeometry.Miso.Subscription.MouseExtra.html @@ -39,7 +39,7 @@ -------------------------------------------------------------------------------- -- | onMouseMove event, the position is relative to the target of the event -onMouseMoveAt :: (Point 2 Int -> action) -> Attribute action +onMouseMoveAt :: (Point 2 Int -> action) -> Attribute action onMouseMoveAt :: forall action. (Point 2 Int -> action) -> Attribute action onMouseMoveAt = MisoString -> Decoder (Point 2 Int) @@ -52,7 +52,7 @@ mousePositionDecoder -- | onMouseEnter event, the position is relative to the target of the event -onMouseEnterAt :: (Point 2 Int -> action) -> Attribute action +onMouseEnterAt :: (Point 2 Int -> action) -> Attribute action onMouseEnterAt :: forall action. (Point 2 Int -> action) -> Attribute action onMouseEnterAt = MisoString -> Decoder (Point 2 Int) @@ -65,7 +65,7 @@ mousePositionDecoder -- | onMouseEnter event, the position is relative to the target of the event -onMouseClickAt :: (Point 2 Int -> action) -> Attribute action +onMouseClickAt :: (Point 2 Int -> action) -> Attribute action onMouseClickAt :: forall action. (Point 2 Int -> action) -> Attribute action onMouseClickAt = MisoString -> Decoder (Point 2 Int) @@ -85,16 +85,16 @@ -> DecodeTarget -> Decoder (Point 2 Int) forall a. (Value -> Parser a) -> DecodeTarget -> Decoder a Decoder Value -> Parser (Point 2 Int) -dec DecodeTarget -dt +dec DecodeTarget +dt where - dt :: DecodeTarget -dt = [MisoString] -> DecodeTarget + dt :: DecodeTarget +dt = [MisoString] -> DecodeTarget DecodeTarget [MisoString] forall a. Monoid a => a mempty - dec :: Value -> Parser (Point 2 Int) -dec = String + dec :: Value -> Parser (Point 2 Int) +dec = String -> (Object -> Parser (Point 2 Int)) -> Value -> Parser (Point 2 Int) @@ -105,21 +105,21 @@ -> Value -> Parser (Point 2 Int) forall a b. (a -> b) -> a -> b -$ \Object -o -> Int -> Int -> Point 2 Int +$ \Object +o -> Int -> Int -> Point 2 Int forall r. r -> r -> Point 2 r Point2 (Int -> Int -> Point 2 Int) -> Parser Int -> Parser (Int -> Point 2 Int) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -o Object -> Key -> Parser Int +o Object -> Key -> Parser Int forall a. FromJSON a => Object -> Key -> Parser a .: Key "offsetX" Parser (Int -> Point 2 Int) -> Parser Int -> Parser (Point 2 Int) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -o Object -> Key -> Parser Int +o Object -> Key -> Parser Int forall a. FromJSON a => Object -> Key -> Parser a .: Key "offsetY" @@ -127,7 +127,7 @@ -------------------------------------------------------------------------------- -- | On start of a touch event, -onTouchStartAt :: (Point 2 Int -> action) -> Attribute action +onTouchStartAt :: (Point 2 Int -> action) -> Attribute action onTouchStartAt :: forall action. (Point 2 Int -> action) -> Attribute action onTouchStartAt = MisoString -> Decoder (Point 2 Int) @@ -143,7 +143,7 @@ touchDecoder -- | On touchMove event -onTouchMoveAt :: (Point 2 Int -> action) -> Attribute action +onTouchMoveAt :: (Point 2 Int -> action) -> Attribute action onTouchMoveAt :: forall action. (Point 2 Int -> action) -> Attribute action onTouchMoveAt = MisoString -> Decoder (Point 2 Int) @@ -159,10 +159,10 @@ touchDecoder -- | onTouchEnd event -onTouchEnd :: action -> Attribute action +onTouchEnd :: action -> Attribute action onTouchEnd :: forall action. action -> Attribute action -onTouchEnd action -act = MisoString -> Decoder () -> (() -> action) -> Attribute action +onTouchEnd action +act = MisoString -> Decoder () -> (() -> action) -> Attribute action forall r action. MisoString -> Decoder r -> (r -> action) -> Attribute action on MisoString @@ -170,7 +170,7 @@ emptyDecoder (action -> () -> action forall a b. a -> b -> a const action -act) +act) touchDecoder :: Decoder (Point 2 Int) @@ -179,30 +179,30 @@ -> DecodeTarget -> Decoder (Point 2 Int) forall a. (Value -> Parser a) -> DecodeTarget -> Decoder a Decoder Value -> Parser (Point 2 Int) -dec DecodeTarget -dt +dec DecodeTarget +dt where - dt :: DecodeTarget -dt = [MisoString] -> DecodeTarget + dt :: DecodeTarget +dt = [MisoString] -> DecodeTarget DecodeTarget [MisoString "targetTouches"] - dec :: Value -> Parser (Point 2 Int) - dec :: Value -> Parser (Point 2 Int) -dec = String + dec :: Value -> Parser (Point 2 Int) + dec :: Value -> Parser (Point 2 Int) +dec = String -> (Array -> Parser (Point 2 Int)) -> Value -> Parser (Point 2 Int) forall a. String -> (Array -> Parser a) -> Value -> Parser a withArray String "targetTouches" ((Array -> Parser (Point 2 Int)) -> Value -> Parser (Point 2 Int)) -> (Array -> Parser (Point 2 Int)) -> Value -> Parser (Point 2 Int) forall a b. (a -> b) -> a -> b -$ \Array -arr -> case Array -> [Value] +$ \Array +arr -> case Array -> [Value] forall a. Vector a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] F.toList Array -arr of - (Value -tv:[Value] +arr of + (Value +tv:[Value] _) -> ((Object -> Parser (Point 2 Int)) -> Value -> Parser (Point 2 Int)) -> Value -> (Object -> Parser (Point 2 Int)) @@ -215,25 +215,25 @@ forall a. String -> (Object -> Parser a) -> Value -> Parser a withObject String "touch") Value -tv ((Object -> Parser (Point 2 Int)) -> Parser (Point 2 Int)) +tv ((Object -> Parser (Point 2 Int)) -> Parser (Point 2 Int)) -> (Object -> Parser (Point 2 Int)) -> Parser (Point 2 Int) forall a b. (a -> b) -> a -> b -$ \Object -t -> +$ \Object +t -> Int -> Int -> Point 2 Int forall r. r -> r -> Point 2 r Point2 (Int -> Int -> Point 2 Int) -> Parser Int -> Parser (Int -> Point 2 Int) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -t Object -> Key -> Parser Int +t Object -> Key -> Parser Int forall a. FromJSON a => Object -> Key -> Parser a .: Key "clientX" Parser (Int -> Point 2 Int) -> Parser Int -> Parser (Point 2 Int) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object -t Object -> Key -> Parser Int +t Object -> Key -> Parser Int forall a. FromJSON a => Object -> Key -> Parser a .: Key "clientY" @@ -279,41 +279,41 @@ -- | A version of onWithOptions that also decodes the left, top, and clientLeft and clientTop -- values of the target element. -onRelativeTo :: MisoString -> Decoder (Point 2 Int) -> (Point 2 Int -> action) - -> Attribute action +onRelativeTo :: MisoString -> Decoder (Point 2 Int) -> (Point 2 Int -> action) + -> Attribute action onRelativeTo :: forall action. MisoString -> Decoder (Point 2 Int) -> (Point 2 Int -> action) -> Attribute action -onRelativeTo MisoString -eventName Decoder{DecodeTarget +onRelativeTo MisoString +eventName Decoder{DecodeTarget Value -> Parser (Point 2 Int) decoder :: Value -> Parser (Point 2 Int) decodeAt :: DecodeTarget decodeAt :: forall a. Decoder a -> DecodeTarget decoder :: forall a. Decoder a -> Value -> Parser a -..} Point 2 Int -> action -toAction = +..} Point 2 Int -> action +toAction = (Sink action -> Object -> JSM ()) -> Attribute action forall action. (Sink action -> Object -> JSM ()) -> Attribute action E ((Sink action -> Object -> JSM ()) -> Attribute action) -> (Sink action -> Object -> JSM ()) -> Attribute action forall a b. (a -> b) -> a -> b -$ \Sink action -sink Object -n -> do - eventObj <- JSString -> Object -> JSM JSVal +$ \Sink action +sink Object +n -> do + eventObj <- JSString -> Object -> JSM JSVal getProp JSString "events" Object -n - eventHandlerObject@(Object eo) <- create - jsOptions <- toJSVal options - decodeAtVal <- toJSVal decodeAt - cb <- callbackToJSVal <=< asyncCallback1 $ \JSVal -event -> do - Just target <- JSVal -> JSM (Maybe JSVal) +n + eventHandlerObject@(Object eo) <- create + jsOptions <- toJSVal options + decodeAtVal <- toJSVal decodeAt + cb <- callbackToJSVal <=< asyncCallback1 $ \JSVal +event -> do + Just target <- JSVal -> JSM (Maybe JSVal) forall a. FromJSVal a => JSVal -> JSM (Maybe a) fromJSVal (JSVal -> JSM (Maybe JSVal)) -> JSM JSVal -> JSM (Maybe JSVal) forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b @@ -321,16 +321,16 @@ unsafeGetProp JSString "target" (JSVal -> Object Object JSVal -event) - rect <- Object <$> getBoundingClientRect target - Just l <- fromJSVal =<< unsafeGetProp "left" rect - Just t <- fromJSVal =<< unsafeGetProp "top" rect - Just cl <- fromJSVal =<< unsafeGetProp "clientLeft" (Object target) - Just ct <- fromJSVal =<< unsafeGetProp "clientTop" (Object target) - Just v <- fromJSVal =<< objectToJSON decodeAtVal event - case parseEither decoder v of - Left String -s -> String -> JSM () +event) + rect <- Object <$> getBoundingClientRect target + Just l <- fromJSVal =<< unsafeGetProp "left" rect + Just t <- fromJSVal =<< unsafeGetProp "top" rect + Just cl <- fromJSVal =<< unsafeGetProp "clientLeft" (Object target) + Just ct <- fromJSVal =<< unsafeGetProp "clientTop" (Object target) + Just v <- fromJSVal =<< objectToJSON decodeAtVal event + case parseEither decoder v of + Left String +s -> String -> JSM () forall a. HasCallStack => String -> a error (String -> JSM ()) -> String -> JSM () forall a b. (a -> b) -> a -> b @@ -339,31 +339,31 @@ forall a. Semigroup a => a -> a -> a <> MisoString -> String unpack MisoString -eventName String -> String -> String +eventName String -> String -> String forall a. Semigroup a => a -> a -> a <> String ": " String -> String -> String forall a. Semigroup a => a -> a -> a <> String -s - Right Point 2 Int -p -> do let p' :: Point 2 Int -p' = Point 2 Int -p Point 2 Int -> Vector 2 Int -> Point 2 Int +s + Right Point 2 Int +p -> do let p' :: Point 2 Int +p' = Point 2 Int +p Point 2 Int -> Vector 2 Int -> Point 2 Int forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> Vector d r -> point .-^ Int -> Int -> Vector 2 Int forall r. r -> r -> Vector 2 r Vector2 (Int -lInt -> Int -> Int +lInt -> Int -> Int forall a. Num a => a -> a -> a +Int -cl) (Int -tInt -> Int -> Int +cl) (Int +tInt -> Int -> Int forall a. Num a => a -> a -> a +Int -ct) +ct) IO () -> JSM () forall a. IO a -> JSM a forall (m :: * -> *) a. MonadIO m => IO a -> m a @@ -376,33 +376,33 @@ $ MisoString -> String forall a. Show a => a -> String show MisoString -eventName String -> String -> String +eventName String -> String -> String forall a. Semigroup a => a -> a -> a <> (Int, Int, Int, Int, Point 2 Int, Point 2 Int) -> String forall a. Show a => a -> String show (Int -l,Int -t,Int -cl,Int -ct,Point 2 Int -p, Point 2 Int -p') +l,Int +t,Int +cl,Int +ct,Point 2 Int +p, Point 2 Int +p') IO () -> JSM () forall a. IO a -> JSM a forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> JSM ()) -> IO () -> JSM () forall a b. (a -> b) -> a -> b $ Sink action -sink (Point 2 Int -> action -toAction Point 2 Int -p') - set "runEvent" cb eventHandlerObject - registerCallback cb - set "options" jsOptions eventHandlerObject - set eventName eo (Object eventObj) +sink (Point 2 Int -> action +toAction Point 2 Int +p') + set "runEvent" cb eventHandlerObject + registerCallback cb + set "options" jsOptions eventHandlerObject + set eventName eo (Object eventObj) where - options :: Options -options = Options + options :: Options +options = Options defaultOptions { preventDefault = True , stopPropagation = False } diff --git a/haddocks/hgeometry/quickcheck/src/HGeometry.PlaneGraph.Instances.html b/haddocks/hgeometry/quickcheck/src/HGeometry.PlaneGraph.Instances.html index 79559c9fc..99af04848 100644 --- a/haddocks/hgeometry/quickcheck/src/HGeometry.PlaneGraph.Instances.html +++ b/haddocks/hgeometry/quickcheck/src/HGeometry.PlaneGraph.Instances.html @@ -54,12 +54,12 @@ data QuickCheckWorld -instance ( Arbitrary r - , Ord r, Fractional r - , Show r - ) => Arbitrary (CPlaneGraph QuickCheckWorld (Point 2 r) () ()) where - arbitrary :: Gen (CPlaneGraph QuickCheckWorld (Point 2 r) () ()) -arbitrary = Proxy QuickCheckWorld +instance ( Arbitrary r + , Ord r, Fractional r + , Show r + ) => Arbitrary (CPlaneGraph QuickCheckWorld (Point 2 r) () ()) where + arbitrary :: Gen (CPlaneGraph QuickCheckWorld (Point 2 r) () ()) +arbitrary = Proxy QuickCheckWorld -> Gen (CPlaneGraph QuickCheckWorld (Point 2 r) () ()) forall {k} (proxy :: k -> *) (s :: k) r. (Ord r, Fractional r, Arbitrary r, Show r) => @@ -77,17 +77,17 @@ -- | Generate an arbitrary Plane Graph -arbitraryPlaneGraph :: forall proxy s r. - ( Ord r, Fractional r, Arbitrary r - , Show r +arbitraryPlaneGraph :: forall proxy s r. + ( Ord r, Fractional r, Arbitrary r + , Show r ) - => proxy s -> Gen (CPlaneGraph s (Point 2 r) () ()) + => proxy s -> Gen (CPlaneGraph s (Point 2 r) () ()) arbitraryPlaneGraph :: forall {k} (proxy :: k -> *) (s :: k) r. (Ord r, Fractional r, Arbitrary r, Show r) => proxy s -> Gen (CPlaneGraph s (Point 2 r) () ()) -arbitraryPlaneGraph proxy s -proxy = do - n <- (Int -> Int) -> Gen Int -> Gen Int +arbitraryPlaneGraph proxy s +proxy = do + n <- (Int -> Int) -> Gen Int -> Gen Int forall a. (Int -> Int) -> Gen a -> Gen a scale (Int -> Int -> Int forall a. Num a => a -> a -> a @@ -95,9 +95,9 @@ 2) Gen Int forall a. Arbitrary a => Gen a arbitrary - (pts :: NonEmpty (Point 2 r)) <- genNDistinct (max 10 n) arbitrary + (pts :: NonEmpty (Point 2 r)) <- genNDistinct (max 10 n) arbitrary -- need at least a few vertices so that we generate at least a triangle in the planar graph - case voronoiDiagram pts of + case voronoiDiagram pts of AllColinear Alternating Vector (VerticalOrLineEQ (NumType (Point 2 r))) (Point 2 r) _ -> proxy s -> Gen (CPlaneGraph s (Point 2 r) () ()) @@ -105,10 +105,10 @@ (Ord r, Fractional r, Arbitrary r, Show r) => proxy s -> Gen (CPlaneGraph s (Point 2 r) () ()) arbitraryPlaneGraph proxy s -proxy -- retry - ConnectedVD VoronoiDiagram' (Point 2 r) -vd -> do let triGr :: PlaneGraph' (Point 2 r) (First r) (E r) -triGr = MinimizationDiagram r (Plane r) +proxy -- retry + ConnectedVD VoronoiDiagram' (Point 2 r) +vd -> do let triGr :: PlaneGraph' (Point 2 r) (First r) (E r) +triGr = MinimizationDiagram r (Plane r) -> PlaneGraph' (Point 2 r) (First r) (E r) forall plane r. (Plane_ plane r, Num r, Ord r) => @@ -130,8 +130,8 @@ -> PlaneGraph' (Point 2 r) (First r) (E r) forall a b. (a -> b) -> a -> b $ VoronoiDiagram' (Point 2 r) -vd - gr <- GGraph (Map (E r)) (Point 2 r) (First r) (E r) +vd + gr <- GGraph (Map (E r)) (Point 2 r) (First r) (E r) -> Gen (GGraph (Map (E r)) (Point 2 r) (First r) (Bool, E r)) forall i (f :: * -> *) v e. Ord i => @@ -144,17 +144,17 @@ mapNeighbourOrder NEMap (E r) (Point 2 r) -> Map (E r) (Point 2 r) forall k a. NEMap k a -> Map k a NEMap.toMap PlaneGraph' (Point 2 r) (First r) (E r) -triGr) - case traverseNeighbourOrder NEMap.nonEmptyMap $ largestComponent gr of +triGr) + case traverseNeighbourOrder NEMap.nonEmptyMap $ largestComponent gr of Maybe (PlaneGraph' (Point 2 r) (First r) (E r)) Nothing -> proxy s -> Gen (CPlaneGraph s (Point 2 r) () ()) forall {k} (proxy :: k -> *) (s :: k) r. (Ord r, Fractional r, Arbitrary r, Show r) => proxy s -> Gen (CPlaneGraph s (Point 2 r) () ()) arbitraryPlaneGraph proxy s -proxy -- retry - Just PlaneGraph' (Point 2 r) (First r) (E r) -gr' -> CPlaneGraph s (Point 2 r) () () +proxy -- retry + Just PlaneGraph' (Point 2 r) (First r) (E r) +gr' -> CPlaneGraph s (Point 2 r) () () -> Gen (CPlaneGraph s (Point 2 r) () ()) forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a @@ -171,13 +171,13 @@ proxy s -> GGraph f (Point 2 r) v e -> CPlaneGraph s (Point 2 r) () () toPlaneGraph proxy s -proxy PlaneGraph' (Point 2 r) (First r) (E r) -gr' +proxy PlaneGraph' (Point 2 r) (First r) (E r) +gr' mapNeighbourOrder :: (f i -> g i) -> GGraph f i v e -> GGraph g i v e -mapNeighbourOrder f i -> g i -f = Identity (GGraph g i v e) -> GGraph g i v e +mapNeighbourOrder f i -> g i +f = Identity (GGraph g i v e) -> GGraph g i v e forall a. Identity a -> a runIdentity (Identity (GGraph g i v e) -> GGraph g i v e) -> (GGraph f i v e -> Identity (GGraph g i v e)) @@ -194,28 +194,28 @@ Identity (g i -> Identity (g i)) -> (f i -> g i) -> f i -> Identity (g i) forall b c a. (b -> c) -> (a -> b) -> a -> c . f i -> g i -f) +f) -------------------------------------------------------------------------------- -- | Returns the largest connected component in the graph; i.e. it shrinks -- the graph to contain only the vertices/edges in this connected component. -largestComponent :: (Ord i, Witherable f) - => GGraph f i v (Bool, e) -> GGraph f i v e +largestComponent :: (Ord i, Witherable f) + => GGraph f i v (Bool, e) -> GGraph f i v e largestComponent :: forall i (f :: * -> *) v e. (Ord i, Witherable f) => GGraph f i v (Bool, e) -> GGraph f i v e -largestComponent GGraph f i v (Bool, e) -gr = Tree i -> GGraph f i v (Bool, e) -> GGraph f i v e +largestComponent GGraph f i v (Bool, e) +gr = Tree i -> GGraph f i v (Bool, e) -> GGraph f i v e forall (g :: * -> *) (f :: * -> *) i v e. (Foldable1 g, Witherable f, Ord i) => g i -> GGraph f i v (Bool, e) -> GGraph f i v e witherGraphTo Tree i -tr GGraph f i v (Bool, e) -gr +tr GGraph f i v (Bool, e) +gr where - tr :: Tree i -tr = (Tree i -> Tree i -> Ordering) -> NonEmpty (Tree i) -> Tree i + tr :: Tree i +tr = (Tree i -> Tree i -> Ordering) -> NonEmpty (Tree i) -> Tree i forall (t :: * -> *) a. Foldable1 t => (a -> a -> Ordering) -> t a -> a @@ -232,13 +232,13 @@ (DiGraph_ graph, Ord (VertexIx graph)) => graph -> NonEmpty (Tree (VertexIx graph)) bff GGraph f i v (Bool, e) -gr +gr -- | Convert a Vornooi diagram into a minimization diagram again -asMD :: ( Point_ point 2 r - , Num r, Ord r - ) => VoronoiDiagram' point -> MinimizationDiagram r (Plane r) +asMD :: ( Point_ point 2 r + , Num r, Ord r + ) => VoronoiDiagram' point -> MinimizationDiagram r (Plane r) asMD :: forall point r. (Point_ point 2 r, Num r, Ord r) => VoronoiDiagram' point -> MinimizationDiagram r (Plane r) @@ -271,13 +271,13 @@ -- | select a random subset of edges. I.e. it marks the edges we want to retain. -markWitherableEdges :: Ord i => GGraph f i v e -> Gen (GGraph f i v (Bool,e)) +markWitherableEdges :: Ord i => GGraph f i v e -> Gen (GGraph f i v (Bool,e)) markWitherableEdges :: forall i (f :: * -> *) v e. Ord i => GGraph f i v e -> Gen (GGraph f i v (Bool, e)) -markWitherableEdges GGraph f i v e -gr = GGraph f i v e -grGGraph f i v e +markWitherableEdges GGraph f i v e +gr = GGraph f i v e +grGGraph f i v e -> (GGraph f i v e -> Gen (GGraph f i v (Bool, e))) -> Gen (GGraph f i v (Bool, e)) forall a b. a -> (a -> b) -> b @@ -302,15 +302,15 @@ -> Gen (GGraph f i v (Bool, e)) forall {k} (f :: k -> *) s (t :: k) a (b :: k). LensLike f s t a b -> LensLike f s t a b -%%~ \e -x -> (,e -x) (Bool -> (Bool, e)) -> Gen Bool -> Gen (Bool, e) +%%~ \e +x -> (,e +x) (Bool -> (Bool, e)) -> Gen Bool -> Gen (Bool, e) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Bool -arbitrary' +arbitrary' where - arbitrary' :: Gen Bool -arbitrary' = [(Int, Gen Bool)] -> Gen Bool + arbitrary' :: Gen Bool +arbitrary' = [(Int, Gen Bool)] -> Gen Bool forall a. HasCallStack => [(Int, Gen a)] -> Gen a frequency [ (Int 19, Bool -> Gen Bool @@ -327,14 +327,14 @@ ] -- | Retain only the selected subset of the vertices, and the edges marked -witherGraphTo :: ( Foldable1 g, Witherable f, Ord i - ) => g i -> GGraph f i v (Bool, e) -> GGraph f i v e +witherGraphTo :: ( Foldable1 g, Witherable f, Ord i + ) => g i -> GGraph f i v (Bool, e) -> GGraph f i v e witherGraphTo :: forall (g :: * -> *) (f :: * -> *) i v e. (Foldable1 g, Witherable f, Ord i) => g i -> GGraph f i v (Bool, e) -> GGraph f i v e -witherGraphTo g i -vs (Graph NEMap i (VertexData f i v (Bool, e)) -gr) = NEMap i (VertexData f i v e) -> GGraph f i v e +witherGraphTo g i +vs (Graph NEMap i (VertexData f i v (Bool, e)) +gr) = NEMap i (VertexData f i v e) -> GGraph f i v e forall (f :: * -> *) i v e. NEMap i (VertexData f i v e) -> GGraph f i v e Graph (NEMap i (VertexData f i v e) -> GGraph f i v e) @@ -346,71 +346,71 @@ forall a b. (a -> b) -> NEMap i a -> NEMap i b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap VertexData f i v (Bool, e) -> VertexData f i v e -removeEdges NEMap i (VertexData f i v (Bool, e)) -m +removeEdges NEMap i (VertexData f i v (Bool, e)) +m where -- retain only the vertices from vs - m :: NEMap i (VertexData f i v (Bool, e)) -m = (i -> NEMap i (VertexData f i v (Bool, e))) + m :: NEMap i (VertexData f i v (Bool, e)) +m = (i -> NEMap i (VertexData f i v (Bool, e))) -> g i -> NEMap i (VertexData f i v (Bool, e)) forall m a. Semigroup m => (a -> m) -> g a -> m forall (t :: * -> *) m a. (Foldable1 t, Semigroup m) => (a -> m) -> t a -> m -foldMap1 (\i -u -> i +foldMap1 (\i +u -> i -> VertexData f i v (Bool, e) -> NEMap i (VertexData f i v (Bool, e)) forall k a. k -> a -> NEMap k a NEMap.singleton i -u (NEMap i (VertexData f i v (Bool, e)) -gr NEMap i (VertexData f i v (Bool, e)) +u (NEMap i (VertexData f i v (Bool, e)) +gr NEMap i (VertexData f i v (Bool, e)) -> i -> VertexData f i v (Bool, e) forall k a. Ord k => NEMap k a -> k -> a NEMap.! i -u)) g i -vs +u)) g i +vs -- remove edges to other components - removeEdges :: VertexData f i v (Bool, e) -> VertexData f i v e -removeEdges (VertexData v -x Map i (Bool, e) -ns f i -no) = let ns' :: Map i e -ns' = (i -> (Bool, e) -> Map i e) -> Map i (Bool, e) -> Map i e + removeEdges :: VertexData f i v (Bool, e) -> VertexData f i v e +removeEdges (VertexData v +x Map i (Bool, e) +ns f i +no) = let ns' :: Map i e +ns' = (i -> (Bool, e) -> Map i e) -> Map i (Bool, e) -> Map i e forall m k a. Monoid m => (k -> a -> m) -> Map k a -> m Map.foldMapWithKey i -> (Bool, e) -> Map i e -p' Map i (Bool, e) -ns +p' Map i (Bool, e) +ns in v -> Map i e -> f i -> VertexData f i v e forall (f :: * -> *) i v e. v -> Map i e -> f i -> VertexData f i v e VertexData v -x Map i e -ns' ((i -> Bool) -> f i -> f i +x Map i e +ns' ((i -> Bool) -> f i -> f i forall a. (a -> Bool) -> f a -> f a forall (f :: * -> *) a. Filterable f => (a -> Bool) -> f a -> f a filter (i -> Map i e -> Bool forall k a. Ord k => k -> Map k a -> Bool `Map.member` Map i e -ns') f i -no) +ns') f i +no) -- test if we should retain the edge; i.e. if the edge is marked and the -- other endpoint exists in our component - p' :: i -> (Bool, e) -> Map i e -p' i -i (Bool -retain,e -x) | Bool -retain Bool -> Bool -> Bool + p' :: i -> (Bool, e) -> Map i e +p' i +i (Bool +retain,e +x) | Bool +retain Bool -> Bool -> Bool && i -> NEMap i (VertexData f i v (Bool, e)) -> Bool forall k a. Ord k => k -> NEMap k a -> Bool NEMap.member i -i NEMap i (VertexData f i v (Bool, e)) -m = i -> e -> Map i e +i NEMap i (VertexData f i v (Bool, e)) +m = i -> e -> Map i e forall k a. k -> a -> Map k a Map.singleton i -i e -x +i e +x | Bool otherwise = Map i e forall k a. Map k a @@ -421,16 +421,16 @@ -- PlaneGraph. -- -- \(O(n\log n)\) -toPlaneGraph :: (Ord r, Foldable1 f) - => proxy s - -> GGraph f (Point 2 r) v e -> CPlaneGraph s (Point 2 r) () () +toPlaneGraph :: (Ord r, Foldable1 f) + => proxy s + -> GGraph f (Point 2 r) v e -> CPlaneGraph s (Point 2 r) () () toPlaneGraph :: forall {k} r (f :: * -> *) (proxy :: k -> *) (s :: k) v e. (Ord r, Foldable1 f) => proxy s -> GGraph f (Point 2 r) v e -> CPlaneGraph s (Point 2 r) () () toPlaneGraph proxy s -_ (Graph NEMap (Point 2 r) (VertexData f (Point 2 r) v e) -m) = CPlanarGraph 'Primal s (Point 2 r) () () +_ (Graph NEMap (Point 2 r) (VertexData f (Point 2 r) v e) +m) = CPlanarGraph 'Primal s (Point 2 r) () () -> CPlaneGraph s (Point 2 r) () () forall {k} (s :: k) v e f. CPlanarGraph 'Primal s v e f -> CPlaneGraph s v e f @@ -444,7 +444,7 @@ forall {k} (s :: k) e. NonEmpty (NonEmpty (DartId s, e)) -> CPlanarGraph 'Primal s () e () planarGraph NonEmpty (NonEmpty (DartId s, ())) -theDarts)CPlanarGraph 'Primal s () () () +theDarts)CPlanarGraph 'Primal s () () () -> (CPlanarGraph 'Primal s () () () -> CPlanarGraph 'Primal s (Point 2 r) () ()) -> CPlanarGraph 'Primal s (Point 2 r) () () @@ -464,24 +464,24 @@ -> CPlanarGraph 'Primal s (Point 2 r) () () forall s t a b. ASetter s t a b -> b -> s -> t .~ NonEmptyVector (Point 2 r) -vtxData +vtxData where - vtxData :: NonEmptyVector (Point 2 r) -vtxData = Int -> NonEmpty (Point 2 r) -> NonEmptyVector (Point 2 r) + vtxData :: NonEmptyVector (Point 2 r) +vtxData = Int -> NonEmpty (Point 2 r) -> NonEmptyVector (Point 2 r) forall a. Int -> NonEmpty a -> NonEmptyVector a Vector.fromNonEmptyN1 (NEMap (Point 2 r) (VertexData f (Point 2 r) v e) -> Int forall a. NEMap (Point 2 r) a -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length NEMap (Point 2 r) (VertexData f (Point 2 r) v e) -m) (NEMap (Point 2 r) (VertexData f (Point 2 r) v e) +m) (NEMap (Point 2 r) (VertexData f (Point 2 r) v e) -> NonEmpty (Point 2 r) forall k a. NEMap k a -> NonEmpty k NEMap.keys NEMap (Point 2 r) (VertexData f (Point 2 r) v e) -m) +m) -- a non-empty list of vertices, with for each vertex the darts in order around the vertex - theDarts :: NonEmpty (NonEmpty (DartId s, ())) -theDarts = State + theDarts :: NonEmpty (NonEmpty (DartId s, ())) +theDarts = State (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) (NonEmpty (NonEmpty (DartId s, ()))) -> (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) @@ -503,7 +503,7 @@ (StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (DartId s), ())) -theDarts') (Int +theDarts') (Int 0 Int -> Map (Point 2 r, Point 2 r) (Arc s) -> Int :+ Map (Point 2 r, Point 2 r) (Arc s) @@ -511,12 +511,12 @@ :+ Map (Point 2 r, Point 2 r) (Arc s) forall k a. Map k a Map.empty) - theDarts' :: NonEmpty + theDarts' :: NonEmpty (NonEmpty (StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (DartId s), ())) -theDarts' = NEMap +theDarts' = NEMap (Point 2 r) (NonEmpty (StateT @@ -572,28 +572,28 @@ (StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (DartId s), ()) -toIncidentDarts NEMap (Point 2 r) (VertexData f (Point 2 r) v e) -m +toIncidentDarts NEMap (Point 2 r) (VertexData f (Point 2 r) v e) +m -- turn the outgoing edges of u into darts - toIncidentDarts :: Point 2 r + toIncidentDarts :: Point 2 r -> VertexData f (Point 2 r) v e -> NonEmpty (StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (DartId s), ()) -toIncidentDarts Point 2 r -u (VertexData v +toIncidentDarts Point 2 r +u (VertexData v _ Map (Point 2 r) e -_ f (Point 2 r) -neighOrder) = - (\Point 2 r -v -> (Point 2 r +_ f (Point 2 r) +neighOrder) = + (\Point 2 r +v -> (Point 2 r -> Point 2 r -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (DartId s) -toDart Point 2 r -u Point 2 r -v, ())) (Point 2 r +toDart Point 2 r +u Point 2 r +v, ())) (Point 2 r -> (StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (DartId s), ())) @@ -607,20 +607,20 @@ forall a. f a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty f (Point 2 r) -neighOrder +neighOrder -- create the dart corresponding to vertices u and v - toDart :: Point 2 r + toDart :: Point 2 r -> Point 2 r -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (DartId s) -toDart Point 2 r -u Point 2 r -v | Point 2 r -u Point 2 r -> Point 2 r -> Bool +toDart Point 2 r +u Point 2 r +v | Point 2 r +u Point 2 r -> Point 2 r -> Bool forall a. Ord a => a -> a -> Bool <= Point 2 r -v = (Arc s -> Direction -> DartId s) -> Direction -> Arc s -> DartId s +v = (Arc s -> Direction -> DartId s) -> Direction -> Arc s -> DartId s forall a b c. (a -> b -> c) -> b -> a -> c flip Arc s -> Direction -> DartId s forall {k} (s :: k). Arc s -> Direction -> Dart s @@ -635,9 +635,9 @@ -> Point 2 r -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Arc s) -arc Point 2 r -u Point 2 r -v +arc Point 2 r +u Point 2 r +v | Bool otherwise = (Arc s -> Direction -> DartId s) -> Direction -> Arc s -> DartId s forall a b c. (a -> b -> c) -> b -> a -> c @@ -654,17 +654,17 @@ -> Point 2 r -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Arc s) -arc Point 2 r -v Point 2 r -u +arc Point 2 r +v Point 2 r +u - arc :: Point 2 r + arc :: Point 2 r -> Point 2 r -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Arc s) -arc Point 2 r -u Point 2 r -v = ((Int :+ Map (Point 2 r, Point 2 r) (Arc s)) -> Maybe (Arc s)) +arc Point 2 r +u Point 2 r +v = ((Int :+ Map (Point 2 r, Point 2 r) (Arc s)) -> Maybe (Arc s)) -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity @@ -673,9 +673,9 @@ gets ((Point 2 r, Point 2 r) -> (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) -> Maybe (Arc s) forall {k} {core} {a}. Ord k => k -> (core :+ Map k a) -> Maybe a -arcOf (Point 2 r -u,Point 2 r -v)) StateT +arcOf (Point 2 r +u,Point 2 r +v)) StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Maybe (Arc s)) @@ -691,29 +691,29 @@ -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - Just Arc s -a -> Arc s + Just Arc s +a -> Arc s -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Arc s) forall a. a -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity a forall (f :: * -> *) a. Applicative f => a -> f a pure Arc s -a +a Maybe (Arc s) -Nothing -> do a <- StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Arc s) +Nothing -> do a <- StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Arc s) forall {k} {s :: k}. StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Arc s) -nextArc - modify $ insertArc (u,v) a - pure a +nextArc + modify $ insertArc (u,v) a + pure a - arcOf :: k -> (core :+ Map k a) -> Maybe a -arcOf k -x = k -> Map k a -> Maybe a + arcOf :: k -> (core :+ Map k a) -> Maybe a +arcOf k +x = k -> Map k a -> Maybe a forall k a. Ord k => k -> Map k a -> Maybe a Map.lookup k -x (Map k a -> Maybe a) +x (Map k a -> Maybe a) -> ((core :+ Map k a) -> Map k a) -> (core :+ Map k a) -> Maybe a forall b c a. (b -> c) -> (a -> b) -> a -> c . Getting (Map k a) (core :+ Map k a) (Map k a) @@ -724,10 +724,10 @@ Functor f => (extra -> f extra') -> (core :+ extra) -> f (core :+ extra') extra - insertArc :: k -> a -> (core :+ Map k a) -> core :+ Map k a -insertArc k -k a -v = ASetter (core :+ Map k a) (core :+ Map k a) (Map k a) (Map k a) + insertArc :: k -> a -> (core :+ Map k a) -> core :+ Map k a +insertArc k +k a +v = ASetter (core :+ Map k a) (core :+ Map k a) (Map k a) (Map k a) -> (Map k a -> Map k a) -> (core :+ Map k a) -> core :+ Map k a forall s t a b. ASetter s t a b -> (a -> b) -> s -> t over ASetter (core :+ Map k a) (core :+ Map k a) (Map k a) (Map k a) @@ -740,11 +740,11 @@ $ k -> a -> Map k a -> Map k a forall k a. Ord k => k -> a -> Map k a -> Map k a Map.insert k -k a -v +k a +v - nextArc :: StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Arc s) -nextArc = do i <- ((Int :+ Map (Point 2 r, Point 2 r) (Arc s)) -> Int) + nextArc :: StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity (Arc s) +nextArc = do i <- ((Int :+ Map (Point 2 r, Point 2 r) (Arc s)) -> Int) -> StateT (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Identity Int forall s (m :: * -> *) a. MonadState s m => (s -> a) -> m a gets (Getting Int (Int :+ Map (Point 2 r, Point 2 r) (Arc s)) Int @@ -756,10 +756,10 @@ (core -> f core') -> (core :+ extra) -> f (core' :+ extra) core) modify $ over core (+1) - pure $ Arc i + pure $ Arc i -sequence' :: Applicative m => NonEmpty (NonEmpty (m a, b)) -> m (NonEmpty (NonEmpty (a,b))) +sequence' :: Applicative m => NonEmpty (NonEmpty (m a, b)) -> m (NonEmpty (NonEmpty (a,b))) sequence' :: forall (m :: * -> *) a b. Applicative m => NonEmpty (NonEmpty (m a, b)) -> m (NonEmpty (NonEmpty (a, b))) @@ -784,49 +784,49 @@ forall (f :: * -> *) a b. Applicative f => (a -> f b) -> NonEmpty a -> f (NonEmpty b) -traverse (\(m a -fa,b -b) -> (,b -b) (a -> (a, b)) -> m a -> m (a, b) +traverse (\(m a +fa,b +b) -> (,b +b) (a -> (a, b)) -> m a -> m (a, b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> m a -fa) +fa) --------------------------------------------------------------------------------0 -- | pre: n >= 1 -genNDistinct :: Eq a => Int -> Gen a -> Gen (NonEmpty a) +genNDistinct :: Eq a => Int -> Gen a -> Gen (NonEmpty a) genNDistinct :: forall a. Eq a => Int -> Gen a -> Gen (NonEmpty a) -genNDistinct Int -n Gen a -gen = [a] -> NonEmpty a +genNDistinct Int +n Gen a +gen = [a] -> NonEmpty a forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList ([a] -> NonEmpty a) -> Gen [a] -> Gen (NonEmpty a) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [a] -> Int -> Gen [a] -go [] Int -n +go [] Int +n where - go :: [a] -> Int -> Gen [a] -go [a] -acc Int + go :: [a] -> Int -> Gen [a] +go [a] +acc Int 0 = [a] -> Gen [a] forall a. a -> Gen a forall (f :: * -> *) a. Applicative f => a -> f a pure [a] -acc - go [a] -acc Int -n' = do x <- Gen a -gen Gen a -> (a -> Bool) -> Gen a +acc + go [a] +acc Int +n' = do x <- Gen a +gen Gen a -> (a -> Bool) -> Gen a forall a. Gen a -> (a -> Bool) -> Gen a -`suchThat` (\a -x' -> (a -> Bool) -> [a] -> Bool +`suchThat` (\a +x' -> (a -> Bool) -> [a] -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all (a -> a -> Bool forall a. Eq a => a -> a -> Bool /= a -x') [a] -acc) - go (x:acc) (n'-1) +x') [a] +acc) + go (x:acc) (n'-1) \ No newline at end of file diff --git a/haddocks/hgeometry/quickcheck/src/HGeometry.Polygon.Instances.html b/haddocks/hgeometry/quickcheck/src/HGeometry.Polygon.Instances.html index 8746a1cc2..ac3dea442 100644 --- a/haddocks/hgeometry/quickcheck/src/HGeometry.Polygon.Instances.html +++ b/haddocks/hgeometry/quickcheck/src/HGeometry.Polygon.Instances.html @@ -60,33 +60,33 @@ -- self-intersecting polygons {-# NOINLINE allSimplePolygonsWith #-} -allSimplePolygonsWith :: forall r. - (Ord r, Fractional r) => (Double -> r) -> [SimplePolygon (Point 2 r)] +allSimplePolygonsWith :: forall r. + (Ord r, Fractional r) => (Double -> r) -> [SimplePolygon (Point 2 r)] allSimplePolygonsWith :: forall r. (Ord r, Fractional r) => (Double -> r) -> [SimplePolygon (Point 2 r)] -allSimplePolygonsWith Double -> r -f = IO [SimplePolygon (Point 2 r)] -> [SimplePolygon (Point 2 r)] +allSimplePolygonsWith Double -> r +f = IO [SimplePolygon (Point 2 r)] -> [SimplePolygon (Point 2 r)] forall a. IO a -> a unsafePerformIO (IO [SimplePolygon (Point 2 r)] -> [SimplePolygon (Point 2 r)]) -> IO [SimplePolygon (Point 2 r)] -> [SimplePolygon (Point 2 r)] forall a b. (a -> b) -> a -> b $ do - fp <- FilePath -> IO FilePath + fp <- FilePath -> IO FilePath getDataFileName FilePath "polygons.simple.json" - eitherDecodeFileStrict fp >>= \case - Left FilePath -msg -> FilePath -> IO [SimplePolygon (Point 2 r)] + eitherDecodeFileStrict fp >>= \case + Left FilePath +msg -> FilePath -> IO [SimplePolygon (Point 2 r)] forall a. HasCallStack => FilePath -> a error FilePath -msg - Right [SimplePolygon (Point 2 Double)] -pgs -> [SimplePolygon (Point 2 r)] -> IO [SimplePolygon (Point 2 r)] +msg + Right [SimplePolygon (Point 2 Double)] +pgs -> [SimplePolygon (Point 2 r)] -> IO [SimplePolygon (Point 2 r)] forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure [ SimplePolygon (Point 2 Double) -pgSimplePolygon (Point 2 Double) +pgSimplePolygon (Point 2 Double) -> (SimplePolygon (Point 2 Double) -> SimplePolygon (Point 2 r)) -> SimplePolygon (Point 2 r) forall a b. a -> (a -> b) -> b @@ -120,9 +120,9 @@ -> SimplePolygon (Point 2 Double) -> SimplePolygon (Point 2 r) forall s t a b. ASetter s t a b -> (a -> b) -> s -> t -%~ \Point 2 Double -p -> Point 2 Double -pPoint 2 Double -> (Point 2 Double -> Point 2 r) -> Point 2 r +%~ \Point 2 Double +p -> Point 2 Double +pPoint 2 Double -> (Point 2 Double -> Point 2 r) -> Point 2 r forall a b. a -> (a -> b) -> b &(Double -> Identity r) -> Point 2 Double -> Identity (Point 2 r) (NumType (Point 2 Double) -> Identity (NumType (Point 2 r))) @@ -140,10 +140,10 @@ -> (Double -> r) -> Point 2 Double -> Point 2 r forall s t a b. ASetter s t a b -> (a -> b) -> s -> t %~ Double -> r -f - | (SimplePolygon (Point 2 Double) -pg :: SimplePolygon (Point 2 Double)) <- [SimplePolygon (Point 2 Double)] -pgs +f + | (SimplePolygon (Point 2 Double) +pg :: SimplePolygon (Point 2 Double)) <- [SimplePolygon (Point 2 Double)] +pgs ] -- runConvert :: IO () @@ -194,19 +194,19 @@ instance Arbitrary (SimplePolygon (Point 2 Rational)) where - arbitrary :: Gen (SimplePolygon (Point 2 Rational)) -arbitrary = do - p <- [SimplePolygon (Point 2 Rational)] + arbitrary :: Gen (SimplePolygon (Point 2 Rational)) +arbitrary = do + p <- [SimplePolygon (Point 2 Rational)] -> Gen (SimplePolygon (Point 2 Rational)) forall a. HasCallStack => [a] -> Gen a elements [SimplePolygon (Point 2 Rational)] allSimplePolygons' - n <- chooseInt (0, numVertices p-1) - pure $ rotateLeft n p -- rotates the indices of the polygon so + n <- chooseInt (0, numVertices p-1) + pure $ rotateLeft n p -- rotates the indices of the polygon so -- that we get a somewhat random starting coordinate as well. - shrink :: SimplePolygon (Point 2 Rational) + shrink :: SimplePolygon (Point 2 Rational) -> [SimplePolygon (Point 2 Rational)] -shrink = SimplePolygon (Point 2 Rational) +shrink = SimplePolygon (Point 2 Rational) -> [SimplePolygon (Point 2 Rational)] forall r. (Ord r, Fractional r, Real r) => @@ -214,23 +214,23 @@ shrinkPolygon -instance Arbitrary (SimplePolygon (Point 2 Double)) where - arbitrary :: Gen (SimplePolygon (Point 2 Double)) +instance Arbitrary (SimplePolygon (Point 2 Double)) where + arbitrary :: Gen (SimplePolygon (Point 2 Double)) arbitrary = do - p <- [SimplePolygon (Point 2 Double)] + p <- [SimplePolygon (Point 2 Double)] -> Gen (SimplePolygon (Point 2 Double)) forall a. HasCallStack => [a] -> Gen a elements [SimplePolygon (Point 2 Double)] allSimplePolygons - n <- chooseInt (0, numVertices p-1) - pure $ rotateLeft n p + n <- chooseInt (0, numVertices p-1) + pure $ rotateLeft n p -- shrink p -- | isTriangle p = simplifyP p -- | otherwise = cutEars p ++ simplifyP p -instance Arbitrary (SimplePolygon (Point 2 (RealNumber (p::Nat)))) where - arbitrary :: Gen (SimplePolygon (Point 2 (RealNumber p))) +instance Arbitrary (SimplePolygon (Point 2 (RealNumber (p::Nat)))) where + arbitrary :: Gen (SimplePolygon (Point 2 (RealNumber p))) arbitrary = ASetter (SimplePolygon (Point 2 Rational)) (SimplePolygon (Point 2 (RealNumber p))) @@ -293,7 +293,7 @@ <$> (Gen (SimplePolygon (Point 2 Rational)) forall a. Arbitrary a => Gen a arbitrary :: Gen (SimplePolygon (Point 2 Rational))) - shrink :: SimplePolygon (Point 2 (RealNumber p)) + shrink :: SimplePolygon (Point 2 (RealNumber p)) -> [SimplePolygon (Point 2 (RealNumber p))] shrink = (SimplePolygon (Point 2 Rational) -> SimplePolygon (Point 2 (RealNumber p))) @@ -373,12 +373,12 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . SimplePolygon (Point 2 (RealNumber p)) -> SimplePolygon (Point 2 Rational) -trunc +trunc where - trunc :: SimplePolygon (Point 2 (RealNumber (p::Nat))) -> SimplePolygon (Point 2 Rational) - trunc :: SimplePolygon (Point 2 (RealNumber p)) + trunc :: SimplePolygon (Point 2 (RealNumber (p::Nat))) -> SimplePolygon (Point 2 Rational) + trunc :: SimplePolygon (Point 2 (RealNumber p)) -> SimplePolygon (Point 2 Rational) -trunc = ASetter +trunc = ASetter (SimplePolygon (Point 2 (RealNumber p))) (SimplePolygon (Point 2 Rational)) (RealNumber p) @@ -436,31 +436,31 @@ -- instance Arbitrary (MultiPolygon () Rational) where -- arbitrary = elements allMultiPolygons' -instance (Uniform r, Ord r, Num r) => Arbitrary (MonotonePolygon (Point 2 r)) where - arbitrary :: Gen (MonotonePolygon (Point 2 r)) +instance (Uniform r, Ord r, Num r) => Arbitrary (MonotonePolygon (Point 2 r)) where + arbitrary :: Gen (MonotonePolygon (Point 2 r)) arbitrary = do - n <- Int -> Int -> Int + n <- Int -> Int -> Int forall a. Ord a => a -> a -> a max Int 3 (Int -> Int) -> Gen Int -> Gen Int forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen Int getSize - g <- mkStdGen <$> arbitrary - let (v, g') = runState randomNonZeroVector g - pure $ evalState (randomMonotoneDirected n v) g' + g <- mkStdGen <$> arbitrary + let (v, g') = runState randomNonZeroVector g + pure $ evalState (randomMonotoneDirected n v) g' -------------------------------------------------------------------------------- -- | Shifts the indices of the polygon to the left by n. -rotateLeft :: SimplePolygon_ simplePolygon point r => Int -> simplePolygon -> simplePolygon +rotateLeft :: SimplePolygon_ simplePolygon point r => Int -> simplePolygon -> simplePolygon rotateLeft :: forall simplePolygon point r. SimplePolygon_ simplePolygon point r => Int -> simplePolygon -> simplePolygon -rotateLeft Int -n simplePolygon -pg = NonEmpty point -> simplePolygon +rotateLeft Int +n simplePolygon +pg = NonEmpty point -> simplePolygon forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => f point -> simplePolygon @@ -480,13 +480,13 @@ VertexIx polygon -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) ccwOuterBoundaryFrom (Int -n Int -> Int -> Int +n Int -> Int -> Int forall a. Integral a => a -> a -> a `mod` simplePolygon -> Int forall graph. HasVertices' graph => graph -> Int numVertices simplePolygon -pg)) simplePolygon -pg +pg)) simplePolygon +pg -------------------------------------------------------------------------------- -- * Polygon Shrinking @@ -495,32 +495,32 @@ -- -- The main idea is to try and remove every vertex (making sure that we still get a valid -- polygon). At the end, we try to simplify the coordinates of the points involved as well. -shrinkPolygon :: (Ord r, Fractional r, Real r) - => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] +shrinkPolygon :: (Ord r, Fractional r, Real r) + => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] shrinkPolygon :: forall r. (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] -shrinkPolygon SimplePolygon (Point 2 r) -pg +shrinkPolygon SimplePolygon (Point 2 r) +pg | SimplePolygon (Point 2 r) -> Bool forall {graph}. HasVertices' graph => graph -> Bool isTriangle SimplePolygon (Point 2 r) -pg = SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] +pg = SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] forall r. (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] simplifyCoords SimplePolygon (Point 2 r) -pg +pg | Bool otherwise = SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] forall r. (Ord r, Fractional r) => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] cutEars SimplePolygon (Point 2 r) -pg -- dropVertices <> simplifyCoords pg +pg -- dropVertices <> simplifyCoords pg where - dropVertices :: [SimplePolygon (Point 2 r)] -dropVertices = (Int -> Maybe (SimplePolygon (Point 2 r))) + dropVertices :: [SimplePolygon (Point 2 r)] +dropVertices = (Int -> Maybe (SimplePolygon (Point 2 r))) -> [Int] -> [SimplePolygon (Point 2 r)] forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe (SimplePolygon (Point 2 r) @@ -530,8 +530,8 @@ SimplePolygon (Point 2 r) -> Int -> Maybe (SimplePolygon (Point 2 r)) dropVertex SimplePolygon (Point 2 r) -pg) (SimplePolygon (Point 2 r) -pgSimplePolygon (Point 2 r) +pg) (SimplePolygon (Point 2 r) +pgSimplePolygon (Point 2 r) -> Getting (Endo [Int]) (SimplePolygon (Point 2 r)) Int -> [Int] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..Indexed @@ -568,16 +568,16 @@ asIndex) -dropVertex :: (Ord r, Fractional r, Real r) - => SimplePolygon (Point 2 r) -> Int - -> Maybe (SimplePolygon (Point 2 r)) +dropVertex :: (Ord r, Fractional r, Real r) + => SimplePolygon (Point 2 r) -> Int + -> Maybe (SimplePolygon (Point 2 r)) dropVertex :: forall r. (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> Int -> Maybe (SimplePolygon (Point 2 r)) -dropVertex SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) -pg Int -i = [Vertex (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))] +dropVertex SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) +pg Int +i = [Vertex (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))] -> Maybe (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) [Point 2 r] -> Maybe (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) @@ -590,7 +590,7 @@ Real (NumType point), Point_ point 2 (NumType point), Foldable1 f, Functor f, Foldable f) => f (Vertex (f point)) -> Maybe (f point) -fromPoints' ([Point 2 r] +fromPoints' ([Point 2 r] -> Maybe (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r))) -> (NonEmpty (Point 2 r) -> [Point 2 r]) -> NonEmpty (Point 2 r) @@ -621,12 +621,12 @@ -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) ccwOuterBoundaryFrom Int VertexIx (SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r)) -i) SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) -pg +i) SimplePolygonF (Cyclic NonEmptyVector) (Point 2 r) +pg where - fromPoints' :: f (Vertex (f point)) -> Maybe (f point) -fromPoints' f (Vertex (f point)) -pts = do pg' <- f (Vertex (f point)) -> Maybe (f point) + fromPoints' :: f (Vertex (f point)) -> Maybe (f point) +fromPoints' f (Vertex (f point)) +pts = do pg' <- f (Vertex (f point)) -> Maybe (f point) forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable f, ConstructableSimplePolygon simplePolygon point r) => @@ -637,18 +637,18 @@ (f point) (Vertex (f point)) (NumType (Vertex (f point)))) => f (Vertex (f point)) -> Maybe (f point) fromPoints f (Vertex (f point)) -pts - if hasNoSelfIntersections pg' then pure pg' else Nothing +pts + if hasNoSelfIntersections pg' then pure pg' else Nothing -- | Try to simplify the coordinates of the points in hte polygon -simplifyCoords :: forall r. (Ord r, Fractional r, Real r) - => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] +simplifyCoords :: forall r. (Ord r, Fractional r, Real r) + => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] simplifyCoords :: forall r. (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] -simplifyCoords SimplePolygon (Point 2 r) -pg = let (Vector 2 r -v :| [Vector 2 r] +simplifyCoords SimplePolygon (Point 2 r) +pg = let (Vector 2 r +v :| [Vector 2 r] _) = Getting (NonEmptyDList (Vector 2 r)) (SimplePolygon (Point 2 r)) @@ -695,9 +695,9 @@ Lens point point' (Vector d r) (Vector d s) Lens (Point 2 r) (Point 2 r) (Vector 2 r) (Vector 2 r) vector) SimplePolygon (Point 2 r) -pg +pg in [SimplePolygon (Point 2 r) -pgSimplePolygon (Point 2 r) +pgSimplePolygon (Point 2 r) -> (SimplePolygon (Point 2 r) -> SimplePolygon (Point 2 r)) -> SimplePolygon (Point 2 r) forall a b. a -> (a -> b) -> b @@ -730,7 +730,7 @@ (Affine_ point d r, Num r) => point -> Vector d r -> point .-^ Vector 2 r -v)] +v)] -- -- Scale up polygon such that each coordinate is a whole number. -- | lcmP /= 1 = [ pg' | pg' <- fromPoints' $ multP lcmP <$> pg^..vertices ] @@ -759,28 +759,28 @@ -- (fromRational $ numerator b `div` 2 % 1) -- | Aligns the polygon so that at least one point has x and y- coordinate zero -alignZero :: (Polygon_ polygon (Point 2 r) r, Num r, Ord r) - => polygon -> Point 2 r -> Point 2 r +alignZero :: (Polygon_ polygon (Point 2 r) r, Num r, Ord r) + => polygon -> Point 2 r -> Point 2 r alignZero :: forall polygon r. (Polygon_ polygon (Point 2 r) r, Num r, Ord r) => polygon -> Point 2 r -> Point 2 r -alignZero polygon -pg Point 2 r -v = Vector 2 r -> Point 2 r +alignZero polygon +pg Point 2 r +v = Vector 2 r -> Point 2 r forall v. v -> PointF v Point (Point 2 r -v Point 2 r -> Point 2 r -> Vector 2 r +v Point 2 r -> Point 2 r -> Vector 2 r forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -minX r -minY) +minX r +minY) where - minX :: r -minX = Getting (First r) polygon r -> polygon -> r + minX :: r +minX = Getting (First r) polygon r -> polygon -> r forall a s. Getting (First a) s a -> s -> a first1Of ((Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) @@ -810,9 +810,9 @@ IndexedLens' Int point r IndexedLens' Int (Point 2 r) r xCoord) polygon -pg - minY :: r -minY = Getting (First r) polygon r -> polygon -> r +pg + minY :: r +minY = Getting (First r) polygon r -> polygon -> r forall a s. Getting (First a) s a -> s -> a first1Of ((Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) @@ -842,23 +842,23 @@ IndexedLens' Int point r IndexedLens' Int (Point 2 r) r yCoord) polygon -pg +pg -lcmPoint :: (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> r +lcmPoint :: (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> r lcmPoint :: forall r. (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> r -lcmPoint SimplePolygon (Point 2 r) -p = Integer -> r +lcmPoint SimplePolygon (Point 2 r) +p = Integer -> r forall a b. (Real a, Fractional b) => a -> b realToFrac Integer -t +t where - vs :: [Point 2 r] -vs = SimplePolygon (Point 2 r) -pSimplePolygon (Point 2 r) + vs :: [Point 2 r] +vs = SimplePolygon (Point 2 r) +pSimplePolygon (Point 2 r) -> Getting (Endo [Point 2 r]) (SimplePolygon (Point 2 r)) (Point 2 r) -> [Point 2 r] @@ -876,18 +876,18 @@ (SimplePolygon (Point 2 r)) (Vertex (SimplePolygon (Point 2 r))) outerBoundary - lst :: [Integer] -lst = (Point 2 r -> [Integer]) -> [Point 2 r] -> [Integer] + lst :: [Integer] +lst = (Point 2 r -> [Integer]) -> [Point 2 r] -> [Integer] forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap ((\(Point2 Rational -x Rational -y) -> [Rational -> Integer +concatMap ((\(Point2 Rational +x Rational +y) -> [Rational -> Integer forall a. Ratio a -> a denominator Rational -x, Rational -> Integer +x, Rational -> Integer forall a. Ratio a -> a denominator Rational -y]) +y]) (Point 2 Rational -> [Integer]) -> (Point 2 r -> Point 2 Rational) -> Point 2 r -> [Integer] forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -910,29 +910,29 @@ forall a. Real a => a -> Rational toRational ) [Point 2 r] -vs - t :: Integer -t = (Integer -> Integer -> Integer) -> [Integer] -> Integer +vs + t :: Integer +t = (Integer -> Integer -> Integer) -> [Integer] -> Integer forall a. (a -> a -> a) -> [a] -> a forall (t :: * -> *) a. Foldable t => (a -> a -> a) -> t a -> a foldl1 Integer -> Integer -> Integer forall a. Integral a => a -> a -> a lcm [Integer] -lst +lst -gcdPoint :: (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> r +gcdPoint :: (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> r gcdPoint :: forall r. (Ord r, Fractional r, Real r) => SimplePolygon (Point 2 r) -> r -gcdPoint SimplePolygon (Point 2 r) -p = Integer -> r +gcdPoint SimplePolygon (Point 2 r) +p = Integer -> r forall a b. (Real a, Fractional b) => a -> b realToFrac Integer -t +t where - vs :: [Point 2 r] -vs = SimplePolygon (Point 2 r) -pSimplePolygon (Point 2 r) + vs :: [Point 2 r] +vs = SimplePolygon (Point 2 r) +pSimplePolygon (Point 2 r) -> Getting (Endo [Point 2 r]) (SimplePolygon (Point 2 r)) (Point 2 r) -> [Point 2 r] @@ -950,18 +950,18 @@ (SimplePolygon (Point 2 r)) (Vertex (SimplePolygon (Point 2 r))) outerBoundary - lst :: [Integer] -lst = (Point 2 r -> [Integer]) -> [Point 2 r] -> [Integer] + lst :: [Integer] +lst = (Point 2 r -> [Integer]) -> [Point 2 r] -> [Integer] forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] -concatMap ((\(Point2 Rational -x Rational -y) -> [Rational -> Integer +concatMap ((\(Point2 Rational +x Rational +y) -> [Rational -> Integer forall a. Ratio a -> a denominator Rational -x, Rational -> Integer +x, Rational -> Integer forall a. Ratio a -> a denominator Rational -y]) +y]) (Point 2 Rational -> [Integer]) -> (Point 2 r -> Point 2 Rational) -> Point 2 r -> [Integer] forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -984,25 +984,25 @@ forall a. Real a => a -> Rational toRational) [Point 2 r] -vs - t :: Integer -t = (Integer -> Integer -> Integer) -> [Integer] -> Integer +vs + t :: Integer +t = (Integer -> Integer -> Integer) -> [Integer] -> Integer forall a. (a -> a -> a) -> [a] -> a forall (t :: * -> *) a. Foldable t => (a -> a -> a) -> t a -> a foldl1 Integer -> Integer -> Integer forall a. Integral a => a -> a -> a gcd [Integer] -lst +lst isTriangle :: graph -> Bool -isTriangle graph -pg = graph -> Int +isTriangle graph +pg = graph -> Int forall graph. HasVertices' graph => graph -> Int numVertices graph -pg Int -> Int -> Bool +pg Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 3 @@ -1011,15 +1011,15 @@ -- remove vertex i, thereby dropping a vertex -cutEarAt :: (Ord r, Fractional r) - => SimplePolygon (Point 2 r) -> Int -> Maybe (SimplePolygon (Point 2 r)) +cutEarAt :: (Ord r, Fractional r) + => SimplePolygon (Point 2 r) -> Int -> Maybe (SimplePolygon (Point 2 r)) cutEarAt :: forall r. (Ord r, Fractional r) => SimplePolygon (Point 2 r) -> Int -> Maybe (SimplePolygon (Point 2 r)) -cutEarAt SimplePolygon (Point 2 r) -pg Int -i = [Point 2 r] -> Maybe (SimplePolygon (Point 2 r)) +cutEarAt SimplePolygon (Point 2 r) +pg Int +i = [Point 2 r] -> Maybe (SimplePolygon (Point 2 r)) forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable f, ConstructableSimplePolygon simplePolygon point r) => @@ -1030,10 +1030,10 @@ (SimplePolygon (Point 2 r)) (Point 2 r) r) => f (Point 2 r) -> Maybe (SimplePolygon (Point 2 r)) fromPoints [Point 2 r] -vs +vs where - vs :: [Point 2 r] -vs = IndexedGetting + vs :: [Point 2 r] +vs = IndexedGetting Int (Endo [Point 2 r]) (SimplePolygon (Point 2 r)) (Point 2 r) -> (Int -> Point 2 r -> [Point 2 r] -> [Point 2 r]) -> [Point 2 r] @@ -1056,43 +1056,43 @@ (VertexIx (SimplePolygon (Point 2 r))) (SimplePolygon (Point 2 r)) (Vertex (SimplePolygon (Point 2 r))) -outerBoundary (\Int -j Point 2 r -v [Point 2 r] -vs' -> if Int -i Int -> Int -> Bool +outerBoundary (\Int +j Point 2 r +v [Point 2 r] +vs' -> if Int +i Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int -j then [Point 2 r] -vs' else Point 2 r -vPoint 2 r -> [Point 2 r] -> [Point 2 r] +j then [Point 2 r] +vs' else Point 2 r +vPoint 2 r -> [Point 2 r] -> [Point 2 r] forall a. a -> [a] -> [a] :[Point 2 r] -vs') [] SimplePolygon (Point 2 r) -pg +vs') [] SimplePolygon (Point 2 r) +pg -cutEars :: (Ord r, Fractional r) - => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] +cutEars :: (Ord r, Fractional r) + => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] cutEars :: forall r. (Ord r, Fractional r) => SimplePolygon (Point 2 r) -> [SimplePolygon (Point 2 r)] -cutEars SimplePolygon (Point 2 r) -pg | SimplePolygon (Point 2 r) -> Bool +cutEars SimplePolygon (Point 2 r) +pg | SimplePolygon (Point 2 r) -> Bool forall {graph}. HasVertices' graph => graph -> Bool isTriangle SimplePolygon (Point 2 r) -pg = [] +pg = [] | Bool otherwise = [ SimplePolygon (Point 2 r) -pg' | Int -i <- [Int +pg' | Int +i <- [Int 0 .. (Int -n Int -> Int -> Int +n Int -> Int -> Int forall a. Num a => a -> a -> a -Int 1)], Int -> Bool -isEar Int -i, SimplePolygon (Point 2 r) -pg' <- Maybe (SimplePolygon (Point 2 r)) -> [SimplePolygon (Point 2 r)] +isEar Int +i, SimplePolygon (Point 2 r) +pg' <- Maybe (SimplePolygon (Point 2 r)) -> [SimplePolygon (Point 2 r)] forall a. Maybe a -> [a] maybeToList (SimplePolygon (Point 2 r) -> Int -> Maybe (SimplePolygon (Point 2 r)) @@ -1101,19 +1101,19 @@ SimplePolygon (Point 2 r) -> Int -> Maybe (SimplePolygon (Point 2 r)) cutEarAt SimplePolygon (Point 2 r) -pg Int -i) ] +pg Int +i) ] where - n :: Int -n = SimplePolygon (Point 2 r) -> Int + n :: Int +n = SimplePolygon (Point 2 r) -> Int forall graph. HasVertices' graph => graph -> Int numVertices SimplePolygon (Point 2 r) -pg - isEar :: Int -> Bool -isEar Int -i = let prev :: Point 2 r -prev = SimplePolygon (Point 2 r) -pgSimplePolygon (Point 2 r) +pg + isEar :: Int -> Bool +isEar Int +i = let prev :: Point 2 r +prev = SimplePolygon (Point 2 r) +pgSimplePolygon (Point 2 r) -> Getting (Point 2 r) (SimplePolygon (Point 2 r)) (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a @@ -1127,16 +1127,16 @@ VertexIx polygon -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt ((Int -iInt -> Int -> Int +iInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) Int -> Int -> Int forall a. Integral a => a -> a -> a `mod` Int -n) - cur :: Point 2 r -cur = SimplePolygon (Point 2 r) -pgSimplePolygon (Point 2 r) +n) + cur :: Point 2 r +cur = SimplePolygon (Point 2 r) +pgSimplePolygon (Point 2 r) -> Getting (Point 2 r) (SimplePolygon (Point 2 r)) (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a @@ -1151,10 +1151,10 @@ -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt Int VertexIx (SimplePolygon (Point 2 r)) -i - nxt :: Point 2 r -nxt = SimplePolygon (Point 2 r) -pgSimplePolygon (Point 2 r) +i + nxt :: Point 2 r +nxt = SimplePolygon (Point 2 r) +pgSimplePolygon (Point 2 r) -> Getting (Point 2 r) (SimplePolygon (Point 2 r)) (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a @@ -1168,29 +1168,29 @@ VertexIx polygon -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt ((Int -iInt -> Int -> Int +iInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) Int -> Int -> Int forall a. Integral a => a -> a -> a `mod` Int -n) - triangle :: Triangle (Point 2 r) -triangle = Point 2 r -> Point 2 r -> Point 2 r -> Triangle (Point 2 r) +n) + triangle :: Triangle (Point 2 r) +triangle = Point 2 r -> Point 2 r -> Point 2 r -> Triangle (Point 2 r) forall point. point -> point -> point -> Triangle point Triangle Point 2 r -prev Point 2 r -cur Point 2 r -nxt +prev Point 2 r +cur Point 2 r +nxt in Point 2 r -> Point 2 r -> Point 2 r -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw Point 2 r -prev Point 2 r -cur Point 2 r -nxt CCW -> CCW -> Bool +prev Point 2 r +cur Point 2 r +nxt CCW -> CCW -> Bool forall a. Eq a => a -> a -> Bool == CCW CCW -- left turn. @@ -1212,20 +1212,20 @@ (SimplePolygon (Point 2 r)) (Vertex (SimplePolygon (Point 2 r))) outerBoundary - (\Point 2 r -pt -> Point 2 r -pt Point 2 r -> [Point 2 r] -> Bool + (\Point 2 r +pt -> Point 2 r +pt Point 2 r -> [Point 2 r] -> Bool forall a. Eq a => a -> [a] -> Bool forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool `elem` [Point 2 r -prev,Point 2 r -cur,Point 2 r -nxt] Bool -> Bool -> Bool +prev,Point 2 r +cur,Point 2 r +nxt] Bool -> Bool -> Bool || Bool -> Bool not (Point 2 r -pt Point 2 r -> Triangle (Point 2 r) -> Bool +pt Point 2 r -> Triangle (Point 2 r) -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` Triangle (Point 2 r) -triangle)) SimplePolygon (Point 2 r) -pg +triangle)) SimplePolygon (Point 2 r) +pg \ No newline at end of file diff --git a/haddocks/hgeometry/quickcheck/src/Paths_hgeometry.html b/haddocks/hgeometry/quickcheck/src/Paths_hgeometry.html index ad1f9efd4..e6ed4acac 100644 --- a/haddocks/hgeometry/quickcheck/src/Paths_hgeometry.html +++ b/haddocks/hgeometry/quickcheck/src/Paths_hgeometry.html @@ -21,7 +21,7 @@ #if defined(VERSION_base) #if MIN_VERSION_base(4,0,0) -catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a +catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a #else catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a #endif @@ -45,11 +45,11 @@ getDataFileName :: FilePath -> IO FilePath getDataFileName :: String -> IO String -getDataFileName String -name = do - dir <- IO String +getDataFileName String +name = do + dir <- IO String getDataDir - return (dir `joinFileName` name) + return (dir `joinFileName` name) getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath @@ -148,55 +148,55 @@ joinFileName :: String -> String -> FilePath joinFileName :: String -> String -> String joinFileName String -"" String -fname = String -fname +"" String +fname = String +fname joinFileName String -"." String -fname = String -fname -joinFileName String -dir String +"." String +fname = String +fname +joinFileName String +dir String "" = String -dir -joinFileName dir :: String -dir@(Char -c:String -cs) String -fname +dir +joinFileName dir :: String +dir@(Char +c:String +cs) String +fname | Char -> Bool isPathSeparator (Char -> String -> Char forall {t}. t -> [t] -> t -lastChar Char -c String -cs) = String -dir String -> String -> String +lastChar Char +c String +cs) = String +dir String -> String -> String forall a. [a] -> [a] -> [a] ++ String -fname +fname | Bool otherwise = String -dir String -> String -> String +dir String -> String -> String forall a. [a] -> [a] -> [a] ++ Char pathSeparator Char -> String -> String forall a. a -> [a] -> [a] : String -fname +fname where -- We do not use Data.List.NonEmpty.last, as that would limit the module to -- base >= 4.9.0.0 (GHC >= 8.0.1). - lastChar :: t -> [t] -> t -lastChar t -x [] = t -x - lastChar t -_ (t -x:[t] -xs) = t -> [t] -> t -lastChar t -x [t] -xs + lastChar :: t -> [t] -> t +lastChar t +x [] = t +x + lastChar t +_ (t +x:[t] +xs) = t -> [t] -> t +lastChar t +x [t] +xs pathSeparator :: Char pathSeparator :: Char @@ -205,9 +205,9 @@ isPathSeparator :: Char -> Bool isPathSeparator :: Char -> Bool -isPathSeparator Char -c = Char -c Char -> Char -> Bool +isPathSeparator Char +c = Char +c Char -> Char -> Bool forall a. Eq a => a -> a -> Bool == Char '/' diff --git a/haddocks/hgeometry/src/HGeometry.BezierSpline.html b/haddocks/hgeometry/src/HGeometry.BezierSpline.html index 65275ad4d..7547a775a 100644 --- a/haddocks/hgeometry/src/HGeometry.BezierSpline.html +++ b/haddocks/hgeometry/src/HGeometry.BezierSpline.html @@ -40,8 +40,8 @@ -- | A Bezier spline. type BezierSplineF :: (Type -> Type) -> Type -> Type -newtype BezierSplineF f point = BezierSpline (f point) - deriving stock ((forall x. BezierSplineF f point -> Rep (BezierSplineF f point) x) +newtype BezierSplineF f point = BezierSpline (f point) + deriving stock ((forall x. BezierSplineF f point -> Rep (BezierSplineF f point) x) -> (forall x. Rep (BezierSplineF f point) x -> BezierSplineF f point) -> Generic (BezierSplineF f point) @@ -59,7 +59,7 @@ $cto :: forall (f :: * -> *) point x. Rep (BezierSplineF f point) x -> BezierSplineF f point to :: forall x. Rep (BezierSplineF f point) x -> BezierSplineF f point -Generic,Int -> BezierSplineF f point -> ShowS +Generic,Int -> BezierSplineF f point -> ShowS [BezierSplineF f point] -> ShowS BezierSplineF f point -> String (Int -> BezierSplineF f point -> ShowS) @@ -90,7 +90,7 @@ [BezierSplineF f point] -> ShowS showList :: [BezierSplineF f point] -> ShowS Show) - deriving newtype (BezierSplineF f point -> () + deriving newtype (BezierSplineF f point -> () (BezierSplineF f point -> ()) -> NFData (BezierSplineF f point) forall a. (a -> ()) -> NFData a forall (f :: * -> *) point. @@ -100,7 +100,7 @@ NFData (f point) => BezierSplineF f point -> () rnf :: BezierSplineF f point -> () -NFData,(forall a b. (a -> b) -> BezierSplineF f a -> BezierSplineF f b) +NFData,(forall a b. (a -> b) -> BezierSplineF f a -> BezierSplineF f b) -> (forall a b. a -> BezierSplineF f b -> BezierSplineF f a) -> Functor (BezierSplineF f) forall a b. a -> BezierSplineF f b -> BezierSplineF f a @@ -122,7 +122,7 @@ Functor f => a -> BezierSplineF f b -> BezierSplineF f a <$ :: forall a b. a -> BezierSplineF f b -> BezierSplineF f a -Functor,(forall m. Monoid m => BezierSplineF f m -> m) +Functor,(forall m. Monoid m => BezierSplineF f m -> m) -> (forall m a. Monoid m => (a -> m) -> BezierSplineF f a -> m) -> (forall m a. Monoid m => (a -> m) -> BezierSplineF f a -> m) -> (forall a b. (a -> b -> b) -> b -> BezierSplineF f a -> b) @@ -259,7 +259,7 @@ (Foldable f, Num a) => BezierSplineF f a -> a product :: forall a. Num a => BezierSplineF f a -> a -Foldable,Foldable (BezierSplineF f) +Foldable,Foldable (BezierSplineF f) Foldable (BezierSplineF f) => (forall m. Semigroup m => BezierSplineF f m -> m) -> (forall m a. Semigroup m => (a -> m) -> BezierSplineF f a -> m) @@ -364,7 +364,7 @@ Foldable1 f => (a -> b) -> (a -> b -> b) -> BezierSplineF f a -> b foldrMap1' :: forall a b. (a -> b) -> (a -> b -> b) -> BezierSplineF f a -> b -Foldable1,BezierSplineF f point -> BezierSplineF f point -> Bool +Foldable1,BezierSplineF f point -> BezierSplineF f point -> Bool (BezierSplineF f point -> BezierSplineF f point -> Bool) -> (BezierSplineF f point -> BezierSplineF f point -> Bool) -> Eq (BezierSplineF f point) @@ -380,7 +380,7 @@ Eq (f point) => BezierSplineF f point -> BezierSplineF f point -> Bool /= :: BezierSplineF f point -> BezierSplineF f point -> Bool -Eq,Eq (BezierSplineF f point) +Eq,Eq (BezierSplineF f point) Eq (BezierSplineF f point) => (BezierSplineF f point -> BezierSplineF f point -> Ordering) -> (BezierSplineF f point -> BezierSplineF f point -> Bool) @@ -451,7 +451,7 @@ -> BezierSplineF f point -> BezierSplineF f point min :: BezierSplineF f point -> BezierSplineF f point -> BezierSplineF f point -Ord,(forall a. Eq a => Eq (BezierSplineF f a)) => +Ord,(forall a. Eq a => Eq (BezierSplineF f a)) => (forall a b. (a -> b -> Bool) -> BezierSplineF f a -> BezierSplineF f b -> Bool) -> Eq1 (BezierSplineF f) @@ -470,7 +470,7 @@ (a -> b -> Bool) -> BezierSplineF f a -> BezierSplineF f b -> Bool liftEq :: forall a b. (a -> b -> Bool) -> BezierSplineF f a -> BezierSplineF f b -> Bool -Eq1,Eq1 (BezierSplineF f) +Eq1,Eq1 (BezierSplineF f) (Eq1 (BezierSplineF f), forall a. Ord a => Ord (BezierSplineF f a)) => (forall a b. @@ -508,31 +508,31 @@ -- | Cubic Bezier splines type CubicBezier = BezierSplineF (Vector 4) -type instance Dimension (BezierSplineF f point) = 2 -type instance NumType (BezierSplineF f point) = NumType point +type instance Dimension (BezierSplineF f point) = 2 +type instance NumType (BezierSplineF f point) = NumType point -- | Construct a QuadatricBezier -pattern Bezier2 :: point -> point -> point -> QuadraticBezier point +pattern Bezier2 :: point -> point -> point -> QuadraticBezier point pattern $bBezier2 :: forall point. point -> point -> point -> QuadraticBezier point $mBezier2 :: forall {r} {point}. QuadraticBezier point -> (point -> point -> point -> r) -> ((# #) -> r) -> r -Bezier2 p q r = BezierSpline (Vector3 p q r) +Bezier2 p q r = BezierSpline (Vector3 p q r) {-# COMPLETE Bezier2 #-} -- | Construct a cubic bezier -pattern Bezier3 :: point -> point -> point -> point -> CubicBezier point +pattern Bezier3 :: point -> point -> point -> point -> CubicBezier point pattern $bBezier3 :: forall point. point -> point -> point -> point -> CubicBezier point $mBezier3 :: forall {r} {point}. CubicBezier point -> (point -> point -> point -> point -> r) -> ((# #) -> r) -> r -Bezier3 p q r s = BezierSpline (Vector4 p q r s) +Bezier3 p q r s = BezierSpline (Vector4 p q r s) {-# COMPLETE Bezier3 #-} -- | Access the container -_BezierSplineF :: Iso (BezierSplineF f point) (BezierSplineF f' point') - (f point) (f' point' ) +_BezierSplineF :: Iso (BezierSplineF f point) (BezierSplineF f' point') + (f point) (f' point' ) _BezierSplineF :: forall (f :: * -> *) point (f' :: * -> *) point' (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => @@ -546,19 +546,19 @@ (f point) (f' point') forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b -iso (\(BezierSpline f point -vs) -> f point -vs) f' point' -> BezierSplineF f' point' +iso (\(BezierSpline f point +vs) -> f point +vs) f' point' -> BezierSplineF f' point' forall (f :: * -> *) point. f point -> BezierSplineF f point BezierSpline -instance Traversable f => Traversable (BezierSplineF f) where - traverse :: forall (f :: * -> *) a b. +instance Traversable f => Traversable (BezierSplineF f) where + traverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> BezierSplineF f a -> f (BezierSplineF f b) -traverse a -> f b -f (BezierSpline f a -vs) = f b -> BezierSplineF f b +traverse a -> f b +f (BezierSpline f a +vs) = f b -> BezierSplineF f b forall (f :: * -> *) point. f point -> BezierSplineF f point BezierSpline (f b -> BezierSplineF f b) -> f (f b) -> f (BezierSplineF f b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -570,15 +570,15 @@ Applicative f => (a -> f b) -> f a -> f (f b) traverse a -> f b -f f a -vs -instance Traversable1 f => Traversable1 (BezierSplineF f) where - traverse1 :: forall (f :: * -> *) a b. +f f a +vs +instance Traversable1 f => Traversable1 (BezierSplineF f) where + traverse1 :: forall (f :: * -> *) a b. Apply f => (a -> f b) -> BezierSplineF f a -> f (BezierSplineF f b) -traverse1 a -> f b -f (BezierSpline f a -vs) = f b -> BezierSplineF f b +traverse1 a -> f b +f (BezierSpline f a +vs) = f b -> BezierSplineF f b forall (f :: * -> *) point. f point -> BezierSplineF f point BezierSpline (f b -> BezierSplineF f b) -> f (f b) -> f (BezierSplineF f b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -588,21 +588,21 @@ (a -> f b) -> t a -> f (t b) forall (f :: * -> *) a b. Apply f => (a -> f b) -> f a -> f (f b) traverse1 a -> f b -f f a -vs +f f a +vs -instance ( Traversable1 f - , IxValue (f point) ~ point - , Index (f point) ~ Int - , Ixed (f point) - ) => HasVertices (BezierSplineF f point) (BezierSplineF f point') where - vertices :: IndexedTraversal1 +instance ( Traversable1 f + , IxValue (f point) ~ point + , Index (f point) ~ Int + , Ixed (f point) + ) => HasVertices (BezierSplineF f point) (BezierSplineF f point') where + vertices :: IndexedTraversal1 (VertexIx (BezierSplineF f point)) (BezierSplineF f point) (BezierSplineF f point') (Vertex (BezierSplineF f point)) (Vertex (BezierSplineF f point')) -vertices = (f point -> f (f point')) +vertices = (f point -> f (f point')) -> BezierSplineF f point -> f (BezierSplineF f point') forall (f :: * -> *) point (f' :: * -> *) point' (p :: * -> * -> *) (f :: * -> *). @@ -623,12 +623,12 @@ IndexedTraversal1 Int (f point) (f point') point point' traversed1 -instance ( Traversable1 f - , IxValue (f point) ~ point - , Index (f point) ~ Int - , Ixed (f point) - ) => HasPoints (BezierSplineF f point) (BezierSplineF f point') point point' where - allPoints :: forall (d :: Nat) r r'. +instance ( Traversable1 f + , IxValue (f point) ~ point + , Index (f point) ~ Int + , Ixed (f point) + ) => HasPoints (BezierSplineF f point) (BezierSplineF f point') point point' where + allPoints :: forall (d :: Nat) r r'. (Point_ point d r, Point_ point' d r', NumType (BezierSplineF f point) ~ r, NumType (BezierSplineF f point') ~ r', @@ -636,7 +636,7 @@ Dimension (BezierSplineF f point') ~ d) => Traversal1 (BezierSplineF f point) (BezierSplineF f point') point point' -allPoints = (f point -> f (f point')) +allPoints = (f point -> f (f point')) -> BezierSplineF f point -> f (BezierSplineF f point') forall (f :: * -> *) point (f' :: * -> *) point' (p :: * -> * -> *) (f :: * -> *). @@ -657,35 +657,35 @@ IndexedTraversal1 Int (f point) (f point') point point' traversed1 -instance ( Traversable1 f - , IxValue (f point) ~ point - , Index (f point) ~ Int - , Ixed (f point) - , DefaultTransformByConstraints (BezierSplineF f point) 2 r - , Point_ point 2 r - ) => IsTransformable (BezierSplineF f point) +instance ( Traversable1 f + , IxValue (f point) ~ point + , Index (f point) ~ Int + , Ixed (f point) + , DefaultTransformByConstraints (BezierSplineF f point) 2 r + , Point_ point 2 r + ) => IsTransformable (BezierSplineF f point) -instance ( Traversable1 f - , IxValue (f point) ~ point - , Index (f point) ~ Int - , Ixed (f point) - , Point_ point 2 r - ) => IsBoxable (BezierSplineF f point) +instance ( Traversable1 f + , IxValue (f point) ~ point + , Index (f point) ~ Int + , Ixed (f point) + , Point_ point 2 r + ) => IsBoxable (BezierSplineF f point) -instance ( Traversable1 f - , Ixed (f point) - , IxValue (f point) ~ point - , Index (f point) ~ Int - ) => HasVertices' (BezierSplineF f point) where - type Vertex (BezierSplineF f point) = point - type VertexIx (BezierSplineF f point) = Int - vertexAt :: VertexIx (BezierSplineF f point) +instance ( Traversable1 f + , Ixed (f point) + , IxValue (f point) ~ point + , Index (f point) ~ Int + ) => HasVertices' (BezierSplineF f point) where + type Vertex (BezierSplineF f point) = point + type VertexIx (BezierSplineF f point) = Int + vertexAt :: VertexIx (BezierSplineF f point) -> IndexedTraversal' (VertexIx (BezierSplineF f point)) (BezierSplineF f point) (Vertex (BezierSplineF f point)) -vertexAt VertexIx (BezierSplineF f point) -i = (f point -> f (f point)) +vertexAt VertexIx (BezierSplineF f point) +i = (f point -> f (f point)) -> BezierSplineF f point -> f (BezierSplineF f point) forall (f :: * -> *) point (f' :: * -> *) point' (p :: * -> * -> *) (f :: * -> *). @@ -707,5 +707,5 @@ Index m -> IndexedTraversal' (Index m) m (IxValue m) iix VertexIx (BezierSplineF f point) Index (f point) -i +i \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.ClosestPair.DivideAndConquer.html b/haddocks/hgeometry/src/HGeometry.ClosestPair.DivideAndConquer.html index defdd36b7..7e4fa8af0 100644 --- a/haddocks/hgeometry/src/HGeometry.ClosestPair.DivideAndConquer.html +++ b/haddocks/hgeometry/src/HGeometry.ClosestPair.DivideAndConquer.html @@ -42,14 +42,14 @@ -- pre: input contains at least two points -- -- running time: \(O(n \log n)\) -closestPair :: ( Ord r, Num r, Point_ point 2 r, Foldable1 f) - => f point -> Vector 2 point +closestPair :: ( Ord r, Num r, Point_ point 2 r, Foldable1 f) + => f point -> Vector 2 point closestPair :: forall r point (f :: * -> *). (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> Vector 2 point closestPair = CCP point -> Vector 2 point forall {r}. CCP r -> Vector 2 r -f +f (CCP point -> Vector 2 point) -> (f point -> CCP point) -> f point -> Vector 2 point forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -59,7 +59,7 @@ (a -> s) -> f a -> s divideAndConquer1 point -> CCP point forall {point}. point -> CCP point -mkCCP +mkCCP (NonEmptyVector point -> CCP point) -> (f point -> NonEmptyVector point) -> f point -> CCP point forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -82,27 +82,27 @@ Lens' point (Point 2 r) asPoint) where - mkCCP :: point -> CCP point -mkCCP point -p = NonEmpty point -> CP point -> CCP point + mkCCP :: point -> CCP point +mkCCP point +p = NonEmpty point -> CP point -> CCP point forall point. NonEmpty point -> CP point -> CCP point CCP (point -p point -> [point] -> NonEmpty point +p point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :| []) CP point forall a. Top a Top - f :: CCP r -> Vector 2 r -f = \case + f :: CCP r -> Vector 2 r +f = \case CCP NonEmpty r -_ (ValT (SP (Two r -p r -q) NumType r +_ (ValT (SP (Two r +p r +q) NumType r _)) -> r -> r -> Vector 2 r forall r. r -> r -> Vector 2 r Vector2 r -p r -q +p r +q CCP NonEmpty r _ CP r Top -> [Char] -> Vector 2 r @@ -112,29 +112,29 @@ -- | the closest pair and its (squared) distance -type CP point = Top (SP (Two point) (NumType point)) +type CP point = Top (SP (Two point) (NumType point)) -- | Type used in the closest pair computation. The fields represent the points -- ordered on increasing y-order and the closest pair (if we know it) -data CCP point = CCP (NonEmpty point) !(CP point) +data CCP point = CCP (NonEmpty point) !(CP point) -- deriving (Show,Eq) -instance (Num r, Ord r, Point_ point 2 r) => Semigroup (CCP point) where - (CCP NonEmpty point -ptsl CP point -cpl) <> :: CCP point -> CCP point -> CCP point -<> (CCP NonEmpty point -ptsr CP point -cpr) = NonEmpty point -> CP point -> CCP point +instance (Num r, Ord r, Point_ point 2 r) => Semigroup (CCP point) where + (CCP NonEmpty point +ptsl CP point +cpl) <> :: CCP point -> CCP point -> CCP point +<> (CCP NonEmpty point +ptsr CP point +cpr) = NonEmpty point -> CP point -> CCP point forall point. NonEmpty point -> CP point -> CCP point CCP ((point -> point -> Ordering) -> NonEmpty point -> NonEmpty point -> NonEmpty point forall a. (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a -> NonEmpty a mergeSortedBy point -> point -> Ordering -cmp NonEmpty point -ptsl NonEmpty point -ptsr) +cmp NonEmpty point +ptsl NonEmpty point +ptsr) (CP point -> NonEmpty point -> NonEmpty point -> CP point forall point r. (Ord r, Num r, Point_ point 2 r) => @@ -149,18 +149,18 @@ forall point. CP point -> Top (NumType point) getDist Top (SP (Two point) r) CP point -cpl Top (SP (Two point) r) +cpl Top (SP (Two point) r) CP point -cpr) NonEmpty point -ptsl NonEmpty point -ptsr) +cpr) NonEmpty point +ptsl NonEmpty point +ptsr) where -- compare on y first then on x - cmp :: point -> point -> Ordering - cmp :: point -> point -> Ordering -cmp point -p point -q = (point -> r) -> point -> point -> Ordering + cmp :: point -> point -> Ordering + cmp :: point -> point -> Ordering +cmp point +p point +q = (point -> r) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing (point -> Getting r point r -> r forall s a. s -> Getting a s a -> a @@ -170,8 +170,8 @@ IndexedLens' Int point r IndexedLens' Int point r yCoord) point -p point -q Ordering -> Ordering -> Ordering +p point +q Ordering -> Ordering -> Ordering forall a. Semigroup a => a -> a -> a <> (point -> r) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering @@ -183,112 +183,112 @@ IndexedLens' Int point r IndexedLens' Int point r xCoord) point -p point -q +p point +q -- | Function that does the actual merging work -mergePairs :: forall point r. (Ord r, Num r, Point_ point 2 r) - => CP point -- ^ current closest pair and its dist - -> NonEmpty point -- ^ pts on the left - -> NonEmpty point -- ^ pts on the right - -> CP point +mergePairs :: forall point r. (Ord r, Num r, Point_ point 2 r) + => CP point -- ^ current closest pair and its dist + -> NonEmpty point -- ^ pts on the left + -> NonEmpty point -- ^ pts on the right + -> CP point mergePairs :: forall point r. (Ord r, Num r, Point_ point 2 r) => CP point -> NonEmpty point -> NonEmpty point -> CP point -mergePairs CP point -cp' NonEmpty point -ls' NonEmpty point -rs' = CP point -> [point] -> [point] -> CP point -go CP point -cp' (NonEmpty point -> [point] +mergePairs CP point +cp' NonEmpty point +ls' NonEmpty point +rs' = CP point -> [point] -> [point] -> CP point +go CP point +cp' (NonEmpty point -> [point] forall a. NonEmpty a -> [a] NonEmpty.toList NonEmpty point -ls') (NonEmpty point -> [point] +ls') (NonEmpty point -> [point] forall a. NonEmpty a -> [a] NonEmpty.toList NonEmpty point -rs') +rs') where -- scan through the points on the right in increasing order. - go :: CP point -> [point] -> [point] - -> CP point - go :: CP point -> [point] -> [point] -> CP point -go CP point -cp [point] + go :: CP point -> [point] -> [point] + -> CP point + go :: CP point -> [point] -> [point] -> CP point +go CP point +cp [point] _ [] = CP point -cp - go CP point -cp [point] -ls (point -r:[point] -rs) = let ls'' :: [point] -ls'' = Top r -> [point] -> point -> [point] +cp + go CP point +cp [point] +ls (point +r:[point] +rs) = let ls'' :: [point] +ls'' = Top r -> [point] -> point -> [point] forall r point. (Ord r, Num r, Point_ point 2 r) => Top r -> [point] -> point -> [point] trim (CP point -> Top (NumType point) forall point. CP point -> Top (NumType point) getDist CP point -cp) [point] -ls point -r - cp'' :: CP point -cp'' = CP point -> point -> [point] -> CP point +cp) [point] +ls point +r + cp'' :: CP point +cp'' = CP point -> point -> [point] -> CP point forall r point. (Ord r, Num r, Point_ point 2 r) => CP point -> point -> [point] -> CP point run CP point -cp point -r [point] -ls'' -- try to find a new closer pair with r. +cp point +r [point] +ls'' -- try to find a new closer pair with r. in CP point -> [point] -> [point] -> CP point -go CP point -cp'' [point] -ls'' [point] -rs -- and then process the remaining points +go CP point +cp'' [point] +ls'' [point] +rs -- and then process the remaining points -- | ditch the points on the left that are too low anyway -trim :: (Ord r, Num r, Point_ point 2 r) - => Top r -> [point] -> point - -> [point] +trim :: (Ord r, Num r, Point_ point 2 r) + => Top r -> [point] -> point + -> [point] trim :: forall r point. (Ord r, Num r, Point_ point 2 r) => Top r -> [point] -> point -> [point] -trim (ValT r -d) [point] -ls point -r = (point -> Bool) -> [point] -> [point] +trim (ValT r +d) [point] +ls point +r = (point -> Bool) -> [point] -> [point] forall a. (a -> Bool) -> [a] -> [a] -List.dropWhile (\point -l -> point -> point -> r +List.dropWhile (\point +l -> point -> point -> r forall r point. (Ord r, Num r, Point_ point 2 r) => point -> point -> r sqVertDist point -l point -r r -> r -> Bool +l point +r r -> r -> Bool forall a. Ord a => a -> a -> Bool > r -d) [point] -ls +d) [point] +ls trim Top r -_ [point] -ls point +_ [point] +ls point _ = [point] -ls +ls -- | the squared vertical distance (in case r lies above l) or 0 otherwise -sqVertDist :: (Ord r, Num r, Point_ point 2 r) => point -> point -> r +sqVertDist :: (Ord r, Num r, Point_ point 2 r) => point -> point -> r sqVertDist :: forall r point. (Ord r, Num r, Point_ point 2 r) => point -> point -> r -sqVertDist point -l point -r = let d :: r -d = r +sqVertDist point +l point +r = let d :: r +d = r 0 r -> r -> r forall a. Ord a => a -> a -> a `max` (point -rpoint -> Getting r point r -> r +rpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -298,7 +298,7 @@ yCoord r -> r -> r forall a. Num a => a -> a -> a - point -lpoint -> Getting r point r -> r +lpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -306,23 +306,23 @@ IndexedLens' Int point r IndexedLens' Int point r yCoord) in r -dr -> r -> r +dr -> r -> r forall a. Num a => a -> a -> a *r -d +d -- | try and find a new closest pair with r. If we get to points that are too -- far above r we stop (since none of those points will be closer to r anyway) -run :: (Ord r, Num r, Point_ point 2 r) - => CP point -> point -> [point] - -> CP point +run :: (Ord r, Num r, Point_ point 2 r) + => CP point -> point -> [point] + -> CP point run :: forall r point. (Ord r, Num r, Point_ point 2 r) => CP point -> point -> [point] -> CP point -run CP point -cp'' point -r [point] -ls = +run CP point +cp'' point +r [point] +ls = Top (SP (Two point) r) -> [point] -> (Top (SP (Two point) r) -> point -> Bool) @@ -331,29 +331,29 @@ forall s a. s -> [a] -> (s -> a -> Bool) -> (s -> a -> s) -> s runWhile Top (SP (Two point) r) CP point -cp'' [point] -ls - (\Top (SP (Two point) r) -cp point -l -> NumType point -> Top (NumType point) +cp'' [point] +ls + (\Top (SP (Two point) r) +cp point +l -> NumType point -> Top (NumType point) forall a. a -> Top a ValT (point -> point -> NumType point forall r point. (Ord r, Num r, Point_ point 2 r) => point -> point -> r sqVertDist point -r point -l) Top (NumType point) -> Top (NumType point) -> Bool +r point +l) Top (NumType point) -> Top (NumType point) -> Bool forall a. Ord a => a -> a -> Bool < CP point -> Top (NumType point) forall point. CP point -> Top (NumType point) getDist Top (SP (Two point) r) CP point -cp) -- r and l inverted +cp) -- r and l inverted -- by design - (\Top (SP (Two point) r) -cp point -l -> (Top (SP (Two point) r) -> Top r) + (\Top (SP (Two point) r) +cp point +l -> (Top (SP (Two point) r) -> Top r) -> Top (SP (Two point) r) -> Top (SP (Two point) r) -> Top (SP (Two point) r) @@ -362,7 +362,7 @@ CP point -> Top (NumType point) forall point. CP point -> Top (NumType point) getDist Top (SP (Two point) r) -cp (SP (Two point) r -> Top (SP (Two point) r) +cp (SP (Two point) r -> Top (SP (Two point) r) forall a. a -> Top a ValT (SP (Two point) r -> Top (SP (Two point) r)) -> SP (Two point) r -> Top (SP (Two point) r) @@ -372,69 +372,69 @@ SP (point -> point -> Two point forall a. a -> a -> Two a Two point -l point -r) (point -> point -> r +l point +r) (point -> point -> r forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r squaredEuclideanDist point -l point -r))) +l point +r))) -- | Given some function that decides when to keep things while maintaining some state. -runWhile :: s -> [a] -> (s -> a -> Bool) -> (s -> a -> s) -> s +runWhile :: s -> [a] -> (s -> a -> Bool) -> (s -> a -> s) -> s runWhile :: forall s a. s -> [a] -> (s -> a -> Bool) -> (s -> a -> s) -> s -runWhile s -s' [a] -ys s -> a -> Bool -p s -> a -> s -f = s -> [a] -> s -go s -s' [a] -ys +runWhile s +s' [a] +ys s -> a -> Bool +p s -> a -> s +f = s -> [a] -> s +go s +s' [a] +ys where - go :: s -> [a] -> s -go s -s [] = s -s - go s -s (a -x:[a] -xs) | s -> a -> Bool -p s -s a -x = s -> [a] -> s -go (s -> a -> s -f s -s a -x) [a] -xs -- continue with new state + go :: s -> [a] -> s +go s +s [] = s +s + go s +s (a +x:[a] +xs) | s -> a -> Bool +p s +s a +x = s -> [a] -> s +go (s -> a -> s +f s +s a +x) [a] +xs -- continue with new state | Bool otherwise = s -s -- stop, return the current state +s -- stop, return the current state -- | returns the minimum element according to some function. -minBy :: Ord b => (a -> b) -> a -> a -> a +minBy :: Ord b => (a -> b) -> a -> a -> a minBy :: forall b a. Ord b => (a -> b) -> a -> a -> a -minBy a -> b -f a -a a -b | a -> b -f a -a b -> b -> Bool +minBy
a -> b +f a +a a +b | a -> b +f a +a b -> b -> Bool forall a. Ord a => a -> a -> Bool < a -> b -f a -b = a -a +f
a +b = a +a | Bool otherwise = a -b +b
-- | Get the distance of a (candidate) closest pair -getDist :: CP point -> Top (NumType point) +getDist :: CP point -> Top (NumType point) getDist :: forall point. CP point -> Top (NumType point) getDist = (SP (Two point) (NumType point) -> NumType point) -> Top (SP (Two point) (NumType point)) -> Top (NumType point) diff --git a/haddocks/hgeometry/src/HGeometry.ClosestPair.Naive.html b/haddocks/hgeometry/src/HGeometry.ClosestPair.Naive.html index cf86228e9..a735a7d52 100644 --- a/haddocks/hgeometry/src/HGeometry.ClosestPair.Naive.html +++ b/haddocks/hgeometry/src/HGeometry.ClosestPair.Naive.html @@ -34,8 +34,8 @@ -- pre: there are at least two! points in the input -- -- running time: \(O(dn^2)\) time. -closestPair :: ( Ord r, Num r, Point_ point d r, Foldable1 f, Has_ Metric_ d r) - => f point -> Vector 2 point +closestPair :: ( Ord r, Num r, Point_ point d r, Foldable1 f, Has_ Metric_ d r) + => f point -> Vector 2 point closestPair :: forall r point (d :: Nat) (f :: * -> *). (Ord r, Num r, Point_ point d r, Foldable1 f, Has_ Metric_ d r) => f point -> Vector 2 point @@ -67,7 +67,7 @@ squaredEuclideanDist -- | A distance function between geometries of type 'g' -type DistanceFunction g = g -> g -> NumType g +type DistanceFunction g = g -> g -> NumType g -- | Naive algorithm to compute the closest pair of points (and the -- distance realized by those points) given a distance function. Note @@ -75,16 +75,16 @@ -- -- running time: \(O(T(d)n^2)\), where \(T(d)\) is the time required -- to evaluate the distance between two points in \(\mathbb{R}^d\). -closestPairWith :: (Ord r, Point_ point d r, Foldable1 f) - => DistanceFunction point - -> f point -> SP (Vector 2 point) r +closestPairWith :: (Ord r, Point_ point d r, Foldable1 f) + => DistanceFunction point + -> f point -> SP (Vector 2 point) r closestPairWith :: forall r point (d :: Nat) (f :: * -> *). (Ord r, Point_ point d r, Foldable1 f) => DistanceFunction point -> f point -> SP (Vector 2 point) r -closestPairWith DistanceFunction point -d = Arg r (Vector 2 point) -> SP (Vector 2 point) r +closestPairWith DistanceFunction point +d = Arg r (Vector 2 point) -> SP (Vector 2 point) r forall {b} {a}. Arg b a -> SP a b -getVal (Arg r (Vector 2 point) -> SP (Vector 2 point) r) +getVal (Arg r (Vector 2 point) -> SP (Vector 2 point) r) -> (f point -> Arg r (Vector 2 point)) -> f point -> SP (Vector 2 point) r @@ -110,7 +110,7 @@ forall a b. (a -> b) -> NonEmpty a -> NonEmpty b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Two point -> Min (Arg r (Vector 2 point)) -mkPair (NonEmpty (Two point) -> NonEmpty (Min (Arg r (Vector 2 point)))) +mkPair (NonEmpty (Two point) -> NonEmpty (Min (Arg r (Vector 2 point)))) -> (f point -> NonEmpty (Two point)) -> f point -> NonEmpty (Min (Arg r (Vector 2 point))) @@ -119,33 +119,33 @@ forall (f :: * -> *) a. Foldable1 f => f a -> NonEmpty (Two a) pairs where - getVal :: Arg b a -> SP a b -getVal (Arg b -dist a -x) = a -> b -> SP a b + getVal :: Arg b a -> SP a b +getVal (Arg b +dist a +x) = a -> b -> SP a b forall a b. a -> b -> SP a b SP a -x b -dist - mkPair :: Two point -> Min (Arg r (Vector 2 point)) -mkPair (Two point -p point -q) = Arg r (Vector 2 point) -> Min (Arg r (Vector 2 point)) +x b +dist + mkPair :: Two point -> Min (Arg r (Vector 2 point)) +mkPair (Two point +p point +q) = Arg r (Vector 2 point) -> Min (Arg r (Vector 2 point)) forall a. a -> Min a Min (r -> Vector 2 point -> Arg r (Vector 2 point) forall a b. a -> b -> Arg a b Arg (DistanceFunction point -d point -p point -q) (point -> point -> Vector 2 point +d point +p point +q) (point -> point -> Vector 2 point forall r. r -> r -> Vector 2 r Vector2 point -p point -q)) +p point +q)) -- | Produce all lists from a vec of elements. Since the Vec contains at least two -- elements, the resulting list is non-empty -pairs :: Foldable1 f => f a -> NonEmpty.NonEmpty (Two a) +pairs :: Foldable1 f => f a -> NonEmpty.NonEmpty (Two a) pairs :: forall (f :: * -> *) a. Foldable1 f => f a -> NonEmpty (Two a) pairs = [Two a] -> NonEmpty (Two a) forall a. HasCallStack => [a] -> NonEmpty a diff --git a/haddocks/hgeometry/src/HGeometry.ConvexHull.DivideAndConquer.html b/haddocks/hgeometry/src/HGeometry.ConvexHull.DivideAndConquer.html index ee9607549..23a654e90 100644 --- a/haddocks/hgeometry/src/HGeometry.ConvexHull.DivideAndConquer.html +++ b/haddocks/hgeometry/src/HGeometry.ConvexHull.DivideAndConquer.html @@ -29,14 +29,14 @@ -------------------------------------------------------------------------------- -- | \(O(n \log n)\) time ConvexHull using divide and conquer. -convexHull :: (Ord r, Num r, Point_ point 2 r) - => NonEmpty point -> ConvexPolygon point +convexHull :: (Ord r, Num r, Point_ point 2 r) + => NonEmpty point -> ConvexPolygon point -- convexHull (p :| []) = ConvexPolygon . unsafeFromPoints $ [p] convexHull :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point -convexHull NonEmpty point -pts = (NonEmpty point, NonEmpty point) -> ConvexPolygon point +convexHull NonEmpty point +pts = (NonEmpty point, NonEmpty point) -> ConvexPolygon point (NonEmpty (Vertex (ConvexPolygon point)), NonEmpty (Vertex (ConvexPolygon point))) -> ConvexPolygon point @@ -44,7 +44,7 @@ (NumType (Vertex c) ~ NumType c, Dimension (Vertex c) ~ 2, SimplePolygon_ c (Vertex c) (NumType c)) => (NonEmpty (Vertex c), NonEmpty (Vertex c)) -> c -combine ((NonEmpty point, NonEmpty point) -> ConvexPolygon point) +combine ((NonEmpty point, NonEmpty point) -> ConvexPolygon point) -> (NonEmpty point -> (NonEmpty point, NonEmpty point)) -> NonEmpty point -> ConvexPolygon point @@ -80,16 +80,16 @@ -> NonEmpty point -> ConvexPolygon point forall a b. (a -> b) -> a -> b $ NonEmpty point -pts +pts where - combine :: (NonEmpty (Vertex c), NonEmpty (Vertex c)) -> c -combine (NonEmpty (Vertex c) -> NonEmpty (Vertex c) + combine :: (NonEmpty (Vertex c), NonEmpty (Vertex c)) -> c +combine (NonEmpty (Vertex c) -> NonEmpty (Vertex c) forall a. NonEmpty a -> NonEmpty a NonEmpty.reverse -> Vertex c -_:|[Vertex c] -uh, Vertex c -_:|[Vertex c] -lh) = +_:|[Vertex c] +uh, Vertex c +_:|[Vertex c] +lh) = NonEmpty (Vertex c) -> c forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => @@ -103,10 +103,10 @@ NonEmpty.fromList ([Vertex c] -> c) -> [Vertex c] -> c forall a b. (a -> b) -> a -> b $ [Vertex c] -lh [Vertex c] -> [Vertex c] -> [Vertex c] +lh [Vertex c] -> [Vertex c] -> [Vertex c] forall a. Semigroup a => a -> a -> a <> [Vertex c] -uh +uh
@@ -115,8 +115,8 @@ -- | \(O(n \log n)\) time LowerHull using divide and conquer. The resulting Hull is -- given from left to right, i.e. in counter clockwise order. -lowerHull :: (Ord r, Num r, Point_ point 2 r) - => NonEmpty point -> NonEmpty point +lowerHull :: (Ord r, Num r, Point_ point 2 r) + => NonEmpty point -> NonEmpty point lowerHull :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -137,7 +137,7 @@ point -> point -> Ordering incXdecY -lowerHull' :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +lowerHull' :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point lowerHull' :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -159,8 +159,8 @@ forall a. a -> [a] -> NonEmpty a :|[])) -newtype LH point = LH { forall point. LH point -> NonEmpty point -unLH :: NonEmpty point } deriving (LH point -> LH point -> Bool +newtype LH point = LH { forall point. LH point -> NonEmpty point +unLH :: NonEmpty point } deriving (LH point -> LH point -> Bool (LH point -> LH point -> Bool) -> (LH point -> LH point -> Bool) -> Eq (LH point) forall point. Eq point => LH point -> LH point -> Bool @@ -169,7 +169,7 @@ == :: LH point -> LH point -> Bool $c/= :: forall point. Eq point => LH point -> LH point -> Bool /= :: LH point -> LH point -> Bool -Eq,Int -> LH point -> ShowS +Eq,Int -> LH point -> ShowS [LH point] -> ShowS LH point -> String (Int -> LH point -> ShowS) @@ -187,11 +187,11 @@ showList :: [LH point] -> ShowS Show) -instance (Point_ point 2 r, Num r, Ord r) => Semigroup (LH point) where - (LH NonEmpty point -lh) <> :: LH point -> LH point -> LH point -<> (LH NonEmpty point -rh) = NonEmpty point -> LH point +instance (Point_ point 2 r, Num r, Ord r) => Semigroup (LH point) where + (LH NonEmpty point +lh) <> :: LH point -> LH point -> LH point +<> (LH NonEmpty point +rh) = NonEmpty point -> LH point forall point. NonEmpty point -> LH point LH (NonEmpty point -> LH point) -> NonEmpty point -> LH point forall a b. (a -> b) -> a -> b @@ -205,15 +205,15 @@ (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point]) lowerTangent' NonEmpty point -lh NonEmpty point -rh +lh NonEmpty point +rh ---------------------------------------- -- * Computing an upper hull -- | \(O(n \log n)\) time UpperHull using divide and conquer. The resulting Hull is -- given from left to right, i.e. in clockwise order. -upperHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +upperHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point upperHull :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -234,7 +234,7 @@ point -> point -> Ordering incXdecY -upperHull' :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +upperHull' :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point upperHull' :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -256,14 +256,14 @@ forall a. a -> [a] -> NonEmpty a :|[])) -newtype UH point = UH { forall point. UH point -> NonEmpty point -unUH :: NonEmpty point } +newtype UH point = UH { forall point. UH point -> NonEmpty point +unUH :: NonEmpty point } -instance ( Point_ point 2 r, Num r, Ord r) => Semigroup (UH point) where - (UH NonEmpty point -lh) <> :: UH point -> UH point -> UH point -<> (UH NonEmpty point -rh) = NonEmpty point -> UH point +instance ( Point_ point 2 r, Num r, Ord r) => Semigroup (UH point) where + (UH NonEmpty point +lh) <> :: UH point -> UH point -> UH point +<> (UH NonEmpty point +rh) = NonEmpty point -> UH point forall point. NonEmpty point -> UH point UH (NonEmpty point -> UH point) -> NonEmpty point -> UH point forall a b. (a -> b) -> a -> b @@ -277,30 +277,30 @@ (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point]) upperTangent' NonEmpty point -lh NonEmpty point -rh +lh NonEmpty point +rh ---------------------------------------- -- | The function that does the actual merging part -hull :: (NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point])) - -> NonEmpty point -> NonEmpty point -> NonEmpty point +hull :: (NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point])) + -> NonEmpty point -> NonEmpty point -> NonEmpty point hull :: forall point. (NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point])) -> NonEmpty point -> NonEmpty point -> NonEmpty point -hull NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) -tangent NonEmpty point -lh NonEmpty point -rh = let Vector2 (point -l :+ [point] -lh') (point -r :+ [point] -rh') = NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) -tangent (NonEmpty point -> NonEmpty point +hull NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) +tangent NonEmpty point +lh NonEmpty point +rh = let Vector2 (point +l :+ [point] +lh') (point +r :+ [point] +rh') = NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) +tangent (NonEmpty point -> NonEmpty point forall a. NonEmpty a -> NonEmpty a NonEmpty.reverse NonEmpty point -lh) NonEmpty point -rh +lh) NonEmpty point +rh in [point] -> NonEmpty point forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList ([point] -> NonEmpty point) -> [point] -> NonEmpty point @@ -308,34 +308,34 @@ $ [point] -> [point] forall a. [a] -> [a] reverse [point] -lh' [point] -> [point] -> [point] +lh' [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> [point -l,point -r] [point] -> [point] -> [point] +l,point +r] [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> [point] -rh' +rh' -------------------------------------------------------------------------------- -incXdecY :: (Ord r, Point_ point 2 r) => point -> point -> Ordering +incXdecY :: (Ord r, Point_ point 2 r) => point -> point -> Ordering incXdecY :: forall r point. (Ord r, Point_ point 2 r) => point -> point -> Ordering -incXdecY (Point2_ r -px r -py) (Point2_ r -qx r -qy) = r -> r -> Ordering +incXdecY (Point2_ r +px r +py) (Point2_ r +qx r +qy) = r -> r -> Ordering forall a. Ord a => a -> a -> Ordering compare r -px r -qx Ordering -> Ordering -> Ordering +px r +qx Ordering -> Ordering -> Ordering forall a. Semigroup a => a -> a -> a <> r -> r -> Ordering forall a. Ord a => a -> a -> Ordering compare r -qy r -py +qy r +py \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.ConvexHull.GrahamScan.html b/haddocks/hgeometry/src/HGeometry.ConvexHull.GrahamScan.html index 76b06b395..eed0273ce 100644 --- a/haddocks/hgeometry/src/HGeometry.ConvexHull.GrahamScan.html +++ b/haddocks/hgeometry/src/HGeometry.ConvexHull.GrahamScan.html @@ -29,14 +29,14 @@ -- | \(O(n \log n)\) time ConvexHull using Graham-Scan. -- -- pre: input contains at least three points -convexHull :: (Ord r, Num r, Point_ point 2 r) - => NonEmpty point -> ConvexPolygon point +convexHull :: (Ord r, Num r, Point_ point 2 r) + => NonEmpty point -> ConvexPolygon point convexHull :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point -convexHull NonEmpty point -ps = let ps' :: [point] -ps' = Vector point -> [point] +convexHull NonEmpty point +ps = let ps' :: [point] +ps' = Vector point -> [point] forall a. Vector a -> [a] Vector.toList (Vector point -> [point]) -> (NonEmpty point -> Vector point) -> NonEmpty point -> [point] @@ -52,9 +52,9 @@ incXdecY (NonEmpty point -> [point]) -> NonEmpty point -> [point] forall a b. (a -> b) -> a -> b $ NonEmpty point -ps - uh :: [point] -uh = NonEmpty point -> [point] +ps + uh :: [point] +uh = NonEmpty point -> [point] forall a. NonEmpty a -> [a] NonEmpty.tail (NonEmpty point -> [point]) -> ([point] -> NonEmpty point) -> [point] -> [point] @@ -66,9 +66,9 @@ hull' ([point] -> [point]) -> [point] -> [point] forall a b. (a -> b) -> a -> b $ [point] -ps' - lh :: [point] -lh = NonEmpty point -> [point] +ps' + lh :: [point] +lh = NonEmpty point -> [point] forall a. NonEmpty a -> [a] NonEmpty.tail (NonEmpty point -> [point]) -> ([point] -> NonEmpty point) -> [point] -> [point] @@ -82,7 +82,7 @@ $ [point] -> [point] forall a. [a] -> [a] reverse [point] -ps' +ps' in NonEmpty point -> ConvexPolygon point forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => @@ -96,10 +96,10 @@ NonEmpty.fromList ([point] -> ConvexPolygon point) -> [point] -> ConvexPolygon point forall a b. (a -> b) -> a -> b $ [point] -lh [point] -> [point] -> [point] +lh [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> [point] -uh +uh
-- | Computes the upper hull. The upper hull is given from left to right. -- @@ -111,7 +111,7 @@ -- vertical. Use 'upperHull'' if such an edge should not be reported. -- -- running time: \(O(n\log n)\) -upperHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +upperHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point upperHull :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -135,8 +135,8 @@ -- -- The upper hull is given from left to right -- -upperHull' :: (Ord r, Num r, Point_ point 2 r, Foldable1 f - ) => f point -> NonEmpty point +upperHull' :: (Ord r, Num r, Point_ point 2 r, Foldable1 f + ) => f point -> NonEmpty point upperHull' :: forall r point (f :: * -> *). (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> NonEmpty point @@ -171,21 +171,21 @@ -- -- Tests if the first two points are on a vertical line, if so removes -- the first point. -dropVertical :: (Eq r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +dropVertical :: (Eq r, Point_ point 2 r) => NonEmpty point -> NonEmpty point dropVertical :: forall r point. (Eq r, Point_ point 2 r) => NonEmpty point -> NonEmpty point dropVertical = \case - h :: NonEmpty point -h@(point + h :: NonEmpty point +h@(point _ :| []) -> NonEmpty point -h - h :: NonEmpty point -h@(point -p :| (point -q : [point] -rest)) | point -ppoint -> Getting r point r -> r +h + h :: NonEmpty point +h@(point +p :| (point +q : [point] +rest)) | point +ppoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -195,7 +195,7 @@ xCoord r -> r -> Bool forall a. Eq a => a -> a -> Bool == point -qpoint -> Getting r point r -> r +qpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -203,13 +203,13 @@ IndexedLens' Int point r IndexedLens' Int point r xCoord -> point -q point -> [point] -> NonEmpty point +q point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :| [point] -rest +rest | Bool otherwise -> NonEmpty point -h +h --{-# INLINABLE dropVertical #-} -- | Computes the upper hull. The upper hull is given from left to right. @@ -222,7 +222,7 @@ -- vertical. Use 'lowerHull'' if such an edge should not be reported. -- -- running time: \(O(n\log n)\) -lowerHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +lowerHull :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point lowerHull :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -238,7 +238,7 @@ -- | Computes the lower hull, making sure there are no vertical -- segments. (Note that the only such segment could be the first -- segment). -lowerHull' :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> NonEmpty point +lowerHull' :: (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> NonEmpty point lowerHull' :: forall r point (f :: * -> *). (Ord r, Num r, Point_ point 2 r, Foldable1 f) => f point -> NonEmpty point @@ -266,20 +266,20 @@ -- | Helper function so that that can compute both the upper or the lower hull, depending -- on the function f -hull :: (Ord r, Num r, Point_ point 2 r) - => ([point] -> [point]) - -> NonEmpty point -> NonEmpty point +hull :: (Ord r, Num r, Point_ point 2 r) + => ([point] -> [point]) + -> NonEmpty point -> NonEmpty point hull :: forall r point. (Ord r, Num r, Point_ point 2 r) => ([point] -> [point]) -> NonEmpty point -> NonEmpty point hull [point] -> [point] -_ h :: NonEmpty point -h@(point +_ h :: NonEmpty point +h@(point _ :| []) = NonEmpty point -h -hull [point] -> [point] -f NonEmpty point -pts = [point] -> NonEmpty point +h +hull [point] -> [point] +f NonEmpty point +pts = [point] -> NonEmpty point forall r point. (Ord r, Num r, Point_ point 2 r) => [point] -> NonEmpty point @@ -287,7 +287,7 @@ -> (NonEmpty point -> [point]) -> NonEmpty point -> NonEmpty point forall b c a. (b -> c) -> (a -> b) -> a -> c . [point] -> [point] -f +f ([point] -> [point]) -> (NonEmpty point -> [point]) -> NonEmpty point -> [point] forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -308,28 +308,28 @@ -> NonEmpty point -> NonEmpty point forall a b. (a -> b) -> a -> b $ NonEmpty point -pts +pts --{-# INLINABLE hull #-} -incXdecY :: (Ord r, Point_ point 2 r) => point -> point -> Ordering +incXdecY :: (Ord r, Point_ point 2 r) => point -> point -> Ordering incXdecY :: forall r point. (Ord r, Point_ point 2 r) => point -> point -> Ordering -incXdecY (Point2_ r -px r -py) (Point2_ r -qx r -qy) = r -> r -> Ordering +incXdecY (Point2_ r +px r +py) (Point2_ r +qx r +qy) = r -> r -> Ordering forall a. Ord a => a -> a -> Ordering compare r -px r -qx Ordering -> Ordering -> Ordering +px r +qx Ordering -> Ordering -> Ordering forall a. Semigroup a => a -> a -> a <> r -> r -> Ordering forall a. Ord a => a -> a -> Ordering compare r -qy r -py +qy r +py -- note that we flipped the order of qy and py -- | Given a sequence of points that is sorted on increasing @@ -345,17 +345,17 @@ -- returned *from right to left* !!! -- -- running time: \(O(n)\). -upperHullFromSorted :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +upperHullFromSorted :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point upperHullFromSorted :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point upperHullFromSorted = \case - h :: NonEmpty point -h@(point + h :: NonEmpty point +h@(point _ :| []) -> NonEmpty point -h - NonEmpty point -pts -> [point] -> NonEmpty point +h + NonEmpty point +pts -> [point] -> NonEmpty point forall r point. (Ord r, Num r, Point_ point 2 r) => [point] -> NonEmpty point @@ -364,7 +364,7 @@ $ NonEmpty point -> [point] forall a. NonEmpty a -> [a] NonEmpty.toList NonEmpty point -pts +pts --{-# INLINABLE upperHullFromSorted #-} @@ -372,7 +372,7 @@ -- -- -- running time: \(O(n)\). -upperHullFromSorted' :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +upperHullFromSorted' :: (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point upperHullFromSorted' :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -394,14 +394,14 @@ -- | Precondition: The list of input points is sorted -hull' :: (Ord r, Num r, Point_ point 2 r) => [point] -> NonEmpty point +hull' :: (Ord r, Num r, Point_ point 2 r) => [point] -> NonEmpty point hull' :: forall r point. (Ord r, Num r, Point_ point 2 r) => [point] -> NonEmpty point -hull' (point -a:point -b:[point] -ps) = [point] -> NonEmpty point +hull' (point +a:point +b:[point] +ps) = [point] -> NonEmpty point forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList ([point] -> NonEmpty point) -> [point] -> NonEmpty point forall a b. (a -> b) -> a -> b @@ -410,63 +410,63 @@ (Dimension a ~ 2, Ord (NumType a), Num (NumType a), Point_ a 2 (NumType a)) => [a] -> [a] -> [a] -hull'' [point -b,point -a] [point] -ps +hull'' [point +b,point +a] [point] +ps where - hull'' :: [a] -> [a] -> [a] -hull'' [a] -h [] = [a] -h - hull'' [a] -h (a -p:[a] -ps') = [a] -> [a] -> [a] -hull'' ([a] -> [a] + hull'' :: [a] -> [a] -> [a] +hull'' [a] +h [] = [a] +h + hull'' [a] +h (a +p:[a] +ps') = [a] -> [a] -> [a] +hull'' ([a] -> [a] forall {a}. (Dimension a ~ 2, Ord (NumType a), Num (NumType a), Point_ a 2 (NumType a)) => [a] -> [a] -cleanMiddle (a -pa -> [a] -> [a] +cleanMiddle (a +pa -> [a] -> [a] forall a. a -> [a] -> [a] :[a] -h)) [a] -ps' +h)) [a] +ps' - cleanMiddle :: [a] -> [a] -cleanMiddle h :: [a] -h@[a + cleanMiddle :: [a] -> [a] +cleanMiddle h :: [a] +h@[a _,a _] = [a] -h - cleanMiddle h :: [a] -h@(a -z:a -y:a -x:[a] -rest) +h + cleanMiddle h :: [a] +h@(a +z:a +y:a +x:[a] +rest) | a -> a -> a -> Bool forall r point. (Ord r, Num r, Point_ point 2 r) => point -> point -> point -> Bool rightTurn a -x a -y a -z = [a] -h +x a +y a +z = [a] +h | Bool otherwise = [a] -> [a] -cleanMiddle (a -za -> [a] -> [a] +cleanMiddle (a +za -> [a] -> [a] forall a. a -> [a] -> [a] :a -xa -> [a] -> [a] +xa -> [a] -> [a] forall a. a -> [a] -> [a] :[a] -rest) - cleanMiddle [a] +rest) + cleanMiddle [a] _ = [Char] -> [a] forall a. HasCallStack => [Char] -> a error [Char] @@ -480,22 +480,22 @@ \two elements." --{-# INLINABLE hull' #-} -rightTurn :: (Ord r, Num r, Point_ point 2 r) => point -> point -> point -> Bool +rightTurn :: (Ord r, Num r, Point_ point 2 r) => point -> point -> point -> Bool rightTurn :: forall r point. (Ord r, Num r, Point_ point 2 r) => point -> point -> point -> Bool -rightTurn point -a point -b point -c = point -> point -> point -> CCW +rightTurn point +a point +b point +c = point -> point -> point -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw point -a point -b point -c CCW -> CCW -> Bool +a point +b point +c CCW -> CCW -> Bool forall a. Eq a => a -> a -> Bool == CCW CW diff --git a/haddocks/hgeometry/src/HGeometry.ConvexHull.JarvisMarch.html b/haddocks/hgeometry/src/HGeometry.ConvexHull.JarvisMarch.html index 3b09c7fac..eed9c5af3 100644 --- a/haddocks/hgeometry/src/HGeometry.ConvexHull.JarvisMarch.html +++ b/haddocks/hgeometry/src/HGeometry.ConvexHull.JarvisMarch.html @@ -32,38 +32,38 @@ -- -- running time: \(O(nh)\), where \(n\) is the number of input points -- and \(h\) is the complexity of the hull. -convexHull :: (Ord r, Num r, Point_ point 2 r) - => NonEmpty point -> ConvexPolygon point +convexHull :: (Ord r, Num r, Point_ point 2 r) + => NonEmpty point -> ConvexPolygon point convexHull :: forall r point. (Ord r, Num r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point -convexHull NonEmpty point -pts = NonEmpty (Vertex (ConvexPolygon point)) +convexHull NonEmpty point +pts = NonEmpty (Vertex (ConvexPolygon point)) -> NonEmpty (Vertex (ConvexPolygon point)) -> ConvexPolygon point forall {c}. (NumType (Vertex c) ~ NumType c, Dimension (Vertex c) ~ 2, SimplePolygon_ c (Vertex c) (NumType c)) => NonEmpty (Vertex c) -> NonEmpty (Vertex c) -> c -combine (NonEmpty point -> NonEmpty point +combine (NonEmpty point -> NonEmpty point forall r point. (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point upperHull NonEmpty point -pts) (NonEmpty point -> NonEmpty point +pts) (NonEmpty point -> NonEmpty point forall r point. (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point lowerHull NonEmpty point -pts) +pts
) where - combine :: NonEmpty (Vertex c) -> NonEmpty (Vertex c) -> c -combine (NonEmpty (Vertex c) -> NonEmpty (Vertex c) + combine :: NonEmpty (Vertex c) -> NonEmpty (Vertex c) -> c +combine (NonEmpty (Vertex c) -> NonEmpty (Vertex c) forall a. NonEmpty a -> NonEmpty a NonEmpty.reverse -> Vertex c -_:|[Vertex c] -uh) (Vertex c -_:|[Vertex c] -lh) = +_:|[Vertex c] +uh) (Vertex c +_:|[Vertex c] +lh) = NonEmpty (Vertex c) -> c forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => @@ -77,10 +77,10 @@ NonEmpty.fromList ([Vertex c] -> c) -> [Vertex c] -> c forall a b. (a -> b) -> a -> b $ [Vertex c] -lh [Vertex c] -> [Vertex c] -> [Vertex c] +lh [Vertex c] -> [Vertex c] -> [Vertex c] forall a. Semigroup a => a -> a -> a <> [Vertex c] -uh +uh
-- where -- SP p@(c :+ _) pts = minViewBy incXdecY ps -- takeWhile' pf (x :| xs) = x : takeWhile pf xs @@ -88,12 +88,12 @@ -- | Computes the upper hull. The points are reported in left-to-right order. -- -- running time: \(O(nh)\), where \(h\) is the complexity of the upper hull. -upperHull :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +upperHull :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point upperHull :: forall r point. (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point -upperHull NonEmpty point -pts = (point -> point -> Ordering) +upperHull
NonEmpty point +pts = (point -> point -> Ordering) -> (point -> NonEmpty point -> point) -> point -> [point] @@ -102,45 +102,45 @@ (a -> a -> Ordering) -> (a -> NonEmpty a -> a) -> a -> [a] -> NonEmpty a repeatedly point -> point -> Ordering -cmp point -> NonEmpty point -> point +cmp point -> NonEmpty point -> point forall r point. (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point steepestCwFrom point -s [point] -rest +s
[point] +rest where - (point -s:|[point] -_ :+ [point] -rest) = (point -> point -> Ordering) + (point +s:|[point] +_ :+ [point] +rest) = (point -> point -> Ordering) -> NonEmpty point -> NonEmpty point :+ [point] forall a. (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a :+ [a] extractMinimaBy point -> point -> Ordering -cmp NonEmpty point -pts - cmp :: point -> point -> Ordering -cmp = (point -> (NumType point, Down (NumType point))) +cmp NonEmpty point +pts + cmp :: point -> point -> Ordering +cmp = (point -> (NumType point, Down (NumType point))) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering -comparing (\(Point2_ NumType point -x NumType point -y) -> (NumType point -x, NumType point -> Down (NumType point) +comparing (\(Point2_ NumType point +x NumType point +y) -> (NumType point +x, NumType point -> Down (NumType point) forall a. a -> Down a Down NumType point -y)) +y)) -- start from the topmost point that has minimum x-coord -- also use cmp as the comparator, so that we also select the last -- vertical segment. -- | Upepr hull from left to right, without any vertical segments. -upperHull' :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +upperHull' :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point upperHull' :: forall r point. (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point -upperHull' NonEmpty point -pts = NonEmpty point -> NonEmpty point +upperHull'
NonEmpty point +pts = NonEmpty point -> NonEmpty point forall r point. (Eq r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -156,37 +156,37 @@ (a -> a -> Ordering) -> (a -> NonEmpty a -> a) -> a -> [a] -> NonEmpty a repeatedly point -> point -> Ordering -cmp point -> NonEmpty point -> point +cmp point -> NonEmpty point -> point forall r point. (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point steepestCwFrom point -s [point] -rest +s
[point] +rest where - (point -s:|[point] -_ :+ [point] -rest) = (point -> point -> Ordering) + (point +s:|[point] +_ :+ [point] +rest) = (point -> point -> Ordering) -> NonEmpty point -> NonEmpty point :+ [point] forall a. (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a :+ [a] extractMinimaBy point -> point -> Ordering -cmp0 NonEmpty point -pts - cmp0 :: point -> point -> Ordering -cmp0 = (point -> (NumType point, Down (NumType point))) +cmp0 NonEmpty point +pts + cmp0 :: point -> point -> Ordering +cmp0 = (point -> (NumType point, Down (NumType point))) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering -comparing (\(Point2_ NumType point -x NumType point -y) -> (NumType point -x, NumType point -> Down (NumType point) +comparing (\(Point2_ NumType point +x NumType point +y) -> (NumType point +x, NumType point -> Down (NumType point) forall a. a -> Down a Down NumType point -y)) +y)) -- start from the topmost point that has minimum x-coord - cmp :: point -> point -> Ordering -cmp = (point -> Point (Dimension point) (NumType point)) + cmp :: point -> point -> Ordering +cmp = (point -> Point (Dimension point) (NumType point)) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing (Getting @@ -212,12 +212,12 @@ -- segments at the start. -- -- running time: \(O(nh)\), where \(h\) is the complexity of the hull. -lowerHull :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +lowerHull :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point lowerHull :: forall r point. (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point -lowerHull NonEmpty point -pts = NonEmpty point -> NonEmpty point +lowerHull NonEmpty point +pts = NonEmpty point -> NonEmpty point forall r point. (Eq r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -233,37 +233,37 @@ (a -> a -> Ordering) -> (a -> NonEmpty a -> a) -> a -> [a] -> NonEmpty a repeatedly point -> point -> Ordering -cmp point -> NonEmpty point -> point +cmp point -> NonEmpty point -> point forall r point. (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point steepestCcwFrom point -s [point] -rest +s [point] +rest where - (point -s:|[point] -_ :+ [point] -rest) = (point -> point -> Ordering) + (point +s:|[point] +_ :+ [point] +rest) = (point -> point -> Ordering) -> NonEmpty point -> NonEmpty point :+ [point] forall a. (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a :+ [a] extractMinimaBy point -> point -> Ordering -cmp0 NonEmpty point -pts - cmp0 :: point -> point -> Ordering -cmp0 = (point -> (NumType point, Down (NumType point))) +cmp0 NonEmpty point +pts + cmp0 :: point -> point -> Ordering +cmp0 = (point -> (NumType point, Down (NumType point))) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering -comparing (\(Point2_ NumType point -x NumType point -y) -> (NumType point -x, NumType point -> Down (NumType point) +comparing (\(Point2_ NumType point +x NumType point +y) -> (NumType point +x, NumType point -> Down (NumType point) forall a. a -> Down a Down NumType point -y)) +y)) -- start from the topmost point that has minimum x-coord - cmp :: point -> point -> Ordering -cmp = (point -> Point (Dimension point) (NumType point)) + cmp :: point -> point -> Ordering +cmp = (point -> Point (Dimension point) (NumType point)) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing (Getting @@ -288,12 +288,12 @@ -- -- -- running time: \(O(nh)\), where \(h\) is the complexity of the hull. -lowerHull' :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +lowerHull' :: (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point lowerHull' :: forall r point. (Num r, Ord r, Point_ point 2 r) => NonEmpty point -> NonEmpty point -lowerHull' NonEmpty point -pts = NonEmpty point -> NonEmpty point +lowerHull' NonEmpty point +pts = NonEmpty point -> NonEmpty point forall r point. (Eq r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -309,25 +309,25 @@ (a -> a -> Ordering) -> (a -> NonEmpty a -> a) -> a -> [a] -> NonEmpty a repeatedly point -> point -> Ordering -cmp point -> NonEmpty point -> point +cmp point -> NonEmpty point -> point forall r point. (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point steepestCcwFrom point -s [point] -rest +s [point] +rest where - (point -s:|[point] -_ :+ [point] -rest) = (point -> point -> Ordering) + (point +s:|[point] +_ :+ [point] +rest) = (point -> point -> Ordering) -> NonEmpty point -> NonEmpty point :+ [point] forall a. (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a :+ [a] extractMinimaBy point -> point -> Ordering -cmp NonEmpty point -pts - cmp :: point -> point -> Ordering -cmp = (point -> Point (Dimension point) (NumType point)) +cmp NonEmpty point +pts + cmp :: point -> point -> Ordering +cmp = (point -> Point (Dimension point) (NumType point)) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing (Getting @@ -349,13 +349,13 @@ -- | Find the next point in counter clockwise order, i.e. the point -- with minimum slope w.r.t. the given point. -steepestCcwFrom :: (Ord r, Num r, Point_ point 2 r) - => point -> NonEmpty point -> point +steepestCcwFrom :: (Ord r, Num r, Point_ point 2 r) + => point -> NonEmpty point -> point steepestCcwFrom :: forall r point. (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point -steepestCcwFrom point -p = (point -> point -> Ordering) -> NonEmpty point -> point +steepestCcwFrom point +p = (point -> point -> Ordering) -> NonEmpty point -> point forall (t :: * -> *) a. Foldable t => (a -> a -> Ordering) -> t a -> a @@ -368,17 +368,17 @@ Vector2 r 0 (-r 1)) point -p) +p) -- | Find the next point in clockwise order, i.e. the point -- with maximum slope w.r.t. the given point. -steepestCwFrom :: (Ord r, Num r, Point_ point 2 r) - => point -> NonEmpty point -> point +steepestCwFrom :: (Ord r, Num r, Point_ point 2 r) + => point -> NonEmpty point -> point steepestCwFrom :: forall r point. (Ord r, Num r, Point_ point 2 r) => point -> NonEmpty point -> point -steepestCwFrom point -p = (point -> point -> Ordering) -> NonEmpty point -> point +steepestCwFrom
point +p = (point -> point -> Ordering) -> NonEmpty point -> point forall (t :: * -> *) a. Foldable t => (a -> a -> Ordering) -> t a -> a @@ -391,55 +391,55 @@ Vector2 r 0 r 1) point -p) +p
) -repeatedly :: (a -> a -> Ordering) -> (a -> NonEmpty a -> a) -> a -> [a] -> NonEmpty a +repeatedly :: (a -> a -> Ordering) -> (a -> NonEmpty a -> a) -> a -> [a] -> NonEmpty a repeatedly :: forall a. (a -> a -> Ordering) -> (a -> NonEmpty a -> a) -> a -> [a] -> NonEmpty a -repeatedly a -> a -> Ordering -cmp a -> NonEmpty a -> a -f = a -> [a] -> NonEmpty a -go +repeatedly
a -> a -> Ordering +cmp a -> NonEmpty a -> a +f = a -> [a] -> NonEmpty a +go where - go :: a -> [a] -> NonEmpty a -go a -m [a] -xs' = case [a] -> Maybe (NonEmpty a) + go :: a -> [a] -> NonEmpty a +go a +m [a] +xs' = case [a] -> Maybe (NonEmpty a) forall a. [a] -> Maybe (NonEmpty a) NonEmpty.nonEmpty [a] -xs' of +xs' of Maybe (NonEmpty a) Nothing -> a -m a -> [a] -> NonEmpty a +m a -> [a] -> NonEmpty a forall a. a -> [a] -> NonEmpty a :| [] - Just NonEmpty a -xs -> let p :: a -p = a -> NonEmpty a -> a -f a -m NonEmpty a -xs + Just NonEmpty a +xs -> let p :: a +p = a -> NonEmpty a -> a +f a +m NonEmpty a +xs in a -m a -> NonEmpty a -> NonEmpty a +m a -> NonEmpty a -> NonEmpty a forall a. a -> NonEmpty a -> NonEmpty a <| a -> [a] -> NonEmpty a -go a -p ((a -> Bool) -> NonEmpty a -> [a] +go a +p ((a -> Bool) -> NonEmpty a -> [a] forall a. (a -> Bool) -> NonEmpty a -> [a] -NonEmpty.filter (\a -x -> a -p a -> a -> Ordering -`cmp` a -x Ordering -> Ordering -> Bool +NonEmpty.filter (\a +x -> a +p a -> a -> Ordering +`cmp` a +x Ordering -> Ordering -> Bool forall a. Eq a => a -> a -> Bool == Ordering LT) NonEmpty a -xs) +xs
) -- | Removes the topmost vertical points, if they exist -pruneVertical :: (Eq r, Point_ point 2 r) => NonEmpty point -> NonEmpty point +pruneVertical :: (Eq r, Point_ point 2 r) => NonEmpty point -> NonEmpty point pruneVertical :: forall r point. (Eq r, Point_ point 2 r) => NonEmpty point -> NonEmpty point @@ -477,26 +477,26 @@ a -> Either (NonEmpty a) (NonEmpty a) -> Either (NonEmpty a) (NonEmpty a) -f (\point -q -> NonEmpty point -> Either (NonEmpty point) (NonEmpty point) +f (\point +q -> NonEmpty point -> Either (NonEmpty point) (NonEmpty point) forall a b. a -> Either a b Left (NonEmpty point -> Either (NonEmpty point) (NonEmpty point)) -> NonEmpty point -> Either (NonEmpty point) (NonEmpty point) forall a b. (a -> b) -> a -> b $ point -qpoint -> [point] -> NonEmpty point +qpoint -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :|[]) where - f :: a + f :: a -> Either (NonEmpty a) (NonEmpty a) -> Either (NonEmpty a) (NonEmpty a) -f a -p = \case - Left (a -q:|[a] -qs) | a -pa -> Getting (NumType a) a (NumType a) -> NumType a +f a +p = \case + Left (a +q:|[a] +qs) | a +pa -> Getting (NumType a) a (NumType a) -> NumType a forall s a. s -> Getting a s a -> a ^.Getting (NumType a) a (NumType a) forall (d :: Nat) point r. @@ -506,7 +506,7 @@ xCoord NumType a -> NumType a -> Bool forall a. Eq a => a -> a -> Bool == a -qa -> Getting (NumType a) a (NumType a) -> NumType a +qa -> Getting (NumType a) a (NumType a) -> NumType a forall s a. s -> Getting a s a -> a ^.Getting (NumType a) a (NumType a) forall (d :: Nat) point r. @@ -516,61 +516,61 @@ xCoord -> NonEmpty a -> Either (NonEmpty a) (NonEmpty a) forall a b. a -> Either a b Left (a -p a -> [a] -> NonEmpty a +p a -> [a] -> NonEmpty a forall a. a -> [a] -> NonEmpty a :| [a] -qs) +qs) | Bool otherwise -> NonEmpty a -> Either (NonEmpty a) (NonEmpty a) forall a b. b -> Either a b Right (a -p a -> [a] -> NonEmpty a +p a -> [a] -> NonEmpty a forall a. a -> [a] -> NonEmpty a :| a -qa -> [a] -> [a] +qa -> [a] -> [a] forall a. a -> [a] -> [a] :[a] -qs) - Right NonEmpty a -pts -> NonEmpty a -> Either (NonEmpty a) (NonEmpty a) +qs) + Right NonEmpty a +pts -> NonEmpty a -> Either (NonEmpty a) (NonEmpty a) forall a b. b -> Either a b Right (a -p a -> NonEmpty a -> NonEmpty a +p a -> NonEmpty a -> NonEmpty a forall a. a -> NonEmpty a -> NonEmpty a <| NonEmpty a -pts) +pts) -- | Foldr, but start by applying some function on the rightmost -- element to get the starting value. -foldr1With :: Foldable1 f => (a -> b -> b) -> (a -> b) -> f a -> b +foldr1With :: Foldable1 f => (a -> b -> b) -> (a -> b) -> f a -> b foldr1With :: forall (f :: * -> *) a b. Foldable1 f => (a -> b -> b) -> (a -> b) -> f a -> b -foldr1With a -> b -> b -f a -> b -b = NonEmpty a -> b -go (NonEmpty a -> b) -> (f a -> NonEmpty a) -> f a -> b +foldr1With
a -> b -> b +f a -> b +b = NonEmpty a -> b +go (NonEmpty a -> b) -> (f a -> NonEmpty a) -> f a -> b forall b c a. (b -> c) -> (a -> b) -> a -> c . f a -> NonEmpty a forall a. f a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty where - go :: NonEmpty a -> b -go (a -x :| [a] -xs) = case [a] -> Maybe (NonEmpty a) + go :: NonEmpty a -> b +go (a +x :| [a] +xs) = case [a] -> Maybe (NonEmpty a) forall a. [a] -> Maybe (NonEmpty a) NonEmpty.nonEmpty [a] -xs of +xs of Maybe (NonEmpty a) Nothing -> a -> b -b a -x - Just NonEmpty a -xs' -> a -x a -> b -> b -`f` NonEmpty a -> b -go NonEmpty a -xs' +b
a +x + Just NonEmpty a +xs' -> a +x a -> b -> b +`f` NonEmpty a -> b +go NonEmpty a +xs' \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.ConvexHull.Melkman.html b/haddocks/hgeometry/src/HGeometry.ConvexHull.Melkman.html index d54ef85f5..d39fb2392 100644 --- a/haddocks/hgeometry/src/HGeometry.ConvexHull.Melkman.html +++ b/haddocks/hgeometry/src/HGeometry.ConvexHull.Melkman.html @@ -29,14 +29,14 @@
-------------------------------------------------------------------------------- -type M s v a = StateT (Mut.MVector s v, Int) (ST s) a +type M s v a = StateT (Mut.MVector s v, Int) (ST s) a -runM :: Int -> M s v () -> ST s (Mut.MVector s v) +runM :: Int -> M s v () -> ST s (Mut.MVector s v) runM :: forall s v. Int -> M s v () -> ST s (MVector s v) -runM Int -s M s v () -action = do - v <- Int -> ST s (MVector (PrimState (ST s)) v) +runM
Int +s M s v () +action = do + v <- Int -> ST s (MVector (PrimState (ST s)) v) forall (m :: * -> *) a. PrimMonad m => Int -> m (MVector (PrimState m) a) @@ -44,11 +44,11 @@ 2Int -> Int -> Int forall a. Num a => a -> a -> a *Int -s) - (v', f) <- execStateT action (Mut.drop s v, 0) - return $ Mut.tail $ Mut.take f v' +s
) + (v', f) <- execStateT action (Mut.drop s v, 0) + return $ Mut.tail $ Mut.take f v' -dequeRemove :: M s a () +dequeRemove :: M s a () dequeRemove :: forall s a. M s a () dequeRemove = do ((MVector s a, Int) -> (MVector s a, Int)) @@ -59,31 +59,31 @@ -> ((MVector s a, Int) -> (MVector s a, Int)) -> StateT (MVector s a, Int) (ST s) () forall a b. (a -> b) -> a -> b -$ \(Mut.MVector Int -offset Int -len MutableArray s a -arr, Int -f) -> (Int -> Int -> MutableArray s a -> MVector s a +$ \(Mut.MVector Int +offset Int +len MutableArray s a +arr, Int +f) -> (Int -> Int -> MutableArray s a -> MVector s a forall s a. Int -> Int -> MutableArray s a -> MVector s a Mut.MVector (Int -offsetInt -> Int -> Int +offsetInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) (Int -lenInt -> Int -> Int +lenInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) MutableArray s a -arr, Int -fInt -> Int -> Int +arr, Int +fInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) -dequeInsert :: a -> M s a () +dequeInsert :: a -> M s a () dequeInsert :: forall a s. a -> M s a () -dequeInsert a -a = do +dequeInsert
a +a = do ((MVector s a, Int) -> (MVector s a, Int)) -> StateT (MVector s a, Int) (ST s) () forall s (m :: * -> *). MonadState s m => (s -> s) -> m () @@ -92,42 +92,42 @@ -> ((MVector s a, Int) -> (MVector s a, Int)) -> StateT (MVector s a, Int) (ST s) () forall a b. (a -> b) -> a -> b -$ \(Mut.MVector Int -offset Int -len MutableArray s a -arr, Int -f) -> (Int -> Int -> MutableArray s a -> MVector s a +$ \(Mut.MVector Int +offset Int +len MutableArray s a +arr, Int +f) -> (Int -> Int -> MutableArray s a -> MVector s a forall s a. Int -> Int -> MutableArray s a -> MVector s a Mut.MVector (Int -offsetInt -> Int -> Int +offsetInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) (Int -lenInt -> Int -> Int +lenInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) MutableArray s a -arr, Int -fInt -> Int -> Int +arr, Int +fInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) - (v,_) <- StateT (MVector s a, Int) (ST s) (MVector s a, Int) + (v,_) <- StateT (MVector s a, Int) (ST s) (MVector s a, Int) forall s (m :: * -> *). MonadState s m => m s get - Mut.write v 0 a + Mut.write v 0 a -dequePush :: a -> M s a () +dequePush :: a -> M s a () dequePush :: forall a s. a -> M s a () -dequePush a -a = do - (v, f) <- StateT (MVector s a, Int) (ST s) (MVector s a, Int) +dequePush a +a = do + (v, f) <- StateT (MVector s a, Int) (ST s) (MVector s a, Int) forall s (m :: * -> *). MonadState s m => m s get - Mut.write v f a - put (v,f+1) + Mut.write v f a + put (v,f+1) -dequePop :: M s a () +dequePop :: M s a () dequePop :: forall s a. M s a () dequePop = do ((MVector s a, Int) -> (MVector s a, Int)) @@ -138,45 +138,45 @@ -> ((MVector s a, Int) -> (MVector s a, Int)) -> StateT (MVector s a, Int) (ST s) () forall a b. (a -> b) -> a -> b -$ \(MVector s a -v,Int -f) -> (MVector s a -v,Int -fInt -> Int -> Int +$ \(MVector s a +v,Int +f) -> (MVector s a +v,Int +fInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) -dequeBottom :: Int -> M s a a +dequeBottom :: Int -> M s a a dequeBottom :: forall s a. Int -> M s a a -dequeBottom Int -idx = do - (v,_) <- StateT (MVector s a, Int) (ST s) (MVector s a, Int) +dequeBottom
Int +idx = do + (v,_) <- StateT (MVector s a, Int) (ST s) (MVector s a, Int) forall s (m :: * -> *). MonadState s m => m s get - Mut.read v idx + Mut.read v idx -dequeTop :: Int -> M s a a +dequeTop :: Int -> M s a a dequeTop :: forall s a. Int -> M s a a -dequeTop Int -idx = do - (v,f) <- StateT (MVector s a, Int) (ST s) (MVector s a, Int) +dequeTop
Int +idx = do + (v,f) <- StateT (MVector s a, Int) (ST s) (MVector s a, Int) forall s (m :: * -> *). MonadState s m => m s get - Mut.read v (f-idx-1) + Mut.read v (f-idx-1) -- Melkman's algorithm: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.512.9681&rep=rep1&type=pdf -- | \( O(n) \) Convex hull of a simple polygon. -- -- For algorithmic details see: <https://en.wikipedia.org/wiki/Convex_hull_of_a_simple_polygon> -convexHull :: forall polygon point r. (Polygon_ polygon point r, Ord r, Num r) - => polygon -> ConvexPolygon point +convexHull :: forall polygon point r. (Polygon_ polygon point r, Ord r, Num r) + => polygon -> ConvexPolygon point convexHull :: forall polygon point r. (Polygon_ polygon point r, Ord r, Num r) => polygon -> ConvexPolygon point -convexHull polygon -pg = NonEmptyVector point -> ConvexPolygon point +convexHull
polygon +pg = NonEmptyVector point -> ConvexPolygon point forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => f point -> simplePolygon @@ -203,48 +203,48 @@ forall a. Vector a -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length Vector point -vs) (M s point () -> ST s (MVector s point)) +vs) (M s point () -> ST s (MVector s point)) -> M s point () -> ST s (MVector s point) forall a b. (a -> b) -> a -> b $ Int -> M s point () forall s. Int -> M s point () -findStartingPoint Int +findStartingPoint Int 2 where -- Find the first spot where 0,n-1,n is not colinear. - findStartingPoint :: Int -> M s point () - findStartingPoint :: forall s. Int -> M s point () -findStartingPoint Int -nth = do - let vPrev :: point -vPrev = Vector point -vs Vector point -> Int -> point + findStartingPoint :: Int -> M s point () + findStartingPoint :: forall s. Int -> M s point () +findStartingPoint Int +nth = do + let vPrev :: point +vPrev = Vector point +vs Vector point -> Int -> point forall a. Vector a -> Int -> a V.! (Int -nthInt -> Int -> Int +nthInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) - vNth :: point -vNth = Vector point -vs Vector point -> Int -> point + vNth :: point +vNth = Vector point +vs Vector point -> Int -> point forall a. Vector a -> Int -> a V.! Int -nth +nth case point -> point -> point -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw point -v1 point -vPrev point -vNth of +v1 point +vPrev point +vNth of CCW CoLinear -> Int -> M s point () forall s. Int -> M s point () -findStartingPoint (Int -nthInt -> Int -> Int +findStartingPoint (Int +nthInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) @@ -253,7 +253,7 @@ point -> M s point () forall a s. a -> M s a () dequePush point -v1 M s point () -> M s point () -> M s point () +v1 M s point () -> M s point () -> M s point () forall a b. StateT (MVector s point, Int) (ST s) a -> StateT (MVector s point, Int) (ST s) b @@ -262,14 +262,14 @@ >> point -> M s point () forall a s. a -> M s a () dequePush point -vPrev +vPrev
point -> M s point () forall a s. a -> M s a () dequePush point -vNth; point -> M s point () +vNth; point -> M s point () forall a s. a -> M s a () dequeInsert point -vNth +vNth
(point -> M s point ()) -> Vector point -> M s point () forall (m :: * -> *) a b. Monad m => (a -> m b) -> Vector a -> m () V.mapM_ point -> M s point () @@ -277,20 +277,20 @@ (Dimension t ~ 2, Point_ t 2 (NumType t), Num (NumType t), Ord (NumType t)) => t -> StateT (MVector s t, Int) (ST s) () -build (Int -> Vector point -> Vector point +build (Int -> Vector point -> Vector point forall a. Int -> Vector a -> Vector a V.drop (Int -nthInt -> Int -> Int +nthInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) Vector point -vs) +vs
) CCW CW -> do point -> M s point () forall a s. a -> M s a () dequePush point -vPrev M s point () -> M s point () -> M s point () +vPrev M s point () -> M s point () -> M s point () forall a b. StateT (MVector s point, Int) (ST s) a -> StateT (MVector s point, Int) (ST s) b @@ -299,14 +299,14 @@ >> point -> M s point () forall a s. a -> M s a () dequePush point -v1 +v1
point -> M s point () forall a s. a -> M s a () dequePush point -vNth; point -> M s point () +vNth; point -> M s point () forall a s. a -> M s a () dequeInsert point -vNth +vNth
(point -> M s point ()) -> Vector point -> M s point () forall (m :: * -> *) a b. Monad m => (a -> m b) -> Vector a -> m () V.mapM_ point -> M s point () @@ -314,28 +314,28 @@ (Dimension t ~ 2, Point_ t 2 (NumType t), Num (NumType t), Ord (NumType t)) => t -> StateT (MVector s t, Int) (ST s) () -build (Int -> Vector point -> Vector point +build (Int -> Vector point -> Vector point forall a. Int -> Vector a -> Vector a V.drop (Int -nthInt -> Int -> Int +nthInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) Vector point -vs) +vs) - v1 :: point -v1 = Vector point -vs Vector point -> Int -> point + v1 :: point +v1 = Vector point +vs Vector point -> Int -> point forall a. Vector a -> Int -> a V.! Int 0 - vs :: Vector point -vs = [point] -> Vector point + vs :: Vector point +vs = [point] -> Vector point forall a. [a] -> Vector a V.fromList ([point] -> Vector point) -> [point] -> Vector point forall a b. (a -> b) -> a -> b $ polygon -pgpolygon -> Getting (Endo [point]) polygon point -> [point] +pgpolygon -> Getting (Endo [point]) polygon point -> [point] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..Getting (Endo [point]) polygon point (Vertex polygon -> Const (Endo [point]) (Vertex polygon)) @@ -348,10 +348,10 @@ - build :: t -> StateT (MVector s t, Int) (ST s) () -build t -v = do - botTurn <- t -> t -> t -> CCW + build :: t -> StateT (MVector s t, Int) (ST s) () +build t +v = do + botTurn <- t -> t -> t -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => @@ -364,7 +364,7 @@ forall a. a -> StateT (MVector s t, Int) (ST s) a forall (f :: * -> *) a. Applicative f => a -> f a pure t -v StateT (MVector s t, Int) (ST s) (t -> t -> CCW) +v StateT (MVector s t, Int) (ST s) (t -> t -> CCW) -> StateT (MVector s t, Int) (ST s) t -> StateT (MVector s t, Int) (ST s) (t -> CCW) forall a b. @@ -387,14 +387,14 @@ forall s a. Int -> M s a a dequeBottom Int 1 - topTurn <- ccw <$> dequeTop 1 <*> dequeTop 0 <*> pure v - when (botTurn == CW || topTurn == CW) $ do - backtrackTop v; dequePush v - backtrackBot v; dequeInsert v - backtrackTop :: t -> StateT (MVector s a, Int) (ST s) () -backtrackTop t -v = do - turn <- a -> a -> t -> CCW + topTurn <- ccw <$> dequeTop 1 <*> dequeTop 0 <*> pure v + when (botTurn == CW || topTurn == CW) $ do + backtrackTop v; dequePush v + backtrackBot v; dequeInsert v + backtrackTop :: t -> StateT (MVector s a, Int) (ST s) () +backtrackTop t +v = do + turn <- a -> a -> t -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => @@ -429,14 +429,14 @@ forall a. a -> StateT (MVector s a, Int) (ST s) a forall (f :: * -> *) a. Applicative f => a -> f a pure t -v - unless (turn == CCW) $ do +v + unless (turn == CCW) $ do dequePop - backtrackTop v - backtrackBot :: t -> StateT (MVector s a, Int) (ST s) () -backtrackBot t -v = do - turn <- t -> a -> a -> CCW + backtrackTop v + backtrackBot :: t -> StateT (MVector s a, Int) (ST s) () +backtrackBot t +v = do + turn <- t -> a -> a -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => @@ -449,7 +449,7 @@ forall a. a -> StateT (MVector s a, Int) (ST s) a forall (f :: * -> *) a. Applicative f => a -> f a pure t -v StateT (MVector s a, Int) (ST s) (a -> a -> CCW) +v StateT (MVector s a, Int) (ST s) (a -> a -> CCW) -> StateT (MVector s a, Int) (ST s) a -> StateT (MVector s a, Int) (ST s) (a -> CCW) forall a b. @@ -472,7 +472,7 @@ forall s a. Int -> M s a a dequeBottom Int 1 - unless (turn == CCW) $ do + unless (turn == CCW) $ do dequeRemove - backtrackBot v + backtrackBot v \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.ConvexHull.QuickHull.html b/haddocks/hgeometry/src/HGeometry.ConvexHull.QuickHull.html index 8a1035f9f..7556e1804 100644 --- a/haddocks/hgeometry/src/HGeometry.ConvexHull.QuickHull.html +++ b/haddocks/hgeometry/src/HGeometry.ConvexHull.QuickHull.html @@ -28,13 +28,13 @@ -- pre: input contains at least three points -- -- running time: \(O(n^2)\) -convexHull :: (Ord r, Fractional r, Show r, Point_ point 2 r) - => NonEmpty point -> ConvexPolygon point +convexHull :: (Ord r, Fractional r, Show r, Point_ point 2 r) + => NonEmpty point -> ConvexPolygon point convexHull :: forall r point. (Ord r, Fractional r, Show r, Point_ point 2 r) => NonEmpty point -> ConvexPolygon point -convexHull NonEmpty point -ps = NonEmpty point -> ConvexPolygon point +convexHull NonEmpty point +ps = NonEmpty point -> ConvexPolygon point forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => f point -> simplePolygon @@ -44,19 +44,19 @@ -> NonEmpty point -> ConvexPolygon point forall a b. (a -> b) -> a -> b $ point -l point -> [point] -> NonEmpty point +l point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :| point -> point -> [point] -> [point] forall point r. (Fractional r, Ord r, Point_ point 2 r) => point -> point -> [point] -> [point] hull point -l point -r [point] -below' [point] -> [point] -> [point] +l point +r [point] +below' [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> [point -r] [point] -> [point] -> [point] +r] [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> [point] -> [point] forall a. [a] -> [a] @@ -65,40 +65,40 @@ (Fractional r, Ord r, Point_ point 2 r) => point -> point -> [point] -> [point] hull point -l point -r [point] -above) +l point +r [point] +above) where - Extremes point -l point -r [point] -mids = NonEmpty point -> Extremes point + Extremes point +l point +r [point] +mids = NonEmpty point -> Extremes point forall r point. (Ord r, Point_ point 2 r) => NonEmpty point -> Extremes point findExtremes NonEmpty point -ps - m :: LinePV 2 r -m = point -> point -> LinePV 2 r +ps + m :: LinePV 2 r +m = point -> point -> LinePV 2 r forall line point (d :: Nat) r. (Line_ line d r, Point_ point d r, Num r) => point -> point -> line lineThrough point -l point -r - ([point] -above,[point] -below') = (point -> Bool) -> [point] -> ([point], [point]) +l point +r + ([point] +above,[point] +below') = (point -> Bool) -> [point] -> ([point], [point]) forall a. (a -> Bool) -> [a] -> ([a], [a]) List.partition (point -> LinePV 2 r -> Bool forall r point. (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool `liesAbove` LinePV 2 r -m) [point] -mids +m) [point] +mids -data Extremes p = Extremes !p !p [p] deriving (Int -> Extremes p -> ShowS +data Extremes p = Extremes !p !p [p] deriving (Int -> Extremes p -> ShowS [Extremes p] -> ShowS Extremes p -> String (Int -> Extremes p -> ShowS) @@ -119,15 +119,15 @@ Show) -- | Finds the leftmost and rightmost point in the list -findExtremes :: (Ord r, Point_ point 2 r) - => NonEmpty point - -> Extremes point +findExtremes :: (Ord r, Point_ point 2 r) + => NonEmpty point + -> Extremes point findExtremes :: forall r point. (Ord r, Point_ point 2 r) => NonEmpty point -> Extremes point -findExtremes (point -p :| [point] -pts ) = (point -> Extremes point -> Extremes point) +findExtremes (point +p :| [point] +pts ) = (point -> Extremes point -> Extremes point) -> Extremes point -> [point] -> Extremes point forall a b. (a -> b -> b) -> b -> [a] -> b forall (t :: * -> *) a b. @@ -137,99 +137,99 @@ forall {s}. (Dimension s ~ 2, Ord (NumType s), Point_ s 2 (NumType s)) => s -> Extremes s -> Extremes s -f (point -> point -> [point] -> Extremes point +f (point -> point -> [point] -> Extremes point forall p. p -> p -> [p] -> Extremes p Extremes point -p point -p []) [point] -pts +p point +p []) [point] +pts where - f :: s -> Extremes s -> Extremes s -f s -q (Extremes s -l s -r [s] -ms) = case (s -> s -> Ordering + f :: s -> Extremes s -> Extremes s +f s +q (Extremes s +l s +r [s] +ms) = case (s -> s -> Ordering forall r point. (Ord r, Point_ point 2 r) => point -> point -> Ordering incXdecY s -q s -l, s -> s -> Ordering +q s +l, s -> s -> Ordering forall r point. (Ord r, Point_ point 2 r) => point -> point -> Ordering incXdecY s -q s -r) of +q s +r) of (Ordering LT,Ordering _) -> s -> s -> [s] -> Extremes s forall p. p -> p -> [p] -> Extremes p Extremes s -q s -r (s -> s -> [s] -> [s] +q s +r (s -> s -> [s] -> [s] forall {s} {a}. (Dimension s ~ Dimension a, NumType s ~ NumType a, Eq (Vector (Dimension a) (NumType a)), Point_ a (Dimension a) (NumType a), Point_ s (Dimension a) (NumType a)) => s -> a -> [a] -> [a] -addIfNot s -r s -l [s] -ms) +addIfNot s +r s +l [s] +ms) (Ordering EQ,Ordering _) -> s -> s -> [s] -> Extremes s forall p. p -> p -> [p] -> Extremes p Extremes s -l s -r [s] -ms -- ditch q; it is the same as l +l s +r [s] +ms -- ditch q; it is the same as l (Ordering GT,Ordering GT) -> s -> s -> [s] -> Extremes s forall p. p -> p -> [p] -> Extremes p Extremes s -l s -q (s -> s -> [s] -> [s] +l s +q (s -> s -> [s] -> [s] forall {s} {a}. (Dimension s ~ Dimension a, NumType s ~ NumType a, Eq (Vector (Dimension a) (NumType a)), Point_ a (Dimension a) (NumType a), Point_ s (Dimension a) (NumType a)) => s -> a -> [a] -> [a] -addIfNot s -l s -r [s] -ms) +addIfNot s +l s +r [s] +ms) (Ordering GT,Ordering EQ) -> s -> s -> [s] -> Extremes s forall p. p -> p -> [p] -> Extremes p Extremes s -l s -r [s] -ms -- ditch q; it is the same as r +l s +r [s] +ms -- ditch q; it is the same as r (Ordering GT,Ordering LT) -> s -> s -> [s] -> Extremes s forall p. p -> p -> [p] -> Extremes p Extremes s -l s -r (s -qs -> [s] -> [s] +l s +r (s +qs -> [s] -> [s] forall a. a -> [a] -> [a] :[s] -ms) +ms) - addIfNot :: s -> a -> [a] -> [a] -addIfNot s -y a -x [a] -xs | (a -xa + addIfNot :: s -> a -> [a] -> [a] +addIfNot s +y a +x [a] +xs | (a +xa -> Getting (Point (Dimension s) (NumType s)) a @@ -248,7 +248,7 @@ -> Point (Dimension s) (NumType s) -> Bool forall a. Eq a => a -> a -> Bool /= (s -ys +ys -> Getting (Point (Dimension s) (NumType s)) s @@ -264,13 +264,13 @@ Lens' point (Point d r) Lens' s (Point (Dimension s) (NumType s)) asPoint) = a -xa -> [a] -> [a] +xa -> [a] -> [a] forall a. a -> [a] -> [a] :[a] -xs +xs | Bool otherwise = [a] -xs +xs -- findExtremesBy :: (a -> a -> Ordering) -- -> NonEmpty a @@ -281,85 +281,85 @@ -- in STR l r [p | p <- F.toList pts, p /=. l, p /=. r] -incXdecY :: (Ord r, Point_ point 2 r) => point -> point -> Ordering +incXdecY :: (Ord r, Point_ point 2 r) => point -> point -> Ordering incXdecY :: forall r point. (Ord r, Point_ point 2 r) => point -> point -> Ordering -incXdecY (Point2_ r -px r -py) (Point2_ r -qx r -qy) = +incXdecY (Point2_ r +px r +py) (Point2_ r +qx r +qy) = r -> r -> Ordering forall a. Ord a => a -> a -> Ordering compare r -px r -qx Ordering -> Ordering -> Ordering +px r +qx Ordering -> Ordering -> Ordering forall a. Semigroup a => a -> a -> a <> r -> r -> Ordering forall a. Ord a => a -> a -> Ordering compare r -qy r -py +qy r +py -- | include neigher left or right -- -hull :: forall point r. (Fractional r, Ord r, Point_ point 2 r) - => point -> point -> [point ] -> [point] +hull :: forall point r. (Fractional r, Ord r, Point_ point 2 r) + => point -> point -> [point ] -> [point] hull :: forall point r. (Fractional r, Ord r, Point_ point 2 r) => point -> point -> [point] -> [point] hull point _ point _ [] = [] -hull point -l point -r [point] -pts = point -> point -> [point] -> [point] +hull point +l point +r [point] +pts = point -> point -> [point] -> [point] forall point r. (Fractional r, Ord r, Point_ point 2 r) => point -> point -> [point] -> [point] hull point -l point -mid [point] -ls [point] -> [point] -> [point] +l point +mid [point] +ls [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> [point -mid] [point] -> [point] -> [point] +mid] [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> point -> point -> [point] -> [point] forall point r. (Fractional r, Ord r, Point_ point 2 r) => point -> point -> [point] -> [point] hull point -mid point -r [point] -rs +mid point +r [point] +rs where - m :: LinePV 2 r - m :: LinePV 2 r -m = point -> point -> LinePV 2 r + m :: LinePV 2 r + m :: LinePV 2 r +m = point -> point -> LinePV 2 r forall line point (d :: Nat) r. (Line_ line d r, Point_ point d r, Num r) => point -> point -> line lineThrough point -l point -r - mid :: point -mid = (point -> point -> Ordering) -> [point] -> point +l point +r + mid :: point +mid = (point -> point -> Ordering) -> [point] -> point forall (t :: * -> *) a. Foldable t => (a -> a -> Ordering) -> t a -> a F.maximumBy ((point -> r) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing point -> r -dist) [point] -pts +dist) [point] +pts - dist :: point -> r -dist point -p = point -p point -> LinePV 2 r -> r + dist :: point -> r +dist point +p = point +p point -> LinePV 2 r -> r forall g r (d :: Nat) point. (HasSquaredEuclideanDistance g, r ~ NumType g, d ~ Dimension g, Num r, Point_ point d r) => @@ -369,58 +369,58 @@ Point_ point d r) => point -> LinePV 2 r -> r `squaredEuclideanDistTo` LinePV 2 r -m - t :: Triangle point -t = point -> point -> point -> Triangle point +m + t :: Triangle point +t = point -> point -> point -> Triangle point forall point. point -> point -> point -> Triangle point Triangle point -l point -mid point -r +l point +mid point +r -- line through l and mid, which splits the remaining points in a left half and a right half. - splitL :: LinePV 2 r -splitL = point -> point -> LinePV 2 r + splitL :: LinePV 2 r +splitL = point -> point -> LinePV 2 r forall line point (d :: Nat) r. (Line_ line d r, Point_ point d r, Num r) => point -> point -> line lineThrough point -l point -mid - rightSide :: SideTest -rightSide = point -r point -> LinePV 2 r -> SideTest +l point +mid + rightSide :: SideTest +rightSide = point +r point -> LinePV 2 r -> SideTest forall r point. (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> SideTest `onSide` LinePV 2 r -splitL -- define the side containing r the right side +splitL -- define the side containing r the right side - ([point] -ls,[point] -rs) = (point -> Bool) -> [point] -> ([point], [point]) + ([point] +ls,[point] +rs) = (point -> Bool) -> [point] -> ([point], [point]) forall a. (a -> Bool) -> [a] -> ([a], [a]) -List.partition (\point -p -> point -p point -> LinePV 2 r -> SideTest +List.partition (\point +p -> point +p point -> LinePV 2 r -> SideTest forall r point. (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> SideTest `onSide` LinePV 2 r -splitL SideTest -> SideTest -> Bool +splitL SideTest -> SideTest -> Bool forall a. Eq a => a -> a -> Bool /= SideTest -rightSide) +rightSide) ([point] -> ([point], [point])) -> ([point] -> [point]) -> [point] -> ([point], [point]) forall b c a. (b -> c) -> (a -> b) -> a -> c . (point -> Bool) -> [point] -> [point] forall a. (a -> Bool) -> [a] -> [a] -filter (\point -p -> Bool -> Bool +filter (\point +p -> Bool -> Bool not (Bool -> Bool) -> Bool -> Bool forall a b. (a -> b) -> a -> b $ (point -ppoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r +ppoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point (Point 2 r) forall point (d :: Nat) r. @@ -430,8 +430,8 @@ asPoint) Point 2 r -> Triangle point -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` Triangle point -t) ([point] -> ([point], [point])) -> [point] -> ([point], [point]) +t) ([point] -> ([point], [point])) -> [point] -> ([point], [point]) forall a b. (a -> b) -> a -> b $ [point] -pts +pts \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.ConvexHull.R3.Naive.Dual.html b/haddocks/hgeometry/src/HGeometry.ConvexHull.R3.Naive.Dual.html index 696ec4622..fced64e88 100644 --- a/haddocks/hgeometry/src/HGeometry.ConvexHull.R3.Naive.Dual.html +++ b/haddocks/hgeometry/src/HGeometry.ConvexHull.R3.Naive.Dual.html @@ -37,18 +37,18 @@ -type UpperHull point = LowerEnvelope (NonVerticalHyperPlane 3 (NumType point) :+ point) +type UpperHull point = LowerEnvelope (NonVerticalHyperPlane 3 (NumType point) :+ point) -- | Computes the upper hull of a set of points in R^3 -- -- \(O(n^4)\) -upperHull :: ( Point_ point 3 r - , Ord r, Fractional r - , Foldable1 f, Functor f +upperHull :: ( Point_ point 3 r + , Ord r, Fractional r + , Foldable1 f, Functor f - , Show point, Show r, Ord point - ) => f point -> UpperHull point + , Show point, Show r, Ord point + ) => f point -> UpperHull point upperHull :: forall point r (f :: * -> *). (Point_ point 3 r, Ord r, Fractional r, Foldable1 f, Functor f, Show point, Show r, Ord point) => @@ -69,23 +69,23 @@ -> f point -> f (NonVerticalHyperPlane 3 r :+ point) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\point -p -> point -> NonVerticalHyperPlane 3 r +fmap (\point +p -> point -> NonVerticalHyperPlane 3 r forall point (d :: Natural) r. (Point_ point d r, Num r, 1 <= d) => point -> NonVerticalHyperPlane d r dualHyperPlane point -p NonVerticalHyperPlane 3 r +p NonVerticalHyperPlane 3 r -> point -> NonVerticalHyperPlane 3 r :+ point forall core extra. core -> extra -> core :+ extra :+ point -p) +p) -type Facet point = NonEmpty point +type Facet point = NonEmpty point -- | Outputs the facets of the upper hull. -facets :: (Ord (NumType point)) => UpperHull point -> [Facet point] +facets :: (Ord (NumType point)) => UpperHull point -> [Facet point] facets :: forall point. Ord (NumType point) => UpperHull point -> [Facet point] @@ -96,10 +96,10 @@ (NumType (NonVerticalHyperPlane 3 (NumType point) :+ point))) (NonVerticalHyperPlane 3 (NumType point) :+ point) _ -> [] -- error "facets: parallel strips; no bounded facets" - ConnectedEnvelope MinimizationDiagram + ConnectedEnvelope MinimizationDiagram (NumType (NonVerticalHyperPlane 3 (NumType point) :+ point)) (NonVerticalHyperPlane 3 (NumType point) :+ point) -env -> NonEmpty (Facet point) -> [Facet point] +env -> NonEmpty (Facet point) -> [Facet point] forall a. NonEmpty a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] toList (NonEmpty (Facet point) -> [Facet point]) @@ -108,7 +108,7 @@ $ NonEmpty (NonVerticalHyperPlane 3 (NumType point) :+ point) -> Facet point forall {f :: * -> *} {core} {b}. Functor f => f (core :+ b) -> f b -toFacet (NonEmpty (NonVerticalHyperPlane 3 (NumType point) :+ point) +toFacet (NonEmpty (NonVerticalHyperPlane 3 (NumType point) :+ point) -> Facet point) -> NonEmpty (NonEmpty (NonVerticalHyperPlane 3 (NumType point) :+ point)) @@ -123,12 +123,12 @@ NEMap.elems NEMap (Point 2 (NumType point)) (NonEmpty (NonVerticalHyperPlane 3 (NumType point) :+ point)) -theVertices +theVertices where - theVertices :: NEMap + theVertices :: NEMap (Point 2 (NumType point)) (NonEmpty (NonVerticalHyperPlane 3 (NumType point) :+ point)) -theVertices = ((NonVerticalHyperPlane 3 (NumType point) :+ point) +theVertices = ((NonVerticalHyperPlane 3 (NumType point) :+ point) -> Region (NumType point) (Point 2 (NumType point)) -> NEMap (Point 2 (NumType point)) @@ -142,9 +142,9 @@ forall k' v' k v. (Ord k', Semigroup v') => (k -> v -> NEMap k' v') -> NEMap k v -> NEMap k' v' -mapWithKeyMerge1 (\NonVerticalHyperPlane 3 (NumType point) :+ point -h Region (NumType point) (Point 2 (NumType point)) -reg -> NonEmpty +mapWithKeyMerge1 (\NonVerticalHyperPlane 3 (NumType point) :+ point +h Region (NumType point) (Point 2 (NumType point)) +reg -> NonEmpty (Point 2 (NumType point), NonEmpty (NonVerticalHyperPlane 3 (NumType point) :+ point)) -> NEMap @@ -169,7 +169,7 @@ -> NonEmpty (NonVerticalHyperPlane 3 (NumType point) :+ point) forall a. a -> NonEmpty a NonEmpty.singleton NonVerticalHyperPlane 3 (NumType point) :+ point -h) (Point 2 (NumType point) +h) (Point 2 (NumType point) -> (Point 2 (NumType point), NonEmpty (NonVerticalHyperPlane 3 (NumType point) :+ point))) -> NonEmpty (Point 2 (NumType point)) @@ -180,8 +180,8 @@ <$> Region (NumType point) (Point 2 (NumType point)) -> NonEmpty (Point 2 (NumType point)) forall {r} {a}. Region r a -> NonEmpty a -verticesOf Region (NumType point) (Point 2 (NumType point)) -reg +verticesOf Region (NumType point) (Point 2 (NumType point)) +reg ) (MinimizationDiagram (NumType point) (NonVerticalHyperPlane 3 (NumType point) :+ point) -> NEMap @@ -194,24 +194,24 @@ MinimizationDiagram (NumType (NonVerticalHyperPlane 3 (NumType point) :+ point)) (NonVerticalHyperPlane 3 (NumType point) :+ point) -env) - verticesOf :: Region r a -> NonEmpty a -verticesOf = \case - Bounded Cyclic NonEmpty a -vertices -> Cyclic NonEmpty a -> NonEmpty a +env) + verticesOf :: Region r a -> NonEmpty a +verticesOf = \case + Bounded Cyclic NonEmpty a +vertices -> Cyclic NonEmpty a -> NonEmpty a forall a. Cyclic NonEmpty a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty Cyclic NonEmpty a -vertices +vertices Unbounded Vector 2 r -_ NonEmpty a -vertices Vector 2 r +_ NonEmpty a +vertices Vector 2 r _ -> NonEmpty a -vertices +vertices - toFacet :: f (core :+ b) -> f b -toFacet f (core :+ b) -hv = ((core :+ b) -> Getting b (core :+ b) b -> b + toFacet :: f (core :+ b) -> f b +toFacet f (core :+ b) +hv = ((core :+ b) -> Getting b (core :+ b) b -> b forall s a. s -> Getting a s a -> a ^.Getting b (core :+ b) b forall core extra extra' (f :: * -> *). @@ -220,7 +220,7 @@ extra) ((core :+ b) -> b) -> f (core :+ b) -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> f (core :+ b) -hv +hv -- We want all vertices v of the lower envelope; let H_v denote all planes that -- intersect in v. -- diff --git a/haddocks/hgeometry/src/HGeometry.Graphics.Camera.html b/haddocks/hgeometry/src/HGeometry.Graphics.Camera.html index b1de6c6d0..dec6b32c6 100644 --- a/haddocks/hgeometry/src/HGeometry.Graphics.Camera.html +++ b/haddocks/hgeometry/src/HGeometry.Graphics.Camera.html @@ -40,23 +40,23 @@ -- * the far distance (everything further away than this is clipped), and -- * the screen dimensions. -- -data Camera r = Camera { forall r. Camera r -> Point 3 r -_cameraPosition :: !(Point 3 r) +data Camera r = Camera { forall r. Camera r -> Point 3 r +_cameraPosition :: !(Point 3 r) , forall r. Camera r -> Vector 3 r -_rawCameraNormal :: !(Vector 3 r) +_rawCameraNormal :: !(Vector 3 r) -- ^ unit vector from camera into center of the screen , forall r. Camera r -> Vector 3 r -_rawViewUp :: !(Vector 3 r) +_rawViewUp :: !(Vector 3 r) -- ^ viewUp; assumed to be unit vector , forall r. Camera r -> r -_viewPlaneDepth :: !r +_viewPlaneDepth :: !r , forall r. Camera r -> r -_nearDist :: !r +_nearDist :: !r , forall r. Camera r -> r -_farDist :: !r +_farDist :: !r , forall r. Camera r -> Vector 2 r -_screenDimensions :: !(Vector 2 r) - } deriving (Int -> Camera r -> ShowS +_screenDimensions :: !(Vector 2 r) + } deriving (Int -> Camera r -> ShowS [Camera r] -> ShowS Camera r -> String (Int -> Camera r -> ShowS) @@ -72,7 +72,7 @@ show :: Camera r -> String $cshowList :: forall r. Show r => [Camera r] -> ShowS showList :: [Camera r] -> ShowS -Show,Camera r -> Camera r -> Bool +Show,Camera r -> Camera r -> Bool (Camera r -> Camera r -> Bool) -> (Camera r -> Camera r -> Bool) -> Eq (Camera r) forall r. Eq r => Camera r -> Camera r -> Bool @@ -81,7 +81,7 @@ == :: Camera r -> Camera r -> Bool $c/= :: forall r. Eq r => Camera r -> Camera r -> Bool /= :: Camera r -> Camera r -> Bool -Eq,Eq (Camera r) +Eq,Eq (Camera r) Eq (Camera r) => (Camera r -> Camera r -> Ordering) -> (Camera r -> Camera r -> Bool) @@ -131,7 +131,7 @@ -- makeLenses ''Camera -- | Camera position. -cameraPosition :: Lens' (Camera r) (Point 3 r) +cameraPosition :: Lens' (Camera r) (Point 3 r) cameraPosition :: forall r (f :: * -> *). Functor f => (Point 3 r -> f (Point 3 r)) -> Camera r -> f (Camera r) @@ -141,13 +141,13 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Camera r -> Point 3 r forall r. Camera r -> Point 3 r -_cameraPosition (\Camera r -cam Point 3 r -p -> Camera r -cam{_cameraPosition=p}) +_cameraPosition (\Camera r +cam Point 3 r +p -> Camera r +cam{_cameraPosition=p}) -- | Raw camera normal, i.e. a unit vector into the center of the screen. -rawCameraNormal :: Lens' (Camera r) (Vector 3 r) +rawCameraNormal :: Lens' (Camera r) (Vector 3 r) rawCameraNormal :: forall r (f :: * -> *). Functor f => (Vector 3 r -> f (Vector 3 r)) -> Camera r -> f (Camera r) @@ -157,13 +157,13 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Camera r -> Vector 3 r forall r. Camera r -> Vector 3 r -_rawCameraNormal (\Camera r -cam Vector 3 r -r -> Camera r -cam{_rawCameraNormal=r}) +_rawCameraNormal (\Camera r +cam Vector 3 r +r -> Camera r +cam{_rawCameraNormal=r}) -- | Raw view up vector indicating which side points "upwards" in the scene. -rawViewUp :: Lens' (Camera r) (Vector 3 r) +rawViewUp :: Lens' (Camera r) (Vector 3 r) rawViewUp :: forall r (f :: * -> *). Functor f => (Vector 3 r -> f (Vector 3 r)) -> Camera r -> f (Camera r) @@ -173,13 +173,13 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Camera r -> Vector 3 r forall r. Camera r -> Vector 3 r -_rawViewUp (\Camera r -cam Vector 3 r -r -> Camera r -cam{_rawViewUp=r}) +_rawViewUp (\Camera r +cam Vector 3 r +r -> Camera r +cam{_rawViewUp=r}) -- | Viewplane depth (i.e. the distance from the camera position to the plane on which we project). -viewPlaneDepth :: Lens' (Camera r) r +viewPlaneDepth :: Lens' (Camera r) r viewPlaneDepth :: forall r (f :: * -> *). Functor f => (r -> f r) -> Camera r -> f (Camera r) @@ -188,13 +188,13 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Camera r -> r forall r. Camera r -> r -_viewPlaneDepth (\Camera r -cam r -v -> Camera r -cam{_viewPlaneDepth=v}) +_viewPlaneDepth (\Camera r +cam r +v -> Camera r +cam{_viewPlaneDepth=v}) -- | Near distance (everything closer than this is clipped). -nearDist :: Lens' (Camera r) r +nearDist :: Lens' (Camera r) r nearDist :: forall r (f :: * -> *). Functor f => (r -> f r) -> Camera r -> f (Camera r) @@ -203,13 +203,13 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Camera r -> r forall r. Camera r -> r -_nearDist (\Camera r -cam r -n -> Camera r -cam{_nearDist=n}) +_nearDist (\Camera r +cam r +n -> Camera r +cam{_nearDist=n}) -- | Far distance (everything further away than this is clipped). -farDist :: Lens' (Camera r) r +farDist :: Lens' (Camera r) r farDist :: forall r (f :: * -> *). Functor f => (r -> f r) -> Camera r -> f (Camera r) @@ -218,13 +218,13 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Camera r -> r forall r. Camera r -> r -_farDist (\Camera r -cam r -f -> Camera r -cam{_farDist=f}) +_farDist (\Camera r +cam r +f -> Camera r +cam{_farDist=f}) -- | Screen dimensions. -screenDimensions :: Lens' (Camera r) (Vector 2 r) +screenDimensions :: Lens' (Camera r) (Vector 2 r) screenDimensions :: forall r (f :: * -> *). Functor f => (Vector 2 r -> f (Vector 2 r)) -> Camera r -> f (Camera r) @@ -234,10 +234,10 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Camera r -> Vector 2 r forall r. Camera r -> Vector 2 r -_screenDimensions (\Camera r -cam Vector 2 r -d -> Camera r -cam{_screenDimensions=d}) +_screenDimensions (\Camera r +cam Vector 2 r +d -> Camera r +cam{_screenDimensions=d}) -------------------------------------------------------------------------------- @@ -245,7 +245,7 @@ -- | Lens to get and set the Camera normal, makes sure that the vector remains -- normalized. -cameraNormal :: (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r) +cameraNormal :: (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r) cameraNormal :: forall r. (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r) @@ -255,15 +255,15 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Camera r -> Vector 3 r forall r. Camera r -> Vector 3 r -_rawCameraNormal (\Camera r -c Vector 3 r -n -> Camera r -c { _rawCameraNormal = signorm n} ) +_rawCameraNormal (\Camera r +c Vector 3 r +n -> Camera r +c { _rawCameraNormal = signorm n} ) -- | Lens to get and set the viewUp vector. Makes sure the vector remains -- normalized. -viewUp :: (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r) +viewUp :: (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r) viewUp :: forall r. (Radical r, Fractional r) => Lens' (Camera r) (Vector 3 r) @@ -273,10 +273,10 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Camera r -> Vector 3 r forall r. Camera r -> Vector 3 r -_rawViewUp (\Camera r -c Vector 3 r -n -> Camera r -c { _rawViewUp = signorm n}) +_rawViewUp (\Camera r +c Vector 3 r +n -> Camera r +c { _rawViewUp = signorm n}) -------------------------------------------------------------------------------- @@ -284,13 +284,13 @@ -- | Full transformation that renders the figure -cameraTransform :: Fractional r => Camera r -> Transformation 3 r +cameraTransform :: Fractional r => Camera r -> Transformation 3 r cameraTransform :: forall r. Fractional r => Camera r -> Transformation 3 r -cameraTransform Camera r -c = Camera r -> Transformation 3 r +cameraTransform Camera r +c = Camera r -> Transformation 3 r forall r. Fractional r => Camera r -> Transformation 3 r toViewPort Camera r -c +c Transformation 3 r -> Transformation 3 r -> Transformation 3 r forall r (d :: Nat). (Num r, OptMatrix_ (d + 1) r) => @@ -298,7 +298,7 @@ |.| Camera r -> Transformation 3 r forall r. Fractional r => Camera r -> Transformation 3 r perspectiveProjection Camera r -c +c Transformation 3 r -> Transformation 3 r -> Transformation 3 r forall r (d :: Nat). (Num r, OptMatrix_ (d + 1) r) => @@ -306,16 +306,16 @@ |.| Camera r -> Transformation 3 r forall r. Fractional r => Camera r -> Transformation 3 r worldToView Camera r -c +c -- | Translates world coordinates into view coordinates -worldToView :: Fractional r => Camera r -> Transformation 3 r +worldToView :: Fractional r => Camera r -> Transformation 3 r worldToView :: forall r. Fractional r => Camera r -> Transformation 3 r -worldToView Camera r -c = Camera r -> Transformation 3 r +worldToView Camera r +c = Camera r -> Transformation 3 r forall r. Num r => Camera r -> Transformation 3 r rotateCoordSystem Camera r -c Transformation 3 r -> Transformation 3 r -> Transformation 3 r +c Transformation 3 r -> Transformation 3 r -> Transformation 3 r forall r (d :: Nat). (Num r, OptMatrix_ (d + 1) r) => Transformation d r -> Transformation d r -> Transformation d r @@ -329,7 +329,7 @@ (Num r, Vector_ vector d r) => r -> vector -> vector *^ Camera r -cCamera r +cCamera r -> Getting (Vector 3 r) (Camera r) (Vector 3 r) -> Vector 3 r forall s a. s -> Getting a s a -> a ^.(Point 3 r -> Const (Vector 3 r) (Point 3 r)) @@ -357,10 +357,10 @@ vector) -- | Transformation into viewport coordinates -toViewPort :: Fractional r => Camera r -> Transformation 3 r +toViewPort :: Fractional r => Camera r -> Transformation 3 r toViewPort :: forall r. Fractional r => Camera r -> Transformation 3 r -toViewPort Camera r -c = Matrix 4 4 r -> Transformation 3 r +toViewPort Camera r +c = Matrix 4 4 r -> Transformation 3 r Matrix (3 + 1) (3 + 1) r -> Transformation 3 r forall (d :: Nat) r. Matrix (d + 1) (d + 1) r -> Transformation d r Transformation (Matrix 4 4 r -> Transformation 3 r) @@ -381,7 +381,7 @@ Vector4 (r -> r -> r -> r -> Vector 4 r forall r. r -> r -> r -> r -> Vector 4 r Vector4 (r -wr -> r -> r +wr -> r -> r forall a. Fractional a => a -> a -> a /r 2) r @@ -392,7 +392,7 @@ forall r. r -> r -> r -> r -> Vector 4 r Vector4 r 0 (r -hr -> r -> r +hr -> r -> r forall a. Fractional a => a -> a -> a /r 2) r @@ -419,10 +419,10 @@ 0 r 1) where - Vector2 r -w r -h = Camera r -cCamera r + Vector2 r +w r +h = Camera r +cCamera r -> Getting (Vector 2 r) (Camera r) (Vector 2 r) -> Vector 2 r forall s a. s -> Getting a s a -> a ^.Getting (Vector 2 r) (Camera r) (Vector 2 r) @@ -433,10 +433,10 @@ -- | constructs a perspective projection -perspectiveProjection :: Fractional r => Camera r -> Transformation 3 r +perspectiveProjection :: Fractional r => Camera r -> Transformation 3 r perspectiveProjection :: forall r. Fractional r => Camera r -> Transformation 3 r -perspectiveProjection Camera r -c = Matrix 4 4 r -> Transformation 3 r +perspectiveProjection Camera r +c = Matrix 4 4 r -> Transformation 3 r Matrix (3 + 1) (3 + 1) r -> Transformation 3 r forall (d :: Nat) r. Matrix (d + 1) (d + 1) r -> Transformation d r Transformation (Matrix 4 4 r -> Transformation 3 r) @@ -457,10 +457,10 @@ Vector4 (r -> r -> r -> r -> Vector 4 r forall r. r -> r -> r -> r -> Vector 4 r Vector4 (-r -nr -> r -> r +nr -> r -> r forall a. Fractional a => a -> a -> a /r -rx) r +rx) r 0 r 0 r 0) @@ -468,10 +468,10 @@ forall r. r -> r -> r -> r -> Vector 4 r Vector4 r 0 (-r -nr -> r -> r +nr -> r -> r forall a. Fractional a => a -> a -> a /r -ry) r +ry) r 0 r 0) (r -> r -> r -> r -> Vector 4 r @@ -479,29 +479,29 @@ Vector4 r 0 r 0 (-(r -nr -> r -> r +nr -> r -> r forall a. Num a => a -> a -> a +r -f)r -> r -> r +f)r -> r -> r forall a. Fractional a => a -> a -> a /(r -nr -> r -> r +nr -> r -> r forall a. Num a => a -> a -> a -r -f)) (-r +f)) (-r 2r -> r -> r forall a. Num a => a -> a -> a *r -nr -> r -> r +nr -> r -> r forall a. Num a => a -> a -> a *r -fr -> r -> r +fr -> r -> r forall a. Fractional a => a -> a -> a /(r -nr -> r -> r +nr -> r -> r forall a. Num a => a -> a -> a -r -f))) +f))) (r -> r -> r -> r -> Vector 4 r forall r. r -> r -> r -> r -> Vector 4 r Vector4 r @@ -510,33 +510,33 @@ 1 r 0) where - n :: r -n = Camera r -cCamera r -> Getting r (Camera r) r -> r + n :: r +n = Camera r +cCamera r -> Getting r (Camera r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Camera r) r forall r (f :: * -> *). Functor f => (r -> f r) -> Camera r -> f (Camera r) nearDist - f :: r -f = Camera r -cCamera r -> Getting r (Camera r) r -> r + f :: r +f = Camera r +cCamera r -> Getting r (Camera r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Camera r) r forall r (f :: * -> *). Functor f => (r -> f r) -> Camera r -> f (Camera r) farDist - Vector2 r -rx r -ry = (r -> r -> r + Vector2 r +rx r +ry = (r -> r -> r forall a. Fractional a => a -> a -> a /r 2) (r -> r) -> Vector 2 r -> Vector 2 r forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Camera r -cCamera r +cCamera r -> Getting (Vector 2 r) (Camera r) (Vector 2 r) -> Vector 2 r forall s a. s -> Getting a s a -> a ^.Getting (Vector 2 r) (Camera r) (Vector 2 r) @@ -547,10 +547,10 @@ -- | Rotates coordinate system around the camera, such that we look in the negative z -- direction -rotateCoordSystem :: Num r => Camera r -> Transformation 3 r +rotateCoordSystem :: Num r => Camera r -> Transformation 3 r rotateCoordSystem :: forall r. Num r => Camera r -> Transformation 3 r -rotateCoordSystem Camera r -c = Vector 3 (Vector 3 r) -> Transformation 3 r +rotateCoordSystem Camera r +c = Vector 3 (Vector 3 r) -> Transformation 3 r forall r. Num r => Vector 3 (Vector 3 r) -> Transformation 3 r rotateTo (Vector 3 (Vector 3 r) -> Transformation 3 r) -> Vector 3 (Vector 3 r) -> Transformation 3 r @@ -558,13 +558,13 @@ $ Vector 3 r -> Vector 3 r -> Vector 3 r -> Vector 3 (Vector 3 r) forall r. r -> r -> r -> Vector 3 r Vector3 Vector 3 r -u Vector 3 r -v Vector 3 r -n +u Vector 3 r +v Vector 3 r +n where - u :: Vector 3 r -u = (Camera r -cCamera r + u :: Vector 3 r +u = (Camera r +cCamera r -> Getting (Vector 3 r) (Camera r) (Vector 3 r) -> Vector 3 r forall s a. s -> Getting a s a -> a ^.Getting (Vector 3 r) (Camera r) (Vector 3 r) @@ -574,21 +574,21 @@ rawViewUp) Vector 3 r -> Vector 3 r -> Vector 3 r forall r. Num r => Vector 3 r -> Vector 3 r -> Vector 3 r `cross` Vector 3 r -n - v :: Vector 3 r -v = Vector 3 r -n Vector 3 r -> Vector 3 r -> Vector 3 r +n + v :: Vector 3 r +v = Vector 3 r +n Vector 3 r -> Vector 3 r -> Vector 3 r forall r. Num r => Vector 3 r -> Vector 3 r -> Vector 3 r `cross` Vector 3 r -u - n :: Vector 3 r -n = (-r +u + n :: Vector 3 r +n = (-r 1) r -> Vector 3 r -> Vector 3 r forall r vector (d :: Nat). (Num r, Vector_ vector d r) => r -> vector -> vector *^ Camera r -cCamera r +cCamera r -> Getting (Vector 3 r) (Camera r) (Vector 3 r) -> Vector 3 r forall s a. s -> Getting a s a -> a ^.Getting (Vector 3 r) (Camera r) (Vector 3 r) @@ -603,7 +603,7 @@ -- transformBy' (Transformation m) (Vector3 x y z) = m `mult` (Vector4 x y z (-z)) -- | Flips the y and z axis. -flipAxes :: Num r => Transformation 3 r +flipAxes :: Num r => Transformation 3 r flipAxes :: forall r. Num r => Transformation 3 r flipAxes = Matrix 4 4 r -> Transformation 3 r Matrix (3 + 1) (3 + 1) r -> Transformation 3 r diff --git a/haddocks/hgeometry/src/HGeometry.HalfPlane.CommonIntersection.Chain.html b/haddocks/hgeometry/src/HGeometry.HalfPlane.CommonIntersection.Chain.html index 6c9192581..a7f7f65e7 100644 --- a/haddocks/hgeometry/src/HGeometry.HalfPlane.CommonIntersection.Chain.html +++ b/haddocks/hgeometry/src/HGeometry.HalfPlane.CommonIntersection.Chain.html @@ -25,13 +25,13 @@ -- | A polygonal chain bounding an unbounded convex region, in CCW order. -newtype Chain f halfPlane r = Chain (Alternating f (Point 2 r) halfPlane) +newtype Chain f halfPlane r = Chain (Alternating f (Point 2 r) halfPlane) -- | Iso to convert to just an Alternating -_ChainAlternating :: Iso (Chain f halfPlane r) - (Chain f' halfPlane' r') - (Alternating f (Point 2 r) halfPlane) - (Alternating f' (Point 2 r') halfPlane') +_ChainAlternating :: Iso (Chain f halfPlane r) + (Chain f' halfPlane' r') + (Alternating f (Point 2 r) halfPlane) + (Alternating f' (Point 2 r') halfPlane') _ChainAlternating :: forall (f :: * -> *) halfPlane r (f' :: * -> *) halfPlane' r' (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => @@ -49,19 +49,19 @@ (Alternating f' (Point 2 r') halfPlane') coerced -deriving instance ( Show halfPlane, Show (f (Point 2 r, halfPlane)) - ) => Show (Chain f halfPlane r) +deriving instance ( Show halfPlane, Show (f (Point 2 r, halfPlane)) + ) => Show (Chain f halfPlane r) -deriving instance ( Eq halfPlane, Eq (f (Point 2 r, halfPlane)) - ) => Eq (Chain f halfPlane r) +deriving instance ( Eq halfPlane, Eq (f (Point 2 r, halfPlane)) + ) => Eq (Chain f halfPlane r) -deriving instance ( Ord halfPlane, Ord (f (Point 2 r, halfPlane)) - ) => Ord (Chain f halfPlane r) +deriving instance ( Ord halfPlane, Ord (f (Point 2 r, halfPlane)) + ) => Ord (Chain f halfPlane r) -instance Functor f => Functor (Chain f r) where - fmap :: forall a b. (a -> b) -> Chain f r a -> Chain f r b -fmap a -> b -f = (r -> r) -> (a -> b) -> Chain f r a -> Chain f r b +instance Functor f => Functor (Chain f r) where + fmap :: forall a b. (a -> b) -> Chain f r a -> Chain f r b +fmap a -> b +f = (r -> r) -> (a -> b) -> Chain f r a -> Chain f r b forall a b c d. (a -> b) -> (c -> d) -> Chain f a c -> Chain f b d forall (p :: * -> * -> *) a b c d. Bifunctor p => @@ -69,12 +69,12 @@ bimap r -> r forall a. a -> a id a -> b -f -instance Functor f => Bifunctor (Chain f) where - bimap :: forall a b c d. (a -> b) -> (c -> d) -> Chain f a c -> Chain f b d -bimap a -> b -f c -> d -g = (a -> b) -> (Point 2 c -> Point 2 d) -> Chain f a c -> Chain f b d +f +instance Functor f => Bifunctor (Chain f) where + bimap :: forall a b c d. (a -> b) -> (c -> d) -> Chain f a c -> Chain f b d +bimap a -> b +f c -> d +g = (a -> b) -> (Point 2 c -> Point 2 d) -> Chain f a c -> Chain f b d forall (f :: * -> *) halfPlane halfPlane' r s. Functor f => (halfPlane -> halfPlane') @@ -82,7 +82,7 @@ -> Chain f halfPlane r -> Chain f halfPlane' s bimap' a -> b -f (ASetter (Point 2 c) (Point 2 d) c d +f (ASetter (Point 2 c) (Point 2 d) c d -> (c -> d) -> Point 2 c -> Point 2 d forall s t a b. ASetter s t a b -> (a -> b) -> s -> t over ASetter (Point 2 c) (Point 2 d) c d @@ -98,23 +98,23 @@ (NumType (Point 2 c)) (NumType (Point 2 d)) coordinates c -> d -g) +g) -- | slightly more general version of bimap so we can easily flip the plane. -bimap' :: Functor f - => (halfPlane -> halfPlane') - -> (Point 2 r -> Point 2 s) - -> Chain f halfPlane r -> Chain f halfPlane' s +bimap' :: Functor f + => (halfPlane -> halfPlane') + -> (Point 2 r -> Point 2 s) + -> Chain f halfPlane r -> Chain f halfPlane' s bimap' :: forall (f :: * -> *) halfPlane halfPlane' r s. Functor f => (halfPlane -> halfPlane') -> (Point 2 r -> Point 2 s) -> Chain f halfPlane r -> Chain f halfPlane' s -bimap' halfPlane -> halfPlane' -f Point 2 r -> Point 2 s -g (Chain Alternating f (Point 2 r) halfPlane -alt) = Alternating f (Point 2 s) halfPlane' -> Chain f halfPlane' s +bimap' halfPlane -> halfPlane' +f Point 2 r -> Point 2 s +g (Chain Alternating f (Point 2 r) halfPlane +alt) = Alternating f (Point 2 s) halfPlane' -> Chain f halfPlane' s forall (f :: * -> *) halfPlane r. Alternating f (Point 2 r) halfPlane -> Chain f halfPlane r Chain (Alternating f (Point 2 s) halfPlane' -> Chain f halfPlane' s) @@ -130,34 +130,34 @@ Bifunctor p => (a -> b) -> (c -> d) -> p a c -> p b d bimap Point 2 r -> Point 2 s -g halfPlane -> halfPlane' -f Alternating f (Point 2 r) halfPlane -alt +g halfPlane -> halfPlane' +f Alternating f (Point 2 r) halfPlane +alt -- | Evaluates the chain at the given x-coordinate. Returns the value (y-coordinate) y at -- the given x-coordinate x, and the halfplane containing the point (x,y) -evalChainAt :: (Num r, Ord r) - => r -> Chain Seq (LineEQ r :+ halfPlane) r -> (r :+ halfPlane) +evalChainAt :: (Num r, Ord r) + => r -> Chain Seq (LineEQ r :+ halfPlane) r -> (r :+ halfPlane) evalChainAt :: forall r halfPlane. (Num r, Ord r) => r -> Chain Seq (LineEQ r :+ halfPlane) r -> r :+ halfPlane -evalChainAt r -x Chain Seq (LineEQ r :+ halfPlane) r -chain = let chain' :: Chain Seq (LineEQ r :+ halfPlane) r -chain' = r +evalChainAt r +x Chain Seq (LineEQ r :+ halfPlane) r +chain = let chain' :: Chain Seq (LineEQ r :+ halfPlane) r +chain' = r -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r forall r halfPlane. Ord r => r -> Chain Seq halfPlane r -> Chain Seq halfPlane r clipLeft r -x Chain Seq (LineEQ r :+ halfPlane) r -chain - (LineEQ r -l :+ halfPlane -h) = Chain Seq (LineEQ r :+ halfPlane) r -chain'Chain Seq (LineEQ r :+ halfPlane) r +x Chain Seq (LineEQ r :+ halfPlane) r +chain + (LineEQ r +l :+ halfPlane +h) = Chain Seq (LineEQ r :+ halfPlane) r +chain'Chain Seq (LineEQ r :+ halfPlane) r -> Getting (LineEQ r :+ halfPlane) (Chain Seq (LineEQ r :+ halfPlane) r) @@ -209,14 +209,14 @@ in r -> LineEQ r -> r forall r. Num r => r -> LineEQ r -> r evalAt' r -x LineEQ r -l r -> halfPlane -> r :+ halfPlane +x LineEQ r +l r -> halfPlane -> r :+ halfPlane forall core extra. core -> extra -> core :+ extra :+ halfPlane -h +h -- | Get the leftmost line in the chain -leftMost :: Chain Seq (line :+ halfPlane) r -> line +leftMost :: Chain Seq (line :+ halfPlane) r -> line leftMost :: forall line halfPlane r. Chain Seq (line :+ halfPlane) r -> line leftMost = Getting line (Chain Seq (line :+ halfPlane) r) line -> Chain Seq (line :+ halfPlane) r -> line @@ -267,13 +267,13 @@ -------------------------------------------------------------------------------- -- | Given a value x, Clip the chain to the interval \((-\infty,x]\) -clipRight :: Ord r - => r -> Chain Seq halfPlane r -> Chain Seq halfPlane r +clipRight :: Ord r + => r -> Chain Seq halfPlane r -> Chain Seq halfPlane r clipRight :: forall r halfPlane. Ord r => r -> Chain Seq halfPlane r -> Chain Seq halfPlane r -clipRight r -maxX = ((Point 2 r, halfPlane) -> Bool) +clipRight r +maxX = ((Point 2 r, halfPlane) -> Bool) -> Chain Seq halfPlane r -> Chain Seq halfPlane r forall r halfPlane. ((Point 2 r, halfPlane) -> Bool) @@ -284,10 +284,10 @@ -> Chain Seq halfPlane r -> Chain Seq halfPlane r forall a b. (a -> b) -> a -> b -$ \(Point 2 r -v, halfPlane +$ \(Point 2 r +v, halfPlane _) -> Point 2 r -vPoint 2 r -> Getting r (Point 2 r) r -> r +vPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -297,16 +297,16 @@ xCoord r -> r -> Bool forall a. Ord a => a -> a -> Bool >= r -maxX +maxX -- | Given a value x, Clip the chain to the interval \([x,\infty)\) -clipLeft :: Ord r - => r -> Chain Seq halfPlane r -> Chain Seq halfPlane r +clipLeft :: Ord r + => r -> Chain Seq halfPlane r -> Chain Seq halfPlane r clipLeft :: forall r halfPlane. Ord r => r -> Chain Seq halfPlane r -> Chain Seq halfPlane r -clipLeft r -minX = ((Point 2 r, halfPlane) -> Bool) +clipLeft r +minX = ((Point 2 r, halfPlane) -> Bool) -> Chain Seq halfPlane r -> Chain Seq halfPlane r forall r halfPlane. ((Point 2 r, halfPlane) -> Bool) @@ -317,10 +317,10 @@ -> Chain Seq halfPlane r -> Chain Seq halfPlane r forall a b. (a -> b) -> a -> b -$ \(Point 2 r -v, halfPlane +$ \(Point 2 r +v, halfPlane _) -> Point 2 r -vPoint 2 r -> Getting r (Point 2 r) r -> r +vPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -330,16 +330,16 @@ xCoord r -> r -> Bool forall a. Ord a => a -> a -> Bool <= r -minX +minX -- | Clip on the right by a line -_clipRightLine :: (Ord r, Num r) - => LineEQ r -> Chain Seq halfPlane r -> Chain Seq halfPlane r +_clipRightLine :: (Ord r, Num r) + => LineEQ r -> Chain Seq halfPlane r -> Chain Seq halfPlane r _clipRightLine :: forall r halfPlane. (Ord r, Num r) => LineEQ r -> Chain Seq halfPlane r -> Chain Seq halfPlane r -_clipRightLine LineEQ r -right = ((Point 2 r, halfPlane) -> Bool) +_clipRightLine LineEQ r +right = ((Point 2 r, halfPlane) -> Bool) -> Chain Seq halfPlane r -> Chain Seq halfPlane r forall r halfPlane. ((Point 2 r, halfPlane) -> Bool) @@ -347,16 +347,16 @@ clipRightWhen (LineEQ r -> (Point 2 r, halfPlane) -> Bool forall r a. (Ord r, Num r) => LineEQ r -> (Point 2 r, a) -> Bool _above LineEQ r -right) +right) -- | Clip the left by a line -_clipLeftLine :: (Ord r, Num r) - => LineEQ r -> Chain Seq halfPlane r -> Chain Seq halfPlane r +_clipLeftLine :: (Ord r, Num r) + => LineEQ r -> Chain Seq halfPlane r -> Chain Seq halfPlane r _clipLeftLine :: forall r halfPlane. (Ord r, Num r) => LineEQ r -> Chain Seq halfPlane r -> Chain Seq halfPlane r -_clipLeftLine LineEQ r -left = ((Point 2 r, halfPlane) -> Bool) +_clipLeftLine LineEQ r +left = ((Point 2 r, halfPlane) -> Bool) -> Chain Seq halfPlane r -> Chain Seq halfPlane r forall r halfPlane. ((Point 2 r, halfPlane) -> Bool) @@ -364,16 +364,16 @@ clipLeftWhen (LineEQ r -> (Point 2 r, halfPlane) -> Bool forall r a. (Ord r, Num r) => LineEQ r -> (Point 2 r, a) -> Bool _above LineEQ r -left) +left) -- | Test if the given (Point 2 r) lies above the line -_above :: (Ord r, Num r) => LineEQ r -> (Point 2 r,a) -> Bool +_above :: (Ord r, Num r) => LineEQ r -> (Point 2 r,a) -> Bool _above :: forall r a. (Ord r, Num r) => LineEQ r -> (Point 2 r, a) -> Bool -_above LineEQ r -line (Point 2 r -v,a +_above LineEQ r +line (Point 2 r +v,a _) = (Point 2 r -vPoint 2 r -> Getting r (Point 2 r) r -> r +vPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -385,7 +385,7 @@ >= r -> LineEQ r -> r forall r. Num r => r -> LineEQ r -> r evalAt' (Point 2 r -vPoint 2 r -> Getting r (Point 2 r) r -> r +vPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -393,16 +393,16 @@ IndexedLens' Int point r IndexedLens' Int (Point 2 r) r xCoord) LineEQ r -line +line -- | Clip the chain on the right -clipRightWhen :: ((Point 2 r, halfPlane) -> Bool) - -> Chain Seq halfPlane r -> Chain Seq halfPlane r +clipRightWhen :: ((Point 2 r, halfPlane) -> Bool) + -> Chain Seq halfPlane r -> Chain Seq halfPlane r clipRightWhen :: forall r halfPlane. ((Point 2 r, halfPlane) -> Bool) -> Chain Seq halfPlane r -> Chain Seq halfPlane r -clipRightWhen (Point 2 r, halfPlane) -> Bool -p = ASetter +clipRightWhen (Point 2 r, halfPlane) -> Bool +p = ASetter (Chain Seq halfPlane r) (Chain Seq halfPlane r) (Alternating Seq (Point 2 r) halfPlane) @@ -432,14 +432,14 @@ -> Chain Seq halfPlane r forall a b. (a -> b) -> a -> b $ - \(Alternating halfPlane -h0 Seq (Point 2 r, halfPlane) -hs) -> halfPlane + \(Alternating halfPlane +h0 Seq (Point 2 r, halfPlane) +hs) -> halfPlane -> Seq (Point 2 r, halfPlane) -> Alternating Seq (Point 2 r) halfPlane forall (f :: * -> *) sep a. a -> f (sep, a) -> Alternating f sep a Alternating halfPlane -h0 (Seq (Point 2 r, halfPlane) +h0 (Seq (Point 2 r, halfPlane) -> Alternating Seq (Point 2 r) halfPlane) -> Seq (Point 2 r, halfPlane) -> Alternating Seq (Point 2 r) halfPlane @@ -448,17 +448,17 @@ -> Seq (Point 2 r, halfPlane) -> Seq (Point 2 r, halfPlane) forall a. (a -> Bool) -> Seq a -> Seq a Seq.dropWhileR (Point 2 r, halfPlane) -> Bool -p Seq (Point 2 r, halfPlane) -hs +p Seq (Point 2 r, halfPlane) +hs -- | Clip the chain on the left -clipLeftWhen :: ((Point 2 r, halfPlane) -> Bool) - -> Chain Seq halfPlane r -> Chain Seq halfPlane r +clipLeftWhen :: ((Point 2 r, halfPlane) -> Bool) + -> Chain Seq halfPlane r -> Chain Seq halfPlane r clipLeftWhen :: forall r halfPlane. ((Point 2 r, halfPlane) -> Bool) -> Chain Seq halfPlane r -> Chain Seq halfPlane r -clipLeftWhen (Point 2 r, halfPlane) -> Bool -p = ASetter +clipLeftWhen (Point 2 r, halfPlane) -> Bool +p = ASetter (Chain Seq halfPlane r) (Chain Seq halfPlane r) (Alternating Seq (Point 2 r) halfPlane) @@ -488,31 +488,31 @@ -> Chain Seq halfPlane r forall a b. (a -> b) -> a -> b $ - \alt :: Alternating Seq (Point 2 r) halfPlane -alt@(Alternating halfPlane -_ Seq (Point 2 r, halfPlane) -hs) -> case ((Point 2 r, halfPlane) -> Bool) + \alt :: Alternating Seq (Point 2 r) halfPlane +alt@(Alternating halfPlane +_ Seq (Point 2 r, halfPlane) +hs) -> case ((Point 2 r, halfPlane) -> Bool) -> Seq (Point 2 r, halfPlane) -> (Seq (Point 2 r, halfPlane), Seq (Point 2 r, halfPlane)) forall a. (a -> Bool) -> Seq a -> (Seq a, Seq a) Seq.spanl (Point 2 r, halfPlane) -> Bool -p Seq (Point 2 r, halfPlane) -hs of +p Seq (Point 2 r, halfPlane) +hs of (Seq (Point 2 r, halfPlane) Empty, Seq (Point 2 r, halfPlane) _) -> Alternating Seq (Point 2 r) halfPlane -alt +alt (Seq (Point 2 r, halfPlane) _ :|> (Point 2 r -_,halfPlane -h0'), Seq (Point 2 r, halfPlane) -kept) -> halfPlane +_,halfPlane +h0'), Seq (Point 2 r, halfPlane) +kept) -> halfPlane -> Seq (Point 2 r, halfPlane) -> Alternating Seq (Point 2 r) halfPlane forall (f :: * -> *) sep a. a -> f (sep, a) -> Alternating f sep a Alternating halfPlane -h0' Seq (Point 2 r, halfPlane) -kept +h0' Seq (Point 2 r, halfPlane) +kept -------------------------------------------------------------------------------- \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.HalfPlane.CommonIntersection.html b/haddocks/hgeometry/src/HGeometry.HalfPlane.CommonIntersection.html index 7102387f6..35d88c7f6 100644 --- a/haddocks/hgeometry/src/HGeometry.HalfPlane.CommonIntersection.html +++ b/haddocks/hgeometry/src/HGeometry.HalfPlane.CommonIntersection.html @@ -38,19 +38,19 @@ -------------------------------------------------------------------------------- -- | Common intersection of a bunch of halfplanes -data CommonIntersection halfPlane r = +data CommonIntersection halfPlane r = EmptyIntersection - | SingletonPoint (Point 2 r) (Vector 3 halfPlane) + | SingletonPoint (Point 2 r) (Vector 3 halfPlane) -- ^ Common intersection is a singleton point, defined by the three given halfplanes - | InSubLine (VerticalOrLineEQ r) (Vector 2 halfPlane) (SubLine halfPlane r) + | InSubLine (VerticalOrLineEQ r) (Vector 2 halfPlane) (SubLine halfPlane r) -- ^ The two halfPlanes that define the line, and the other halfplanes furthe -- restricitng the line. - | Slab halfPlane halfPlane + | Slab halfPlane halfPlane -- ^ two parallel halfPlanes l and u that form a slab; - | BoundedRegion (ConvexPolygon (Point 2 r :+ halfPlane)) - | UnboundedRegion (Chain Seq halfPlane r) + | BoundedRegion (ConvexPolygon (Point 2 r :+ halfPlane)) + | UnboundedRegion (Chain Seq halfPlane r) -- ^ each vertex stores the interior halfplane of the CCW-edge it is incident to. - deriving (Int -> CommonIntersection halfPlane r -> ShowS + deriving (Int -> CommonIntersection halfPlane r -> ShowS [CommonIntersection halfPlane r] -> ShowS CommonIntersection halfPlane r -> String (Int -> CommonIntersection halfPlane r -> ShowS) @@ -80,7 +80,7 @@ (Show r, Show halfPlane) => [CommonIntersection halfPlane r] -> ShowS showList :: [CommonIntersection halfPlane r] -> ShowS -Show,CommonIntersection halfPlane r +Show,CommonIntersection halfPlane r -> CommonIntersection halfPlane r -> Bool (CommonIntersection halfPlane r -> CommonIntersection halfPlane r -> Bool) @@ -107,11 +107,11 @@ Eq) -- | Part of the line -data SubLine halfPlane r = EntireLine - | InHalfLine (HalfLine (Point 2 r)) halfPlane -- ^ the third halfPlane - | InSegment (ClosedLineSegment (Point 2 r)) halfPlane halfPlane +data SubLine halfPlane r = EntireLine + | InHalfLine (HalfLine (Point 2 r)) halfPlane -- ^ the third halfPlane + | InSegment (ClosedLineSegment (Point 2 r)) halfPlane halfPlane -- ^ the remaining two halfplanes - deriving (Int -> SubLine halfPlane r -> ShowS + deriving (Int -> SubLine halfPlane r -> ShowS [SubLine halfPlane r] -> ShowS SubLine halfPlane r -> String (Int -> SubLine halfPlane r -> ShowS) @@ -141,7 +141,7 @@ (Show r, Show halfPlane) => [SubLine halfPlane r] -> ShowS showList :: [SubLine halfPlane r] -> ShowS -Show,SubLine halfPlane r -> SubLine halfPlane r -> Bool +Show,SubLine halfPlane r -> SubLine halfPlane r -> Bool (SubLine halfPlane r -> SubLine halfPlane r -> Bool) -> (SubLine halfPlane r -> SubLine halfPlane r -> Bool) -> Eq (SubLine halfPlane r) @@ -164,20 +164,20 @@ -- | Computes the common intersection of a \(n\) halfplanes. -- -- running time: \(O(n\log n)\) -commonIntersection :: forall f halfPlane r. - ( Foldable1 f, Functor f - , HalfPlane_ halfPlane r - , Fractional r, Ord r +commonIntersection :: forall f halfPlane r. + ( Foldable1 f, Functor f + , HalfPlane_ halfPlane r + , Fractional r, Ord r - , Show halfPlane, Show r + , Show halfPlane, Show r ) - => f halfPlane -> CommonIntersection halfPlane r + => f halfPlane -> CommonIntersection halfPlane r commonIntersection :: forall (f :: * -> *) halfPlane r. (Foldable1 f, Functor f, HalfPlane_ halfPlane r, Fractional r, Ord r, Show halfPlane, Show r) => f halfPlane -> CommonIntersection halfPlane r -commonIntersection f halfPlane -hs0 = case (Verticals halfPlane r -> These2 (r :+ halfPlane)) +commonIntersection f halfPlane +hs0 = case (Verticals halfPlane r -> These2 (r :+ halfPlane)) -> (NonVerticals halfPlane r -> These2 (Chain Seq (LineEQ r :+ halfPlane) r)) -> These (Verticals halfPlane r) (NonVerticals halfPlane r) @@ -215,14 +215,14 @@ f halfPlane -> These (Verticals halfPlane r) (NonVerticals halfPlane r) partitionhalfPlanes f halfPlane -hs0 of +hs0 of -- we only have vertical halfpalnes planes - This These2 (r :+ halfPlane) -verticals -> case These2 (r :+ halfPlane) -verticals of + This These2 (r :+ halfPlane) +verticals -> case These2 (r :+ halfPlane) +verticals of Negatives (r -_ :+ halfPlane -l) -> Chain Seq halfPlane r -> CommonIntersection halfPlane r +_ :+ halfPlane +l) -> Chain Seq halfPlane r -> CommonIntersection halfPlane r forall halfPlane r. Chain Seq halfPlane r -> CommonIntersection halfPlane r UnboundedRegion (Chain Seq halfPlane r -> CommonIntersection halfPlane r) @@ -236,12 +236,12 @@ -> Alternating Seq (Point 2 r) halfPlane forall (f :: * -> *) sep a. a -> f (sep, a) -> Alternating f sep a Alternating halfPlane -l Seq (Point 2 r, halfPlane) +l Seq (Point 2 r, halfPlane) forall a. Monoid a => a mempty) Positives (r -_ :+ halfPlane -u) -> Chain Seq halfPlane r -> CommonIntersection halfPlane r +_ :+ halfPlane +u) -> Chain Seq halfPlane r -> CommonIntersection halfPlane r forall halfPlane r. Chain Seq halfPlane r -> CommonIntersection halfPlane r UnboundedRegion (Chain Seq halfPlane r -> CommonIntersection halfPlane r) @@ -255,18 +255,18 @@ -> Alternating Seq (Point 2 r) halfPlane forall (f :: * -> *) sep a. a -> f (sep, a) -> Alternating f sep a Alternating halfPlane -u Seq (Point 2 r, halfPlane) +u Seq (Point 2 r, halfPlane) forall a. Monoid a => a mempty) - BothSigns (r -x :+ halfPlane -l) (r -x' :+ halfPlane -u) -> case r -x r -> r -> Ordering + BothSigns (r +x :+ halfPlane +l) (r +x' :+ halfPlane +u) -> case r +x r -> r -> Ordering forall a. Ord a => a -> a -> Ordering `compare` r -x' of +x' of Ordering LT -> CommonIntersection halfPlane r forall halfPlane r. CommonIntersection halfPlane r @@ -284,11 +284,11 @@ InSubLine (r -> VerticalOrLineEQ r forall r. r -> VerticalOrLineEQ r VerticalLineThrough r -x) (halfPlane -> halfPlane -> Vector 2 halfPlane +x) (halfPlane -> halfPlane -> Vector 2 halfPlane forall r. r -> r -> Vector 2 r Vector2 halfPlane -l halfPlane -u) SubLine halfPlane r +l halfPlane +u) SubLine halfPlane r forall halfPlane r. SubLine halfPlane r EntireLine Ordering @@ -296,83 +296,83 @@ forall halfPlane r. halfPlane -> halfPlane -> CommonIntersection halfPlane r Slab halfPlane -l halfPlane -u +l halfPlane +u -- we only have non-vertical halfpalnes planes - That These2 (Chain Seq (LineEQ r :+ halfPlane) r) -nonVerticals -> These2 (Chain Seq (LineEQ r :+ halfPlane) r) + That These2 (Chain Seq (LineEQ r :+ halfPlane) r) +nonVerticals -> These2 (Chain Seq (LineEQ r :+ halfPlane) r) -> CommonIntersection halfPlane r -withNonVerticals These2 (Chain Seq (LineEQ r :+ halfPlane) r) -nonVerticals +withNonVerticals These2 (Chain Seq (LineEQ r :+ halfPlane) r) +nonVerticals -- we have both vertical, and non-vertical halfPlanes - These These2 (r :+ halfPlane) -verticals These2 (Chain Seq (LineEQ r :+ halfPlane) r) -nonVerticals -> case These2 (Chain Seq (LineEQ r :+ halfPlane) r) -nonVerticals of + These These2 (r :+ halfPlane) +verticals These2 (Chain Seq (LineEQ r :+ halfPlane) r) +nonVerticals -> case These2 (Chain Seq (LineEQ r :+ halfPlane) r) +nonVerticals of -- all non-vertical halfplanes are negative halfplanes though. So we can - Negatives Chain Seq (LineEQ r :+ halfPlane) r -upperBoundary -> Chain Seq (LineEQ r :+ halfPlane) r -upperBoundary Chain Seq (LineEQ r :+ halfPlane) r + Negatives Chain Seq (LineEQ r :+ halfPlane) r +upperBoundary -> Chain Seq (LineEQ r :+ halfPlane) r +upperBoundary Chain Seq (LineEQ r :+ halfPlane) r -> These2 (r :+ halfPlane) -> CommonIntersection halfPlane r forall r halfPlane. (Ord r, Num r, HalfPlane_ halfPlane r) => Chain Seq (LineEQ r :+ halfPlane) r -> These2 (r :+ halfPlane) -> CommonIntersection halfPlane r `clipAndPushBy` These2 (r :+ halfPlane) -verticals +verticals -- all non-vertical halfplanes are postiive halfplanes though - Positives Chain Seq (LineEQ r :+ halfPlane) r -lowerBoundary -> Chain Seq (LineEQ r :+ halfPlane) r -lowerBoundary Chain Seq (LineEQ r :+ halfPlane) r + Positives Chain Seq (LineEQ r :+ halfPlane) r +lowerBoundary -> Chain Seq (LineEQ r :+ halfPlane) r +lowerBoundary Chain Seq (LineEQ r :+ halfPlane) r -> These2 (r :+ halfPlane) -> CommonIntersection halfPlane r forall r halfPlane. (Ord r, Num r, HalfPlane_ halfPlane r) => Chain Seq (LineEQ r :+ halfPlane) r -> These2 (r :+ halfPlane) -> CommonIntersection halfPlane r `clipAndPushBy` These2 (r :+ halfPlane) -verticals +verticals -- We have both positive and negative non-vertical halfplanes. So compute their -- common intersection, and then clip the result to the vertical slab determined by -- the verticals - BothSigns Chain Seq (LineEQ r :+ halfPlane) r -_upperBoundary Chain Seq (LineEQ r :+ halfPlane) r -_lowerBoundary -> + BothSigns Chain Seq (LineEQ r :+ halfPlane) r +_upperBoundary Chain Seq (LineEQ r :+ halfPlane) r +_lowerBoundary -> CommonIntersection halfPlane r forall a. HasCallStack => a undefined -- TODO: somehow combine them, and clip -- withNonVerticals nonVerticals `clipBy` verticals where - withNonVerticals :: These2 (Chain Seq (LineEQ r :+ halfPlane) r) - -> CommonIntersection halfPlane r - withNonVerticals :: These2 (Chain Seq (LineEQ r :+ halfPlane) r) + withNonVerticals :: These2 (Chain Seq (LineEQ r :+ halfPlane) r) + -> CommonIntersection halfPlane r + withNonVerticals :: These2 (Chain Seq (LineEQ r :+ halfPlane) r) -> CommonIntersection halfPlane r -withNonVerticals These2 (Chain Seq (LineEQ r :+ halfPlane) r) -nonVerticals = case These2 (Chain Seq (LineEQ r :+ halfPlane) r) -nonVerticals of +withNonVerticals These2 (Chain Seq (LineEQ r :+ halfPlane) r) +nonVerticals = case These2 (Chain Seq (LineEQ r :+ halfPlane) r) +nonVerticals of -- we only have halfplanes with negative signs - Negatives Chain Seq (LineEQ r :+ halfPlane) r -upperBoundary -> Chain Seq (LineEQ r :+ halfPlane) r + Negatives Chain Seq (LineEQ r :+ halfPlane) r +upperBoundary -> Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r forall core halfPlane r. Chain Seq (core :+ halfPlane) r -> CommonIntersection halfPlane r unboundedRegion Chain Seq (LineEQ r :+ halfPlane) r -upperBoundary +upperBoundary -- we only have halfplanes with positives signs - Positives Chain Seq (LineEQ r :+ halfPlane) r -lowerBoundary -> Chain Seq (LineEQ r :+ halfPlane) r + Positives Chain Seq (LineEQ r :+ halfPlane) r +lowerBoundary -> Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r forall core halfPlane r. Chain Seq (core :+ halfPlane) r -> CommonIntersection halfPlane r unboundedRegion Chain Seq (LineEQ r :+ halfPlane) r -lowerBoundary +lowerBoundary -- we have both positive and negative halfplanes - BothSigns Chain Seq (LineEQ r :+ halfPlane) r -_upperBoundary Chain Seq (LineEQ r :+ halfPlane) r -_lowerBoundary -> CommonIntersection halfPlane r + BothSigns Chain Seq (LineEQ r :+ halfPlane) r +_upperBoundary Chain Seq (LineEQ r :+ halfPlane) r +_lowerBoundary -> CommonIntersection halfPlane r forall a. HasCallStack => a undefined -- TODO: somehow combine them. @@ -386,7 +386,7 @@ -- | Helper function to construct an unbounded region -unboundedRegion :: Chain Seq (core :+ halfPlane) r -> CommonIntersection halfPlane r +unboundedRegion :: Chain Seq (core :+ halfPlane) r -> CommonIntersection halfPlane r unboundedRegion :: forall core halfPlane r. Chain Seq (core :+ halfPlane) r -> CommonIntersection halfPlane r unboundedRegion = Chain Seq halfPlane r -> CommonIntersection halfPlane r @@ -414,18 +414,18 @@ -- | clip the chain by the given vertical halfplanes, and add the clipping halfPlanes to -- the chains. -clipAndPushBy :: (Ord r, Num r, HalfPlane_ halfPlane r) - => Chain Seq (LineEQ r :+ halfPlane) r - -> These2 (r :+ halfPlane) - -> CommonIntersection halfPlane r +clipAndPushBy :: (Ord r, Num r, HalfPlane_ halfPlane r) + => Chain Seq (LineEQ r :+ halfPlane) r + -> These2 (r :+ halfPlane) + -> CommonIntersection halfPlane r clipAndPushBy :: forall r halfPlane. (Ord r, Num r, HalfPlane_ halfPlane r) => Chain Seq (LineEQ r :+ halfPlane) r -> These2 (r :+ halfPlane) -> CommonIntersection halfPlane r -clipAndPushBy Chain Seq (LineEQ r :+ halfPlane) r -inters = \case - Negatives r :+ halfPlane -hl -> Chain Seq (LineEQ r :+ halfPlane) r +clipAndPushBy Chain Seq (LineEQ r :+ halfPlane) r +inters = \case + Negatives r :+ halfPlane +hl -> Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r forall core halfPlane r. Chain Seq (core :+ halfPlane) r -> CommonIntersection halfPlane r @@ -439,16 +439,16 @@ . (r :+ halfPlane) -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r -clipRight' r :+ halfPlane -hl (Chain Seq (LineEQ r :+ halfPlane) r +clipRight' r :+ halfPlane +hl (Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r) -> Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r forall a b. (a -> b) -> a -> b $ Chain Seq (LineEQ r :+ halfPlane) r -inters - Positives r :+ halfPlane -hu -> Chain Seq (LineEQ r :+ halfPlane) r +inters + Positives r :+ halfPlane +hu -> Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r forall core halfPlane r. Chain Seq (core :+ halfPlane) r -> CommonIntersection halfPlane r @@ -462,18 +462,18 @@ . (r :+ halfPlane) -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r -clipLeft' r :+ halfPlane -hu (Chain Seq (LineEQ r :+ halfPlane) r +clipLeft' r :+ halfPlane +hu (Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r) -> Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r forall a b. (a -> b) -> a -> b $ Chain Seq (LineEQ r :+ halfPlane) r -inters - BothSigns r :+ halfPlane -hl r :+ halfPlane -hu -> case (r :+ halfPlane -hl(r :+ halfPlane) -> Getting r (r :+ halfPlane) r -> r +inters + BothSigns r :+ halfPlane +hl r :+ halfPlane +hu -> case (r :+ halfPlane +hl(r :+ halfPlane) -> Getting r (r :+ halfPlane) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (r :+ halfPlane) r forall core extra core' (f :: * -> *). @@ -482,7 +482,7 @@ core) r -> r -> Ordering forall a. Ord a => a -> a -> Ordering `compare` (r :+ halfPlane -hu(r :+ halfPlane) -> Getting r (r :+ halfPlane) r -> r +hu(r :+ halfPlane) -> Getting r (r :+ halfPlane) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (r :+ halfPlane) r forall core extra core' (f :: * -> *). @@ -494,20 +494,20 @@ forall halfPlane r. CommonIntersection halfPlane r EmptyIntersection Ordering -EQ -> let x :: r -x = r :+ halfPlane -hl(r :+ halfPlane) -> Getting r (r :+ halfPlane) r -> r +EQ -> let x :: r +x = r :+ halfPlane +hl(r :+ halfPlane) -> Getting r (r :+ halfPlane) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (r :+ halfPlane) r forall core extra core' (f :: * -> *). Functor f => (core -> f core') -> (core :+ extra) -> f (core' :+ extra) core - verticals :: Vector 2 halfPlane -verticals = halfPlane -> halfPlane -> Vector 2 halfPlane + verticals :: Vector 2 halfPlane +verticals = halfPlane -> halfPlane -> Vector 2 halfPlane forall r. r -> r -> Vector 2 r Vector2 (r :+ halfPlane -hl(r :+ halfPlane) +hl(r :+ halfPlane) -> Getting halfPlane (r :+ halfPlane) halfPlane -> halfPlane forall s a. s -> Getting a s a -> a ^.Getting halfPlane (r :+ halfPlane) halfPlane @@ -515,7 +515,7 @@ Functor f => (extra -> f extra') -> (core :+ extra) -> f (core :+ extra') extra) (r :+ halfPlane -hu(r :+ halfPlane) +hu(r :+ halfPlane) -> Getting halfPlane (r :+ halfPlane) halfPlane -> halfPlane forall s a. s -> Getting a s a -> a ^.Getting halfPlane (r :+ halfPlane) halfPlane @@ -524,8 +524,8 @@ (extra -> f extra') -> (core :+ extra) -> f (core :+ extra') extra) -- the two vertical halfplanes defining x - theHalfLine :: HalfLine (Point 2 r) -theHalfLine = Point 2 r + theHalfLine :: HalfLine (Point 2 r) +theHalfLine = Point 2 r -> Vector (Dimension (Point 2 r)) (NumType (Point 2 r)) -> HalfLine (Point 2 r) forall point. @@ -533,25 +533,25 @@ HalfLine (r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -x r -y) (r -> r -> Vector 2 r +x r +y) (r -> r -> Vector 2 r forall r. r -> r -> Vector 2 r Vector2 r 0 r -vy) - (r -y :+ halfPlane -h) = r -> Chain Seq (LineEQ r :+ halfPlane) r -> r :+ halfPlane +vy) + (r +y :+ halfPlane +h) = r -> Chain Seq (LineEQ r :+ halfPlane) r -> r :+ halfPlane forall r halfPlane. (Num r, Ord r) => r -> Chain Seq (LineEQ r :+ halfPlane) r -> r :+ halfPlane evalChainAt r -x Chain Seq (LineEQ r :+ halfPlane) r -inters +x Chain Seq (LineEQ r :+ halfPlane) r +inters -- the non-vertical halfplane bounding the intersection - vy :: r -vy = case halfPlane -hhalfPlane -> Getting Sign halfPlane Sign -> Sign + vy :: r +vy = case halfPlane +hhalfPlane -> Getting Sign halfPlane Sign -> Sign forall s a. s -> Getting a s a -> a ^.Getting Sign halfPlane Sign forall halfSpace (d :: Nat) r. @@ -577,13 +577,13 @@ InSubLine (r -> VerticalOrLineEQ r forall r. r -> VerticalOrLineEQ r VerticalLineThrough r -x) Vector 2 halfPlane -verticals (HalfLine (Point 2 r) -> halfPlane -> SubLine halfPlane r +x) Vector 2 halfPlane +verticals (HalfLine (Point 2 r) -> halfPlane -> SubLine halfPlane r forall halfPlane r. HalfLine (Point 2 r) -> halfPlane -> SubLine halfPlane r InHalfLine HalfLine (Point 2 r) -theHalfLine halfPlane -h) +theHalfLine halfPlane +h) Ordering GT -> Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r @@ -599,8 +599,8 @@ . (r :+ halfPlane) -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r -clipLeft' r :+ halfPlane -hl (Chain Seq (LineEQ r :+ halfPlane) r +clipLeft' r :+ halfPlane +hl (Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r) -> (Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r) @@ -610,43 +610,43 @@ . (r :+ halfPlane) -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r -clipRight' r :+ halfPlane -hu (Chain Seq (LineEQ r :+ halfPlane) r +clipRight' r :+ halfPlane +hu (Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r) -> Chain Seq (LineEQ r :+ halfPlane) r -> CommonIntersection halfPlane r forall a b. (a -> b) -> a -> b $ Chain Seq (LineEQ r :+ halfPlane) r -inters +inters where - dummy :: LineEQ r -dummy = r -> r -> LineEQ r + dummy :: LineEQ r +dummy = r -> r -> LineEQ r forall r. r -> r -> LineEQ r LineEQ r 0 r 0 - clipLeft' :: (r :+ halfPlane) + clipLeft' :: (r :+ halfPlane) -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r -clipLeft' (r -x' :+ halfPlane -u) Chain Seq (LineEQ r :+ halfPlane) r -inters' = let env :: Chain Seq (LineEQ r :+ halfPlane) r -env = r +clipLeft' (r +x' :+ halfPlane +u) Chain Seq (LineEQ r :+ halfPlane) r +inters' = let env :: Chain Seq (LineEQ r :+ halfPlane) r +env = r -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r forall r halfPlane. Ord r => r -> Chain Seq halfPlane r -> Chain Seq halfPlane r clipLeft r -x' Chain Seq (LineEQ r :+ halfPlane) r -inters' - cons' :: (LineEQ r :+ halfPlane) +x' Chain Seq (LineEQ r :+ halfPlane) r +inters' + cons' :: (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -cons' = ((LineEQ r :+ halfPlane) -> (LineEQ r :+ halfPlane) -> Point 2 r) +cons' = ((LineEQ r :+ halfPlane) -> (LineEQ r :+ halfPlane) -> Point 2 r) -> (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) @@ -670,9 +670,9 @@ Num r => r -> (LineEQ r :+ extra) -> extra' -> Point 2 r intersectVertical r -x') +x') in Chain Seq (LineEQ r :+ halfPlane) r -envChain Seq (LineEQ r :+ halfPlane) r +envChain Seq (LineEQ r :+ halfPlane) r -> (Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r) -> Chain Seq (LineEQ r :+ halfPlane) r @@ -699,32 +699,32 @@ %~ (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -cons' (LineEQ r -dummy LineEQ r -> halfPlane -> LineEQ r :+ halfPlane +cons' (LineEQ r +dummy LineEQ r -> halfPlane -> LineEQ r :+ halfPlane forall core extra. core -> extra -> core :+ extra :+ halfPlane -u) +u) - clipRight' :: (r :+ halfPlane) + clipRight' :: (r :+ halfPlane) -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r -clipRight' (r -x :+ halfPlane -l) Chain Seq (LineEQ r :+ halfPlane) r -inters' = let env :: Chain Seq (LineEQ r :+ halfPlane) r -env = r +clipRight' (r +x :+ halfPlane +l) Chain Seq (LineEQ r :+ halfPlane) r +inters' = let env :: Chain Seq (LineEQ r :+ halfPlane) r +env = r -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r forall r halfPlane. Ord r => r -> Chain Seq halfPlane r -> Chain Seq halfPlane r clipRight r -x Chain Seq (LineEQ r :+ halfPlane) r -inters' - snoc' :: (LineEQ r :+ halfPlane) +x Chain Seq (LineEQ r :+ halfPlane) r +inters' + snoc' :: (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -snoc' = (Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) +snoc' = (Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -> (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane)) -> (LineEQ r :+ halfPlane) @@ -744,9 +744,9 @@ Num r => r -> (LineEQ r :+ extra) -> extra' -> Point 2 r intersectVertical r -x)) +x)) in Chain Seq (LineEQ r :+ halfPlane) r -envChain Seq (LineEQ r :+ halfPlane) r +envChain Seq (LineEQ r :+ halfPlane) r -> (Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r) -> Chain Seq (LineEQ r :+ halfPlane) r @@ -773,36 +773,36 @@ %~ (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -> Alternating Seq (Point 2 r) (LineEQ r :+ halfPlane) -snoc' (LineEQ r -dummy LineEQ r -> halfPlane -> LineEQ r :+ halfPlane +snoc' (LineEQ r +dummy LineEQ r -> halfPlane -> LineEQ r :+ halfPlane forall core extra. core -> extra -> core :+ extra :+ halfPlane -l) +l) -data LeftIntersection halfPlane r = +data LeftIntersection halfPlane r = LowerAboveUpper - | Intersection (Point 2 r) (Chain Seq (LineEQ r :+ halfPlane) r) - (Chain Seq (LineEQ r :+ halfPlane) r) - | NoIntersection (Chain Seq (LineEQ r :+ halfPlane) r) - (Chain Seq (LineEQ r :+ halfPlane) r) + | Intersection (Point 2 r) (Chain Seq (LineEQ r :+ halfPlane) r) + (Chain Seq (LineEQ r :+ halfPlane) r) + | NoIntersection (Chain Seq (LineEQ r :+ halfPlane) r) + (Chain Seq (LineEQ r :+ halfPlane) r) -- | Given the lower chain and the upper chain, computes the first intersection as seen from the left; i.e. the first point where the remainder of the lower chain indeed lies below the remainder of the upper chain -leftIntersection :: (Ord r, Fractional r +leftIntersection :: (Ord r, Fractional r ) - => Chain Seq (LineEQ r :+ halfPlane) r - -> Chain Seq (LineEQ r :+ halfPlane) r - -> LeftIntersection halfPlane r + => Chain Seq (LineEQ r :+ halfPlane) r + -> Chain Seq (LineEQ r :+ halfPlane) r + -> LeftIntersection halfPlane r leftIntersection :: forall r halfPlane. (Ord r, Fractional r) => Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r -> LeftIntersection halfPlane r -leftIntersection Chain Seq (LineEQ r :+ halfPlane) r -lower0 Chain Seq (LineEQ r :+ halfPlane) r -upper0 = case ((r, Chain Seq (LineEQ r :+ halfPlane) r, +leftIntersection Chain Seq (LineEQ r :+ halfPlane) r +lower0 Chain Seq (LineEQ r :+ halfPlane) r +upper0 = case ((r, Chain Seq (LineEQ r :+ halfPlane) r, Chain Seq (LineEQ r :+ halfPlane) r) -> Bool) -> [(r, Chain Seq (LineEQ r :+ halfPlane) r, @@ -818,7 +818,7 @@ (a, Chain Seq (LineEQ a :+ halfPlane) r, Chain Seq (LineEQ a :+ halfPlane) r) -> Bool -lowerAboveUpper ([(r, Chain Seq (LineEQ r :+ halfPlane) r, +lowerAboveUpper ([(r, Chain Seq (LineEQ r :+ halfPlane) r, Chain Seq (LineEQ r :+ halfPlane) r)] -> [(r, Chain Seq (LineEQ r :+ halfPlane) r, Chain Seq (LineEQ r :+ halfPlane) r)]) @@ -837,25 +837,25 @@ -> Chain Seq halfPlane r -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] zipLR Chain Seq (LineEQ r :+ halfPlane) r -lower0 Chain Seq (LineEQ r :+ halfPlane) r -upper0 of +lower0 Chain Seq (LineEQ r :+ halfPlane) r +upper0 of [] -> LeftIntersection halfPlane r forall halfPlane r. LeftIntersection halfPlane r LowerAboveUpper (r -_, Chain Seq (LineEQ r :+ halfPlane) r -lower, Chain Seq (LineEQ r :+ halfPlane) r -upper) : [(r, Chain Seq (LineEQ r :+ halfPlane) r, +_, Chain Seq (LineEQ r :+ halfPlane) r +lower, Chain Seq (LineEQ r :+ halfPlane) r +upper) : [(r, Chain Seq (LineEQ r :+ halfPlane) r, Chain Seq (LineEQ r :+ halfPlane) r)] _ -> case Chain Seq (LineEQ r :+ halfPlane) r -> LineEQ r forall line halfPlane r. Chain Seq (line :+ halfPlane) r -> line leftMost Chain Seq (LineEQ r :+ halfPlane) r -lower LineEQ r -> LineEQ r -> Intersection (LineEQ r) (LineEQ r) +lower LineEQ r -> LineEQ r -> Intersection (LineEQ r) (LineEQ r) forall g h. IsIntersectableWith g h => g -> h -> Intersection g h `intersect` Chain Seq (LineEQ r :+ halfPlane) r -> LineEQ r forall line halfPlane r. Chain Seq (line :+ halfPlane) r -> line leftMost Chain Seq (LineEQ r :+ halfPlane) r -upper of +upper of Maybe (LineLineIntersectionG r (LineEQ r)) Intersection (LineEQ r) (LineEQ r) Nothing -> Chain Seq (LineEQ r :+ halfPlane) r @@ -866,10 +866,10 @@ -> Chain Seq (LineEQ r :+ halfPlane) r -> LeftIntersection halfPlane r NoIntersection Chain Seq (LineEQ r :+ halfPlane) r -lower Chain Seq (LineEQ r :+ halfPlane) r -upper -- parallel - Just (Line_x_Line_Point Point 2 r -p) -> Point 2 r +lower Chain Seq (LineEQ r :+ halfPlane) r +upper -- parallel + Just (Line_x_Line_Point Point 2 r +p) -> Point 2 r -> Chain Seq (LineEQ r :+ halfPlane) r -> Chain Seq (LineEQ r :+ halfPlane) r -> LeftIntersection halfPlane r @@ -879,67 +879,67 @@ -> Chain Seq (LineEQ r :+ halfPlane) r -> LeftIntersection halfPlane r Intersection Point 2 r -p Chain Seq (LineEQ r :+ halfPlane) r -lower Chain Seq (LineEQ r :+ halfPlane) r -upper +p Chain Seq (LineEQ r :+ halfPlane) r +lower Chain Seq (LineEQ r :+ halfPlane) r +upper Just (Line_x_Line_Line LineEQ r _) -> LeftIntersection halfPlane r forall a. HasCallStack => a undefined -- TODO: think about this.... -- should be a degenerate slab, which is just a line (segment?) I guess where - lowerAboveUpper :: (a, Chain Seq (LineEQ a :+ halfPlane) r, + lowerAboveUpper :: (a, Chain Seq (LineEQ a :+ halfPlane) r, Chain Seq (LineEQ a :+ halfPlane) r) -> Bool -lowerAboveUpper (a -x, Chain Seq (LineEQ a :+ halfPlane) r -lower, Chain Seq (LineEQ a :+ halfPlane) r -upper) = a -> LineEQ a -> a +lowerAboveUpper (a +x, Chain Seq (LineEQ a :+ halfPlane) r +lower, Chain Seq (LineEQ a :+ halfPlane) r +upper) = a -> LineEQ a -> a forall r. Num r => r -> LineEQ r -> r evalAt' a -x (Chain Seq (LineEQ a :+ halfPlane) r -> LineEQ a +x (Chain Seq (LineEQ a :+ halfPlane) r -> LineEQ a forall line halfPlane r. Chain Seq (line :+ halfPlane) r -> line leftMost Chain Seq (LineEQ a :+ halfPlane) r -lower) a -> a -> Bool +lower) a -> a -> Bool forall a. Ord a => a -> a -> Bool > a -> LineEQ a -> a forall r. Num r => r -> LineEQ r -> r evalAt' a -x (Chain Seq (LineEQ a :+ halfPlane) r -> LineEQ a +x (Chain Seq (LineEQ a :+ halfPlane) r -> LineEQ a forall line halfPlane r. Chain Seq (line :+ halfPlane) r -> line leftMost Chain Seq (LineEQ a :+ halfPlane) r -upper) +upper) -- | simultaneously scan the chains, zipping up their remainders. i.e. returns a list of -- triples (x_i,lower_i,upper_i), so that on (x_{i-1},x_i] lower_i and upper_i are the -- remaining alternating chains. (x_{-1} = -\infty). -zipLR :: Ord r - => Chain Seq halfPlane r -> Chain Seq halfPlane r - -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r )] +zipLR :: Ord r + => Chain Seq halfPlane r -> Chain Seq halfPlane r + -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r )] zipLR :: forall r halfPlane. Ord r => Chain Seq halfPlane r -> Chain Seq halfPlane r -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] -zipLR Chain Seq halfPlane r -lower Chain Seq halfPlane r -upper = case Chain Seq halfPlane r +zipLR Chain Seq halfPlane r +lower Chain Seq halfPlane r +upper = case Chain Seq halfPlane r -> Chain Seq halfPlane r -> FirstVertex halfPlane r forall r halfPlane. Ord r => Chain Seq halfPlane r -> Chain Seq halfPlane r -> FirstVertex halfPlane r firstIntersection Chain Seq halfPlane r -lower Chain Seq halfPlane r -upper of +lower Chain Seq halfPlane r +upper of FirstVertex halfPlane r None -> [] - Upper Point 2 r -p Chain Seq halfPlane r -upper' -> (Point 2 r -pPoint 2 r -> Getting r (Point 2 r) r -> r + Upper Point 2 r +p Chain Seq halfPlane r +upper' -> (Point 2 r +pPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -947,8 +947,8 @@ IndexedLens' Int point r IndexedLens' Int (Point 2 r) r xCoord, Chain Seq halfPlane r -lower, Chain Seq halfPlane r -upper) (r, Chain Seq halfPlane r, Chain Seq halfPlane r) +lower, Chain Seq halfPlane r +upper) (r, Chain Seq halfPlane r, Chain Seq halfPlane r) -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] forall a. a -> [a] -> [a] @@ -961,12 +961,12 @@ -> Chain Seq halfPlane r -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] zipLR Chain Seq halfPlane r -lower Chain Seq halfPlane r -upper' - Lower Point 2 r -p Chain Seq halfPlane r -lower' -> (Point 2 r -pPoint 2 r -> Getting r (Point 2 r) r -> r +lower Chain Seq halfPlane r +upper' + Lower Point 2 r +p Chain Seq halfPlane r +lower' -> (Point 2 r +pPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -974,8 +974,8 @@ IndexedLens' Int point r IndexedLens' Int (Point 2 r) r xCoord, Chain Seq halfPlane r -lower, Chain Seq halfPlane r -upper) (r, Chain Seq halfPlane r, Chain Seq halfPlane r) +lower, Chain Seq halfPlane r +upper) (r, Chain Seq halfPlane r, Chain Seq halfPlane r) -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] forall a. a -> [a] -> [a] @@ -988,14 +988,14 @@ -> Chain Seq halfPlane r -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] zipLR Chain Seq halfPlane r -lower' Chain Seq halfPlane r -upper - Simultaneous Point 2 r -p Point 2 r -_ Chain Seq halfPlane r -lower' Chain Seq halfPlane r -upper' -> (Point 2 r -pPoint 2 r -> Getting r (Point 2 r) r -> r +lower' Chain Seq halfPlane r +upper + Simultaneous Point 2 r +p Point 2 r +_ Chain Seq halfPlane r +lower' Chain Seq halfPlane r +upper' -> (Point 2 r +pPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -1003,8 +1003,8 @@ IndexedLens' Int point r IndexedLens' Int (Point 2 r) r xCoord, Chain Seq halfPlane r -lower, Chain Seq halfPlane r -upper) (r, Chain Seq halfPlane r, Chain Seq halfPlane r) +lower, Chain Seq halfPlane r +upper) (r, Chain Seq halfPlane r, Chain Seq halfPlane r) -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] forall a. a -> [a] -> [a] @@ -1017,18 +1017,18 @@ -> Chain Seq halfPlane r -> [(r, Chain Seq halfPlane r, Chain Seq halfPlane r)] zipLR Chain Seq halfPlane r -lower' Chain Seq halfPlane r -upper' +lower' Chain Seq halfPlane r +upper' -data FirstVertex halfPlane r = None - | Upper (Point 2 r) (Chain Seq halfPlane r) +data FirstVertex halfPlane r = None + | Upper (Point 2 r) (Chain Seq halfPlane r) -- ^ first vertex in the upper chain, and the rest of the upper chain - | Lower (Point 2 r) (Chain Seq halfPlane r) - | Simultaneous (Point 2 r) -- ^ point in the lower chian - (Point 2 r) -- ^ point in the upper chain - (Chain Seq halfPlane r) -- ^ remainder of the lower chain - (Chain Seq halfPlane r) -- ^ remainder of the upper chain - deriving (Int -> FirstVertex halfPlane r -> ShowS + | Lower (Point 2 r) (Chain Seq halfPlane r) + | Simultaneous (Point 2 r) -- ^ point in the lower chian + (Point 2 r) -- ^ point in the upper chain + (Chain Seq halfPlane r) -- ^ remainder of the lower chain + (Chain Seq halfPlane r) -- ^ remainder of the upper chain + deriving (Int -> FirstVertex halfPlane r -> ShowS [FirstVertex halfPlane r] -> ShowS FirstVertex halfPlane r -> String (Int -> FirstVertex halfPlane r -> ShowS) @@ -1058,7 +1058,7 @@ (Show r, Show halfPlane) => [FirstVertex halfPlane r] -> ShowS showList :: [FirstVertex halfPlane r] -> ShowS -Show,FirstVertex halfPlane r -> FirstVertex halfPlane r -> Bool +Show,FirstVertex halfPlane r -> FirstVertex halfPlane r -> Bool (FirstVertex halfPlane r -> FirstVertex halfPlane r -> Bool) -> (FirstVertex halfPlane r -> FirstVertex halfPlane r -> Bool) -> Eq (FirstVertex halfPlane r) @@ -1076,16 +1076,16 @@ /= :: FirstVertex halfPlane r -> FirstVertex halfPlane r -> Bool Eq) -firstIntersection :: Ord r - => Chain Seq halfPlane r -> Chain Seq halfPlane r - -> FirstVertex halfPlane r +firstIntersection :: Ord r + => Chain Seq halfPlane r -> Chain Seq halfPlane r + -> FirstVertex halfPlane r firstIntersection :: forall r halfPlane. Ord r => Chain Seq halfPlane r -> Chain Seq halfPlane r -> FirstVertex halfPlane r -firstIntersection (Chain Alternating Seq (Point 2 r) halfPlane -lower) (Chain Alternating Seq (Point 2 r) halfPlane -upper) = case Alternating Seq (Point 2 r) halfPlane +firstIntersection (Chain Alternating Seq (Point 2 r) halfPlane +lower) (Chain Alternating Seq (Point 2 r) halfPlane +upper) = case Alternating Seq (Point 2 r) halfPlane -> Either halfPlane ((halfPlane, Point 2 r), Alternating Seq (Point 2 r) halfPlane) @@ -1093,7 +1093,7 @@ Cons (f (sep, a)) (f (sep, a)) (sep, a) (sep, a) => Alternating f sep a -> Either a ((a, sep), Alternating f sep a) unconsAlt Alternating Seq (Point 2 r) halfPlane -lower of +lower of Left halfPlane _ -> case Alternating Seq (Point 2 r) halfPlane -> Either @@ -1103,27 +1103,27 @@ Cons (f (sep, a)) (f (sep, a)) (sep, a) (sep, a) => Alternating f sep a -> Either a ((a, sep), Alternating f sep a) unconsAlt Alternating Seq (Point 2 r) halfPlane -upper of +upper of Left halfPlane _ -> FirstVertex halfPlane r forall halfPlane r. FirstVertex halfPlane r None Right ((halfPlane -_,Point 2 r -q),Alternating Seq (Point 2 r) halfPlane -upper') -> Point 2 r -> Chain Seq halfPlane r -> FirstVertex halfPlane r +_,Point 2 r +q),Alternating Seq (Point 2 r) halfPlane +upper') -> Point 2 r -> Chain Seq halfPlane r -> FirstVertex halfPlane r forall halfPlane r. Point 2 r -> Chain Seq halfPlane r -> FirstVertex halfPlane r Upper Point 2 r -q (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r +q (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r forall (f :: * -> *) halfPlane r. Alternating f (Point 2 r) halfPlane -> Chain f halfPlane r Chain Alternating Seq (Point 2 r) halfPlane -upper') +upper') Right ((halfPlane -_,Point 2 r -p),Alternating Seq (Point 2 r) halfPlane -lower') -> case Alternating Seq (Point 2 r) halfPlane +_,Point 2 r +p),Alternating Seq (Point 2 r) halfPlane +lower') -> case Alternating Seq (Point 2 r) halfPlane -> Either halfPlane ((halfPlane, Point 2 r), Alternating Seq (Point 2 r) halfPlane) @@ -1131,22 +1131,22 @@ Cons (f (sep, a)) (f (sep, a)) (sep, a) (sep, a) => Alternating f sep a -> Either a ((a, sep), Alternating f sep a) unconsAlt Alternating Seq (Point 2 r) halfPlane -upper of +upper of Left halfPlane _ -> Point 2 r -> Chain Seq halfPlane r -> FirstVertex halfPlane r forall halfPlane r. Point 2 r -> Chain Seq halfPlane r -> FirstVertex halfPlane r Lower Point 2 r -p (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r +p (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r forall (f :: * -> *) halfPlane r. Alternating f (Point 2 r) halfPlane -> Chain f halfPlane r Chain Alternating Seq (Point 2 r) halfPlane -lower') +lower') Right ((halfPlane -_,Point 2 r -q),Alternating Seq (Point 2 r) halfPlane -upper') -> case (Point 2 r -pPoint 2 r -> Getting r (Point 2 r) r -> r +_,Point 2 r +q),Alternating Seq (Point 2 r) halfPlane +upper') -> case (Point 2 r +pPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -1156,7 +1156,7 @@ xCoord) r -> r -> Ordering forall a. Ord a => a -> a -> Ordering `compare` (Point 2 r -qPoint 2 r -> Getting r (Point 2 r) r -> r +qPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -1169,11 +1169,11 @@ forall halfPlane r. Point 2 r -> Chain Seq halfPlane r -> FirstVertex halfPlane r Lower Point 2 r -p (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r +p (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r forall (f :: * -> *) halfPlane r. Alternating f (Point 2 r) halfPlane -> Chain f halfPlane r Chain Alternating Seq (Point 2 r) halfPlane -lower') +lower') Ordering EQ -> Point 2 r -> Point 2 r @@ -1187,60 +1187,60 @@ -> Chain Seq halfPlane r -> FirstVertex halfPlane r Simultaneous Point 2 r -p Point 2 r -q (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r +p Point 2 r +q (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r forall (f :: * -> *) halfPlane r. Alternating f (Point 2 r) halfPlane -> Chain f halfPlane r Chain Alternating Seq (Point 2 r) halfPlane -lower') (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r +lower') (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r forall (f :: * -> *) halfPlane r. Alternating f (Point 2 r) halfPlane -> Chain f halfPlane r Chain Alternating Seq (Point 2 r) halfPlane -upper') +upper') Ordering GT -> Point 2 r -> Chain Seq halfPlane r -> FirstVertex halfPlane r forall halfPlane r. Point 2 r -> Chain Seq halfPlane r -> FirstVertex halfPlane r Upper Point 2 r -q (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r +q (Alternating Seq (Point 2 r) halfPlane -> Chain Seq halfPlane r forall (f :: * -> *) halfPlane r. Alternating f (Point 2 r) halfPlane -> Chain f halfPlane r Chain Alternating Seq (Point 2 r) halfPlane -upper') +upper') -- | A these where both values just have the same type. in particular, we will use This: -- for Negative signs halfplanes, and That for Positive signed half planes. -type These2 a = These a a +type These2 a = These a a -- Some pattern synonyms so that the rest is easier to read -pattern Negatives :: a -> These a b +pattern Negatives :: a -> These a b pattern $bNegatives :: forall a b. a -> These a b $mNegatives :: forall {r} {a} {b}. These a b -> (a -> r) -> ((# #) -> r) -> r -Negatives x = This x -pattern Positives :: b -> These a b +Negatives x = This x +pattern Positives :: b -> These a b pattern $bPositives :: forall b a. b -> These a b $mPositives :: forall {r} {b} {a}. These a b -> (b -> r) -> ((# #) -> r) -> r -Positives x = That x -pattern BothSigns :: a -> b -> These a b +Positives x = That x +pattern BothSigns :: a -> b -> These a b pattern $bBothSigns :: forall a b. a -> b -> These a b $mBothSigns :: forall {r} {a} {b}. These a b -> (a -> b -> r) -> ((# #) -> r) -> r -BothSigns x y = These x y +BothSigns x y = These x y {-# COMPLETE Negatives, Positives, BothSigns #-} -- | Vertical halfplanes -type Verticals halfPlane r = These2 (NonEmpty (r :+ halfPlane)) +type Verticals halfPlane r = These2 (NonEmpty (r :+ halfPlane)) -- | Non-vertical halfplanes -type NonVerticals halfPlane r = These2 (NonEmpty (LineEQ r :+ halfPlane)) +type NonVerticals halfPlane r = These2 (NonEmpty (LineEQ r :+ halfPlane)) -- | Classify the halfplanes by their bounding lines into Vertical/NonVertical, -- and then on their Sign -partitionhalfPlanes :: forall f halfPlane r. - ( Foldable1 f - , HalfPlane_ halfPlane r, Ord r, Fractional r - ) => f halfPlane - -> These (Verticals halfPlane r) (NonVerticals halfPlane r) +partitionhalfPlanes :: forall f halfPlane r. + ( Foldable1 f + , HalfPlane_ halfPlane r, Ord r, Fractional r + ) => f halfPlane + -> These (Verticals halfPlane r) (NonVerticals halfPlane r) partitionhalfPlanes :: forall (f :: * -> *) halfPlane r. (Foldable1 f, HalfPlane_ halfPlane r, Ord r, Fractional r) => f halfPlane @@ -1258,11 +1258,11 @@ forall core. NonEmpty (core :+ halfPlane) -> These2 (NonEmpty (core :+ halfPlane)) -partition' NonEmpty (LineEQ r :+ halfPlane) -> NonVerticals halfPlane r +partition' NonEmpty (LineEQ r :+ halfPlane) -> NonVerticals halfPlane r forall core. NonEmpty (core :+ halfPlane) -> These2 (NonEmpty (core :+ halfPlane)) -partition' +partition' (These (NonEmpty (r :+ halfPlane)) (NonEmpty (LineEQ r :+ halfPlane)) -> These (Verticals halfPlane r) (NonVerticals halfPlane r)) @@ -1308,11 +1308,11 @@ toNonEmpty where -- partition the halfplanes by their sign. - partition' :: NonEmpty (core :+ halfPlane) -> These2 (NonEmpty (core :+ halfPlane)) - partition' :: forall core. + partition' :: NonEmpty (core :+ halfPlane) -> These2 (NonEmpty (core :+ halfPlane)) + partition' :: forall core. NonEmpty (core :+ halfPlane) -> These2 (NonEmpty (core :+ halfPlane)) -partition' = NonEmpty (Either (core :+ halfPlane) (core :+ halfPlane)) +partition' = NonEmpty (Either (core :+ halfPlane) (core :+ halfPlane)) -> These (NonEmpty (core :+ halfPlane)) (NonEmpty (core :+ halfPlane)) forall a b. @@ -1337,12 +1337,12 @@ forall {extra} {core}. HalfSpace_ extra (Dimension extra) (NumType extra) => (core :+ extra) -> Either (core :+ extra) (core :+ extra) -classifyBySign +classifyBySign - classifyBySign :: (core :+ extra) -> Either (core :+ extra) (core :+ extra) -classifyBySign core :+ extra -h = case core :+ extra -h(core :+ extra) -> Getting Sign (core :+ extra) Sign -> Sign + classifyBySign :: (core :+ extra) -> Either (core :+ extra) (core :+ extra) +classifyBySign core :+ extra +h = case core :+ extra +h(core :+ extra) -> Getting Sign (core :+ extra) Sign -> Sign forall s a. s -> Getting a s a -> a ^.(extra -> Const Sign extra) -> (core :+ extra) -> Const Sign (core :+ extra) @@ -1364,16 +1364,16 @@ Negative -> (core :+ extra) -> Either (core :+ extra) (core :+ extra) forall a b. a -> Either a b Left core :+ extra -h +h Sign Positive -> (core :+ extra) -> Either (core :+ extra) (core :+ extra) forall a b. b -> Either a b Right core :+ extra -h +h -- | From all the vertical halfplanes with negative sign we compute the leftmost one, -- and from the positive halfplanes we compute the rightmost one. -extremes :: Ord r => Verticals halfPlane r -> These2 (r :+ halfPlane) +extremes :: Ord r => Verticals halfPlane r -> These2 (r :+ halfPlane) extremes :: forall r halfPlane. Ord r => Verticals halfPlane r -> These2 (r :+ halfPlane) @@ -1387,12 +1387,12 @@ (a -> b) -> (c -> d) -> p a c -> p b d bimap NonEmpty (r :+ halfPlane) -> r :+ halfPlane forall {extra}. NonEmpty (r :+ extra) -> r :+ extra -leftMostPlane NonEmpty (r :+ halfPlane) -> r :+ halfPlane +leftMostPlane NonEmpty (r :+ halfPlane) -> r :+ halfPlane forall {extra}. NonEmpty (r :+ extra) -> r :+ extra -rightMostPlane +rightMostPlane where - rightMostPlane :: NonEmpty (r :+ extra) -> r :+ extra -rightMostPlane = ((r :+ extra) -> (r :+ extra) -> Ordering) + rightMostPlane :: NonEmpty (r :+ extra) -> r :+ extra +rightMostPlane = ((r :+ extra) -> (r :+ extra) -> Ordering) -> NonEmpty (r :+ extra) -> r :+ extra forall (t :: * -> *) a. Foldable1 t => @@ -1406,8 +1406,8 @@ Functor f => (core -> f core') -> (core :+ extra) -> f (core' :+ extra) core)) - leftMostPlane :: NonEmpty (r :+ extra) -> r :+ extra -leftMostPlane = ((r :+ extra) -> (r :+ extra) -> Ordering) + leftMostPlane :: NonEmpty (r :+ extra) -> r :+ extra +leftMostPlane = ((r :+ extra) -> (r :+ extra) -> Ordering) -> NonEmpty (r :+ extra) -> r :+ extra forall (t :: * -> *) a. Foldable1 t => @@ -1424,12 +1424,12 @@ -- | Computes the upper boundary of the halfplanes that have negative sign, and the upper -- boundary of the halfplanes that have negative sign -boundaries :: ( HalfPlane_ halfPlane r - , Ord r, Fractional r +boundaries :: ( HalfPlane_ halfPlane r + , Ord r, Fractional r - , Show r, Show halfPlane - ) => NonVerticals halfPlane r -> These2 (Chain Seq (LineEQ r :+ halfPlane) r) + , Show r, Show halfPlane + ) => NonVerticals halfPlane r -> These2 (Chain Seq (LineEQ r :+ halfPlane) r) boundaries :: forall halfPlane r. (HalfPlane_ halfPlane r, Ord r, Fractional r, Show r, Show halfPlane) => @@ -1462,7 +1462,7 @@ Foldable1 f, Functor f, IsIntersectableWith halfPlane halfPlane, HasFromFoldable f) => f halfPlane -> Chain f halfPlane (NumType halfPlane) -upperBoundary NonEmpty (LineEQ r :+ halfPlane) +upperBoundary NonEmpty (LineEQ r :+ halfPlane) -> Chain Seq (LineEQ r :+ halfPlane) r NonEmpty (LineEQ r :+ halfPlane) -> Chain @@ -1475,12 +1475,12 @@ Foldable1 f, IsIntersectableWith halfPlane halfPlane, HasFromFoldable f, Functor f, Functor f) => f halfPlane -> Chain f halfPlane (NumType halfPlane) -lowerBoundary +lowerBoundary where - upperBoundary :: f halfPlane -> Chain f halfPlane (NumType halfPlane) -upperBoundary f halfPlane -hs = let LowerEnvelope Alternating f (Point 2 (NumType halfPlane)) halfPlane -alt = f halfPlane + upperBoundary :: f halfPlane -> Chain f halfPlane (NumType halfPlane) +upperBoundary f halfPlane +hs = let LowerEnvelope Alternating f (Point 2 (NumType halfPlane)) halfPlane +alt = f halfPlane -> LowerEnvelopeF f (Point 2 (NumType halfPlane)) halfPlane forall (g :: * -> *) (f :: * -> *) line r. (NonVerticalHyperPlane_ line 2 r, Fractional r, Ord r, Foldable1 f, @@ -1489,16 +1489,16 @@ HasFromFoldable g) => f line -> LowerEnvelopeF g (Point 2 r) line lowerEnvelope f halfPlane -hs in Alternating f (Point 2 (NumType halfPlane)) halfPlane +hs in Alternating f (Point 2 (NumType halfPlane)) halfPlane -> Chain f halfPlane (NumType halfPlane) forall (f :: * -> *) halfPlane r. Alternating f (Point 2 r) halfPlane -> Chain f halfPlane r Chain Alternating f (Point 2 (NumType halfPlane)) halfPlane -alt - lowerBoundary :: f halfPlane -> Chain f halfPlane (NumType halfPlane) -lowerBoundary f halfPlane -hs = let LowerEnvelope Alternating f (Point 2 (NumType halfPlane)) halfPlane -alt = f halfPlane +alt + lowerBoundary :: f halfPlane -> Chain f halfPlane (NumType halfPlane) +lowerBoundary f halfPlane +hs = let LowerEnvelope Alternating f (Point 2 (NumType halfPlane)) halfPlane +alt = f halfPlane -> LowerEnvelopeF f (Point 2 (NumType halfPlane)) halfPlane forall (g :: * -> *) (f :: * -> *) line r. (NonVerticalHyperPlane_ line 2 r, Fractional r, Ord r, Foldable1 f, @@ -1507,12 +1507,12 @@ HasFromFoldable g, Functor g) => f line -> UpperEnvelopeF g (Point 2 r) line upperEnvelope f halfPlane -hs in Alternating f (Point 2 (NumType halfPlane)) halfPlane +hs in Alternating f (Point 2 (NumType halfPlane)) halfPlane -> Chain f halfPlane (NumType halfPlane) forall (f :: * -> *) halfPlane r. Alternating f (Point 2 r) halfPlane -> Chain f halfPlane r Chain Alternating f (Point 2 (NumType halfPlane)) halfPlane -alt +alt -------------------------------------------------------------------------------- @@ -1657,15 +1657,15 @@ -- envelope instead. -- -- \(O(n\log n)\) -upperEnvelope :: forall g f line r. - ( NonVerticalHyperPlane_ line 2 r - , Fractional r, Ord r - , Foldable1 f, Functor f - , IsIntersectableWith line line - , Intersection line line ~ Maybe (LineLineIntersection line) - , HasFromFoldable g, Functor g +upperEnvelope :: forall g f line r. + ( NonVerticalHyperPlane_ line 2 r + , Fractional r, Ord r + , Foldable1 f, Functor f + , IsIntersectableWith line line + , Intersection line line ~ Maybe (LineLineIntersection line) + , HasFromFoldable g, Functor g ) - => f line -> UpperEnvelopeF g (Point 2 r) line + => f line -> UpperEnvelopeF g (Point 2 r) line upperEnvelope :: forall (g :: * -> *) (f :: * -> *) line r. (NonVerticalHyperPlane_ line 2 r, Fractional r, Ord r, Foldable1 f, Functor f, IsIntersectableWith line line, @@ -1693,7 +1693,7 @@ yCoord r -> r forall a. Num a => a -> a negate) line -> line -flipY (LowerEnvelopeF g (Point 2 r) line +flipY (LowerEnvelopeF g (Point 2 r) line -> LowerEnvelopeF g (Point 2 r) line) -> (f line -> LowerEnvelopeF g (Point 2 r) line) -> f line @@ -1715,11 +1715,11 @@ forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap line -> line -flipY +flipY where - flipY :: line -> line - flipY :: line -> line -flipY = ASetter line line r r -> (r -> r) -> line -> line + flipY :: line -> line + flipY :: line -> line +flipY = ASetter line line r r -> (r -> r) -> line -> line forall s t a b. ASetter s t a b -> (a -> b) -> s -> t over ((Vector 2 r -> Identity (Vector 2 r)) -> line -> Identity line forall hyperPlane (d :: Nat) r. @@ -1745,35 +1745,35 @@ -- | Given an x-coordiante, a bounding line (and its hyperplane), evaluate the value of -- the line. -intersectVertical :: Num r => r -> LineEQ r :+ extra -> extra' -> Point 2 r +intersectVertical :: Num r => r -> LineEQ r :+ extra -> extra' -> Point 2 r intersectVertical :: forall r extra extra'. Num r => r -> (LineEQ r :+ extra) -> extra' -> Point 2 r -intersectVertical r -x (LineEQ r -l' :+ extra +intersectVertical r +x (LineEQ r +l' :+ extra _) extra' _ = r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -x (r -> LineEQ r -> r +x (r -> LineEQ r -> r forall r. Num r => r -> LineEQ r -> r evalAt' r -x LineEQ r -l') +x LineEQ r +l') -- | Classify the halfplane as either having a vertical bounding line or a general -- non-vertical line. -classifyHalfPlane :: (HalfPlane_ halfPlane r, Fractional r, Eq r) - => halfPlane - -> Either (r :+ halfPlane) (LineEQ r :+ halfPlane) +classifyHalfPlane :: (HalfPlane_ halfPlane r, Fractional r, Eq r) + => halfPlane + -> Either (r :+ halfPlane) (LineEQ r :+ halfPlane) classifyHalfPlane :: forall halfPlane r. (HalfPlane_ halfPlane r, Fractional r, Eq r) => halfPlane -> Either (r :+ halfPlane) (LineEQ r :+ halfPlane) -classifyHalfPlane halfPlane -h = case halfPlane -hhalfPlane +classifyHalfPlane halfPlane +h = case halfPlane +hhalfPlane -> Getting (VerticalOrLineEQ r) halfPlane (VerticalOrLineEQ r) -> VerticalOrLineEQ r forall s a. s -> Getting a s a -> a @@ -1806,27 +1806,27 @@ (HyperPlane_ hyperPlane 2 r, Fractional r, Eq r) => hyperPlane -> VerticalOrLineEQ r asGeneralLine of - VerticalLineThrough r -x -> (r :+ halfPlane) -> Either (r :+ halfPlane) (LineEQ r :+ halfPlane) + VerticalLineThrough r +x -> (r :+ halfPlane) -> Either (r :+ halfPlane) (LineEQ r :+ halfPlane) forall a b. a -> Either a b Left (r -x r -> halfPlane -> r :+ halfPlane +x r -> halfPlane -> r :+ halfPlane forall core extra. core -> extra -> core :+ extra :+ halfPlane -h) - NonVertical LineEQ r -l -> (LineEQ r :+ halfPlane) +h) + NonVertical LineEQ r +l -> (LineEQ r :+ halfPlane) -> Either (r :+ halfPlane) (LineEQ r :+ halfPlane) forall a b. b -> Either a b Right (LineEQ r -l LineEQ r -> halfPlane -> LineEQ r :+ halfPlane +l LineEQ r -> halfPlane -> LineEQ r :+ halfPlane forall core extra. core -> extra -> core :+ extra :+ halfPlane -h) +h) -- | Convert to a general line. -asGeneralLine :: (HyperPlane_ hyperPlane 2 r, Fractional r, Eq r) - => hyperPlane -> VerticalOrLineEQ r +asGeneralLine :: (HyperPlane_ hyperPlane 2 r, Fractional r, Eq r) + => hyperPlane -> VerticalOrLineEQ r asGeneralLine :: forall hyperPlane r. (HyperPlane_ hyperPlane 2 r, Fractional r, Eq r) => hyperPlane -> VerticalOrLineEQ r diff --git a/haddocks/hgeometry/src/HGeometry.IntervalTree.html b/haddocks/hgeometry/src/HGeometry.IntervalTree.html index 1a6fe7451..54e6eb4ec 100644 --- a/haddocks/hgeometry/src/HGeometry.IntervalTree.html +++ b/haddocks/hgeometry/src/HGeometry.IntervalTree.html @@ -27,13 +27,13 @@ -------------------------------------------------------------------------------- -- | Information stored in a node of the Interval Tree -data NodeData i r = NodeData { forall i r. NodeData i r -> r -_splitPoint :: !r +data NodeData i r = NodeData { forall i r. NodeData i r -> r +_splitPoint :: !r , forall i r. NodeData i r -> Map r [i] -_intervalsLeft :: !(Map.Map r [i]) +_intervalsLeft :: !(Map.Map r [i]) , forall i r. NodeData i r -> Map (Down r) [i] -_intervalsRight :: !(Map.Map (Down r) [i]) - } deriving stock (Int -> NodeData i r -> ShowS +_intervalsRight :: !(Map.Map (Down r) [i]) + } deriving stock (Int -> NodeData i r -> ShowS [NodeData i r] -> ShowS NodeData i r -> String (Int -> NodeData i r -> ShowS) @@ -51,7 +51,7 @@ show :: NodeData i r -> String $cshowList :: forall i r. (Show r, Show i) => [NodeData i r] -> ShowS showList :: [NodeData i r] -> ShowS -Show,NodeData i r -> NodeData i r -> Bool +Show,NodeData i r -> NodeData i r -> Bool (NodeData i r -> NodeData i r -> Bool) -> (NodeData i r -> NodeData i r -> Bool) -> Eq (NodeData i r) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -60,7 +60,7 @@ == :: NodeData i r -> NodeData i r -> Bool $c/= :: forall i r. (Eq r, Eq i) => NodeData i r -> NodeData i r -> Bool /= :: NodeData i r -> NodeData i r -> Bool -Eq,Eq (NodeData i r) +Eq,Eq (NodeData i r) Eq (NodeData i r) => (NodeData i r -> NodeData i r -> Ordering) -> (NodeData i r -> NodeData i r -> Bool) @@ -111,7 +111,7 @@ (Ord r, Ord i) => NodeData i r -> NodeData i r -> NodeData i r min :: NodeData i r -> NodeData i r -> NodeData i r -Ord,(forall x. NodeData i r -> Rep (NodeData i r) x) +Ord,(forall x. NodeData i r -> Rep (NodeData i r) x) -> (forall x. Rep (NodeData i r) x -> NodeData i r) -> Generic (NodeData i r) forall x. Rep (NodeData i r) x -> NodeData i r @@ -126,14 +126,14 @@ to :: forall x. Rep (NodeData i r) x -> NodeData i r Generic) -instance (NFData i, NFData r) => NFData (NodeData i r) +instance (NFData i, NFData r) => NFData (NodeData i r) -- | IntervalTree type, storing intervals of type interval -newtype IntervalTree interval r = +newtype IntervalTree interval r = IntervalTree { forall interval r. IntervalTree interval r -> BinaryTree (NodeData interval r) -_unIntervalTree :: BinaryTree (NodeData interval r) } - deriving stock (Int -> IntervalTree interval r -> ShowS +_unIntervalTree :: BinaryTree (NodeData interval r) } + deriving stock (Int -> IntervalTree interval r -> ShowS [IntervalTree interval r] -> ShowS IntervalTree interval r -> String (Int -> IntervalTree interval r -> ShowS) @@ -163,7 +163,7 @@ (Show r, Show interval) => [IntervalTree interval r] -> ShowS showList :: [IntervalTree interval r] -> ShowS -Show,IntervalTree interval r -> IntervalTree interval r -> Bool +Show,IntervalTree interval r -> IntervalTree interval r -> Bool (IntervalTree interval r -> IntervalTree interval r -> Bool) -> (IntervalTree interval r -> IntervalTree interval r -> Bool) -> Eq (IntervalTree interval r) @@ -179,7 +179,7 @@ (Eq r, Eq interval) => IntervalTree interval r -> IntervalTree interval r -> Bool /= :: IntervalTree interval r -> IntervalTree interval r -> Bool -Eq,(forall x. +Eq,(forall x. IntervalTree interval r -> Rep (IntervalTree interval r) x) -> (forall x. Rep (IntervalTree interval r) x -> IntervalTree interval r) @@ -204,12 +204,12 @@ Rep (IntervalTree interval r) x -> IntervalTree interval r Generic) -instance (NFData i, NFData r) => NFData (IntervalTree i r) +instance (NFData i, NFData r) => NFData (IntervalTree i r) -- | Given an ordered list of points, create an interval tree -- -- \(O(n)\) -createTree :: (Foldable f, Ord r) => f r -> IntervalTree interval r +createTree :: (Foldable f, Ord r) => f r -> IntervalTree interval r createTree :: forall (f :: * -> *) r interval. (Foldable f, Ord r) => f r -> IntervalTree interval r @@ -226,14 +226,14 @@ -> BinaryTree r -> BinaryTree (NodeData interval r) forall a b. (a -> b) -> BinaryTree a -> BinaryTree b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\r -m -> r +fmap (\r +m -> r -> Map r [interval] -> Map (Down r) [interval] -> NodeData interval r forall i r. r -> Map r [i] -> Map (Down r) [i] -> NodeData i r NodeData r -m Map r [interval] +m Map r [interval] forall a. Monoid a => a mempty Map (Down r) [interval] forall a. Monoid a => a @@ -248,13 +248,13 @@ -- | Build an interval tree -- -- \(O(n \log n)\) -fromIntervals :: (Foldable f, Ord r, ClosedInterval_ interval r) - => f interval -> IntervalTree interval r +fromIntervals :: (Foldable f, Ord r, ClosedInterval_ interval r) + => f interval -> IntervalTree interval r fromIntervals :: forall (f :: * -> *) r interval. (Foldable f, Ord r, ClosedInterval_ interval r) => f interval -> IntervalTree interval r -fromIntervals f interval -is = (interval -> IntervalTree interval r -> IntervalTree interval r) +fromIntervals f interval +is = (interval -> IntervalTree interval r -> IntervalTree interval r) -> IntervalTree interval r -> f interval -> IntervalTree interval r forall a b. (a -> b -> b) -> b -> f a -> b forall (t :: * -> *) a b. @@ -269,21 +269,21 @@ (Foldable f, Ord r) => f r -> IntervalTree interval r createTree Set r -pts) f interval -is +pts) f interval +is where - pts :: Set r -pts = (interval -> Set r -> Set r) -> Set r -> f interval -> Set r + pts :: Set r +pts = (interval -> Set r -> Set r) -> Set r -> f interval -> Set r forall a b. (a -> b -> b) -> b -> f a -> b forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b -foldr (\interval -i Set r -s -> r -> Set r -> Set r +foldr (\interval +i Set r +s -> r -> Set r -> Set r forall a. Ord a => a -> Set a -> Set a Set.insert (interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasStart seg p => Lens' seg p @@ -293,25 +293,25 @@ $ r -> Set r -> Set r forall a. Ord a => a -> Set a -> Set a Set.insert (interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasEnd seg p => Lens' seg p Lens' interval r end) Set r -s) Set r +s) Set r forall a. Set a Set.empty f interval -is +is -- | Lists the intervals. We don't guarantee anything about the order -- -- running time: \(O(n)\). -listIntervals :: IntervalTree interval r -> [interval] +listIntervals :: IntervalTree interval r -> [interval] listIntervals :: forall interval r. IntervalTree interval r -> [interval] listIntervals = BinaryTree (NodeData interval r) -> [interval] forall {i} {r}. BinaryTree (NodeData i r) -> [i] -toList' (BinaryTree (NodeData interval r) -> [interval]) +toList' (BinaryTree (NodeData interval r) -> [interval]) -> (IntervalTree interval r -> BinaryTree (NodeData interval r)) -> IntervalTree interval r -> [interval] @@ -321,13 +321,13 @@ IntervalTree interval r -> BinaryTree (NodeData interval r) _unIntervalTree where - toList' :: BinaryTree (NodeData i r) -> [i] -toList' BinaryTree (NodeData i r) + toList' :: BinaryTree (NodeData i r) -> [i] +toList' BinaryTree (NodeData i r) Nil = [] - toList' (Internal BinaryTree (NodeData i r) -l NodeData i r -v BinaryTree (NodeData i r) -r) = + toList' (Internal BinaryTree (NodeData i r) +l NodeData i r +v BinaryTree (NodeData i r) +r) = [[i]] -> [i] forall (t :: * -> *) a. Foldable t => t [a] -> [a] concat [[[i]] -> [i] @@ -335,7 +335,7 @@ concat ([[i]] -> [i]) -> [[i]] -> [i] forall a b. (a -> b) -> a -> b $ NodeData i r -vNodeData i r -> Getting (Endo [[i]]) (NodeData i r) [i] -> [[i]] +vNodeData i r -> Getting (Endo [[i]]) (NodeData i r) [i] -> [[i]] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..(NodeData i r -> Map r [i]) -> (Map r [i] -> Const (Endo [[i]]) (Map r [i])) @@ -361,17 +361,17 @@ Applicative f => (a -> f b) -> Map r a -> f (Map r b) traverse, BinaryTree (NodeData i r) -> [i] -toList' BinaryTree (NodeData i r) -l, BinaryTree (NodeData i r) -> [i] -toList' BinaryTree (NodeData i r) -r] +toList' BinaryTree (NodeData i r) +l, BinaryTree (NodeData i r) -> [i] +toList' BinaryTree (NodeData i r) +r] -------------------------------------------------------------------------------- -- | Find all intervals that stab x -- -- \(O(\log n + k)\), where k is the output size -search :: Ord r => r -> IntervalTree interval r -> [interval] +search :: Ord r => r -> IntervalTree interval r -> [interval] search :: forall r interval. Ord r => r -> IntervalTree interval r -> [interval] @@ -384,36 +384,36 @@ -- | Find all intervals that stab x -- -- \(O(\log n + k)\), where k is the output size -stab :: Ord r => r -> IntervalTree interval r -> [interval] +stab :: Ord r => r -> IntervalTree interval r -> [interval] stab :: forall r interval. Ord r => r -> IntervalTree interval r -> [interval] -stab r -q (IntervalTree BinaryTree (NodeData interval r) -t) = BinaryTree (NodeData interval r) -> [interval] -stab' BinaryTree (NodeData interval r) -t +stab r +q (IntervalTree BinaryTree (NodeData interval r) +t) = BinaryTree (NodeData interval r) -> [interval] +stab' BinaryTree (NodeData interval r) +t where - stab' :: BinaryTree (NodeData interval r) -> [interval] -stab' BinaryTree (NodeData interval r) + stab' :: BinaryTree (NodeData interval r) -> [interval] +stab' BinaryTree (NodeData interval r) Nil = [] - stab' (Internal BinaryTree (NodeData interval r) -l (NodeData r -m Map r [interval] -ll Map (Down r) [interval] -rr) BinaryTree (NodeData interval r) -r) + stab' (Internal BinaryTree (NodeData interval r) +l (NodeData r +m Map r [interval] +ll Map (Down r) [interval] +rr) BinaryTree (NodeData interval r) +r) | r -q r -> r -> Bool +q r -> r -> Bool forall a. Ord a => a -> a -> Bool <= r -m = let is :: [interval] -is = (r -> Bool) -> [(r, [interval])] -> [interval] +m = let is :: [interval] +is = (r -> Bool) -> [(r, [interval])] -> [interval] forall {b} {b}. (b -> Bool) -> [(b, [b])] -> [b] -f (r -> r -> Bool +f (r -> r -> Bool forall a. Ord a => a -> a -> Bool <= r -q)([(r, [interval])] -> [interval]) +q)([(r, [interval])] -> [interval]) -> (Map r [interval] -> [(r, [interval])]) -> Map r [interval] -> [interval] @@ -423,23 +423,23 @@ Map.toAscList (Map r [interval] -> [interval]) -> Map r [interval] -> [interval] forall a b. (a -> b) -> a -> b $ Map r [interval] -ll +ll in [interval] -is [interval] -> [interval] -> [interval] +is [interval] -> [interval] -> [interval] forall a. Semigroup a => a -> a -> a <> BinaryTree (NodeData interval r) -> [interval] -stab' BinaryTree (NodeData interval r) -l +stab' BinaryTree (NodeData interval r) +l | Bool -otherwise = let is :: [interval] -is = (Down r -> Bool) -> [(Down r, [interval])] -> [interval] +otherwise = let is :: [interval] +is = (Down r -> Bool) -> [(Down r, [interval])] -> [interval] forall {b} {b}. (b -> Bool) -> [(b, [b])] -> [b] -f (Down r -> Down r -> Bool +f (Down r -> Down r -> Bool forall a. Ord a => a -> a -> Bool <= (r -> Down r forall a. a -> Down a Down r -q)) ([(Down r, [interval])] -> [interval]) +q)) ([(Down r, [interval])] -> [interval]) -> (Map (Down r) [interval] -> [(Down r, [interval])]) -> Map (Down r) [interval] -> [interval] @@ -450,16 +450,16 @@ -> Map (Down r) [interval] -> [interval] forall a b. (a -> b) -> a -> b $ Map (Down r) [interval] -rr +rr in [interval] -is [interval] -> [interval] -> [interval] +is [interval] -> [interval] -> [interval] forall a. Semigroup a => a -> a -> a <> BinaryTree (NodeData interval r) -> [interval] -stab' BinaryTree (NodeData interval r) -r - f :: (b -> Bool) -> [(b, [b])] -> [b] -f b -> Bool -p = ((b, [b]) -> [b]) -> [(b, [b])] -> [b] +stab' BinaryTree (NodeData interval r) +r + f :: (b -> Bool) -> [(b, [b])] -> [b] +f b -> Bool +p = ((b, [b]) -> [b]) -> [(b, [b])] -> [b] forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b] concatMap (b, [b]) -> [b] forall a b. (a, b) -> b @@ -469,7 +469,7 @@ . ((b, [b]) -> Bool) -> [(b, [b])] -> [(b, [b])] forall a. (a -> Bool) -> [a] -> [a] List.takeWhile (b -> Bool -p (b -> Bool) -> ((b, [b]) -> b) -> (b, [b]) -> Bool +p (b -> Bool) -> ((b, [b]) -> b) -> (b, [b]) -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . (b, [b]) -> b forall a b. (a, b) -> a @@ -482,14 +482,14 @@ -- pre: the interval intersects some midpoint in the tree -- -- \(O(\log n)\), where n is the number of endpoints the tree is built on -insert :: (Ord r, ClosedInterval_ interval r) - => interval -> IntervalTree interval r -> IntervalTree interval r +insert :: (Ord r, ClosedInterval_ interval r) + => interval -> IntervalTree interval r -> IntervalTree interval r insert :: forall r interval. (Ord r, ClosedInterval_ interval r) => interval -> IntervalTree interval r -> IntervalTree interval r -insert interval -i (IntervalTree BinaryTree (NodeData interval r) -t) = BinaryTree (NodeData interval r) -> IntervalTree interval r +insert interval +i (IntervalTree BinaryTree (NodeData interval r) +t) = BinaryTree (NodeData interval r) -> IntervalTree interval r forall interval r. BinaryTree (NodeData interval r) -> IntervalTree interval r IntervalTree (BinaryTree (NodeData interval r) -> IntervalTree interval r) @@ -497,40 +497,40 @@ forall a b. (a -> b) -> a -> b $ BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) -insert' BinaryTree (NodeData interval r) -t +insert' BinaryTree (NodeData interval r) +t where - insert' :: BinaryTree (NodeData interval r) + insert' :: BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) -insert' BinaryTree (NodeData interval r) +insert' BinaryTree (NodeData interval r) Nil = BinaryTree (NodeData interval r) forall a. BinaryTree a Nil - insert' (Internal BinaryTree (NodeData interval r) -l nd :: NodeData interval r -nd@(NodeData interval r -> r + insert' (Internal BinaryTree (NodeData interval r) +l nd :: NodeData interval r +nd@(NodeData interval r -> r forall i r. NodeData i r -> r -_splitPoint -> r -m) BinaryTree (NodeData interval r) -r) +_splitPoint -> r +m) BinaryTree (NodeData interval r) +r) | r -m r -> interval -> Bool +m r -> interval -> Bool forall interval r. (Ord r, Interval_ interval r) => r -> interval -> Bool `stabsInterval` interval -i = BinaryTree (NodeData interval r) +i = BinaryTree (NodeData interval r) -> NodeData interval r -> BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) forall a. BinaryTree a -> a -> BinaryTree a -> BinaryTree a Internal BinaryTree (NodeData interval r) -l (NodeData interval r -> NodeData interval r -insertInNode NodeData interval r -nd) BinaryTree (NodeData interval r) -r +l (NodeData interval r -> NodeData interval r +insertInNode NodeData interval r +nd) BinaryTree (NodeData interval r) +r | (interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasEnd seg p => Lens' seg p @@ -538,17 +538,17 @@ end) r -> r -> Bool forall a. Ord a => a -> a -> Bool <= r -m = BinaryTree (NodeData interval r) +m = BinaryTree (NodeData interval r) -> NodeData interval r -> BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) forall a. BinaryTree a -> a -> BinaryTree a -> BinaryTree a Internal (BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) -insert' BinaryTree (NodeData interval r) -l) NodeData interval r -nd BinaryTree (NodeData interval r) -r +insert' BinaryTree (NodeData interval r) +l) NodeData interval r +nd BinaryTree (NodeData interval r) +r | Bool otherwise = BinaryTree (NodeData interval r) -> NodeData interval r @@ -556,36 +556,36 @@ -> BinaryTree (NodeData interval r) forall a. BinaryTree a -> a -> BinaryTree a -> BinaryTree a Internal BinaryTree (NodeData interval r) -l NodeData interval r -nd (BinaryTree (NodeData interval r) +l NodeData interval r +nd (BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) -insert' BinaryTree (NodeData interval r) -r) +insert' BinaryTree (NodeData interval r) +r) - insertInNode :: NodeData interval r -> NodeData interval r -insertInNode (NodeData r -m Map r [interval] -l Map (Down r) [interval] -r) = r + insertInNode :: NodeData interval r -> NodeData interval r +insertInNode (NodeData r +m Map r [interval] +l Map (Down r) [interval] +r) = r -> Map r [interval] -> Map (Down r) [interval] -> NodeData interval r forall i r. r -> Map r [i] -> Map (Down r) [i] -> NodeData i r NodeData r -m (([interval] -> [interval] -> [interval]) +m (([interval] -> [interval] -> [interval]) -> r -> [interval] -> Map r [interval] -> Map r [interval] forall k a. Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a Map.insertWith [interval] -> [interval] -> [interval] forall a. Semigroup a => a -> a -> a (<>) (interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasStart seg p => Lens' seg p Lens' interval r start) [interval -i] Map r [interval] -l) +i] Map r [interval] +l) (([interval] -> [interval] -> [interval]) -> Down r -> [interval] @@ -599,27 +599,27 @@ Down (r -> Down r) -> r -> Down r forall a b. (a -> b) -> a -> b $ interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasEnd seg p => Lens' seg p Lens' interval r end) [interval -i] Map (Down r) [interval] -r) +i] Map (Down r) [interval] +r) -- | Delete an interval from the Tree -- -- \(O(\log n)\) (under some general position assumption) -delete :: (Ord r, ClosedInterval_ interval r, Eq interval) - => interval -> IntervalTree interval r -> IntervalTree interval r +delete :: (Ord r, ClosedInterval_ interval r, Eq interval) + => interval -> IntervalTree interval r -> IntervalTree interval r delete :: forall r interval. (Ord r, ClosedInterval_ interval r, Eq interval) => interval -> IntervalTree interval r -> IntervalTree interval r -delete interval -i (IntervalTree BinaryTree (NodeData interval r) -t) = BinaryTree (NodeData interval r) -> IntervalTree interval r +delete interval +i (IntervalTree BinaryTree (NodeData interval r) +t) = BinaryTree (NodeData interval r) -> IntervalTree interval r forall interval r. BinaryTree (NodeData interval r) -> IntervalTree interval r IntervalTree (BinaryTree (NodeData interval r) -> IntervalTree interval r) @@ -627,40 +627,40 @@ forall a b. (a -> b) -> a -> b $ BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) -delete' BinaryTree (NodeData interval r) -t +delete' BinaryTree (NodeData interval r) +t where - delete' :: BinaryTree (NodeData interval r) + delete' :: BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) -delete' BinaryTree (NodeData interval r) +delete' BinaryTree (NodeData interval r) Nil = BinaryTree (NodeData interval r) forall a. BinaryTree a Nil - delete' (Internal BinaryTree (NodeData interval r) -l nd :: NodeData interval r -nd@(NodeData interval r -> r + delete' (Internal BinaryTree (NodeData interval r) +l nd :: NodeData interval r +nd@(NodeData interval r -> r forall i r. NodeData i r -> r -_splitPoint -> r -m) BinaryTree (NodeData interval r) -r) +_splitPoint -> r +m) BinaryTree (NodeData interval r) +r) | r -m r -> interval -> Bool +m r -> interval -> Bool forall interval r. (Ord r, Interval_ interval r) => r -> interval -> Bool `stabsInterval` interval -i = BinaryTree (NodeData interval r) +i = BinaryTree (NodeData interval r) -> NodeData interval r -> BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) forall a. BinaryTree a -> a -> BinaryTree a -> BinaryTree a Internal BinaryTree (NodeData interval r) -l (NodeData interval r -> NodeData interval r -deleteFromNode NodeData interval r -nd) BinaryTree (NodeData interval r) -r +l (NodeData interval r -> NodeData interval r +deleteFromNode NodeData interval r +nd) BinaryTree (NodeData interval r) +r | (interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasEnd seg p => Lens' seg p @@ -668,17 +668,17 @@ end) r -> r -> Bool forall a. Ord a => a -> a -> Bool <= r -m = BinaryTree (NodeData interval r) +m = BinaryTree (NodeData interval r) -> NodeData interval r -> BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) forall a. BinaryTree a -> a -> BinaryTree a -> BinaryTree a Internal (BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) -delete' BinaryTree (NodeData interval r) -l) NodeData interval r -nd BinaryTree (NodeData interval r) -r +delete' BinaryTree (NodeData interval r) +l) NodeData interval r +nd BinaryTree (NodeData interval r) +r | Bool otherwise = BinaryTree (NodeData interval r) -> NodeData interval r @@ -686,68 +686,68 @@ -> BinaryTree (NodeData interval r) forall a. BinaryTree a -> a -> BinaryTree a -> BinaryTree a Internal BinaryTree (NodeData interval r) -l NodeData interval r -nd (BinaryTree (NodeData interval r) +l NodeData interval r +nd (BinaryTree (NodeData interval r) -> BinaryTree (NodeData interval r) -delete' BinaryTree (NodeData interval r) -r) +delete' BinaryTree (NodeData interval r) +r) - deleteFromNode :: NodeData interval r -> NodeData interval r -deleteFromNode (NodeData r -m Map r [interval] -l Map (Down r) [interval] -r) = r + deleteFromNode :: NodeData interval r -> NodeData interval r +deleteFromNode (NodeData r +m Map r [interval] +l Map (Down r) [interval] +r) = r -> Map r [interval] -> Map (Down r) [interval] -> NodeData interval r forall i r. r -> Map r [i] -> Map (Down r) [i] -> NodeData i r NodeData r -m (([interval] -> Maybe [interval]) +m (([interval] -> Maybe [interval]) -> r -> Map r [interval] -> Map r [interval] forall k a. Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a Map.update [interval] -> Maybe [interval] -f (interval -iinterval -> Getting r interval r -> r +f (interval +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasStart seg p => Lens' seg p Lens' interval r start) Map r [interval] -l) +l) (([interval] -> Maybe [interval]) -> Down r -> Map (Down r) [interval] -> Map (Down r) [interval] forall k a. Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a Map.update [interval] -> Maybe [interval] -f (r -> Down r +f (r -> Down r forall a. a -> Down a Down (r -> Down r) -> r -> Down r forall a b. (a -> b) -> a -> b $ interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasEnd seg p => Lens' seg p Lens' interval r end) Map (Down r) [interval] -r) +r) - f :: [interval] -> Maybe [interval] -f [interval] -is = let is' :: [interval] -is' = interval -> [interval] -> [interval] + f :: [interval] -> Maybe [interval] +f [interval] +is = let is' :: [interval] +is' = interval -> [interval] -> [interval] forall a. Eq a => a -> [a] -> [a] List.delete interval -i [interval] -is in if [interval] -> Bool +i [interval] +is in if [interval] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [interval] -is' then Maybe [interval] +is' then Maybe [interval] forall a. Maybe a Nothing else [interval] -> Maybe [interval] forall a. a -> Maybe a Just [interval] -is' +is' -------------------------------------------------------------------------------- diff --git a/haddocks/hgeometry/src/HGeometry.Line.LowerEnvelope.html b/haddocks/hgeometry/src/HGeometry.Line.LowerEnvelope.html index 2b466ee47..2d2731c9a 100644 --- a/haddocks/hgeometry/src/HGeometry.Line.LowerEnvelope.html +++ b/haddocks/hgeometry/src/HGeometry.Line.LowerEnvelope.html @@ -41,8 +41,8 @@ -------------------------------------------------------------------------------- -- | The lower envelope of a set of lines -newtype LowerEnvelopeF f vertex line = LowerEnvelope (Alternating f vertex line) - deriving newtype ((forall a b. +newtype LowerEnvelopeF f vertex line = LowerEnvelope (Alternating f vertex line) + deriving newtype ((forall a b. (a -> b) -> LowerEnvelopeF f vertex a -> LowerEnvelopeF f vertex b) -> (forall a b. a -> LowerEnvelopeF f vertex b -> LowerEnvelopeF f vertex a) @@ -70,7 +70,7 @@ a -> LowerEnvelopeF f vertex b -> LowerEnvelopeF f vertex a <$ :: forall a b. a -> LowerEnvelopeF f vertex b -> LowerEnvelopeF f vertex a -Functor, (forall a. Functor (LowerEnvelopeF f a)) => +Functor, (forall a. Functor (LowerEnvelopeF f a)) => (forall a b c d. (a -> b) -> (c -> d) -> LowerEnvelopeF f a c -> LowerEnvelopeF f b d) @@ -121,7 +121,7 @@ (b -> c) -> LowerEnvelopeF f a b -> LowerEnvelopeF f a c second :: forall b c a. (b -> c) -> LowerEnvelopeF f a b -> LowerEnvelopeF f a c -Bifunctor, (forall m. Monoid m => LowerEnvelopeF f vertex m -> m) +Bifunctor, (forall m. Monoid m => LowerEnvelopeF f vertex m -> m) -> (forall m a. Monoid m => (a -> m) -> LowerEnvelopeF f vertex a -> m) @@ -285,8 +285,8 @@ -- | projection function that turns a lower envelope into an alternating "list" of lines -- and vertices. -_Alternating :: Iso (LowerEnvelopeF f vertex line) (LowerEnvelopeF f' vertex' line') - (Alternating f vertex line) (Alternating f' vertex' line') +_Alternating :: Iso (LowerEnvelopeF f vertex line) (LowerEnvelopeF f' vertex' line') + (Alternating f vertex line) (Alternating f' vertex' line') _Alternating :: forall (f :: * -> *) vertex line (f' :: * -> *) vertex' line' (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => @@ -304,14 +304,14 @@ (Alternating f' vertex' line') coerced -deriving instance ( Show line, Show (f (vertex, line)) - ) => Show (LowerEnvelopeF f vertex line) +deriving instance ( Show line, Show (f (vertex, line)) + ) => Show (LowerEnvelopeF f vertex line) -deriving instance ( Eq line, Eq (f (vertex, line)) - ) => Eq (LowerEnvelopeF f vertex line) +deriving instance ( Eq line, Eq (f (vertex, line)) + ) => Eq (LowerEnvelopeF f vertex line) -deriving instance ( Ord line, Ord (f (vertex, line)) - ) => Ord (LowerEnvelopeF f vertex line) +deriving instance ( Ord line, Ord (f (vertex, line)) + ) => Ord (LowerEnvelopeF f vertex line) @@ -330,15 +330,15 @@ -- pre: the input is a set (so no duplicates) -- -- running time: \(O(n\log n)\) -lowerEnvelope :: forall g f line r. - ( NonVerticalHyperPlane_ line 2 r - , Fractional r, Ord r - , Foldable1 f, Functor f - , IsIntersectableWith line line - , Intersection line line ~ Maybe (LineLineIntersection line) - , HasFromFoldable g +lowerEnvelope :: forall g f line r. + ( NonVerticalHyperPlane_ line 2 r + , Fractional r, Ord r + , Foldable1 f, Functor f + , IsIntersectableWith line line + , Intersection line line ~ Maybe (LineLineIntersection line) + , HasFromFoldable g ) - => f line -> LowerEnvelopeF g (Point 2 r) line + => f line -> LowerEnvelopeF g (Point 2 r) line lowerEnvelope :: forall (g :: * -> *) (f :: * -> *) line r. (NonVerticalHyperPlane_ line 2 r, Fractional r, Ord r, Foldable1 f, Functor f, IsIntersectableWith line line, @@ -346,7 +346,7 @@ HasFromFoldable g) => f line -> LowerEnvelopeF g (Point 2 r) line lowerEnvelope = NonEmpty line -> LowerEnvelopeF g (Point 2 r) line -construct (NonEmpty line -> LowerEnvelopeF g (Point 2 r) line) +construct (NonEmpty line -> LowerEnvelopeF g (Point 2 r) line) -> (f line -> NonEmpty line) -> f line -> LowerEnvelopeF g (Point 2 r) line @@ -388,25 +388,25 @@ . (line -> Point 2 r :+ line) -> f line -> f (Point 2 r :+ line) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\line -l -> line -> Point 2 r +fmap (\line +l -> line -> Point 2 r forall hyperPlane (d :: Natural) r. (NonVerticalHyperPlane_ hyperPlane d r, Num r, 1 <= d) => hyperPlane -> Point d r dualPoint line -l Point 2 r -> line -> Point 2 r :+ line +l Point 2 r -> line -> Point 2 r :+ line forall core extra. core -> extra -> core :+ extra :+ line -l) +l) where - construct :: NonEmpty line -> LowerEnvelopeF g (Point 2 r) line -construct (line -l0 :| [line] -ls) = let vertices' :: [(Point 2 r, line)] -vertices' = line -> [line] -> [(Point 2 r, line)] -computeVertices line -l0 [line] -ls + construct :: NonEmpty line -> LowerEnvelopeF g (Point 2 r) line +construct (line +l0 :| [line] +ls) = let vertices' :: [(Point 2 r, line)] +vertices' = line -> [line] -> [(Point 2 r, line)] +computeVertices line +l0 [line] +ls in Alternating g (Point 2 r) line -> LowerEnvelopeF g (Point 2 r) line forall (f :: * -> *) vertex line. Alternating f vertex line -> LowerEnvelopeF f vertex line @@ -418,19 +418,19 @@ $ line -> g (Point 2 r, line) -> Alternating g (Point 2 r) line forall (f :: * -> *) sep a. a -> f (sep, a) -> Alternating f sep a Alternating line -l0 (g (Point 2 r, line) -> Alternating g (Point 2 r) line) +l0 (g (Point 2 r, line) -> Alternating g (Point 2 r) line) -> g (Point 2 r, line) -> Alternating g (Point 2 r) line forall a b. (a -> b) -> a -> b $ [(Point 2 r, line)] -> g (Point 2 r, line) forall a. [a] -> g a forall (f :: * -> *) a. HasFromFoldable f => [a] -> f a fromList [(Point 2 r, line)] -vertices' +vertices' - computeVertices :: line -> [line] -> [(Point 2 r, line)] - computeVertices :: line -> [line] -> [(Point 2 r, line)] -computeVertices line -l0 = (line, [(Point 2 r, line)]) -> [(Point 2 r, line)] + computeVertices :: line -> [line] -> [(Point 2 r, line)] + computeVertices :: line -> [line] -> [(Point 2 r, line)] +computeVertices line +l0 = (line, [(Point 2 r, line)]) -> [(Point 2 r, line)] forall a b. (a, b) -> b snd ((line, [(Point 2 r, line)]) -> [(Point 2 r, line)]) -> ([line] -> (line, [(Point 2 r, line)])) @@ -442,30 +442,30 @@ forall (t :: * -> *) s a b. Traversable t => (s -> a -> (s, b)) -> s -> t a -> (s, t b) -List.mapAccumL (\line -l line -l' -> (line -l', (Maybe (LineLineIntersection line) -> Point 2 r -pt (Maybe (LineLineIntersection line) -> Point 2 r) +List.mapAccumL (\line +l line +l' -> (line +l', (Maybe (LineLineIntersection line) -> Point 2 r +pt (Maybe (LineLineIntersection line) -> Point 2 r) -> Maybe (LineLineIntersection line) -> Point 2 r forall a b. (a -> b) -> a -> b $ line -l line -> line -> Intersection line line +l line -> line -> Intersection line line forall g h. IsIntersectableWith g h => g -> h -> Intersection g h `intersect` line -l', line -l'))) line -l0 +l', line +l'))) line +l0 -- we scan through the lines from left to right: we maintain the previous line l, as -- we encounter an new line l' we report a pair (p,l') where p is the intersection -- point p of l and l'. Our last line l' becomes the new state. - pt :: Maybe (LineLineIntersection line) -> Point 2 r - pt :: Maybe (LineLineIntersection line) -> Point 2 r -pt = \case - Just (Line_x_Line_Point Point 2 (NumType line) -p) -> Point 2 r + pt :: Maybe (LineLineIntersection line) -> Point 2 r + pt :: Maybe (LineLineIntersection line) -> Point 2 r +pt = \case + Just (Line_x_Line_Point Point 2 (NumType line) +p) -> Point 2 r Point 2 (NumType line) -p +p Maybe (LineLineIntersection line) _ -> String -> Point 2 r forall a. HasCallStack => String -> a @@ -475,53 +475,53 @@ -------------------------------------------------------------------------------- -- | Commputes the line directly above the query point x -lineAt :: ( Ord r - , Point_ vertex d r - , 1 <= d - , BinarySearch (f (vertex, line)) - , Elem (f (vertex, line)) ~ (vertex, line) - ) => r -> LowerEnvelopeF f vertex line -> line +lineAt :: ( Ord r + , Point_ vertex d r + , 1 <= d + , BinarySearch (f (vertex, line)) + , Elem (f (vertex, line)) ~ (vertex, line) + ) => r -> LowerEnvelopeF f vertex line -> line lineAt :: forall r vertex (d :: Natural) (f :: * -> *) line. (Ord r, Point_ vertex d r, 1 <= d, BinarySearch (f (vertex, line)), Elem (f (vertex, line)) ~ (vertex, line)) => r -> LowerEnvelopeF f vertex line -> line -lineAt r -x env :: LowerEnvelopeF f vertex line -env@(LowerEnvelope (Alternating line -l0 f (vertex, line) +lineAt r +x env :: LowerEnvelopeF f vertex line +env@(LowerEnvelope (Alternating line +l0 f (vertex, line) _)) = case r -> LowerEnvelopeF f vertex line -> Maybe (vertex, line) forall r vertex (d :: Natural) (f :: * -> *) line. (Ord r, Point_ vertex d r, 1 <= d, BinarySearch (f (vertex, line)), Elem (f (vertex, line)) ~ (vertex, line)) => r -> LowerEnvelopeF f vertex line -> Maybe (vertex, line) lookupLEVertex r -x LowerEnvelopeF f vertex line -env of +x LowerEnvelopeF f vertex line +env of Maybe (vertex, line) Nothing -> line -l0 +l0 Just (vertex -_, line -l) -> line -l +_, line +l) -> line +l -- | returns the rightmost vertex v for which v_x < x. -lookupLEVertex :: ( Ord r - , Point_ vertex d r - , 1 <= d - , BinarySearch (f (vertex, line)) - , Elem (f (vertex, line)) ~ (vertex, line) +lookupLEVertex :: ( Ord r + , Point_ vertex d r + , 1 <= d + , BinarySearch (f (vertex, line)) + , Elem (f (vertex, line)) ~ (vertex, line) ) - => r -> LowerEnvelopeF f vertex line - -> Maybe (vertex, line) + => r -> LowerEnvelopeF f vertex line + -> Maybe (vertex, line) lookupLEVertex :: forall r vertex (d :: Natural) (f :: * -> *) line. (Ord r, Point_ vertex d r, 1 <= d, BinarySearch (f (vertex, line)), Elem (f (vertex, line)) ~ (vertex, line)) => r -> LowerEnvelopeF f vertex line -> Maybe (vertex, line) -lookupLEVertex r -x (LowerEnvelope (Alternating line -_ f (vertex, line) -ls)) = +lookupLEVertex r +x (LowerEnvelope (Alternating line +_ f (vertex, line) +ls)) = (Elem (f (vertex, line)) -> Bool) -> f (vertex, line) -> Maybe (Elem (f (vertex, line))) forall v. BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Elem v) @@ -529,10 +529,10 @@ not (Bool -> Bool) -> ((vertex, line) -> Bool) -> (vertex, line) -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c -. \(vertex -v,line +. \(vertex +v,line _) -> vertex -vvertex -> Getting r vertex r -> r +vvertex -> Getting r vertex r -> r forall s a. s -> Getting a s a -> a ^.Getting r vertex r forall (d :: Natural) point r. @@ -542,6 +542,6 @@ xCoord r -> r -> Bool forall a. Ord a => a -> a -> Bool <= r -x) f (vertex, line) -ls +x) f (vertex, line) +ls \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.BentleyOttmann.html b/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.BentleyOttmann.html index b1d0b6344..121d180b7 100644 --- a/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.BentleyOttmann.html +++ b/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.BentleyOttmann.html @@ -62,17 +62,17 @@ -- | Compute all intersections -- -- \(O((n+k)\log n)\), where \(k\) is the number of intersections. -intersections :: forall lineSegment point r f. - ( LineSegment_ lineSegment point - , Point_ point 2 r - , Eq lineSegment - , Ord r, Fractional r - , HasOnSegment lineSegment 2 - , IntersectConstraints lineSegment - , Foldable f, Functor f - , StartPointOf lineSegment ~ EndPointOf lineSegment +intersections :: forall lineSegment point r f. + ( LineSegment_ lineSegment point + , Point_ point 2 r + , Eq lineSegment + , Ord r, Fractional r + , HasOnSegment lineSegment 2 + , IntersectConstraints lineSegment + , Foldable f, Functor f + , StartPointOf lineSegment ~ EndPointOf lineSegment ) - => f lineSegment -> Intersections r lineSegment + => f lineSegment -> Intersections r lineSegment intersections :: forall lineSegment point r (f :: * -> *). (LineSegment_ lineSegment point, Point_ point 2 r, Eq lineSegment, Ord r, Fractional r, HasOnSegment lineSegment 2, @@ -131,24 +131,24 @@ -- pts = EQ.fromAscList . groupStarts . sort . foldMap (asEventPts . tagFlipped) $ segs -intersections' :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Eq lineSegment - , Ord r, Fractional r - , HasOnSegment lineSegment 2 - , IntersectConstraints lineSegment - , StartPointOf lineSegment ~ EndPointOf lineSegment - , Foldable f +intersections' :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Eq lineSegment + , Ord r, Fractional r + , HasOnSegment lineSegment 2 + , IntersectConstraints lineSegment + , StartPointOf lineSegment ~ EndPointOf lineSegment + , Foldable f ) - => f lineSegment -> Intersections r lineSegment + => f lineSegment -> Intersections r lineSegment intersections' :: forall lineSegment point r (f :: * -> *). (LineSegment_ lineSegment point, Point_ point 2 r, Eq lineSegment, Ord r, Fractional r, HasOnSegment lineSegment 2, IntersectConstraints lineSegment, StartPointOf lineSegment ~ EndPointOf lineSegment, Foldable f) => f lineSegment -> Intersections r lineSegment -intersections' f lineSegment -segs = [IntersectionPoint (Point 2 r) lineSegment] +intersections' f lineSegment +segs = [IntersectionPoint (Point 2 r) lineSegment] -> Intersections r lineSegment forall r lineSegment. (Ord r, Fractional r) => @@ -170,12 +170,12 @@ -> StatusStructure r lineSegment -> [IntersectionPoint (Point 2 r) lineSegment] sweep EventQueue r lineSegment -pts StatusStructure r lineSegment +pts StatusStructure r lineSegment forall a. Set a SS.empty where - pts :: EventQueue r lineSegment -pts = [Event r lineSegment] -> EventQueue r lineSegment + pts :: EventQueue r lineSegment +pts = [Event r lineSegment] -> EventQueue r lineSegment forall a. Eq a => [a] -> Set a EQ.fromAscList ([Event r lineSegment] -> EventQueue r lineSegment) -> (f lineSegment -> [Event r lineSegment]) @@ -214,23 +214,23 @@ -> f lineSegment -> EventQueue r lineSegment forall a b. (a -> b) -> a -> b $ f lineSegment -segs +segs -- | Computes all intersection points p s.t. p lies in the interior of at least -- one of the segments. -- -- \(O((n+k)\log n)\), where \(k\) is the number of intersections. -interiorIntersections :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Eq lineSegment - , Ord r, Fractional r - , IntersectConstraints lineSegment - , StartPointOf lineSegment ~ EndPointOf lineSegment - , HasOnSegment lineSegment 2 - , Foldable f, Functor f +interiorIntersections :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Eq lineSegment + , Ord r, Fractional r + , IntersectConstraints lineSegment + , StartPointOf lineSegment ~ EndPointOf lineSegment + , HasOnSegment lineSegment 2 + , Foldable f, Functor f ) - => f lineSegment -> Intersections r lineSegment + => f lineSegment -> Intersections r lineSegment interiorIntersections :: forall lineSegment point r (f :: * -> *). (LineSegment_ lineSegment point, Point_ point 2 r, Eq lineSegment, Ord r, Fractional r, IntersectConstraints lineSegment, @@ -261,17 +261,17 @@ -------------------------------------------------------------------------------- -- | Computes the event points for a given line segment -asEventPts :: (LineSegment_ lineSegment point, Point_ point 2 r) - => lineSegment -> [Event r lineSegment] +asEventPts :: (LineSegment_ lineSegment point, Point_ point 2 r) + => lineSegment -> [Event r lineSegment] asEventPts :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r) => lineSegment -> [Event r lineSegment] -asEventPts lineSegment -s = [ Point 2 r -> EventType lineSegment -> Event r lineSegment +asEventPts lineSegment +s = [ Point 2 r -> EventType lineSegment -> Event r lineSegment forall r lineSegment. Point 2 r -> EventType lineSegment -> Event r lineSegment Event (lineSegment -slineSegment +slineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -296,14 +296,14 @@ -> NonEmpty lineSegment -> EventType lineSegment forall a b. (a -> b) -> a -> b $ lineSegment -s lineSegment -> [lineSegment] -> NonEmpty lineSegment +s lineSegment -> [lineSegment] -> NonEmpty lineSegment forall a. a -> [a] -> NonEmpty a :| []) , Point 2 r -> EventType lineSegment -> Event r lineSegment forall r lineSegment. Point 2 r -> EventType lineSegment -> Event r lineSegment Event (lineSegment -slineSegment +slineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -325,12 +325,12 @@ asPoint) (lineSegment -> EventType lineSegment forall s. s -> EventType s End lineSegment -s) +s) ] -- | Group the segments with the intersection points -merge :: (Ord r, Fractional r) - => [IntersectionPoint (Point 2 r) lineSegment] -> Intersections r lineSegment +merge :: (Ord r, Fractional r) + => [IntersectionPoint (Point 2 r) lineSegment] -> Intersections r lineSegment merge :: forall r lineSegment. (Ord r, Fractional r) => [IntersectionPoint (Point 2 r) lineSegment] @@ -343,11 +343,11 @@ forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m -foldMap (\IntersectionPoint (Point 2 r) lineSegment -ip -> Point 2 r -> Associated lineSegment -> Intersections r lineSegment +foldMap (\IntersectionPoint (Point 2 r) lineSegment +ip -> Point 2 r -> Associated lineSegment -> Intersections r lineSegment forall k a. k -> a -> Map k a Map.singleton (IntersectionPoint (Point 2 r) lineSegment -ipIntersectionPoint (Point 2 r) lineSegment +ipIntersectionPoint (Point 2 r) lineSegment -> Getting (Point 2 r) (IntersectionPoint (Point 2 r) lineSegment) (Point 2 r) -> Point 2 r @@ -360,7 +360,7 @@ -> IntersectionPoint point lineSegment -> f (IntersectionPoint point' lineSegment) intersectionPoint) (IntersectionPoint (Point 2 r) lineSegment -ipIntersectionPoint (Point 2 r) lineSegment +ipIntersectionPoint (Point 2 r) lineSegment -> Getting (Associated lineSegment) (IntersectionPoint (Point 2 r) lineSegment) @@ -378,7 +378,7 @@ -> f (IntersectionPoint point lineSegment') associatedSegs)) -groupStarts :: Eq r => Vector.Vector (Event r lineSegment) -> [Event r lineSegment] +groupStarts :: Eq r => Vector.Vector (Event r lineSegment) -> [Event r lineSegment] groupStarts :: forall r lineSegment. Eq r => Vector (Event r lineSegment) -> [Event r lineSegment] @@ -397,22 +397,22 @@ -- | Group the startpoints such that segments with the same start point -- correspond to one event. -groupStarts' :: Eq r => [Event r lineSegment] -> [Event r lineSegment] +groupStarts' :: Eq r => [Event r lineSegment] -> [Event r lineSegment] groupStarts' :: forall r lineSegment. Eq r => [Event r lineSegment] -> [Event r lineSegment] groupStarts' [] = [] -groupStarts' (Event Point 2 r -p (Start NonEmpty lineSegment -s) : [Event r lineSegment] -es) = Point 2 r -> EventType lineSegment -> Event r lineSegment +groupStarts' (Event Point 2 r +p (Start NonEmpty lineSegment +s) : [Event r lineSegment] +es) = Point 2 r -> EventType lineSegment -> Event r lineSegment forall r lineSegment. Point 2 r -> EventType lineSegment -> Event r lineSegment Event Point 2 r -p (NonEmpty lineSegment -> EventType lineSegment +p (NonEmpty lineSegment -> EventType lineSegment forall s. NonEmpty s -> EventType s Start NonEmpty lineSegment -ss) Event r lineSegment +ss) Event r lineSegment -> [Event r lineSegment] -> [Event r lineSegment] forall a. a -> [a] -> [a] : [Event r lineSegment] -> [Event r lineSegment] @@ -420,29 +420,29 @@ Eq r => [Event r lineSegment] -> [Event r lineSegment] groupStarts' [Event r lineSegment] -rest +rest where - ([Event r lineSegment] -ss',[Event r lineSegment] -rest) = (Event r lineSegment -> Bool) + ([Event r lineSegment] +ss',[Event r lineSegment] +rest) = (Event r lineSegment -> Bool) -> [Event r lineSegment] -> ([Event r lineSegment], [Event r lineSegment]) forall a. (a -> Bool) -> [a] -> ([a], [a]) List.span Event r lineSegment -> Bool -sameStart [Event r lineSegment] -es +sameStart [Event r lineSegment] +es -- FIXME: this seems to keep the segments on decreasing y, increasing x. shouldn't we -- sort them cyclically around p instead? - ss :: NonEmpty lineSegment -ss = let (lineSegment -x:|[lineSegment] -xs) = NonEmpty lineSegment -s + ss :: NonEmpty lineSegment +ss = let (lineSegment +x:|[lineSegment] +xs) = NonEmpty lineSegment +s in lineSegment -x lineSegment -> [lineSegment] -> NonEmpty lineSegment +x lineSegment -> [lineSegment] -> NonEmpty lineSegment forall a. a -> [a] -> NonEmpty a :| ([lineSegment] -xs [lineSegment] -> [lineSegment] -> [lineSegment] +xs [lineSegment] -> [lineSegment] -> [lineSegment] forall a. [a] -> [a] -> [a] ++ (Event r lineSegment -> [lineSegment]) -> [Event r lineSegment] -> [lineSegment] @@ -450,23 +450,23 @@ concatMap Event r lineSegment -> [lineSegment] forall r lineSegment. Event r lineSegment -> [lineSegment] startSegs [Event r lineSegment] -ss') +ss') - sameStart :: Event r lineSegment -> Bool -sameStart (Event Point 2 r -q (Start NonEmpty lineSegment + sameStart :: Event r lineSegment -> Bool +sameStart (Event Point 2 r +q (Start NonEmpty lineSegment _)) = Point 2 r -p Point 2 r -> Point 2 r -> Bool +p Point 2 r -> Point 2 r -> Bool forall a. Eq a => a -> a -> Bool == Point 2 r -q - sameStart Event r lineSegment +q + sameStart Event r lineSegment _ = Bool False -groupStarts' (Event r lineSegment -e : [Event r lineSegment] -es) = Event r lineSegment -e Event r lineSegment +groupStarts' (Event r lineSegment +e : [Event r lineSegment] +es) = Event r lineSegment +e Event r lineSegment -> [Event r lineSegment] -> [Event r lineSegment] forall a. a -> [a] -> [a] : [Event r lineSegment] -> [Event r lineSegment] @@ -474,13 +474,13 @@ Eq r => [Event r lineSegment] -> [Event r lineSegment] groupStarts' [Event r lineSegment] -es +es -------------------------------------------------------------------------------- -- * Data type for Events -- | Type of segment -data EventType s = Start !(NonEmpty s)| Intersection | End !s deriving (Int -> EventType s -> ShowS +data EventType s = Start !(NonEmpty s)| Intersection | End !s deriving (Int -> EventType s -> ShowS [EventType s] -> ShowS EventType s -> String (Int -> EventType s -> ShowS) @@ -500,22 +500,22 @@ showList :: [EventType s] -> ShowS Show) -instance Eq (EventType s) where - EventType s -a == :: EventType s -> EventType s -> Bool -== EventType s -b = EventType s -a EventType s -> EventType s -> Ordering +instance Eq (EventType s) where + EventType s +a == :: EventType s -> EventType s -> Bool +== EventType s +b = EventType s +a EventType s -> EventType s -> Ordering forall a. Ord a => a -> a -> Ordering `compare` EventType s -b Ordering -> Ordering -> Bool +b Ordering -> Ordering -> Bool forall a. Eq a => a -> a -> Bool == Ordering EQ -instance Ord (EventType s) where +instance Ord (EventType s) where (Start NonEmpty s -_) compare :: EventType s -> EventType s -> Ordering +_) compare :: EventType s -> EventType s -> Ordering `compare` (Start NonEmpty s _) = Ordering EQ @@ -545,11 +545,11 @@ GT -- | The actual event consists of a point and its type -data Event r lineSegment = Event { forall r lineSegment. Event r lineSegment -> Point 2 r -eventPoint :: !(Point 2 r) +data Event r lineSegment = Event { forall r lineSegment. Event r lineSegment -> Point 2 r +eventPoint :: !(Point 2 r) , forall r lineSegment. Event r lineSegment -> EventType lineSegment -eventType :: !(EventType lineSegment) - } deriving (Int -> Event r lineSegment -> ShowS +eventType :: !(EventType lineSegment) + } deriving (Int -> Event r lineSegment -> ShowS [Event r lineSegment] -> ShowS Event r lineSegment -> String (Int -> Event r lineSegment -> ShowS) @@ -579,7 +579,7 @@ (Show r, Show lineSegment) => [Event r lineSegment] -> ShowS showList :: [Event r lineSegment] -> ShowS -Show,Event r lineSegment -> Event r lineSegment -> Bool +Show,Event r lineSegment -> Event r lineSegment -> Bool (Event r lineSegment -> Event r lineSegment -> Bool) -> (Event r lineSegment -> Event r lineSegment -> Bool) -> Eq (Event r lineSegment) @@ -597,61 +597,61 @@ /= :: Event r lineSegment -> Event r lineSegment -> Bool Eq) -instance Ord r => Ord (Event r lineSegment) where +instance Ord r => Ord (Event r lineSegment) where -- decreasing on the y-coord, then increasing on x-coord, and increasing on event-type - (Event Point 2 r -p EventType lineSegment -s) compare :: Event r lineSegment -> Event r lineSegment -> Ordering -`compare` (Event Point 2 r -q EventType lineSegment -t) = case Point 2 r -> Point 2 r -> Ordering + (Event Point 2 r +p EventType lineSegment +s) compare :: Event r lineSegment -> Event r lineSegment -> Ordering +`compare` (Event Point 2 r +q EventType lineSegment +t) = case Point 2 r -> Point 2 r -> Ordering forall point r. (Point_ point 2 r, Ord r) => point -> point -> Ordering ordPoints Point 2 r -p Point 2 r -q of +p Point 2 r +q of Ordering EQ -> EventType lineSegment -s EventType lineSegment -> EventType lineSegment -> Ordering +s EventType lineSegment -> EventType lineSegment -> Ordering forall a. Ord a => a -> a -> Ordering `compare` EventType lineSegment -t - Ordering -x -> Ordering -x +t + Ordering +x -> Ordering +x -- | Get the segments that start at the given event point -startSegs :: Event r lineSegment -> [lineSegment] +startSegs :: Event r lineSegment -> [lineSegment] startSegs :: forall r lineSegment. Event r lineSegment -> [lineSegment] -startSegs Event r lineSegment -e = case Event r lineSegment -> EventType lineSegment +startSegs Event r lineSegment +e = case Event r lineSegment -> EventType lineSegment forall r lineSegment. Event r lineSegment -> EventType lineSegment eventType Event r lineSegment -e of - Start NonEmpty lineSegment -ss -> NonEmpty lineSegment -> [lineSegment] +e of + Start NonEmpty lineSegment +ss -> NonEmpty lineSegment -> [lineSegment] forall a. NonEmpty a -> [a] NonEmpty.toList NonEmpty lineSegment -ss +ss EventType lineSegment _ -> [] -------------------------------------------------------------------------------- -- * The Main Sweep -type EventQueue r lineSegment = EQ.Set (Event r lineSegment) -type StatusStructure r lineSegment = SS.Set lineSegment +type EventQueue r lineSegment = EQ.Set (Event r lineSegment) +type StatusStructure r lineSegment = SS.Set lineSegment -- | Run the sweep handling all events -sweep :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Ord r, Fractional r - , IntersectConstraints lineSegment - , HasOnSegment lineSegment 2 +sweep :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Ord r, Fractional r + , IntersectConstraints lineSegment + , HasOnSegment lineSegment 2 ) - => EventQueue r lineSegment -> StatusStructure r lineSegment - -> [IntersectionPoint (Point 2 r) lineSegment] + => EventQueue r lineSegment -> StatusStructure r lineSegment + -> [IntersectionPoint (Point 2 r) lineSegment] sweep :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, IntersectConstraints lineSegment, @@ -659,18 +659,18 @@ EventQueue r lineSegment -> StatusStructure r lineSegment -> [IntersectionPoint (Point 2 r) lineSegment] -sweep EventQueue r lineSegment -eq StatusStructure r lineSegment -ss = case EventQueue r lineSegment +sweep EventQueue r lineSegment +eq StatusStructure r lineSegment +ss = case EventQueue r lineSegment -> Maybe (Event r lineSegment, EventQueue r lineSegment) forall a. Set a -> Maybe (a, Set a) EQ.minView EventQueue r lineSegment -eq of +eq of Maybe (Event r lineSegment, EventQueue r lineSegment) Nothing -> [] - Just (Event r lineSegment -e,EventQueue r lineSegment -eq') -> Event r lineSegment + Just (Event r lineSegment +e,EventQueue r lineSegment +eq') -> Event r lineSegment -> EventQueue r lineSegment -> StatusStructure r lineSegment -> [IntersectionPoint (Point 2 r) lineSegment] @@ -683,11 +683,11 @@ -> StatusStructure r lineSegment -> [IntersectionPoint (Point 2 r) lineSegment] handle Event r lineSegment -e EventQueue r lineSegment -eq' StatusStructure r lineSegment -ss +e EventQueue r lineSegment +eq' StatusStructure r lineSegment +ss -isOpen :: EndPoint_ endPoint => endPoint -> Bool +isOpen :: EndPoint_ endPoint => endPoint -> Bool isOpen :: forall endPoint. EndPoint_ endPoint => endPoint -> Bool isOpen = (EndPointType -> EndPointType -> Bool forall a. Eq a => a -> a -> Bool @@ -699,7 +699,7 @@ forall endPoint. EndPoint_ endPoint => endPoint -> EndPointType endPointType -isClosed :: EndPoint_ endPoint => endPoint -> Bool +isClosed :: EndPoint_ endPoint => endPoint -> Bool isClosed :: forall endPoint. EndPoint_ endPoint => endPoint -> Bool isClosed = (EndPointType -> EndPointType -> Bool forall a. Eq a => a -> a -> Bool @@ -712,15 +712,15 @@ endPointType -- | Handle an event point -handle :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Ord r, Fractional r - , IntersectConstraints lineSegment - , HasOnSegment lineSegment 2 +handle :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Ord r, Fractional r + , IntersectConstraints lineSegment + , HasOnSegment lineSegment 2 ) - => Event r lineSegment - -> EventQueue r lineSegment -> StatusStructure r lineSegment - -> [IntersectionPoint (Point 2 r) lineSegment] + => Event r lineSegment + -> EventQueue r lineSegment -> StatusStructure r lineSegment + -> [IntersectionPoint (Point 2 r) lineSegment] handle :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, IntersectConstraints lineSegment, @@ -729,14 +729,14 @@ -> EventQueue r lineSegment -> StatusStructure r lineSegment -> [IntersectionPoint (Point 2 r) lineSegment] -handle e :: Event r lineSegment -e@(Event r lineSegment -> Point 2 r +handle e :: Event r lineSegment +e@(Event r lineSegment -> Point 2 r forall r lineSegment. Event r lineSegment -> Point 2 r -eventPoint -> Point 2 r -p) EventQueue r lineSegment -eq StatusStructure r lineSegment -ss = [IntersectionPoint (Point 2 r) lineSegment] -toReport [IntersectionPoint (Point 2 r) lineSegment] +eventPoint -> Point 2 r +p) EventQueue r lineSegment +eq StatusStructure r lineSegment +ss = [IntersectionPoint (Point 2 r) lineSegment] +toReport [IntersectionPoint (Point 2 r) lineSegment] -> [IntersectionPoint (Point 2 r) lineSegment] -> [IntersectionPoint (Point 2 r) lineSegment] forall a. Semigroup a => a -> a -> a @@ -751,18 +751,18 @@ -> StatusStructure r lineSegment -> [IntersectionPoint (Point 2 r) lineSegment] sweep EventQueue r lineSegment -eq' StatusStructure r lineSegment -ss' +eq' StatusStructure r lineSegment +ss' where - starts :: [lineSegment] -starts = Event r lineSegment -> [lineSegment] + starts :: [lineSegment] +starts = Event r lineSegment -> [lineSegment] forall r lineSegment. Event r lineSegment -> [lineSegment] startSegs Event r lineSegment -e - (StatusStructure r lineSegment -before,[lineSegment] -contains',StatusStructure r lineSegment -after) = Point 2 r +e + (StatusStructure r lineSegment +before,[lineSegment] +contains',StatusStructure r lineSegment +after) = Point 2 r -> StatusStructure r lineSegment -> (StatusStructure r lineSegment, [lineSegment], StatusStructure r lineSegment) @@ -774,11 +774,11 @@ -> (StatusStructure r lineSegment, [lineSegment], StatusStructure r lineSegment) extractContains Point 2 r -p StatusStructure r lineSegment -ss - ([lineSegment] -ends,[lineSegment] -contains) = (lineSegment -> Bool) +p StatusStructure r lineSegment +ss + ([lineSegment] +ends,[lineSegment] +contains) = (lineSegment -> Bool) -> [lineSegment] -> ([lineSegment], [lineSegment]) forall a. (a -> Bool) -> [a] -> ([a], [a]) List.partition (Point 2 r -> lineSegment -> Bool @@ -786,38 +786,38 @@ (LineSegment_ lineSegment point, Point_ point 2 r, Eq r) => Point 2 r -> lineSegment -> Bool endsAt Point 2 r -p) [lineSegment] -contains' +p) [lineSegment] +contains' -- starting segments, exluding those that have an open starting point -- starts' = filter (isClosedStart p) starts - starts' :: [lineSegment] -starts' = Point 2 r -> [lineSegment] -> [lineSegment] + starts' :: [lineSegment] +starts' = Point 2 r -> [lineSegment] -> [lineSegment] forall lineSegment point r a. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Num r, HasIntersectionWith lineSegment lineSegment) => a -> [lineSegment] -> [lineSegment] shouldReport Point 2 r -p ([lineSegment] -> [lineSegment]) -> [lineSegment] -> [lineSegment] +p ([lineSegment] -> [lineSegment]) -> [lineSegment] -> [lineSegment] forall a b. (a -> b) -> a -> b $ StatusStructure r lineSegment -> [lineSegment] forall a. Set a -> [a] SS.toAscList StatusStructure r lineSegment -newSegs +newSegs -- If we just inserted open-ended segments that start here, then -- don't consider them to be "contained" segments. - pureContains :: [lineSegment] -pureContains = + pureContains :: [lineSegment] +pureContains = (lineSegment -> Bool) -> [lineSegment] -> [lineSegment] forall a. (a -> Bool) -> [a] -> [a] -filter (\lineSegment -seg -> Bool -> Bool +filter (\lineSegment +seg -> Bool -> Bool not (Bool -> Bool) -> Bool -> Bool forall a b. (a -> b) -> a -> b $ StartPointOf lineSegment -> Bool forall endPoint. EndPoint_ endPoint => endPoint -> Bool isOpen (lineSegment -seglineSegment +seglineSegment -> Getting (StartPointOf lineSegment) lineSegment (StartPointOf lineSegment) -> StartPointOf lineSegment @@ -828,10 +828,10 @@ Lens' lineSegment (StartPointOf lineSegment) startPoint) Bool -> Bool -> Bool && Point 2 r -p Point 2 r -> Point 2 r -> Bool +p Point 2 r -> Point 2 r -> Bool forall a. Eq a => a -> a -> Bool == lineSegment -seglineSegment +seglineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -851,11 +851,11 @@ Lens' point (Point d r) Lens' point (Point 2 r) asPoint) [lineSegment] -contains +contains -- any (closed) ending segments at this event point. - closedEnds :: [lineSegment] -closedEnds = (lineSegment -> Bool) -> [lineSegment] -> [lineSegment] + closedEnds :: [lineSegment] +closedEnds = (lineSegment -> Bool) -> [lineSegment] -> [lineSegment] forall a. (a -> Bool) -> [a] -> [a] filter (EndPointOf lineSegment -> Bool forall endPoint. EndPoint_ endPoint => endPoint -> Bool @@ -871,17 +871,17 @@ forall seg p. HasEndPoint seg p => Lens' seg p Lens' lineSegment (EndPointOf lineSegment) endPoint) [lineSegment] -ends +ends - toReport :: [IntersectionPoint (Point 2 r) lineSegment] -toReport = case [lineSegment] -starts' [lineSegment] -> [lineSegment] -> [lineSegment] + toReport :: [IntersectionPoint (Point 2 r) lineSegment] +toReport = case [lineSegment] +starts' [lineSegment] -> [lineSegment] -> [lineSegment] forall a. Semigroup a => a -> a -> a <> [lineSegment] -closedEnds [lineSegment] -> [lineSegment] -> [lineSegment] +closedEnds [lineSegment] -> [lineSegment] -> [lineSegment] forall a. Semigroup a => a -> a -> a <> [lineSegment] -pureContains of +pureContains of (lineSegment _:lineSegment _:[lineSegment] @@ -897,46 +897,46 @@ -> [lineSegment] -> IntersectionPoint point lineSegment mkIntersectionPoint Point 2 r -p ([lineSegment] -starts' [lineSegment] -> [lineSegment] -> [lineSegment] +p ([lineSegment] +starts' [lineSegment] -> [lineSegment] -> [lineSegment] forall a. Semigroup a => a -> a -> a <> [lineSegment] -closedEnds) [lineSegment] -pureContains ] +closedEnds) [lineSegment] +pureContains ] [lineSegment] _ -> [] -- new status structure - ss' :: StatusStructure r lineSegment -ss' = StatusStructure r lineSegment -before StatusStructure r lineSegment + ss' :: StatusStructure r lineSegment +ss' = StatusStructure r lineSegment +before StatusStructure r lineSegment -> StatusStructure r lineSegment -> StatusStructure r lineSegment forall a. Set a -> Set a -> Set a `SS.join` StatusStructure r lineSegment -newSegs StatusStructure r lineSegment +newSegs StatusStructure r lineSegment -> StatusStructure r lineSegment -> StatusStructure r lineSegment forall a. Set a -> Set a -> Set a `SS.join` StatusStructure r lineSegment -after - newSegs :: StatusStructure r lineSegment -newSegs = Point 2 r -> [lineSegment] -> StatusStructure r lineSegment +after + newSegs :: StatusStructure r lineSegment +newSegs = Point 2 r -> [lineSegment] -> StatusStructure r lineSegment forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r) => Point 2 r -> [lineSegment] -> StatusStructure r lineSegment toStatusStruct Point 2 r -p ([lineSegment] -> StatusStructure r lineSegment) +p ([lineSegment] -> StatusStructure r lineSegment) -> [lineSegment] -> StatusStructure r lineSegment forall a b. (a -> b) -> a -> b $ [lineSegment] -starts [lineSegment] -> [lineSegment] -> [lineSegment] +starts [lineSegment] -> [lineSegment] -> [lineSegment] forall a. [a] -> [a] -> [a] ++ [lineSegment] -contains +contains -- the new eeventqueue - eq' :: EventQueue r lineSegment -eq' = (Event r lineSegment + eq' :: EventQueue r lineSegment +eq' = (Event r lineSegment -> EventQueue r lineSegment -> EventQueue r lineSegment) -> EventQueue r lineSegment -> [Event r lineSegment] @@ -949,15 +949,15 @@ -> EventQueue r lineSegment -> EventQueue r lineSegment forall a. Ord a => a -> Set a -> Set a EQ.insert EventQueue r lineSegment -eq [Event r lineSegment] -es +eq [Event r lineSegment] +es -- the new events: - es :: [Event r lineSegment] -es | StatusStructure r lineSegment -> Bool + es :: [Event r lineSegment] +es | StatusStructure r lineSegment -> Bool forall a. Set a -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool F.null StatusStructure r lineSegment -newSegs = Maybe (Event r lineSegment) -> [Event r lineSegment] +newSegs = Maybe (Event r lineSegment) -> [Event r lineSegment] forall a. Maybe a -> [a] maybeToList (Maybe (Event r lineSegment) -> [Event r lineSegment]) -> Maybe (Event r lineSegment) -> [Event r lineSegment] @@ -969,7 +969,7 @@ forall {m :: * -> *} {t} {t} {b}. Monad m => (t -> t -> m b) -> m t -> m t -> m b -app (Point 2 r +app (Point 2 r -> lineSegment -> lineSegment -> Maybe (Event r lineSegment) forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, @@ -979,20 +979,20 @@ Point 2 r -> lineSegment -> lineSegment -> Maybe (Event r lineSegment) findNewEvent Point 2 r -p) Maybe lineSegment -sl Maybe lineSegment -sr +p) Maybe lineSegment +sl Maybe lineSegment +sr | Bool -otherwise = let s' :: Maybe lineSegment -s' = StatusStructure r lineSegment -> Maybe lineSegment +otherwise = let s' :: Maybe lineSegment +s' = StatusStructure r lineSegment -> Maybe lineSegment forall a. Set a -> Maybe a SS.lookupMin StatusStructure r lineSegment -newSegs - s'' :: Maybe lineSegment -s'' = StatusStructure r lineSegment -> Maybe lineSegment +newSegs + s'' :: Maybe lineSegment +s'' = StatusStructure r lineSegment -> Maybe lineSegment forall a. Set a -> Maybe a SS.lookupMax StatusStructure r lineSegment -newSegs +newSegs in [Maybe (Event r lineSegment)] -> [Event r lineSegment] forall a. [Maybe a] -> [a] catMaybes [ (lineSegment -> lineSegment -> Maybe (Event r lineSegment)) @@ -1002,7 +1002,7 @@ forall {m :: * -> *} {t} {t} {b}. Monad m => (t -> t -> m b) -> m t -> m t -> m b -app (Point 2 r +app (Point 2 r -> lineSegment -> lineSegment -> Maybe (Event r lineSegment) forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, @@ -1012,9 +1012,9 @@ Point 2 r -> lineSegment -> lineSegment -> Maybe (Event r lineSegment) findNewEvent Point 2 r -p) Maybe lineSegment -sl Maybe lineSegment -s' +p) Maybe lineSegment +sl Maybe lineSegment +s' , (lineSegment -> lineSegment -> Maybe (Event r lineSegment)) -> Maybe lineSegment -> Maybe lineSegment @@ -1022,7 +1022,7 @@ forall {m :: * -> *} {t} {t} {b}. Monad m => (t -> t -> m b) -> m t -> m t -> m b -app (Point 2 r +app (Point 2 r -> lineSegment -> lineSegment -> Maybe (Event r lineSegment) forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, @@ -1032,27 +1032,27 @@ Point 2 r -> lineSegment -> lineSegment -> Maybe (Event r lineSegment) findNewEvent Point 2 r -p) Maybe lineSegment -s'' Maybe lineSegment -sr +p) Maybe lineSegment +s'' Maybe lineSegment +sr ] - sl :: Maybe lineSegment -sl = StatusStructure r lineSegment -> Maybe lineSegment + sl :: Maybe lineSegment +sl = StatusStructure r lineSegment -> Maybe lineSegment forall a. Set a -> Maybe a SS.lookupMax StatusStructure r lineSegment -before - sr :: Maybe lineSegment -sr = StatusStructure r lineSegment -> Maybe lineSegment +before + sr :: Maybe lineSegment +sr = StatusStructure r lineSegment -> Maybe lineSegment forall a. Set a -> Maybe a SS.lookupMin StatusStructure r lineSegment -after +after - app :: (t -> t -> m b) -> m t -> m t -> m b -app t -> t -> m b -f m t -x m t -y = do { x' <- m t -x ; y' <- y ; f x' y'} + app :: (t -> t -> m b) -> m t -> m t -> m b +app t -> t -> m b +f m t +x m t +y = do { x' <- m t +x ; y' <- y ; f x' y'} -- | Given the starting point p, and the segments that either start in -- p, or continue in p, in left to right order along a line just @@ -1064,11 +1064,11 @@ -- - those that have an open endpoint at p and have an intersection -- with a segment eps below p. Those segments thus overlap wtih -- their predecessor or successor in the cyclic order. -shouldReport :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Ord r, Num r - , HasIntersectionWith lineSegment lineSegment - ) => a -> [lineSegment] -> [lineSegment] +shouldReport :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Ord r, Num r + , HasIntersectionWith lineSegment lineSegment + ) => a -> [lineSegment] -> [lineSegment] shouldReport :: forall lineSegment point r a. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Num r, HasIntersectionWith lineSegment lineSegment) => @@ -1098,13 +1098,13 @@ -- | split the status structure, extracting the segments that contain p. -- the result is (before,contains,after) -extractContains :: ( LineSegment_ lineSegment point - , HasOnSegment lineSegment 2 - , Point_ point 2 r - , Ord r, Fractional r +extractContains :: ( LineSegment_ lineSegment point + , HasOnSegment lineSegment 2 + , Point_ point 2 r + , Ord r, Fractional r ) - => Point 2 r -> StatusStructure r lineSegment - -> (StatusStructure r lineSegment, [lineSegment], StatusStructure r lineSegment) + => Point 2 r -> StatusStructure r lineSegment + -> (StatusStructure r lineSegment, [lineSegment], StatusStructure r lineSegment) extractContains :: forall lineSegment point r. (LineSegment_ lineSegment point, HasOnSegment lineSegment 2, Point_ point 2 r, Ord r, Fractional r) => @@ -1112,26 +1112,26 @@ -> StatusStructure r lineSegment -> (StatusStructure r lineSegment, [lineSegment], StatusStructure r lineSegment) -extractContains Point 2 r -p StatusStructure r lineSegment -ss = (StatusStructure r lineSegment -before, StatusStructure r lineSegment -> [lineSegment] +extractContains Point 2 r +p StatusStructure r lineSegment +ss = (StatusStructure r lineSegment +before, StatusStructure r lineSegment -> [lineSegment] forall a. Set a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] F.toList StatusStructure r lineSegment -mid1 [lineSegment] -> [lineSegment] -> [lineSegment] +mid1 [lineSegment] -> [lineSegment] -> [lineSegment] forall a. Semigroup a => a -> a -> a <> StatusStructure r lineSegment -> [lineSegment] forall a. Set a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] F.toList StatusStructure r lineSegment -mid2, StatusStructure r lineSegment -after) +mid2, StatusStructure r lineSegment +after) where - (StatusStructure r lineSegment -before, StatusStructure r lineSegment -mid1, StatusStructure r lineSegment -after') = (lineSegment -> r) + (StatusStructure r lineSegment +before, StatusStructure r lineSegment +mid1, StatusStructure r lineSegment +after') = (lineSegment -> r) -> r -> StatusStructure r lineSegment -> (StatusStructure r lineSegment, StatusStructure r lineSegment, @@ -1147,7 +1147,7 @@ xCoordAt (r -> lineSegment -> r) -> r -> lineSegment -> r forall a b. (a -> b) -> a -> b $ Point 2 r -pPoint 2 r -> Getting r (Point 2 r) r -> r +pPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -1155,7 +1155,7 @@ IndexedLens' Int point r IndexedLens' Int (Point 2 r) r yCoord) (Point 2 r -pPoint 2 r -> Getting r (Point 2 r) r -> r +pPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -1163,11 +1163,11 @@ IndexedLens' Int point r IndexedLens' Int (Point 2 r) r xCoord) StatusStructure r lineSegment -ss +ss -- Make sure to also select the horizontal segments containing p - (StatusStructure r lineSegment -mid2, StatusStructure r lineSegment -after) = (lineSegment -> Bool) + (StatusStructure r lineSegment +mid2, StatusStructure r lineSegment +after) = (lineSegment -> Bool) -> StatusStructure r lineSegment -> (StatusStructure r lineSegment, StatusStructure r lineSegment) forall a. (a -> Bool) -> Set a -> (Set a, Set a) @@ -1181,32 +1181,32 @@ 2 ~ Dimension lineSegment) => point -> lineSegment -> Bool onSegment Point 2 r -p) StatusStructure r lineSegment -after' +p) StatusStructure r lineSegment +after' -- | Given a point and the linesegements that contain it. Create a piece of -- status structure for it. -toStatusStruct :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Ord r, Fractional r +toStatusStruct :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Ord r, Fractional r ) - => Point 2 r -> [lineSegment] -> StatusStructure r lineSegment + => Point 2 r -> [lineSegment] -> StatusStructure r lineSegment toStatusStruct :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r) => Point 2 r -> [lineSegment] -> StatusStructure r lineSegment -toStatusStruct Point 2 r -p [lineSegment] -xs = Set lineSegment -ss Set lineSegment -> Set lineSegment -> Set lineSegment +toStatusStruct Point 2 r +p [lineSegment] +xs = Set lineSegment +ss Set lineSegment -> Set lineSegment -> Set lineSegment forall a. Set a -> Set a -> Set a `SS.join` Set lineSegment -hors +hors -- ss { SS.nav = ordAtNav $ p^.yCoord } `SS.join` hors where - ([lineSegment] -hors',[lineSegment] -rest) = (lineSegment -> Bool) + ([lineSegment] +hors',[lineSegment] +rest) = (lineSegment -> Bool) -> [lineSegment] -> ([lineSegment], [lineSegment]) forall a. (a -> Bool) -> [a] -> ([a], [a]) List.partition lineSegment -> Bool @@ -1222,10 +1222,10 @@ Point_ p (Dimension p) (NumType p), Point_ p (Dimension p) (NumType p)) => s -> Bool -isHorizontal [lineSegment] -xs - ss :: Set lineSegment -ss = (lineSegment -> lineSegment -> Ordering) +isHorizontal [lineSegment] +xs + ss :: Set lineSegment +ss = (lineSegment -> lineSegment -> Ordering) -> [lineSegment] -> Set lineSegment forall a. (a -> a -> Ordering) -> [a] -> Set a SS.fromListBy (r -> lineSegment -> lineSegment -> Ordering @@ -1236,11 +1236,11 @@ -> r -> lineSegment -> lineSegment -> Ordering forall a b. (a -> b) -> a -> b $ [lineSegment] -> r -maxY [lineSegment] -xs) [lineSegment] -rest - hors :: Set lineSegment -hors = (lineSegment -> lineSegment -> Ordering) +maxY [lineSegment] +xs) [lineSegment] +rest + hors :: Set lineSegment +hors = (lineSegment -> lineSegment -> Ordering) -> [lineSegment] -> Set lineSegment forall a. (a -> a -> Ordering) -> [a] -> Set a SS.fromListBy ((lineSegment -> r) -> lineSegment -> lineSegment -> Ordering @@ -1250,12 +1250,12 @@ (LineSegment_ lineSegment point, Point_ point 2 r, Ord r) => lineSegment -> r rightEndpoint) [lineSegment] -hors' +hors' - isHorizontal :: s -> Bool -isHorizontal s -s = s -ss -> Getting (NumType p) s (NumType p) -> NumType p + isHorizontal :: s -> Bool +isHorizontal s +s = s +ss -> Getting (NumType p) s (NumType p) -> NumType p forall s a. s -> Getting a s a -> a ^.(p -> Const (NumType p) p) -> s -> Const (NumType p) s forall seg p. HasStart seg p => Lens' seg p @@ -1274,7 +1274,7 @@ yCoord NumType p -> NumType p -> Bool forall a. Eq a => a -> a -> Bool == s -ss -> Getting (NumType p) s (NumType p) -> NumType p +ss -> Getting (NumType p) s (NumType p) -> NumType p forall s a. s -> Getting a s a -> a ^.(p -> Const (NumType p) p) -> s -> Const (NumType p) s forall seg p. HasEnd seg p => Lens' seg p @@ -1295,19 +1295,19 @@ -- ordAtY' q sa sb = ordAtY q sa sb -- find the y coord of the first interesting thing below the sweep at y - maxY :: [lineSegment] -> r -maxY [lineSegment] -segs = [r] -> r + maxY :: [lineSegment] -> r +maxY [lineSegment] +segs = [r] -> r forall a. Ord a => [a] -> a forall (t :: * -> *) a. (Foldable t, Ord a) => t a -> a maximum [ r -y - | lineSegment -s <- [lineSegment] -segs - , r -y <- [lineSegment -slineSegment -> Getting r lineSegment r -> r +y + | lineSegment +s <- [lineSegment] +segs + , r +y <- [lineSegment +slineSegment -> Getting r lineSegment r -> r forall s a. s -> Getting a s a -> a ^.(point -> Const r point) -> lineSegment -> Const r lineSegment forall seg p. HasStart seg p => Lens' seg p @@ -1322,7 +1322,7 @@ IndexedLens' Int point r IndexedLens' Int point r yCoord, lineSegment -slineSegment -> Getting r lineSegment r -> r +slineSegment -> Getting r lineSegment r -> r forall s a. s -> Getting a s a -> a ^.(point -> Const r point) -> lineSegment -> Const r lineSegment forall seg p. HasEnd seg p => Lens' seg p @@ -1337,10 +1337,10 @@ IndexedLens' Int point r IndexedLens' Int point r yCoord], r -y r -> r -> Bool +y r -> r -> Bool forall a. Ord a => a -> a -> Bool < Point 2 r -pPoint 2 r -> Getting r (Point 2 r) r -> r +pPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -1352,13 +1352,13 @@ -- fixme, why can't segs be empty -- | Get the right endpoint of a segment -rightEndpoint :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r) => lineSegment -> r +rightEndpoint :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r) => lineSegment -> r rightEndpoint :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r) => lineSegment -> r -rightEndpoint lineSegment -s = (lineSegment -slineSegment -> Getting r lineSegment r -> r +rightEndpoint lineSegment +s = (lineSegment +slineSegment -> Getting r lineSegment r -> r forall s a. s -> Getting a s a -> a ^.(point -> Const r point) -> lineSegment -> Const r lineSegment forall seg p. HasStart seg p => Lens' seg p @@ -1375,7 +1375,7 @@ xCoord) r -> r -> r forall a. Ord a => a -> a -> a `max` (lineSegment -slineSegment -> Getting r lineSegment r -> r +slineSegment -> Getting r lineSegment r -> r forall s a. s -> Getting a s a -> a ^.(point -> Const r point) -> lineSegment -> Const r lineSegment forall seg p. HasEnd seg p => Lens' seg p @@ -1392,17 +1392,17 @@ xCoord) -- | Test if a segment ends at p -endsAt :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Eq r - ) => Point 2 r -> lineSegment -> Bool +endsAt :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Eq r + ) => Point 2 r -> lineSegment -> Bool endsAt :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Eq r) => Point 2 r -> lineSegment -> Bool -endsAt Point 2 r -p lineSegment -seg = lineSegment -seglineSegment +endsAt Point 2 r +p lineSegment +seg = lineSegment +seglineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -1424,21 +1424,21 @@ asPoint Point 2 r -> Point 2 r -> Bool forall a. Eq a => a -> a -> Bool == Point 2 r -p +p -- all (\q -> ordPoints (q^.core) p /= GT) [a,b] -------------------------------------------------------------------------------- -- * Finding New events -- | Find all events -findNewEvent :: ( LineSegment_ lineSegment point - , Point_ point 2 r, Ord r, Fractional r - , IsIntersectableWith lineSegment lineSegment - , Intersection lineSegment lineSegment ~ - Maybe (LineSegmentLineSegmentIntersection lineSegment) +findNewEvent :: ( LineSegment_ lineSegment point + , Point_ point 2 r, Ord r, Fractional r + , IsIntersectableWith lineSegment lineSegment + , Intersection lineSegment lineSegment ~ + Maybe (LineSegmentLineSegmentIntersection lineSegment) ) - => Point 2 r -> lineSegment -> lineSegment - -> Maybe (Event r lineSegment) + => Point 2 r -> lineSegment -> lineSegment + -> Maybe (Event r lineSegment) findNewEvent :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, IsIntersectableWith lineSegment lineSegment, @@ -1446,30 +1446,30 @@ ~ Maybe (LineSegmentLineSegmentIntersection lineSegment)) => Point 2 r -> lineSegment -> lineSegment -> Maybe (Event r lineSegment) -findNewEvent Point 2 r -p lineSegment -l lineSegment -r = lineSegment -l lineSegment -> lineSegment -> Intersection lineSegment lineSegment +findNewEvent Point 2 r +p lineSegment +l lineSegment +r = lineSegment +l lineSegment -> lineSegment -> Intersection lineSegment lineSegment forall g h. IsIntersectableWith g h => g -> h -> Intersection g h `intersect` lineSegment -r Maybe (LineSegmentLineSegmentIntersection lineSegment) +r Maybe (LineSegmentLineSegmentIntersection lineSegment) -> (LineSegmentLineSegmentIntersection lineSegment -> Maybe (Event r lineSegment)) -> Maybe (Event r lineSegment) forall a b. Maybe a -> (a -> Maybe b) -> Maybe b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - LineSegment_x_LineSegment_Point Point 2 (NumType lineSegment) -q + LineSegment_x_LineSegment_Point Point 2 (NumType lineSegment) +q | Point 2 r -> Point 2 r -> Ordering forall point r. (Point_ point 2 r, Ord r) => point -> point -> Ordering ordPoints Point 2 r Point 2 (NumType lineSegment) -q Point 2 r -p Ordering -> Ordering -> Bool +q Point 2 r +p Ordering -> Ordering -> Bool forall a. Eq a => a -> a -> Bool == Ordering GT -> Event r lineSegment -> Maybe (Event r lineSegment) @@ -1479,7 +1479,7 @@ Point 2 r -> EventType lineSegment -> Event r lineSegment Event Point 2 r Point 2 (NumType lineSegment) -q EventType lineSegment +q EventType lineSegment forall s. EventType s Intersection) | Bool @@ -1505,14 +1505,14 @@ -- | Given a predicate p on elements, and a predicate q on -- (neighbouring) pairs of elements, filter the elements that satisfy -- p, or together with one of their neighbours satisfy q. -overlapsOr :: (a -> Bool) - -> (a -> a -> Bool) - -> [a] - -> [a] +overlapsOr :: (a -> Bool) + -> (a -> a -> Bool) + -> [a] + -> [a] overlapsOr :: forall a. (a -> Bool) -> (a -> a -> Bool) -> [a] -> [a] -overlapsOr a -> Bool -p a -> a -> Bool -q = ((a, Bool) -> a) -> [(a, Bool)] -> [a] +overlapsOr a -> Bool +p a -> a -> Bool +q = ((a, Bool) -> a) -> [(a, Bool)] -> [a] forall a b. (a -> b) -> [a] -> [b] map (a, Bool) -> a forall a b. (a, b) -> a @@ -1528,14 +1528,14 @@ . (((a, Bool), Bool) -> (a, Bool)) -> [((a, Bool), Bool)] -> [(a, Bool)] forall a b. (a -> b) -> [a] -> [b] -map (\((a -a,Bool -b),Bool -b') -> (a -a, Bool -b Bool -> Bool -> Bool +map (\((a +a,Bool +b),Bool +b') -> (a +a, Bool +b Bool -> Bool -> Bool || Bool -b')) +b')) ([((a, Bool), Bool)] -> [(a, Bool)]) -> ([a] -> [((a, Bool), Bool)]) -> [a] -> [(a, Bool)] forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -1543,7 +1543,7 @@ -> [(a, Bool)] -> [((a, Bool), Bool)] forall a. (a -> a -> Bool) -> [a] -> [(a, Bool)] overlapsWithNeighbour (a -> a -> Bool -q (a -> a -> Bool) +q (a -> a -> Bool) -> ((a, Bool) -> a) -> (a, Bool) -> (a, Bool) -> Bool forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c `on` (a, Bool) -> a @@ -1554,65 +1554,65 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> (a, Bool)) -> [a] -> [(a, Bool)] forall a b. (a -> b) -> [a] -> [b] -map (\a -x -> (a -x, a -> Bool -p a -x)) +map (\a +x -> (a +x, a -> Bool +p a +x)) -- | Given a predicate, test and a list, annotate each element whether -- it, together with one of its neighbors satisifies the predicate. -overlapsWithNeighbour :: (a -> a -> Bool) -> [a] -> [(a,Bool)] +overlapsWithNeighbour :: (a -> a -> Bool) -> [a] -> [(a,Bool)] overlapsWithNeighbour :: forall a. (a -> a -> Bool) -> [a] -> [(a, Bool)] -overlapsWithNeighbour a -> a -> Bool -p = [a] -> [(a, Bool)] -go0 +overlapsWithNeighbour a -> a -> Bool +p = [a] -> [(a, Bool)] +go0 where - go0 :: [a] -> [(a, Bool)] -go0 = \case + go0 :: [a] -> [(a, Bool)] +go0 = \case [] -> [] - (a -x:[a] -xs) -> a -> Bool -> [a] -> [(a, Bool)] -go a -x Bool + (a +x:[a] +xs) -> a -> Bool -> [a] -> [(a, Bool)] +go a +x Bool False [a] -xs +xs - go :: a -> Bool -> [a] -> [(a, Bool)] -go a -x Bool -b = \case + go :: a -> Bool -> [a] -> [(a, Bool)] +go a +x Bool +b = \case [] -> [(a -x,Bool -b)] - (a -y:[a] -ys) -> let b' :: Bool -b' = a -> a -> Bool -p a -x a -y +x,Bool +b)] + (a +y:[a] +ys) -> let b' :: Bool +b' = a -> a -> Bool +p a +x a +y in (a -x,Bool -b Bool -> Bool -> Bool +x,Bool +b Bool -> Bool -> Bool || Bool -b') (a, Bool) -> [(a, Bool)] -> [(a, Bool)] +b') (a, Bool) -> [(a, Bool)] -> [(a, Bool)] forall a. a -> [a] -> [a] : a -> Bool -> [a] -> [(a, Bool)] -go a -y Bool -b' [a] -ys +go a +y Bool +b' [a] +ys -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- * Flipping and unflipping -data Flipped segment = NotFlipped segment - | Flipped segment - deriving (Int -> Flipped segment -> ShowS +data Flipped segment = NotFlipped segment + | Flipped segment + deriving (Int -> Flipped segment -> ShowS [Flipped segment] -> ShowS Flipped segment -> String (Int -> Flipped segment -> ShowS) @@ -1630,7 +1630,7 @@ show :: Flipped segment -> String $cshowList :: forall segment. Show segment => [Flipped segment] -> ShowS showList :: [Flipped segment] -> ShowS -Show,Flipped segment -> Flipped segment -> Bool +Show,Flipped segment -> Flipped segment -> Bool (Flipped segment -> Flipped segment -> Bool) -> (Flipped segment -> Flipped segment -> Bool) -> Eq (Flipped segment) @@ -1646,7 +1646,7 @@ Eq segment => Flipped segment -> Flipped segment -> Bool /= :: Flipped segment -> Flipped segment -> Bool -Eq,(forall a b. (a -> b) -> Flipped a -> Flipped b) +Eq,(forall a b. (a -> b) -> Flipped a -> Flipped b) -> (forall a b. a -> Flipped b -> Flipped a) -> Functor Flipped forall a b. a -> Flipped b -> Flipped a forall a b. (a -> b) -> Flipped a -> Flipped b @@ -1660,7 +1660,7 @@ Functor) -- | Access the underlying segment -rawSegment :: Lens' (Flipped segment) segment +rawSegment :: Lens' (Flipped segment) segment rawSegment :: forall segment (f :: * -> *). Functor f => (segment -> f segment) -> Flipped segment -> f (Flipped segment) @@ -1669,30 +1669,30 @@ -> Lens (Flipped segment) (Flipped segment) segment segment forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens (\case - NotFlipped segment -s -> segment -s - Flipped segment -s -> segment -s + NotFlipped segment +s -> segment +s + Flipped segment +s -> segment +s ) - (\Flipped segment -fs segment -seg -> segment -seg segment -> Flipped segment -> Flipped segment + (\Flipped segment +fs segment +seg -> segment +seg segment -> Flipped segment -> Flipped segment forall a b. a -> Flipped b -> Flipped a forall (f :: * -> *) a b. Functor f => a -> f b -> f a <$ Flipped segment -fs) +fs) -type instance NumType (Flipped segment) = NumType segment -type instance Dimension (Flipped segment) = Dimension segment +type instance NumType (Flipped segment) = NumType segment +type instance Dimension (Flipped segment) = Dimension segment -type instance Intersection (Flipped segment) (Flipped segment) = - Maybe (LineSegmentLineSegmentIntersection (Flipped segment)) +type instance Intersection (Flipped segment) (Flipped segment) = + Maybe (LineSegmentLineSegmentIntersection (Flipped segment)) -instance HasStart lineSegment point => HasStart (Flipped lineSegment) point where - start :: Lens' (Flipped lineSegment) point +instance HasStart lineSegment point => HasStart (Flipped lineSegment) point where + start :: Lens' (Flipped lineSegment) point start = (lineSegment -> f lineSegment) -> Flipped lineSegment -> f (Flipped lineSegment) forall segment (f :: * -> *). @@ -1709,9 +1709,9 @@ forall seg p. HasStart seg p => Lens' seg p Lens' lineSegment point start -instance ( HasStartPoint lineSegment endPoint - ) => HasStartPoint (Flipped lineSegment) endPoint where - startPoint :: Lens' (Flipped lineSegment) endPoint +instance ( HasStartPoint lineSegment endPoint + ) => HasStartPoint (Flipped lineSegment) endPoint where + startPoint :: Lens' (Flipped lineSegment) endPoint startPoint = (lineSegment -> f lineSegment) -> Flipped lineSegment -> f (Flipped lineSegment) forall segment (f :: * -> *). @@ -1729,8 +1729,8 @@ Lens' lineSegment endPoint startPoint -instance HasEnd lineSegment point => HasEnd (Flipped lineSegment) point where - end :: Lens' (Flipped lineSegment) point +instance HasEnd lineSegment point => HasEnd (Flipped lineSegment) point where + end :: Lens' (Flipped lineSegment) point end = (lineSegment -> f lineSegment) -> Flipped lineSegment -> f (Flipped lineSegment) forall segment (f :: * -> *). @@ -1747,9 +1747,9 @@ forall seg p. HasEnd seg p => Lens' seg p Lens' lineSegment point end -instance ( HasEndPoint lineSegment endPoint - ) => HasEndPoint (Flipped lineSegment) endPoint where - endPoint :: Lens' (Flipped lineSegment) endPoint +instance ( HasEndPoint lineSegment endPoint + ) => HasEndPoint (Flipped lineSegment) endPoint where + endPoint :: Lens' (Flipped lineSegment) endPoint endPoint = (lineSegment -> f lineSegment) -> Flipped lineSegment -> f (Flipped lineSegment) forall segment (f :: * -> *). @@ -1767,18 +1767,18 @@ Lens' lineSegment endPoint endPoint -type instance StartPointOf (Flipped lineSegment) = StartPointOf lineSegment -type instance EndPointOf (Flipped lineSegment) = EndPointOf lineSegment +type instance StartPointOf (Flipped lineSegment) = StartPointOf lineSegment +type instance EndPointOf (Flipped lineSegment) = EndPointOf lineSegment -instance IntervalLike_ lineSegment point => IntervalLike_ (Flipped lineSegment) point -instance LineSegment_ lineSegment point => LineSegment_ (Flipped lineSegment) point +instance IntervalLike_ lineSegment point => IntervalLike_ (Flipped lineSegment) point +instance LineSegment_ lineSegment point => LineSegment_ (Flipped lineSegment) point -instance ConstructableLineSegment_ lineSegment point - => ConstructableLineSegment_ (Flipped lineSegment) point where - uncheckedLineSegment :: point -> point -> Flipped lineSegment -uncheckedLineSegment point -s point -t = lineSegment -> Flipped lineSegment +instance ConstructableLineSegment_ lineSegment point + => ConstructableLineSegment_ (Flipped lineSegment) point where + uncheckedLineSegment :: point -> point -> Flipped lineSegment +uncheckedLineSegment point +s point +t = lineSegment -> Flipped lineSegment forall segment. segment -> Flipped segment NotFlipped (lineSegment -> Flipped lineSegment) -> lineSegment -> Flipped lineSegment @@ -1788,16 +1788,16 @@ ConstructableLineSegment_ lineSegment point => point -> point -> lineSegment uncheckedLineSegment point -s point -t +s point +t -instance segment `HasIntersectionWith` segment - => (Flipped segment) `HasIntersectionWith` (Flipped segment) where - Flipped segment -a intersects :: Flipped segment -> Flipped segment -> Bool -`intersects` Flipped segment -b = (Flipped segment -aFlipped segment +instance segment `HasIntersectionWith` segment + => (Flipped segment) `HasIntersectionWith` (Flipped segment) where + Flipped segment +a intersects :: Flipped segment -> Flipped segment -> Bool +`intersects` Flipped segment +b = (Flipped segment +aFlipped segment -> Getting segment (Flipped segment) segment -> segment forall s a. s -> Getting a s a -> a ^.Getting segment (Flipped segment) segment @@ -1807,7 +1807,7 @@ rawSegment) segment -> segment -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` (Flipped segment -bFlipped segment +bFlipped segment -> Getting segment (Flipped segment) segment -> segment forall s a. s -> Getting a s a -> a ^.Getting segment (Flipped segment) segment @@ -1816,14 +1816,14 @@ (segment -> f segment) -> Flipped segment -> f (Flipped segment) rawSegment) -instance HasOnSegment segment 2 => HasOnSegment (Flipped segment) 2 where - onSegment :: forall r point. +instance HasOnSegment segment 2 => HasOnSegment (Flipped segment) 2 where + onSegment :: forall r point. (Ord r, Point_ point 2 r, r ~ NumType (Flipped segment), 2 ~ Dimension (Flipped segment)) => point -> Flipped segment -> Bool -onSegment point -q Flipped segment -s = point -> segment -> Bool +onSegment point +q Flipped segment +s = point -> segment -> Bool forall lineSegment (d :: Nat) r point. (HasOnSegment lineSegment d, Ord r, Point_ point d r, r ~ NumType lineSegment, d ~ Dimension lineSegment) => @@ -1833,8 +1833,8 @@ 2 ~ Dimension segment) => point -> segment -> Bool onSegment point -q (Flipped segment -sFlipped segment +q (Flipped segment +sFlipped segment -> Getting segment (Flipped segment) segment -> segment forall s a. s -> Getting a s a -> a ^.Getting segment (Flipped segment) segment @@ -1843,18 +1843,18 @@ (segment -> f segment) -> Flipped segment -> f (Flipped segment) rawSegment) -instance (segment `IsIntersectableWith` segment - , Intersection segment segment ~ Maybe (LineSegmentLineSegmentIntersection segment) - ) => (Flipped segment) `IsIntersectableWith` (Flipped segment) where - Flipped segment -a intersect :: Flipped segment +instance (segment `IsIntersectableWith` segment + , Intersection segment segment ~ Maybe (LineSegmentLineSegmentIntersection segment) + ) => (Flipped segment) `IsIntersectableWith` (Flipped segment) where + Flipped segment +a intersect :: Flipped segment -> Flipped segment -> Intersection (Flipped segment) (Flipped segment) -`intersect` Flipped segment -b = segment -> segment -> Intersection segment segment +`intersect` Flipped segment +b = segment -> segment -> Intersection segment segment forall g h. IsIntersectableWith g h => g -> h -> Intersection g h intersect (Flipped segment -aFlipped segment +aFlipped segment -> Getting segment (Flipped segment) segment -> segment forall s a. s -> Getting a s a -> a ^.Getting segment (Flipped segment) segment @@ -1862,7 +1862,7 @@ Functor f => (segment -> f segment) -> Flipped segment -> f (Flipped segment) rawSegment) (Flipped segment -bFlipped segment +bFlipped segment -> Getting segment (Flipped segment) segment -> segment forall s a. s -> Getting a s a -> a ^.Getting segment (Flipped segment) segment @@ -1875,17 +1875,17 @@ -> Maybe (LineSegmentLineSegmentIntersection (Flipped segment)) forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b <&> \case - LineSegment_x_LineSegment_Point Point 2 (NumType segment) -p -> Point 2 (NumType (Flipped segment)) + LineSegment_x_LineSegment_Point Point 2 (NumType segment) +p -> Point 2 (NumType (Flipped segment)) -> LineSegmentLineSegmentIntersection (Flipped segment) forall lineSegment. Point 2 (NumType lineSegment) -> LineSegmentLineSegmentIntersection lineSegment LineSegment_x_LineSegment_Point Point 2 (NumType segment) Point 2 (NumType (Flipped segment)) -p - LineSegment_x_LineSegment_LineSegment segment -seg -> +p + LineSegment_x_LineSegment_LineSegment segment +seg -> Flipped segment -> LineSegmentLineSegmentIntersection (Flipped segment) forall lineSegment. @@ -1898,7 +1898,7 @@ $ segment -> Flipped segment forall segment. segment -> Flipped segment NotFlipped segment -seg +seg -- TODO: maybe we should actually unflip segments a and b rather than use rawSegment @@ -1913,17 +1913,17 @@ -- | Make sure the 'start' endpoint occurs before the end-endpoints in -- terms of the sweep order. -tagFlipped :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r - , StartPointOf lineSegment ~ EndPointOf lineSegment +tagFlipped :: (LineSegment_ lineSegment point, Point_ point 2 r, Ord r + , StartPointOf lineSegment ~ EndPointOf lineSegment ) - => lineSegment -> Flipped lineSegment + => lineSegment -> Flipped lineSegment tagFlipped :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, StartPointOf lineSegment ~ EndPointOf lineSegment) => lineSegment -> Flipped lineSegment -tagFlipped lineSegment -s = case (lineSegment -slineSegment -> Getting point lineSegment point -> point +tagFlipped lineSegment +s = case (lineSegment +slineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasStart seg p => Lens' seg p @@ -1933,7 +1933,7 @@ (Point_ point 2 r, Ord r) => point -> point -> Ordering `ordPoints` (lineSegment -slineSegment -> Getting point lineSegment point -> point +slineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasEnd seg p => Lens' seg p @@ -1951,24 +1951,24 @@ StartPointOf lineSegment ~ EndPointOf lineSegment) => lineSegment -> lineSegment flipSeg lineSegment -s +s Ordering _ -> lineSegment -> Flipped lineSegment forall segment. segment -> Flipped segment NotFlipped lineSegment -s +s -- | Flips the segment -flipSeg :: ( LineSegment_ lineSegment point - , StartPointOf lineSegment ~ EndPointOf lineSegment - ) => lineSegment -> lineSegment +flipSeg :: ( LineSegment_ lineSegment point + , StartPointOf lineSegment ~ EndPointOf lineSegment + ) => lineSegment -> lineSegment flipSeg :: forall lineSegment point. (LineSegment_ lineSegment point, StartPointOf lineSegment ~ EndPointOf lineSegment) => lineSegment -> lineSegment -flipSeg lineSegment -seg = lineSegment -seglineSegment -> (lineSegment -> lineSegment) -> lineSegment +flipSeg lineSegment +seg = lineSegment +seglineSegment -> (lineSegment -> lineSegment) -> lineSegment forall a b. a -> (a -> b) -> b &(EndPointOf lineSegment -> Identity (EndPointOf lineSegment)) -> lineSegment -> Identity lineSegment @@ -1979,7 +1979,7 @@ -> EndPointOf lineSegment -> lineSegment -> lineSegment forall s t a b. ASetter s t a b -> b -> s -> t .~ (lineSegment -seglineSegment +seglineSegment -> Getting (EndPointOf lineSegment) lineSegment (EndPointOf lineSegment) -> EndPointOf lineSegment @@ -2000,7 +2000,7 @@ -> EndPointOf lineSegment -> lineSegment -> lineSegment forall s t a b. ASetter s t a b -> b -> s -> t .~ (lineSegment -seglineSegment +seglineSegment -> Getting (EndPointOf lineSegment) lineSegment (EndPointOf lineSegment) -> EndPointOf lineSegment @@ -2014,9 +2014,9 @@ -------------------------------------------------------------------------------- -- | test if the segment is flipped or not. -isFlipped :: forall f lineSegment. - Coercible (f (Flipped lineSegment)) (Flipped lineSegment) - => f (Flipped lineSegment) -> Bool +isFlipped :: forall f lineSegment. + Coercible (f (Flipped lineSegment)) (Flipped lineSegment) + => f (Flipped lineSegment) -> Bool isFlipped :: forall (f :: * -> *) lineSegment. Coercible (f (Flipped lineSegment)) (Flipped lineSegment) => f (Flipped lineSegment) -> Bool @@ -2033,24 +2033,24 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. Coercible a b => a -> b forall a b. Coercible a b => a -> b -coerce @_ @(Flipped lineSegment) +coerce @_ @(Flipped lineSegment) -- | Unflips the segments in an associated. -unflipSegs :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Fractional r, Ord r - , IntersectConstraints lineSegment - , StartPointOf lineSegment ~ EndPointOf lineSegment +unflipSegs :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Fractional r, Ord r + , IntersectConstraints lineSegment + , StartPointOf lineSegment ~ EndPointOf lineSegment ) - => Associated (Flipped lineSegment) - -> Associated lineSegment + => Associated (Flipped lineSegment) + -> Associated lineSegment unflipSegs :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Fractional r, Ord r, IntersectConstraints lineSegment, StartPointOf lineSegment ~ EndPointOf lineSegment) => Associated (Flipped lineSegment) -> Associated lineSegment -unflipSegs Associated (Flipped lineSegment) -assocs = Set (AroundStart lineSegment) +unflipSegs Associated (Flipped lineSegment) +assocs = Set (AroundStart lineSegment) -> Set (AroundEnd lineSegment) -> Set (AroundIntersection lineSegment) -> Associated lineSegment @@ -2064,8 +2064,8 @@ forall (f :: * -> *) lineSegment. Functor f => Set (f (Flipped lineSegment)) -> Set (f lineSegment) -dropFlipped Set (AroundStart (Flipped lineSegment)) -ss1 Set (AroundStart lineSegment) +dropFlipped Set (AroundStart (Flipped lineSegment)) +ss1 Set (AroundStart lineSegment) -> Set (AroundStart lineSegment) -> Set (AroundStart lineSegment) forall a. Semigroup a => a -> a -> a <> Set (AroundEnd (Flipped lineSegment)) @@ -2076,14 +2076,14 @@ StartPointOf lineSegment ~ EndPointOf lineSegment) => Set (f (Flipped lineSegment)) -> Set (g lineSegment) unflipSegs' Set (AroundEnd (Flipped lineSegment)) -es) +es) (Set (AroundEnd (Flipped lineSegment)) -> Set (AroundEnd lineSegment) forall (f :: * -> *) lineSegment. Functor f => Set (f (Flipped lineSegment)) -> Set (f lineSegment) -dropFlipped Set (AroundEnd (Flipped lineSegment)) -es1 Set (AroundEnd lineSegment) +dropFlipped Set (AroundEnd (Flipped lineSegment)) +es1 Set (AroundEnd lineSegment) -> Set (AroundEnd lineSegment) -> Set (AroundEnd lineSegment) forall a. Semigroup a => a -> a -> a <> Set (AroundStart (Flipped lineSegment)) @@ -2094,14 +2094,14 @@ StartPointOf lineSegment ~ EndPointOf lineSegment) => Set (f (Flipped lineSegment)) -> Set (g lineSegment) unflipSegs' Set (AroundStart (Flipped lineSegment)) -ss) +ss) (Set (AroundIntersection (Flipped lineSegment)) -> Set (AroundIntersection lineSegment) forall (f :: * -> *) lineSegment. Functor f => Set (f (Flipped lineSegment)) -> Set (f lineSegment) -dropFlipped Set (AroundIntersection (Flipped lineSegment)) -is1 Set (AroundIntersection lineSegment) +dropFlipped Set (AroundIntersection (Flipped lineSegment)) +is1 Set (AroundIntersection lineSegment) -> Set (AroundIntersection lineSegment) -> Set (AroundIntersection lineSegment) forall a. Semigroup a => a -> a -> a @@ -2113,11 +2113,11 @@ StartPointOf lineSegment ~ EndPointOf lineSegment) => Set (f (Flipped lineSegment)) -> Set (g lineSegment) unflipSegs' Set (AroundIntersection (Flipped lineSegment)) -is) +is) where - (Set (AroundStart (Flipped lineSegment)) -ss,Set (AroundStart (Flipped lineSegment)) -ss1) = (AroundStart (Flipped lineSegment) -> Bool) + (Set (AroundStart (Flipped lineSegment)) +ss,Set (AroundStart (Flipped lineSegment)) +ss1) = (AroundStart (Flipped lineSegment) -> Bool) -> Set (AroundStart (Flipped lineSegment)) -> (Set (AroundStart (Flipped lineSegment)), Set (AroundStart (Flipped lineSegment))) @@ -2134,7 +2134,7 @@ Set (AroundStart (Flipped lineSegment))) forall a b. (a -> b) -> a -> b $ Associated (Flipped lineSegment) -assocsAssociated (Flipped lineSegment) +assocsAssociated (Flipped lineSegment) -> Getting (Set (AroundStart (Flipped lineSegment))) (Associated (Flipped lineSegment)) @@ -2151,9 +2151,9 @@ -> f (Set (AroundStart lineSegment))) -> Associated lineSegment -> f (Associated lineSegment) startPointOf - (Set (AroundEnd (Flipped lineSegment)) -es,Set (AroundEnd (Flipped lineSegment)) -es1) = (AroundEnd (Flipped lineSegment) -> Bool) + (Set (AroundEnd (Flipped lineSegment)) +es,Set (AroundEnd (Flipped lineSegment)) +es1) = (AroundEnd (Flipped lineSegment) -> Bool) -> Set (AroundEnd (Flipped lineSegment)) -> (Set (AroundEnd (Flipped lineSegment)), Set (AroundEnd (Flipped lineSegment))) @@ -2170,7 +2170,7 @@ Set (AroundEnd (Flipped lineSegment))) forall a b. (a -> b) -> a -> b $ Associated (Flipped lineSegment) -assocsAssociated (Flipped lineSegment) +assocsAssociated (Flipped lineSegment) -> Getting (Set (AroundEnd (Flipped lineSegment))) (Associated (Flipped lineSegment)) @@ -2186,9 +2186,9 @@ (Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment))) -> Associated lineSegment -> f (Associated lineSegment) endPointOf - (Set (AroundIntersection (Flipped lineSegment)) -is,Set (AroundIntersection (Flipped lineSegment)) -is1) = (AroundIntersection (Flipped lineSegment) -> Bool) + (Set (AroundIntersection (Flipped lineSegment)) +is,Set (AroundIntersection (Flipped lineSegment)) +is1) = (AroundIntersection (Flipped lineSegment) -> Bool) -> Set (AroundIntersection (Flipped lineSegment)) -> (Set (AroundIntersection (Flipped lineSegment)), Set (AroundIntersection (Flipped lineSegment))) @@ -2205,7 +2205,7 @@ Set (AroundIntersection (Flipped lineSegment))) forall a b. (a -> b) -> a -> b $ Associated (Flipped lineSegment) -assocsAssociated (Flipped lineSegment) +assocsAssociated (Flipped lineSegment) -> Getting (Set (AroundIntersection (Flipped lineSegment))) (Associated (Flipped lineSegment)) @@ -2224,12 +2224,12 @@ interiorTo -- | For segments that are not acutally flipped, we can just drop the flipped bit - dropFlipped :: Functor f - => Set.Set (f (Flipped lineSegment)) -> Set.Set (f lineSegment) - dropFlipped :: forall (f :: * -> *) lineSegment. + dropFlipped :: Functor f + => Set.Set (f (Flipped lineSegment)) -> Set.Set (f lineSegment) + dropFlipped :: forall (f :: * -> *) lineSegment. Functor f => Set (f (Flipped lineSegment)) -> Set (f lineSegment) -dropFlipped = (f (Flipped lineSegment) -> f lineSegment) +dropFlipped = (f (Flipped lineSegment) -> f lineSegment) -> Set (f (Flipped lineSegment)) -> Set (f lineSegment) forall a b. (a -> b) -> Set a -> Set b Set.mapMonotonic ((Flipped lineSegment -> lineSegment) @@ -2254,11 +2254,11 @@ -- | For flipped segs we unflip them (and appropriately coerce the so that they remain in -- the same order. I.e. if they were sorted around the start point they are now sorted -- around the endpoint. -unflipSegs' :: ( Functor f, Coercible (f lineSegment) (g lineSegment) - , LineSegment_ lineSegment point - , StartPointOf lineSegment ~ EndPointOf lineSegment +unflipSegs' :: ( Functor f, Coercible (f lineSegment) (g lineSegment) + , LineSegment_ lineSegment point + , StartPointOf lineSegment ~ EndPointOf lineSegment ) - => Set.Set (f (Flipped lineSegment)) -> Set.Set (g lineSegment) + => Set.Set (f (Flipped lineSegment)) -> Set.Set (g lineSegment) unflipSegs' :: forall (f :: * -> *) lineSegment (g :: * -> *) point. (Functor f, Coercible (f lineSegment) (g lineSegment), LineSegment_ lineSegment point, diff --git a/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.Naive.html b/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.Naive.html index 7474e84cc..9a4f53362 100644 --- a/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.Naive.html +++ b/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.Naive.html @@ -38,14 +38,14 @@ -- | Compute all intersections (naively) -- -- \(O(n^2)\) -intersections :: ( Ord r, Fractional r - , LineSegment_ lineSegment point - , Eq lineSegment - , Point_ point 2 r - , IntersectConstraints lineSegment - , Foldable f +intersections :: ( Ord r, Fractional r + , LineSegment_ lineSegment point + , Eq lineSegment + , Point_ point 2 r + , IntersectConstraints lineSegment + , Foldable f ) - => f lineSegment -> Intersections r lineSegment + => f lineSegment -> Intersections r lineSegment intersections :: forall r lineSegment point (f :: * -> *). (Ord r, Fractional r, LineSegment_ lineSegment point, Eq lineSegment, Point_ point 2 r, IntersectConstraints lineSegment, @@ -77,7 +77,7 @@ -> Map (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) (Associated lineSegment) -collect ([Two lineSegment] -> Intersections r lineSegment) +collect ([Two lineSegment] -> Intersections r lineSegment) -> (f lineSegment -> [Two lineSegment]) -> f lineSegment -> Intersections r lineSegment @@ -86,13 +86,13 @@ forall (f :: * -> *) a. Foldable f => f a -> [Two a] uniquePairs where - collect :: Two lineSegment + collect :: Two lineSegment -> Map (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) (Associated lineSegment) -collect (Two lineSegment -s lineSegment -s') = case lineSegment +collect (Two lineSegment +s lineSegment +s') = case lineSegment -> lineSegment -> Maybe (IntersectionPoint @@ -103,8 +103,8 @@ lineSegment -> lineSegment -> Maybe (IntersectionPoint (Point 2 r) lineSegment) intersectionPointOf lineSegment -s lineSegment -s' of +s lineSegment +s' of Maybe (IntersectionPoint (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) lineSegment) @@ -113,9 +113,9 @@ (Associated lineSegment) forall a. Monoid a => a mempty - Just IntersectionPoint + Just IntersectionPoint (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) lineSegment -ip -> Point 2 (NumType (IxValue (EndPointOf lineSegment))) +ip -> Point 2 (NumType (IxValue (EndPointOf lineSegment))) -> Associated lineSegment -> Map (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) @@ -123,7 +123,7 @@ forall k a. k -> a -> Map k a Map.singleton (IntersectionPoint (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) lineSegment -ipIntersectionPoint +ipIntersectionPoint (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) lineSegment -> Getting (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) @@ -144,7 +144,7 @@ -> f (IntersectionPoint point' lineSegment) intersectionPoint) (IntersectionPoint (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) lineSegment -ipIntersectionPoint +ipIntersectionPoint (Point 2 (NumType (IxValue (EndPointOf lineSegment)))) lineSegment -> Getting (Associated lineSegment) diff --git a/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.Types.html b/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.Types.html index e24d0d42f..d6b98d779 100644 --- a/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.Types.html +++ b/haddocks/hgeometry/src/HGeometry.LineSegment.Intersection.Types.html @@ -57,8 +57,8 @@ -- | Assumes that two segments have the same start point -newtype AroundStart a = AroundStart a - deriving (Int -> AroundStart a -> ShowS +newtype AroundStart a = AroundStart a + deriving (Int -> AroundStart a -> ShowS [AroundStart a] -> ShowS AroundStart a -> String (Int -> AroundStart a -> ShowS) @@ -76,7 +76,7 @@ show :: AroundStart a -> String $cshowList :: forall a. Show a => [AroundStart a] -> ShowS showList :: [AroundStart a] -> ShowS -Show,ReadPrec [AroundStart a] +Show,ReadPrec [AroundStart a] ReadPrec (AroundStart a) Int -> ReadS (AroundStart a) ReadS [AroundStart a] @@ -100,13 +100,13 @@ readPrec :: ReadPrec (AroundStart a) $creadListPrec :: forall a. Read a => ReadPrec [AroundStart a] readListPrec :: ReadPrec [AroundStart a] -Read,AroundStart a -> () +Read,AroundStart a -> () (AroundStart a -> ()) -> NFData (AroundStart a) forall a. NFData a => AroundStart a -> () forall a. (a -> ()) -> NFData a $crnf :: forall a. NFData a => AroundStart a -> () rnf :: AroundStart a -> () -NFData,(forall a b. (a -> b) -> AroundStart a -> AroundStart b) +NFData,(forall a b. (a -> b) -> AroundStart a -> AroundStart b) -> (forall a b. a -> AroundStart b -> AroundStart a) -> Functor AroundStart forall a b. a -> AroundStart b -> AroundStart a @@ -118,7 +118,7 @@ fmap :: forall a b. (a -> b) -> AroundStart a -> AroundStart b $c<$ :: forall a b. a -> AroundStart b -> AroundStart a <$ :: forall a b. a -> AroundStart b -> AroundStart a -Functor,(forall x. AroundStart a -> Rep (AroundStart a) x) +Functor,(forall x. AroundStart a -> Rep (AroundStart a) x) -> (forall x. Rep (AroundStart a) x -> AroundStart a) -> Generic (AroundStart a) forall x. Rep (AroundStart a) x -> AroundStart a @@ -133,19 +133,19 @@ to :: forall x. Rep (AroundStart a) x -> AroundStart a Generic) -instance Wrapped (AroundStart a) where - type Unwrapped (AroundStart a) = a +instance Wrapped (AroundStart a) where + type Unwrapped (AroundStart a) = a -instance (AroundStart a ~ t) => Rewrapped (AroundStart a) t +instance (AroundStart a ~ t) => Rewrapped (AroundStart a) t -instance ( Point_ point 2 r, Eq r - , HasEnd lineSegment point) => Eq (AroundStart lineSegment) where +instance ( Point_ point 2 r, Eq r + , HasEnd lineSegment point) => Eq (AroundStart lineSegment) where -- | equality on endpoint - (AroundStart lineSegment -s) == :: AroundStart lineSegment -> AroundStart lineSegment -> Bool -== (AroundStart lineSegment -s') = lineSegment -slineSegment + (AroundStart lineSegment +s) == :: AroundStart lineSegment -> AroundStart lineSegment -> Bool +== (AroundStart lineSegment +s') = lineSegment +slineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -167,7 +167,7 @@ asPoint Point 2 r -> Point 2 r -> Bool forall a. Eq a => a -> a -> Bool == lineSegment -s'lineSegment +s'lineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -188,32 +188,32 @@ Lens' point (Point 2 r) asPoint -instance ( LineSegment_ lineSegment point - , Point_ point 2 r - , Ord r, Num r - ) => Ord (AroundStart lineSegment) where +instance ( LineSegment_ lineSegment point + , Point_ point 2 r + , Ord r, Num r + ) => Ord (AroundStart lineSegment) where -- | ccw ordered around their suposed common startpoint - (AroundStart lineSegment -s) compare :: AroundStart lineSegment -> AroundStart lineSegment -> Ordering -`compare` (AroundStart lineSegment -s') = point -> point -> point -> Ordering + (AroundStart lineSegment +s) compare :: AroundStart lineSegment -> AroundStart lineSegment -> Ordering +`compare` (AroundStart lineSegment +s') = point -> point -> point -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering ccwCmpAround (lineSegment -slineSegment -> Getting point lineSegment point -> point +slineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasStart seg p => Lens' seg p Lens' lineSegment point start) (lineSegment -slineSegment -> Getting point lineSegment point -> point +slineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasEnd seg p => Lens' seg p Lens' lineSegment point end) (lineSegment -s'lineSegment -> Getting point lineSegment point -> point +s'lineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasEnd seg p => Lens' seg p @@ -223,7 +223,7 @@ ---------------------------------------- -- | Assumes that two segments have the same end point -newtype AroundEnd a = AroundEnd a deriving (Int -> AroundEnd a -> ShowS +newtype AroundEnd a = AroundEnd a deriving (Int -> AroundEnd a -> ShowS [AroundEnd a] -> ShowS AroundEnd a -> String (Int -> AroundEnd a -> ShowS) @@ -241,7 +241,7 @@ show :: AroundEnd a -> String $cshowList :: forall a. Show a => [AroundEnd a] -> ShowS showList :: [AroundEnd a] -> ShowS -Show,ReadPrec [AroundEnd a] +Show,ReadPrec [AroundEnd a] ReadPrec (AroundEnd a) Int -> ReadS (AroundEnd a) ReadS [AroundEnd a] @@ -265,13 +265,13 @@ readPrec :: ReadPrec (AroundEnd a) $creadListPrec :: forall a. Read a => ReadPrec [AroundEnd a] readListPrec :: ReadPrec [AroundEnd a] -Read,AroundEnd a -> () +Read,AroundEnd a -> () (AroundEnd a -> ()) -> NFData (AroundEnd a) forall a. NFData a => AroundEnd a -> () forall a. (a -> ()) -> NFData a $crnf :: forall a. NFData a => AroundEnd a -> () rnf :: AroundEnd a -> () -NFData,(forall a b. (a -> b) -> AroundEnd a -> AroundEnd b) +NFData,(forall a b. (a -> b) -> AroundEnd a -> AroundEnd b) -> (forall a b. a -> AroundEnd b -> AroundEnd a) -> Functor AroundEnd forall a b. a -> AroundEnd b -> AroundEnd a @@ -283,7 +283,7 @@ fmap :: forall a b. (a -> b) -> AroundEnd a -> AroundEnd b $c<$ :: forall a b. a -> AroundEnd b -> AroundEnd a <$ :: forall a b. a -> AroundEnd b -> AroundEnd a -Functor,(forall x. AroundEnd a -> Rep (AroundEnd a) x) +Functor,(forall x. AroundEnd a -> Rep (AroundEnd a) x) -> (forall x. Rep (AroundEnd a) x -> AroundEnd a) -> Generic (AroundEnd a) forall x. Rep (AroundEnd a) x -> AroundEnd a @@ -298,18 +298,18 @@ to :: forall x. Rep (AroundEnd a) x -> AroundEnd a Generic) -instance Wrapped (AroundEnd a) where - type Unwrapped (AroundEnd a) = a +instance Wrapped (AroundEnd a) where + type Unwrapped (AroundEnd a) = a -instance (AroundEnd a ~ t) => Rewrapped (AroundEnd a) t +instance (AroundEnd a ~ t) => Rewrapped (AroundEnd a) t -instance (Point_ point 2 r, Eq r, HasStart lineSegment point) => Eq (AroundEnd lineSegment) where +instance (Point_ point 2 r, Eq r, HasStart lineSegment point) => Eq (AroundEnd lineSegment) where -- | equality on endpoint - (AroundEnd lineSegment -s) == :: AroundEnd lineSegment -> AroundEnd lineSegment -> Bool -== (AroundEnd lineSegment -s') = lineSegment -slineSegment + (AroundEnd lineSegment +s) == :: AroundEnd lineSegment -> AroundEnd lineSegment -> Bool +== (AroundEnd lineSegment +s') = lineSegment +slineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -331,7 +331,7 @@ asPoint Point 2 r -> Point 2 r -> Bool forall a. Eq a => a -> a -> Bool == lineSegment -s'lineSegment +s'lineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -352,33 +352,33 @@ Lens' point (Point 2 r) asPoint -instance ( LineSegment_ lineSegment point - , Point_ point 2 r - , Ord r, Num r - , Eq lineSegment - ) => Ord (AroundEnd lineSegment) where +instance ( LineSegment_ lineSegment point + , Point_ point 2 r + , Ord r, Num r + , Eq lineSegment + ) => Ord (AroundEnd lineSegment) where -- | ccw ordered around their suposed common end point - (AroundEnd lineSegment -s) compare :: AroundEnd lineSegment -> AroundEnd lineSegment -> Ordering -`compare` (AroundEnd lineSegment -s') = point -> point -> point -> Ordering + (AroundEnd lineSegment +s) compare :: AroundEnd lineSegment -> AroundEnd lineSegment -> Ordering +`compare` (AroundEnd lineSegment +s') = point -> point -> point -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering ccwCmpAround (lineSegment -slineSegment -> Getting point lineSegment point -> point +slineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasEnd seg p => Lens' seg p Lens' lineSegment point end) (lineSegment -slineSegment -> Getting point lineSegment point -> point +slineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasStart seg p => Lens' seg p Lens' lineSegment point start) (lineSegment -s'lineSegment -> Getting point lineSegment point -> point +s'lineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasStart seg p => Lens' seg p @@ -388,8 +388,8 @@ -------------------------------------------------------------------------------- -- | Assumes that two segments intersect in a single point. -newtype AroundIntersection a = AroundIntersection a - deriving (AroundIntersection a -> AroundIntersection a -> Bool +newtype AroundIntersection a = AroundIntersection a + deriving (AroundIntersection a -> AroundIntersection a -> Bool (AroundIntersection a -> AroundIntersection a -> Bool) -> (AroundIntersection a -> AroundIntersection a -> Bool) -> Eq (AroundIntersection a) @@ -405,7 +405,7 @@ Eq a => AroundIntersection a -> AroundIntersection a -> Bool /= :: AroundIntersection a -> AroundIntersection a -> Bool -Eq,Int -> AroundIntersection a -> ShowS +Eq,Int -> AroundIntersection a -> ShowS [AroundIntersection a] -> ShowS AroundIntersection a -> String (Int -> AroundIntersection a -> ShowS) @@ -423,7 +423,7 @@ show :: AroundIntersection a -> String $cshowList :: forall a. Show a => [AroundIntersection a] -> ShowS showList :: [AroundIntersection a] -> ShowS -Show,ReadPrec [AroundIntersection a] +Show,ReadPrec [AroundIntersection a] ReadPrec (AroundIntersection a) Int -> ReadS (AroundIntersection a) ReadS [AroundIntersection a] @@ -447,13 +447,13 @@ readPrec :: ReadPrec (AroundIntersection a) $creadListPrec :: forall a. Read a => ReadPrec [AroundIntersection a] readListPrec :: ReadPrec [AroundIntersection a] -Read,AroundIntersection a -> () +Read,AroundIntersection a -> () (AroundIntersection a -> ()) -> NFData (AroundIntersection a) forall a. NFData a => AroundIntersection a -> () forall a. (a -> ()) -> NFData a $crnf :: forall a. NFData a => AroundIntersection a -> () rnf :: AroundIntersection a -> () -NFData,(forall a b. +NFData,(forall a b. (a -> b) -> AroundIntersection a -> AroundIntersection b) -> (forall a b. a -> AroundIntersection b -> AroundIntersection a) -> Functor AroundIntersection @@ -469,7 +469,7 @@ (a -> b) -> AroundIntersection a -> AroundIntersection b $c<$ :: forall a b. a -> AroundIntersection b -> AroundIntersection a <$ :: forall a b. a -> AroundIntersection b -> AroundIntersection a -Functor,(forall x. AroundIntersection a -> Rep (AroundIntersection a) x) +Functor,(forall x. AroundIntersection a -> Rep (AroundIntersection a) x) -> (forall x. Rep (AroundIntersection a) x -> AroundIntersection a) -> Generic (AroundIntersection a) forall x. Rep (AroundIntersection a) x -> AroundIntersection a @@ -484,29 +484,29 @@ to :: forall x. Rep (AroundIntersection a) x -> AroundIntersection a Generic) -instance Wrapped (AroundIntersection a) where - type Unwrapped (AroundIntersection a) = a +instance Wrapped (AroundIntersection a) where + type Unwrapped (AroundIntersection a) = a -instance (AroundIntersection a ~ t) => Rewrapped (AroundIntersection a) t +instance (AroundIntersection a ~ t) => Rewrapped (AroundIntersection a) t -instance ( LineSegment_ lineSegment point - , Point_ point 2 r - , Ord r, Fractional r - , Eq lineSegment - , IsIntersectableWith lineSegment lineSegment - , Intersection lineSegment lineSegment ~ - Maybe (LineSegmentLineSegmentIntersection lineSegment) - ) => Ord (AroundIntersection lineSegment) where +instance ( LineSegment_ lineSegment point + , Point_ point 2 r + , Ord r, Fractional r + , Eq lineSegment + , IsIntersectableWith lineSegment lineSegment + , Intersection lineSegment lineSegment ~ + Maybe (LineSegmentLineSegmentIntersection lineSegment) + ) => Ord (AroundIntersection lineSegment) where -- | ccw ordered around their common intersection point. - (AroundIntersection lineSegment -s) compare :: AroundIntersection lineSegment + (AroundIntersection lineSegment +s) compare :: AroundIntersection lineSegment -> AroundIntersection lineSegment -> Ordering -`compare` (AroundIntersection lineSegment -s') = case lineSegment -s lineSegment -> lineSegment -> Intersection lineSegment lineSegment +`compare` (AroundIntersection lineSegment +s') = case lineSegment +s lineSegment -> lineSegment -> Intersection lineSegment lineSegment forall g h. IsIntersectableWith g h => g -> h -> Intersection g h `intersect` lineSegment -s' of +s' of Maybe (LineSegmentLineSegmentIntersection lineSegment) Intersection lineSegment lineSegment Nothing -> @@ -514,17 +514,17 @@ forall a. HasCallStack => String -> a error String "AroundIntersection: segments do not intersect!" - Just (LineSegment_x_LineSegment_Point Point 2 (NumType lineSegment) -p) -> Point 2 r -> lineSegment -> lineSegment -> Ordering + Just (LineSegment_x_LineSegment_Point Point 2 (NumType lineSegment) +p) -> Point 2 r -> lineSegment -> lineSegment -> Ordering forall lineSegment point r point'. (LineSegment_ lineSegment point, Point_ point 2 r, Point_ point' 2 r, Ord r, Num r) => point' -> lineSegment -> lineSegment -> Ordering cmpAroundP Point 2 r Point 2 (NumType lineSegment) -p lineSegment -s lineSegment -s' +p lineSegment +s lineSegment +s' Just (LineSegment_x_LineSegment_LineSegment lineSegment _) -> lineSegment -> NumType point forall {point'} {point} {s}. @@ -538,8 +538,8 @@ (NumType point), HasStart s point, HasEnd s point') => s -> NumType point' -squaredLength lineSegment -s NumType point -> NumType point -> Ordering +squaredLength lineSegment +s NumType point -> NumType point -> Ordering forall a. Ord a => a -> a -> Ordering `compare` (lineSegment -> NumType point forall {point'} {point} {s}. @@ -553,28 +553,28 @@ (NumType point), HasStart s point, HasEnd s point') => s -> NumType point' -squaredLength lineSegment -s') +squaredLength lineSegment +s') -- if s and s' just happen to be the same length but -- intersect in different behaviour from using (==). -- but that situation doese not satisfy the precondition -- of aroundIntersection anyway. where - squaredLength :: s -> NumType point' -squaredLength s -ss = point -> point' -> NumType point' + squaredLength :: s -> NumType point' +squaredLength s +ss = point -> point' -> NumType point' forall r point (d :: Nat) point'. (Num r, Point_ point d r, Point_ point' d r, Metric_ (Vector d r) d r) => point -> point' -> r squaredEuclideanDist (s -sss -> Getting point s point -> point +sss -> Getting point s point -> point forall s a. s -> Getting a s a -> a ^.Getting point s point forall seg p. HasStart seg p => Lens' seg p Lens' s point start) (s -sss -> Getting point' s point' -> point' +sss -> Getting point' s point' -> point' forall s a. s -> Getting a s a -> a ^.Getting point' s point' forall seg p. HasEnd seg p => Lens' seg p @@ -582,25 +582,25 @@ end) -- | compare around p -cmpAroundP :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Point_ point' 2 r - , Ord r, Num r +cmpAroundP :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Point_ point' 2 r + , Ord r, Num r ) - => point' -> lineSegment -> lineSegment -> Ordering + => point' -> lineSegment -> lineSegment -> Ordering cmpAroundP :: forall lineSegment point r point'. (LineSegment_ lineSegment point, Point_ point 2 r, Point_ point' 2 r, Ord r, Num r) => point' -> lineSegment -> lineSegment -> Ordering -cmpAroundP point' -p lineSegment -s lineSegment -s' = Point 2 r -> Point 2 r -> Point 2 r -> Ordering +cmpAroundP point' +p lineSegment +s lineSegment +s' = Point 2 r -> Point 2 r -> Point 2 r -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering ccwCmpAround (point' -ppoint' -> Getting (Point 2 r) point' (Point 2 r) -> Point 2 r +ppoint' -> Getting (Point 2 r) point' (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point' (Point 2 r) forall point (d :: Nat) r. @@ -608,7 +608,7 @@ Lens' point (Point d r) Lens' point' (Point 2 r) asPoint) (lineSegment -slineSegment +slineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -628,7 +628,7 @@ Lens' point (Point d r) Lens' point (Point 2 r) asPoint) (lineSegment -s'lineSegment +s'lineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -662,21 +662,21 @@ -- -- if somehow the segment is degenerate, and p is both the start and -- end it is reported only as the start point. -data Associated lineSegment = +data Associated lineSegment = Associated { forall lineSegment. Associated lineSegment -> Set (AroundStart lineSegment) -_startPointOf :: Set.Set (AroundStart lineSegment) +_startPointOf :: Set.Set (AroundStart lineSegment) -- ^ segments for which the intersection point is the -- start point (i.e. s^.start == p) , forall lineSegment. Associated lineSegment -> Set (AroundEnd lineSegment) -_endPointOf :: Set.Set (AroundEnd lineSegment) +_endPointOf :: Set.Set (AroundEnd lineSegment) -- ^ segments for which the intersection point is the end -- point (i.e. s^.end == p) , forall lineSegment. Associated lineSegment -> Set (AroundIntersection lineSegment) -_interiorTo :: Set.Set (AroundIntersection lineSegment) - } deriving stock (Int -> Associated lineSegment -> ShowS +_interiorTo :: Set.Set (AroundIntersection lineSegment) + } deriving stock (Int -> Associated lineSegment -> ShowS [Associated lineSegment] -> ShowS Associated lineSegment -> String (Int -> Associated lineSegment -> ShowS) @@ -706,7 +706,7 @@ Show lineSegment => [Associated lineSegment] -> ShowS showList :: [Associated lineSegment] -> ShowS -Show, (forall x. +Show, (forall x. Associated lineSegment -> Rep (Associated lineSegment) x) -> (forall x. Rep (Associated lineSegment) x -> Associated lineSegment) @@ -727,38 +727,38 @@ to :: forall x. Rep (Associated lineSegment) x -> Associated lineSegment Generic) -deriving stock instance ( Eq (AroundStart lineSegment) - , Eq (AroundIntersection lineSegment) - , Eq (AroundEnd lineSegment) - ) => Eq (Associated lineSegment) +deriving stock instance ( Eq (AroundStart lineSegment) + , Eq (AroundIntersection lineSegment) + , Eq (AroundEnd lineSegment) + ) => Eq (Associated lineSegment) -deriving stock instance ( Read lineSegment - , OrdArounds lineSegment - ) => Read (Associated lineSegment) +deriving stock instance ( Read lineSegment + , OrdArounds lineSegment + ) => Read (Associated lineSegment) -type OrdArounds lineSegment = ( Ord (AroundStart lineSegment) - , Ord (AroundIntersection lineSegment) - , Ord (AroundEnd lineSegment) +type OrdArounds lineSegment = ( Ord (AroundStart lineSegment) + , Ord (AroundIntersection lineSegment) + , Ord (AroundEnd lineSegment) ) -- | Lens to access the segments for which this is a startPoint -startPointOf :: Lens' (Associated lineSegment) (Set.Set (AroundStart lineSegment)) +startPointOf :: Lens' (Associated lineSegment) (Set.Set (AroundStart lineSegment)) startPointOf :: forall lineSegment (f :: * -> *). Functor f => (Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment))) -> Associated lineSegment -> f (Associated lineSegment) -startPointOf Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment)) -f (Associated Set (AroundStart lineSegment) -ss Set (AroundEnd lineSegment) -es Set (AroundIntersection lineSegment) -is) = (Set (AroundStart lineSegment) -> Associated lineSegment) +startPointOf Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment)) +f (Associated Set (AroundStart lineSegment) +ss Set (AroundEnd lineSegment) +es Set (AroundIntersection lineSegment) +is) = (Set (AroundStart lineSegment) -> Associated lineSegment) -> f (Set (AroundStart lineSegment)) -> f (Associated lineSegment) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Set (AroundStart lineSegment) -ss' -> Set (AroundStart lineSegment) +fmap (\Set (AroundStart lineSegment) +ss' -> Set (AroundStart lineSegment) -> Set (AroundEnd lineSegment) -> Set (AroundIntersection lineSegment) -> Associated lineSegment @@ -768,29 +768,29 @@ -> Set (AroundIntersection lineSegment) -> Associated lineSegment Associated Set (AroundStart lineSegment) -ss' Set (AroundEnd lineSegment) -es Set (AroundIntersection lineSegment) -is) (Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment)) -f Set (AroundStart lineSegment) -ss) +ss' Set (AroundEnd lineSegment) +es Set (AroundIntersection lineSegment) +is) (Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment)) +f Set (AroundStart lineSegment) +ss) {-# INLINE startPointOf #-} -- | Lens to access the segments for which this is an endPoint -endPointOf :: Lens' (Associated lineSegment) (Set.Set (AroundEnd lineSegment)) +endPointOf :: Lens' (Associated lineSegment) (Set.Set (AroundEnd lineSegment)) endPointOf :: forall lineSegment (f :: * -> *). Functor f => (Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment))) -> Associated lineSegment -> f (Associated lineSegment) -endPointOf Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment)) -f (Associated Set (AroundStart lineSegment) -ss Set (AroundEnd lineSegment) -es Set (AroundIntersection lineSegment) -is) = (Set (AroundEnd lineSegment) -> Associated lineSegment) +endPointOf Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment)) +f (Associated Set (AroundStart lineSegment) +ss Set (AroundEnd lineSegment) +es Set (AroundIntersection lineSegment) +is) = (Set (AroundEnd lineSegment) -> Associated lineSegment) -> f (Set (AroundEnd lineSegment)) -> f (Associated lineSegment) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Set (AroundEnd lineSegment) -es' -> Set (AroundStart lineSegment) +fmap (\Set (AroundEnd lineSegment) +es' -> Set (AroundStart lineSegment) -> Set (AroundEnd lineSegment) -> Set (AroundIntersection lineSegment) -> Associated lineSegment @@ -800,32 +800,32 @@ -> Set (AroundIntersection lineSegment) -> Associated lineSegment Associated Set (AroundStart lineSegment) -ss Set (AroundEnd lineSegment) -es' Set (AroundIntersection lineSegment) -is) (Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment)) -f Set (AroundEnd lineSegment) -es) +ss Set (AroundEnd lineSegment) +es' Set (AroundIntersection lineSegment) +is) (Set (AroundEnd lineSegment) -> f (Set (AroundEnd lineSegment)) +f Set (AroundEnd lineSegment) +es) {-# INLINE endPointOf #-} -- | Lens to access the segments for which this point lies in the interior of the segment -interiorTo :: Lens' (Associated lineSegment) (Set.Set (AroundIntersection lineSegment)) +interiorTo :: Lens' (Associated lineSegment) (Set.Set (AroundIntersection lineSegment)) interiorTo :: forall lineSegment (f :: * -> *). Functor f => (Set (AroundIntersection lineSegment) -> f (Set (AroundIntersection lineSegment))) -> Associated lineSegment -> f (Associated lineSegment) -interiorTo Set (AroundIntersection lineSegment) +interiorTo Set (AroundIntersection lineSegment) -> f (Set (AroundIntersection lineSegment)) -f (Associated Set (AroundStart lineSegment) -ss Set (AroundEnd lineSegment) -es Set (AroundIntersection lineSegment) -is) = (Set (AroundIntersection lineSegment) -> Associated lineSegment) +f (Associated Set (AroundStart lineSegment) +ss Set (AroundEnd lineSegment) +es Set (AroundIntersection lineSegment) +is) = (Set (AroundIntersection lineSegment) -> Associated lineSegment) -> f (Set (AroundIntersection lineSegment)) -> f (Associated lineSegment) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Set (AroundIntersection lineSegment) -is' -> Set (AroundStart lineSegment) +fmap (\Set (AroundIntersection lineSegment) +is' -> Set (AroundStart lineSegment) -> Set (AroundEnd lineSegment) -> Set (AroundIntersection lineSegment) -> Associated lineSegment @@ -835,24 +835,24 @@ -> Set (AroundIntersection lineSegment) -> Associated lineSegment Associated Set (AroundStart lineSegment) -ss Set (AroundEnd lineSegment) -es Set (AroundIntersection lineSegment) -is') (Set (AroundIntersection lineSegment) +ss Set (AroundEnd lineSegment) +es Set (AroundIntersection lineSegment) +is') (Set (AroundIntersection lineSegment) -> f (Set (AroundIntersection lineSegment)) -f Set (AroundIntersection lineSegment) -is) +f Set (AroundIntersection lineSegment) +is) {-# INLINE interiorTo #-} -- | Fold over the segments associated with the intersection. -associatedSegments :: Fold (Associated lineSegment) lineSegment +associatedSegments :: Fold (Associated lineSegment) lineSegment associatedSegments :: forall lineSegment (f :: * -> *). (Contravariant f, Applicative f) => (lineSegment -> f lineSegment) -> Associated lineSegment -> f (Associated lineSegment) -associatedSegments lineSegment -> f lineSegment -f Associated lineSegment -a = ((Set (AroundStart lineSegment) +associatedSegments lineSegment -> f lineSegment +f Associated lineSegment +a = ((Set (AroundStart lineSegment) -> f (Set (AroundStart lineSegment))) -> Associated lineSegment -> f (Associated lineSegment) forall lineSegment (f :: * -> *). @@ -897,8 +897,8 @@ (Unwrapped (AroundStart lineSegment)) (Unwrapped (AroundStart lineSegment)) _Wrapped) lineSegment -> f lineSegment -f Associated lineSegment -a f (Associated lineSegment) +f Associated lineSegment +a f (Associated lineSegment) -> f (Associated lineSegment) -> f (Associated lineSegment) forall a b. f a -> f b -> f b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b @@ -942,8 +942,8 @@ (Unwrapped (AroundEnd lineSegment)) (Unwrapped (AroundEnd lineSegment)) _Wrapped) lineSegment -> f lineSegment -f Associated lineSegment -a f (Associated lineSegment) +f Associated lineSegment +a f (Associated lineSegment) -> f (Associated lineSegment) -> f (Associated lineSegment) forall a b. f a -> f b -> f b forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b @@ -1000,8 +1000,8 @@ (Unwrapped (AroundIntersection lineSegment)) (Unwrapped (AroundIntersection lineSegment)) _Wrapped) lineSegment -> f lineSegment -f Associated lineSegment -a +f Associated lineSegment +a -- combine the folds -- instance Functor (Associated lineSegment) where @@ -1016,7 +1016,7 @@ -- | Reports whether this associated has any interior intersections -- -- \(O(1)\) -isInteriorIntersection :: Associated lineSegment -> Bool +isInteriorIntersection :: Associated lineSegment -> Bool isInteriorIntersection :: forall lineSegment. Associated lineSegment -> Bool isInteriorIntersection = Bool -> Bool not (Bool -> Bool) @@ -1042,22 +1042,22 @@ -- appropriate associated representing that. -- -- pre: p intersects the segment -mkAssociated :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Point_ point' 2 r - , Eq r - , OrdArounds lineSegment +mkAssociated :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Point_ point' 2 r + , Eq r + , OrdArounds lineSegment ) - => point' -> lineSegment -> Associated lineSegment + => point' -> lineSegment -> Associated lineSegment mkAssociated :: forall lineSegment point r point'. (LineSegment_ lineSegment point, Point_ point 2 r, Point_ point' 2 r, Eq r, OrdArounds lineSegment) => point' -> lineSegment -> Associated lineSegment -mkAssociated point' -p lineSegment -s +mkAssociated point' +p lineSegment +s | point' -ppoint' -> Getting (Point 2 r) point' (Point 2 r) -> Point 2 r +ppoint' -> Getting (Point 2 r) point' (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point' (Point 2 r) forall point (d :: Nat) r. @@ -1067,7 +1067,7 @@ asPoint Point 2 r -> Point 2 r -> Bool forall a. Eq a => a -> a -> Bool == lineSegment -slineSegment +slineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -1112,9 +1112,9 @@ Set.singleton (lineSegment -> AroundStart lineSegment forall a. a -> AroundStart a AroundStart lineSegment -s) +s) | point' -ppoint' -> Getting (Point 2 r) point' (Point 2 r) -> Point 2 r +ppoint' -> Getting (Point 2 r) point' (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point' (Point 2 r) forall point (d :: Nat) r. @@ -1124,7 +1124,7 @@ asPoint Point 2 r -> Point 2 r -> Bool forall a. Eq a => a -> a -> Bool == lineSegment -slineSegment +slineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -1168,7 +1168,7 @@ Set.singleton (lineSegment -> AroundEnd lineSegment forall a. a -> AroundEnd a AroundEnd lineSegment -s) +s) | Bool otherwise = Associated lineSegment forall a. Monoid a => a @@ -1197,7 +1197,7 @@ Set.singleton (lineSegment -> AroundIntersection lineSegment forall a. a -> AroundIntersection a AroundIntersection lineSegment -s) +s) ---- | test if the given segment has p as its endpoint, an construct the @@ -1214,16 +1214,16 @@ --mkAssociated' p s = (mkAssociated p s)&interiorTo .~ mempty -instance OrdArounds lineSegment => Semigroup (Associated lineSegment) where - (Associated Set (AroundStart lineSegment) -ss Set (AroundEnd lineSegment) -es Set (AroundIntersection lineSegment) -is) <> :: Associated lineSegment +instance OrdArounds lineSegment => Semigroup (Associated lineSegment) where + (Associated Set (AroundStart lineSegment) +ss Set (AroundEnd lineSegment) +es Set (AroundIntersection lineSegment) +is) <> :: Associated lineSegment -> Associated lineSegment -> Associated lineSegment -<> (Associated Set (AroundStart lineSegment) -ss' Set (AroundEnd lineSegment) -es' Set (AroundIntersection lineSegment) -is') = +<> (Associated Set (AroundStart lineSegment) +ss' Set (AroundEnd lineSegment) +es' Set (AroundIntersection lineSegment) +is') = Set (AroundStart lineSegment) -> Set (AroundEnd lineSegment) -> Set (AroundIntersection lineSegment) @@ -1234,25 +1234,25 @@ -> Set (AroundIntersection lineSegment) -> Associated lineSegment Associated (Set (AroundStart lineSegment) -ss Set (AroundStart lineSegment) +ss Set (AroundStart lineSegment) -> Set (AroundStart lineSegment) -> Set (AroundStart lineSegment) forall a. Semigroup a => a -> a -> a <> Set (AroundStart lineSegment) -ss') (Set (AroundEnd lineSegment) -es Set (AroundEnd lineSegment) +ss') (Set (AroundEnd lineSegment) +es Set (AroundEnd lineSegment) -> Set (AroundEnd lineSegment) -> Set (AroundEnd lineSegment) forall a. Semigroup a => a -> a -> a <> Set (AroundEnd lineSegment) -es') (Set (AroundIntersection lineSegment) -is Set (AroundIntersection lineSegment) +es') (Set (AroundIntersection lineSegment) +is Set (AroundIntersection lineSegment) -> Set (AroundIntersection lineSegment) -> Set (AroundIntersection lineSegment) forall a. Semigroup a => a -> a -> a <> Set (AroundIntersection lineSegment) -is') +is') -instance OrdArounds lineSegment => Monoid (Associated lineSegment) where - mempty :: Associated lineSegment +instance OrdArounds lineSegment => Monoid (Associated lineSegment) where + mempty :: Associated lineSegment mempty = Set (AroundStart lineSegment) -> Set (AroundEnd lineSegment) -> Set (AroundIntersection lineSegment) @@ -1270,13 +1270,13 @@ forall a. Monoid a => a mempty -instance (NFData lineSegment) => NFData (Associated lineSegment) +instance (NFData lineSegment) => NFData (Associated lineSegment) -- | For each intersection point the segments intersecting there. -type Intersections r lineSegment = Map.Map (Point 2 r) (Associated lineSegment) +type Intersections r lineSegment = Map.Map (Point 2 r) (Associated lineSegment) -- | Get the set of all intersection points -intersectionPoints :: Intersections r lineSegment -> Set.Set (Point 2 r) +intersectionPoints :: Intersections r lineSegment -> Set.Set (Point 2 r) intersectionPoints :: forall r lineSegment. Intersections r lineSegment -> Set (Point 2 r) intersectionPoints = Map (Point 2 r) (Associated lineSegment) -> Set (Point 2 r) @@ -1285,14 +1285,14 @@ -- | An intersection point together with all segments intersecting at -- this point. -data IntersectionPoint point lineSegment = +data IntersectionPoint point lineSegment = IntersectionPoint { forall point lineSegment. IntersectionPoint point lineSegment -> point -_intersectionPoint :: !point +_intersectionPoint :: !point , forall point lineSegment. IntersectionPoint point lineSegment -> Associated lineSegment -_associatedSegs :: !(Associated lineSegment) - } deriving stock (Int -> IntersectionPoint point lineSegment -> ShowS +_associatedSegs :: !(Associated lineSegment) + } deriving stock (Int -> IntersectionPoint point lineSegment -> ShowS [IntersectionPoint point lineSegment] -> ShowS IntersectionPoint point lineSegment -> String (Int -> IntersectionPoint point lineSegment -> ShowS) @@ -1322,7 +1322,7 @@ (Show point, Show lineSegment) => [IntersectionPoint point lineSegment] -> ShowS showList :: [IntersectionPoint point lineSegment] -> ShowS -Show,(forall x. +Show,(forall x. IntersectionPoint point lineSegment -> Rep (IntersectionPoint point lineSegment) x) -> (forall x. @@ -1358,77 +1358,77 @@ Generic) -- | Lens to access the intersectionp oint -intersectionPoint :: Lens (IntersectionPoint point lineSegment) - (IntersectionPoint point' lineSegment) - point point' +intersectionPoint :: Lens (IntersectionPoint point lineSegment) + (IntersectionPoint point' lineSegment) + point point' intersectionPoint :: forall point lineSegment point' (f :: * -> *). Functor f => (point -> f point') -> IntersectionPoint point lineSegment -> f (IntersectionPoint point' lineSegment) -intersectionPoint point -> f point' -f (IntersectionPoint point -p Associated lineSegment -ss) = (point' -> IntersectionPoint point' lineSegment) +intersectionPoint point -> f point' +f (IntersectionPoint point +p Associated lineSegment +ss) = (point' -> IntersectionPoint point' lineSegment) -> f point' -> f (IntersectionPoint point' lineSegment) forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\point' -p' -> point' +fmap (\point' +p' -> point' -> Associated lineSegment -> IntersectionPoint point' lineSegment forall point lineSegment. point -> Associated lineSegment -> IntersectionPoint point lineSegment IntersectionPoint point' -p' Associated lineSegment -ss) (point -> f point' -f point -p) +p' Associated lineSegment +ss) (point -> f point' +f point +p) {-# INLINE intersectionPoint #-} -- | Lens to access the associated segments -associatedSegs :: Lens (IntersectionPoint point lineSegment) - (IntersectionPoint point lineSegment') - (Associated lineSegment) (Associated lineSegment') +associatedSegs :: Lens (IntersectionPoint point lineSegment) + (IntersectionPoint point lineSegment') + (Associated lineSegment) (Associated lineSegment') associatedSegs :: forall point lineSegment lineSegment' (f :: * -> *). Functor f => (Associated lineSegment -> f (Associated lineSegment')) -> IntersectionPoint point lineSegment -> f (IntersectionPoint point lineSegment') -associatedSegs Associated lineSegment -> f (Associated lineSegment') -f (IntersectionPoint point -p Associated lineSegment -ss) = (Associated lineSegment' -> IntersectionPoint point lineSegment') +associatedSegs Associated lineSegment -> f (Associated lineSegment') +f (IntersectionPoint point +p Associated lineSegment +ss) = (Associated lineSegment' -> IntersectionPoint point lineSegment') -> f (Associated lineSegment') -> f (IntersectionPoint point lineSegment') forall a b. (a -> b) -> f a -> f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Associated lineSegment' -ss' -> point +fmap (\Associated lineSegment' +ss' -> point -> Associated lineSegment' -> IntersectionPoint point lineSegment' forall point lineSegment. point -> Associated lineSegment -> IntersectionPoint point lineSegment IntersectionPoint point -p Associated lineSegment' -ss') (Associated lineSegment -> f (Associated lineSegment') -f Associated lineSegment -ss) +p Associated lineSegment' +ss') (Associated lineSegment -> f (Associated lineSegment') +f Associated lineSegment +ss) {-# INLINE associatedSegs #-} -deriving stock instance ( Eq (AroundStart lineSegment) - , Eq (AroundIntersection lineSegment) - , Eq (AroundEnd lineSegment) - , Eq point - ) => Eq (IntersectionPoint point lineSegment) +deriving stock instance ( Eq (AroundStart lineSegment) + , Eq (AroundIntersection lineSegment) + , Eq (AroundEnd lineSegment) + , Eq point + ) => Eq (IntersectionPoint point lineSegment) -deriving stock instance ( Read lineSegment, Read point - , OrdArounds lineSegment - ) => Read (IntersectionPoint point lineSegment) +deriving stock instance ( Read lineSegment, Read point + , OrdArounds lineSegment + ) => Read (IntersectionPoint point lineSegment) -instance (NFData point, NFData lineSegment) => NFData (IntersectionPoint point lineSegment) +instance (NFData point, NFData lineSegment) => NFData (IntersectionPoint point lineSegment) -- sameOrder :: (Ord r, Num r, Eq p) => Point 2 r @@ -1442,15 +1442,15 @@ -- | Given a point p, and a bunch of segments that suposedly intersect -- at p, correctly categorize them. -mkIntersectionPoint :: ( LineSegment_ lineSegment endPoint - , Point_ endPoint 2 r - , Point_ point 2 r, Eq r - , OrdArounds lineSegment +mkIntersectionPoint :: ( LineSegment_ lineSegment endPoint + , Point_ endPoint 2 r + , Point_ point 2 r, Eq r + , OrdArounds lineSegment ) - => point - -> [lineSegment] -- ^ uncategorized - -> [lineSegment] -- ^ segments we know contain p, - -> IntersectionPoint point lineSegment + => point + -> [lineSegment] -- ^ uncategorized + -> [lineSegment] -- ^ segments we know contain p, + -> IntersectionPoint point lineSegment mkIntersectionPoint :: forall lineSegment endPoint r point. (LineSegment_ lineSegment endPoint, Point_ endPoint 2 r, Point_ point 2 r, Eq r, OrdArounds lineSegment) => @@ -1458,16 +1458,16 @@ -> [lineSegment] -> [lineSegment] -> IntersectionPoint point lineSegment -mkIntersectionPoint point -p [lineSegment] -as [lineSegment] -cs = point +mkIntersectionPoint point +p [lineSegment] +as [lineSegment] +cs = point -> Associated lineSegment -> IntersectionPoint point lineSegment forall point lineSegment. point -> Associated lineSegment -> IntersectionPoint point lineSegment IntersectionPoint point -p (Associated lineSegment -> IntersectionPoint point lineSegment) +p (Associated lineSegment -> IntersectionPoint point lineSegment) -> Associated lineSegment -> IntersectionPoint point lineSegment forall a b. (a -> b) -> a -> b $ (lineSegment -> Associated lineSegment) @@ -1482,14 +1482,14 @@ Point_ point' 2 r, Eq r, OrdArounds lineSegment) => point' -> lineSegment -> Associated lineSegment mkAssociated point -p) ([lineSegment] -> Associated lineSegment) +p) ([lineSegment] -> Associated lineSegment) -> [lineSegment] -> Associated lineSegment forall a b. (a -> b) -> a -> b $ [lineSegment] -as [lineSegment] -> [lineSegment] -> [lineSegment] +as [lineSegment] -> [lineSegment] -> [lineSegment] forall a. Semigroup a => a -> a -> a <> [lineSegment] -cs +cs -- IntersectionPoint p -- $ Associated mempty mempty (Set.fromAscList cs') @@ -1501,20 +1501,20 @@ -- | An ordering that is decreasing on y, increasing on x -ordPoints :: (Point_ point 2 r, Ord r) => point -> point -> Ordering +ordPoints :: (Point_ point 2 r, Ord r) => point -> point -> Ordering ordPoints :: forall point r. (Point_ point 2 r, Ord r) => point -> point -> Ordering -ordPoints point -a point -b = let f :: s -> (Down (NumType s), NumType s) -f s -p = (NumType s -> Down (NumType s) +ordPoints point +a point +b = let f :: s -> (Down (NumType s), NumType s) +f s +p = (NumType s -> Down (NumType s) forall a. a -> Down a Down (NumType s -> Down (NumType s)) -> NumType s -> Down (NumType s) forall a b. (a -> b) -> a -> b $ s -ps -> Getting (NumType s) s (NumType s) -> NumType s +ps -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -1522,7 +1522,7 @@ IndexedLens' Int point r IndexedLens' Int s (NumType s) yCoord, s -ps -> Getting (NumType s) s (NumType s) -> NumType s +ps -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Nat) point r. @@ -1542,69 +1542,69 @@ (TypeError ...), Point_ s (Dimension s) (NumType s)) => s -> (Down (NumType s), NumType s) -f point -a point -b +f point +a point +b -- | Given two segments, compute an IntersectionPoint representing their intersection (if -- such an intersection exists). -intersectionPointOf :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Ord r, Fractional r - , IntersectConstraints lineSegment +intersectionPointOf :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Ord r, Fractional r + , IntersectConstraints lineSegment ) - => lineSegment -> lineSegment - -> Maybe (IntersectionPoint (Point 2 r) lineSegment) + => lineSegment -> lineSegment + -> Maybe (IntersectionPoint (Point 2 r) lineSegment) intersectionPointOf :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, IntersectConstraints lineSegment) => lineSegment -> lineSegment -> Maybe (IntersectionPoint (Point 2 r) lineSegment) -intersectionPointOf lineSegment -s lineSegment -s' = lineSegment -s lineSegment -> lineSegment -> Intersection lineSegment lineSegment +intersectionPointOf lineSegment +s lineSegment +s' = lineSegment +s lineSegment -> lineSegment -> Intersection lineSegment lineSegment forall g h. IsIntersectableWith g h => g -> h -> Intersection g h `intersect` lineSegment -s' Maybe (LineSegmentLineSegmentIntersection lineSegment) +s' Maybe (LineSegmentLineSegmentIntersection lineSegment) -> (LineSegmentLineSegmentIntersection lineSegment -> IntersectionPoint (Point 2 r) lineSegment) -> Maybe (IntersectionPoint (Point 2 r) lineSegment) forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b <&> \case - LineSegment_x_LineSegment_Point Point 2 (NumType lineSegment) -p -> Point 2 r -> IntersectionPoint (Point 2 r) lineSegment -intersectionPoint' Point 2 r + LineSegment_x_LineSegment_Point Point 2 (NumType lineSegment) +p -> Point 2 r -> IntersectionPoint (Point 2 r) lineSegment +intersectionPoint' Point 2 r Point 2 (NumType lineSegment) -p - LineSegment_x_LineSegment_LineSegment lineSegment -seg -> Point 2 r -> IntersectionPoint (Point 2 r) lineSegment -intersectionPoint' (lineSegment -> Point (Dimension point) (NumType point) +p + LineSegment_x_LineSegment_LineSegment lineSegment +seg -> Point 2 r -> IntersectionPoint (Point 2 r) lineSegment +intersectionPoint' (lineSegment -> Point (Dimension point) (NumType point) forall {p} {p} {s}. (NumType p ~ NumType p, Dimension p ~ 2, Dimension p ~ 2, Ord (NumType p), HasStart s p, HasEnd s p, Point_ p 2 (NumType p), Point_ p 2 (NumType p)) => s -> Point (Dimension p) (NumType p) -topEndPoint lineSegment -seg) +topEndPoint lineSegment +seg) where - intersectionPoint' :: Point 2 r -> IntersectionPoint (Point 2 r) lineSegment -intersectionPoint' Point 2 r -p = Point 2 r + intersectionPoint' :: Point 2 r -> IntersectionPoint (Point 2 r) lineSegment +intersectionPoint' Point 2 r +p = Point 2 r -> Associated lineSegment -> IntersectionPoint (Point 2 r) lineSegment forall point lineSegment. point -> Associated lineSegment -> IntersectionPoint point lineSegment IntersectionPoint Point 2 r -p (Point 2 r -> lineSegment -> Associated lineSegment +p (Point 2 r -> lineSegment -> Associated lineSegment forall lineSegment point r point'. (LineSegment_ lineSegment point, Point_ point 2 r, Point_ point' 2 r, Eq r, OrdArounds lineSegment) => point' -> lineSegment -> Associated lineSegment mkAssociated Point 2 r -p lineSegment -s Associated lineSegment +p lineSegment +s Associated lineSegment -> Associated lineSegment -> Associated lineSegment forall a. Semigroup a => a -> a -> a <> Point 2 r -> lineSegment -> Associated lineSegment @@ -1613,11 +1613,11 @@ Point_ point' 2 r, Eq r, OrdArounds lineSegment) => point' -> lineSegment -> Associated lineSegment mkAssociated Point 2 r -p lineSegment -s') - topEndPoint :: s -> Point (Dimension p) (NumType p) -topEndPoint s -seg = (Point (Dimension p) (NumType p) +p lineSegment +s') + topEndPoint :: s -> Point (Dimension p) (NumType p) +topEndPoint s +seg = (Point (Dimension p) (NumType p) -> Point (Dimension p) (NumType p) -> Ordering) -> [Point (Dimension p) (NumType p)] -> Point (Dimension p) (NumType p) @@ -1630,7 +1630,7 @@ (Point_ point 2 r, Ord r) => point -> point -> Ordering ordPoints [s -segs +segs -> Getting (Point (Dimension p) (NumType p)) s @@ -1663,7 +1663,7 @@ Lens' point (Point d r) Lens' p (Point (Dimension p) (NumType p)) asPoint, s -segs +segs -> Getting (Point (Dimension p) (NumType p)) s @@ -1698,9 +1698,9 @@ asPoint] -- | Shorthand for the more-or-less standard constraints that we need on LineSegments -type IntersectConstraints lineSegment = - ( OrdArounds lineSegment - , IsIntersectableWith lineSegment lineSegment - , Intersection lineSegment lineSegment ~ Maybe (LineSegmentLineSegmentIntersection lineSegment) +type IntersectConstraints lineSegment = + ( OrdArounds lineSegment + , IsIntersectableWith lineSegment lineSegment + , Intersection lineSegment lineSegment ~ Maybe (LineSegmentLineSegmentIntersection lineSegment) ) \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.BruteForce.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.BruteForce.html index 79ea33f8b..69573a5c9 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.BruteForce.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.BruteForce.html @@ -27,10 +27,10 @@ -- * The naive O(n^4) time algorithm. -- | Computes the lower envelope in O(n^4) time. -bruteForceLowerEnvelope :: ( Plane_ plane r, Ord plane, Ord r, Fractional r - , Foldable set - , Show r, Show plane - ) => set plane -> MinimizationDiagram r plane +bruteForceLowerEnvelope :: ( Plane_ plane r, Ord plane, Ord r, Fractional r + , Foldable set + , Show r, Show plane + ) => set plane -> MinimizationDiagram r plane bruteForceLowerEnvelope :: forall plane r (set :: * -> *). (Plane_ plane r, Ord plane, Ord r, Fractional r, Foldable set, Show r, Show plane) => @@ -55,16 +55,16 @@ -- | Computes the vertices of the lower envelope -- -- O(n^4) time. -computeVertexForm :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Foldable set - , Show plane, Show r +computeVertexForm :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Foldable set + , Show plane, Show r ) - => set plane -> VertexForm r plane + => set plane -> VertexForm r plane computeVertexForm :: forall plane r (set :: * -> *). (Plane_ plane r, Ord plane, Ord r, Fractional r, Foldable set, Show plane, Show r) => set plane -> VertexForm r plane -computeVertexForm set plane -planes = (Point 3 r -> Definers plane -> Definers plane -> Definers plane) +computeVertexForm set plane +planes = (Point 3 r -> Definers plane -> Definers plane -> Definers plane) -> [Map (Point 3 r) (Definers plane)] -> Map (Point 3 r) (Definers plane) forall (f :: * -> *) k a. @@ -90,55 +90,55 @@ (Plane_ plane r, Foldable f, Ord plane, Ord r, Fractional r) => f plane -> Three plane -> Map (Point 3 r) (Definers plane) asVertex set plane -planes) ([Three plane] -> Map (Point 3 r) (Definers plane)) +planes) ([Three plane] -> Map (Point 3 r) (Definers plane)) -> [Three plane] -> Map (Point 3 r) (Definers plane) forall a b. (a -> b) -> a -> b $ set plane -> [Three plane] forall (f :: * -> *) a. Foldable f => f a -> [Three a] uniqueTriplets set plane -planes +planes -asVertex :: (Plane_ plane r, Foldable f, Ord plane, Ord r, Fractional r) - => f plane -> Three plane -> Map (Point 3 r) (Definers plane) +asVertex :: (Plane_ plane r, Foldable f, Ord plane, Ord r, Fractional r) + => f plane -> Three plane -> Map (Point 3 r) (Definers plane) asVertex :: forall plane r (f :: * -> *). (Plane_ plane r, Foldable f, Ord plane, Ord r, Fractional r) => f plane -> Three plane -> Map (Point 3 r) (Definers plane) -asVertex f plane -planes Three plane -defs = case Three plane -> Maybe (Point 3 r, Definers plane) +asVertex f plane +planes Three plane +defs = case Three plane -> Maybe (Point 3 r, Definers plane) forall plane r. (Plane_ plane r, Ord r, Fractional r) => Three plane -> Maybe (Point 3 r, Definers plane) definers Three plane -defs of - Just (Point 3 r -v,Definers plane -defs') | Point 3 r -v Point 3 r -> f plane -> Bool +defs of + Just (Point 3 r +v,Definers plane +defs') | Point 3 r +v Point 3 r -> f plane -> Bool forall plane r (f :: * -> *). (Plane_ plane r, Ord r, Num r, Foldable f) => Point 3 r -> f plane -> Bool `belowAll` f plane -planes -> Point 3 r -> Definers plane -> Map (Point 3 r) (Definers plane) +planes -> Point 3 r -> Definers plane -> Map (Point 3 r) (Definers plane) forall k a. k -> a -> Map k a Map.singleton Point 3 r -v Definers plane -defs' +v Definers plane +defs' Maybe (Point 3 r, Definers plane) _ -> Map (Point 3 r) (Definers plane) forall k a. Map k a Map.empty -- | test if v lies below (or on) all the given planes -belowAll :: (Plane_ plane r, Ord r, Num r, Foldable f) => Point 3 r -> f plane -> Bool +belowAll :: (Plane_ plane r, Ord r, Num r, Foldable f) => Point 3 r -> f plane -> Bool belowAll :: forall plane r (f :: * -> *). (Plane_ plane r, Ord r, Num r, Foldable f) => Point 3 r -> f plane -> Bool -belowAll Point 3 r -v = (plane -> Bool) -> f plane -> Bool +belowAll Point 3 r +v = (plane -> Bool) -> f plane -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool -all (\plane -h -> Point 3 r -> plane -> Ordering +all (\plane +h -> Point 3 r -> plane -> Ordering forall point. (1 <= 3, Point_ point 3 r, Ord r, Num r) => point -> plane -> Ordering @@ -147,8 +147,8 @@ Ord r, Num r) => point -> hyperPlane -> Ordering verticalSideTest Point 3 r -v plane -h Ordering -> Ordering -> Bool +v plane +h Ordering -> Ordering -> Bool forall a. Eq a => a -> a -> Bool /= Ordering GT) diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Graph.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Graph.html index 251426147..a7966d693 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Graph.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Graph.html @@ -35,18 +35,18 @@ -- | A Plane graph storing vertices of type v that are identified by keys of type k, and -- some ordered sequence of edges (which are ordered using e). -type PlaneGraph' k v e = GGraph (NEMap e) k v e +type PlaneGraph' k v e = GGraph (NEMap e) k v e -- | A Plane graph storing vertices of type v that are identified by keys of type k, and -- some ordered sequence of edges (which are ordered using e). -type PlaneGraphMap k v e = NEMap k (NEMap e k, v) +type PlaneGraphMap k v e = NEMap k (NEMap e k, v) -- | Produce a triangulated plane graph on the bounded vertices. every vertex is -- represented by its point, it stores a list of its outgoing edges, and some data. -toTriangulatedPlaneGraph' :: (Plane_ plane r, Num r, Ord r) - => MinimizationDiagram r plane - -> PlaneGraph' (Point 2 r) (First r) (E r) +toTriangulatedPlaneGraph' :: (Plane_ plane r, Num r, Ord r) + => MinimizationDiagram r plane + -> PlaneGraph' (Point 2 r) (First r) (E r) toTriangulatedPlaneGraph' :: forall plane r. (Plane_ plane r, Num r, Ord r) => MinimizationDiagram r plane @@ -74,8 +74,8 @@ -- | Produce a plane graph on the bounded vertices. every vertex is represented by its -- point, it stores a list of its outgoing edges, and some data. -toPlaneGraph' :: (Plane_ plane r, Num r, Ord r) - => MinimizationDiagram r plane -> PlaneGraph' (Point 2 r) (First r) (E r) +toPlaneGraph' :: (Plane_ plane r, Num r, Ord r) + => MinimizationDiagram r plane -> PlaneGraph' (Point 2 r) (First r) (E r) toPlaneGraph' :: forall plane r. (Plane_ plane r, Num r, Ord r) => MinimizationDiagram r plane @@ -102,9 +102,9 @@ toPlaneGraphMap -- | Helper to produce the graphs -toPlaneGraph'' :: (Ord r) - => PlaneGraphMap (Point 2 r) (First r) (E r) - -> PlaneGraph' (Point 2 r) (First r) (E r) +toPlaneGraph'' :: (Ord r) + => PlaneGraphMap (Point 2 r) (First r) (E r) + -> PlaneGraph' (Point 2 r) (First r) (E r) toPlaneGraph'' :: forall r. Ord r => PlaneGraphMap (Point 2 r) (First r) (E r) @@ -131,40 +131,40 @@ (Point 2 r) (VertexData (NEMap (E r)) (Point 2 r) (First r) (E r)) forall a b. (a -> b) -> NEMap (Point 2 r) a -> NEMap (Point 2 r) b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\(NEMap (E r) (Point 2 r) -neighOrder, First r -x) -> First r +fmap (\(NEMap (E r) (Point 2 r) +neighOrder, First r +x) -> First r -> Map (Point 2 r) (E r) -> NEMap (E r) (Point 2 r) -> VertexData (NEMap (E r)) (Point 2 r) (First r) (E r) forall (f :: * -> *) i v e. v -> Map i e -> f i -> VertexData f i v e VertexData First r -x (NEMap (E r) (Point 2 r) -> Map (Point 2 r) (E r) +x (NEMap (E r) (Point 2 r) -> Map (Point 2 r) (E r) forall {a}. NEMap a (Point 2 r) -> Map (Point 2 r) a -mkNeighMap NEMap (E r) (Point 2 r) -neighOrder) NEMap (E r) (Point 2 r) -neighOrder) +mkNeighMap NEMap (E r) (Point 2 r) +neighOrder) NEMap (E r) (Point 2 r) +neighOrder) where - mkNeighMap :: NEMap a (Point 2 r) -> Map (Point 2 r) a -mkNeighMap = (a -> Point 2 r -> Map (Point 2 r) a) + mkNeighMap :: NEMap a (Point 2 r) -> Map (Point 2 r) a +mkNeighMap = (a -> Point 2 r -> Map (Point 2 r) a) -> NEMap a (Point 2 r) -> Map (Point 2 r) a forall m k a. Semigroup m => (k -> a -> m) -> NEMap k a -> m -NEMap.foldMapWithKey (\a -e Point 2 r -i -> Point 2 r -> a -> Map (Point 2 r) a +NEMap.foldMapWithKey (\a +e Point 2 r +i -> Point 2 r -> a -> Map (Point 2 r) a forall k a. k -> a -> Map k a Map.singleton Point 2 r -i a -e) +i a +e) -------------------------------------------------------------------------------- -- | Produce a triangulated plane graph on the bounded vertices. every vertex is -- represented by its point, it stores a list of its outgoing edges, and some data. -toTriangulatedPlaneGraphMap :: (Plane_ plane r, Num r, Ord r) - => MinimizationDiagram r plane - -> PlaneGraphMap (Point 2 r) (First r) (E r) +toTriangulatedPlaneGraphMap :: (Plane_ plane r, Num r, Ord r) + => MinimizationDiagram r plane + -> PlaneGraphMap (Point 2 r) (First r) (E r) toTriangulatedPlaneGraphMap :: forall plane r. (Plane_ plane r, Num r, Ord r) => MinimizationDiagram r plane @@ -199,16 +199,16 @@ -- | Helper function to construct a triangulated plane graph -toTriangulatedGr :: (Plane_ plane r, Num r, Ord r) - => plane -> Region r (Point 2 r) - -> PlaneGraphMap (Point 2 r) (First r) (E r) +toTriangulatedGr :: (Plane_ plane r, Num r, Ord r) + => plane -> Region r (Point 2 r) + -> PlaneGraphMap (Point 2 r) (First r) (E r) toTriangulatedGr :: forall plane r. (Plane_ plane r, Num r, Ord r) => plane -> Region r (Point 2 r) -> PlaneGraphMap (Point 2 r) (First r) (E r) -toTriangulatedGr plane -h = Map (Point 2 r) (NEMap (E r) (Point 2 r), First r) +toTriangulatedGr plane +h = Map (Point 2 r) (NEMap (E r) (Point 2 r), First r) -> NEMap (Point 2 r) (NEMap (E r) (Point 2 r), First r) forall k a. Map k a -> NEMap k a NEMap.unsafeFromMap @@ -224,10 +224,10 @@ -> Map (Point 2 r) (NEMap (E r) (Point 2 r)) -> Map (Point 2 r) (NEMap (E r) (Point 2 r), First r) forall k a b. (k -> a -> b) -> Map k a -> Map k b -Map.mapWithKey (\Point 2 r -v NEMap (E r) (Point 2 r) -adjs -> (NEMap (E r) (Point 2 r) -adjs, r -> First r +Map.mapWithKey (\Point 2 r +v NEMap (E r) (Point 2 r) +adjs -> (NEMap (E r) (Point 2 r) +adjs, r -> First r forall a. a -> First a First (r -> First r) -> r -> First r forall a b. (a -> b) -> a -> b @@ -240,8 +240,8 @@ Point_ point (d - 1) r) => point -> hyperPlane -> r evalAt Point 2 r -v plane -h)) (Map (Point 2 r) (NEMap (E r) (Point 2 r)) +v plane +h)) (Map (Point 2 r) (NEMap (E r) (Point 2 r)) -> Map (Point 2 r) (NEMap (E r) (Point 2 r), First r)) -> (Region r (Point 2 r) -> Map (Point 2 r) (NEMap (E r) (Point 2 r))) @@ -249,16 +249,16 @@ -> Map (Point 2 r) (NEMap (E r) (Point 2 r), First r) forall b c a. (b -> c) -> (a -> b) -> a -> c . \case - Bounded Cyclic NonEmpty (Point 2 r) -vertices -> case Cyclic NonEmpty (Point 2 r) -> NonEmpty (Point 2 r) + Bounded Cyclic NonEmpty (Point 2 r) +vertices -> case Cyclic NonEmpty (Point 2 r) -> NonEmpty (Point 2 r) forall a. Cyclic NonEmpty a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty Cyclic NonEmpty (Point 2 r) -vertices of - (Point 2 r -v0:|Point 2 r -v1:[Point 2 r] -vs) -> Point 2 r +vertices of + (Point 2 r +v0:|Point 2 r +v1:[Point 2 r] +vs) -> Point 2 r -> Point 2 r -> [Point 2 r] -> Map (Point 2 r) (NEMap (E (NumType (Point 2 r))) (Point 2 r)) @@ -266,31 +266,31 @@ (Dimension k ~ 2, Ord k, Ord (NumType k), Num (NumType k), Affine_ k 2 (NumType k)) => k -> k -> [k] -> Map k (NEMap (E (NumType k)) k) -triangulate Point 2 r -v0 Point 2 r -v1 [Point 2 r] -vs +triangulate Point 2 r +v0 Point 2 r +v1 [Point 2 r] +vs NonEmpty (Point 2 r) _ -> [Char] -> Map (Point 2 r) (NEMap (E r) (Point 2 r)) forall a. HasCallStack => [Char] -> a error [Char] "triangulate: absurd, <2 vertices" Unbounded Vector 2 r -_ NonEmpty (Point 2 r) -vertices Vector 2 r +_ NonEmpty (Point 2 r) +vertices Vector 2 r _ -> case NonEmpty (Point 2 r) -vertices of +vertices of Point 2 r _ :| [] -> Map (Point 2 r) (NEMap (E r) (Point 2 r)) forall k a. Map k a Map.empty - Point 2 r -u :| [Point 2 r -v] -> [(Point 2 r, NEMap (E r) (Point 2 r))] + Point 2 r +u :| [Point 2 r +v] -> [(Point 2 r, NEMap (E r) (Point 2 r))] -> Map (Point 2 r) (NEMap (E r) (Point 2 r)) forall k a. Ord k => [(k, a)] -> Map k a Map.fromList [ (Point 2 r -u, ((E r -> Point 2 r -> NEMap (E r) (Point 2 r)) +u, ((E r -> Point 2 r -> NEMap (E r) (Point 2 r)) -> (E r, Point 2 r) -> NEMap (E r) (Point 2 r) forall a b c. (a -> b -> c) -> (a, b) -> c uncurry E r -> Point 2 r -> NEMap (E r) (Point 2 r) @@ -302,11 +302,11 @@ forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge Point 2 r -u Point 2 r -v)) +edge Point 2 r +u Point 2 r +v)) , (Point 2 r -v, ((E r -> Point 2 r -> NEMap (E r) (Point 2 r)) +v, ((E r -> Point 2 r -> NEMap (E r) (Point 2 r)) -> (E r, Point 2 r) -> NEMap (E r) (Point 2 r) forall a b c. (a -> b -> c) -> (a, b) -> c uncurry E r -> Point 2 r -> NEMap (E r) (Point 2 r) @@ -318,14 +318,14 @@ forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge Point 2 r -v Point 2 r -u)) +edge Point 2 r +v Point 2 r +u)) ] - Point 2 r -v0 :|(Point 2 r -v1:[Point 2 r] -vs) -> Point 2 r + Point 2 r +v0 :|(Point 2 r +v1:[Point 2 r] +vs) -> Point 2 r -> Point 2 r -> [Point 2 r] -> Map (Point 2 r) (NEMap (E (NumType (Point 2 r))) (Point 2 r)) @@ -333,16 +333,16 @@ (Dimension k ~ 2, Ord k, Ord (NumType k), Num (NumType k), Affine_ k 2 (NumType k)) => k -> k -> [k] -> Map k (NEMap (E (NumType k)) k) -triangulate Point 2 r -v0 Point 2 r -v1 [Point 2 r] -vs +triangulate Point 2 r +v0 Point 2 r +v1 [Point 2 r] +vs where - triangulate :: k -> k -> [k] -> Map k (NEMap (E (NumType k)) k) -triangulate k -v0 k -v1 [k] -vs = (NEMap (E (NumType k)) k + triangulate :: k -> k -> [k] -> Map k (NEMap (E (NumType k)) k) +triangulate k +v0 k +v1 [k] +vs = (NEMap (E (NumType k)) k -> NEMap (E (NumType k)) k -> NEMap (E (NumType k)) k) -> [Map k (NEMap (E (NumType k)) k)] -> Map k (NEMap (E (NumType k)) k) @@ -365,93 +365,93 @@ (Dimension v ~ 2, Ord v, Ord (NumType v), Num (NumType v), Affine_ v 2 (NumType v)) => v -> v -> v -> Map v (NEMap (E (NumType v)) v) -triangle k -v0) (k -v1k -> [k] -> [k] +triangle k +v0) (k +v1k -> [k] -> [k] forall a. a -> [a] -> [a] :[k] -vs) [k] -vs +vs) [k] +vs - triangle :: v -> v -> v -> Map v (NEMap (E (NumType v)) v) -triangle v -u v -v v -w = [(v, NEMap (E (NumType v)) v)] -> Map v (NEMap (E (NumType v)) v) + triangle :: v -> v -> v -> Map v (NEMap (E (NumType v)) v) +triangle v +u v +v v +w = [(v, NEMap (E (NumType v)) v)] -> Map v (NEMap (E (NumType v)) v) forall k a. Ord k => [(k, a)] -> Map k a Map.fromList [ (v -u, [(E (NumType v), v)] -> NEMap (E (NumType v)) v +u, [(E (NumType v), v)] -> NEMap (E (NumType v)) v forall k v. Ord k => [(k, v)] -> NEMap k v mkNEMap [ v -> v -> (E (NumType v), v) forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge v -u v -v, v -> v -> (E (NumType v), v) +edge v +u v +v, v -> v -> (E (NumType v), v) forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge v -u v -w]) +edge v +u v +w]) , (v -v, [(E (NumType v), v)] -> NEMap (E (NumType v)) v +v, [(E (NumType v), v)] -> NEMap (E (NumType v)) v forall k v. Ord k => [(k, v)] -> NEMap k v mkNEMap [ v -> v -> (E (NumType v), v) forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge v -v v -u, v -> v -> (E (NumType v), v) +edge v +v v +u, v -> v -> (E (NumType v), v) forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge v -v v -w]) +edge v +v v +w]) , (v -w, [(E (NumType v), v)] -> NEMap (E (NumType v)) v +w, [(E (NumType v), v)] -> NEMap (E (NumType v)) v forall k v. Ord k => [(k, v)] -> NEMap k v mkNEMap [ v -> v -> (E (NumType v), v) forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge v -w v -u, v -> v -> (E (NumType v), v) +edge v +w v +u, v -> v -> (E (NumType v), v) forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge v -w v -v]) +edge v +w v +v]) ] - edge :: b -> b -> (E (NumType b), b) -edge b -u b -v = ((Vector 2 (NumType b) -> E (NumType b) + edge :: b -> b -> (E (NumType b), b) +edge b +u b +v = ((Vector 2 (NumType b) -> E (NumType b) forall r. Vector 2 r -> E r E (Vector 2 (NumType b) -> E (NumType b)) -> Vector 2 (NumType b) -> E (NumType b) forall a b. (a -> b) -> a -> b $ b -v b -> b -> Vector 2 (NumType b) +v b -> b -> Vector 2 (NumType b) forall point (d :: Natural) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. b -u), b -v) +u), b +v) -------------------------------------------------------------------------------- -- | Produce a plane graph on the bounded vertices. every vertex is represented by its -- point, it stores a list of its outgoing edges (to other bounded vertices), and some -- data. -toPlaneGraphMap :: (Plane_ plane r, Num r, Ord r) - => MinimizationDiagram r plane -> PlaneGraphMap (Point 2 r) (First r) (E r) +toPlaneGraphMap :: (Plane_ plane r, Num r, Ord r) + => MinimizationDiagram r plane -> PlaneGraphMap (Point 2 r) (First r) (E r) toPlaneGraphMap :: forall plane r. (Plane_ plane r, Num r, Ord r) => MinimizationDiagram r plane @@ -486,16 +486,16 @@ -- | Helper function to construct a plane graph -toGr :: (Plane_ plane r, Num r, Ord r) - => plane -> Region r (Point 2 r) - -> PlaneGraphMap (Point 2 r) (First r) (E r) +toGr :: (Plane_ plane r, Num r, Ord r) + => plane -> Region r (Point 2 r) + -> PlaneGraphMap (Point 2 r) (First r) (E r) toGr :: forall plane r. (Plane_ plane r, Num r, Ord r) => plane -> Region r (Point 2 r) -> PlaneGraphMap (Point 2 r) (First r) (E r) -toGr plane -h = Map (Point 2 r) (NEMap (E r) (Point 2 r), First r) +toGr plane +h = Map (Point 2 r) (NEMap (E r) (Point 2 r), First r) -> NEMap (Point 2 r) (NEMap (E r) (Point 2 r), First r) forall k a. Map k a -> NEMap k a NEMap.unsafeFromMap @@ -511,10 +511,10 @@ -> Map (Point 2 r) (NEMap (E r) (Point 2 r)) -> Map (Point 2 r) (NEMap (E r) (Point 2 r), First r) forall k a b. (k -> a -> b) -> Map k a -> Map k b -Map.mapWithKey (\Point 2 r -v NEMap (E r) (Point 2 r) -adjs -> (NEMap (E r) (Point 2 r) -adjs, r -> First r +Map.mapWithKey (\Point 2 r +v NEMap (E r) (Point 2 r) +adjs -> (NEMap (E r) (Point 2 r) +adjs, r -> First r forall a. a -> First a First (r -> First r) -> r -> First r forall a b. (a -> b) -> a -> b @@ -527,8 +527,8 @@ Point_ point (d - 1) r) => point -> hyperPlane -> r evalAt Point 2 r -v plane -h)) (Map (Point 2 r) (NEMap (E r) (Point 2 r)) +v plane +h)) (Map (Point 2 r) (NEMap (E r) (Point 2 r)) -> Map (Point 2 r) (NEMap (E r) (Point 2 r), First r)) -> (Region r (Point 2 r) -> Map (Point 2 r) (NEMap (E r) (Point 2 r))) @@ -536,17 +536,17 @@ -> Map (Point 2 r) (NEMap (E r) (Point 2 r), First r) forall b c a. (b -> c) -> (a -> b) -> a -> c . \case - Bounded Cyclic NonEmpty (Point 2 r) -vertices -> case Cyclic NonEmpty (Point 2 r) -> NonEmpty (Point 2 r) + Bounded Cyclic NonEmpty (Point 2 r) +vertices -> case Cyclic NonEmpty (Point 2 r) -> NonEmpty (Point 2 r) forall a. Cyclic NonEmpty a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty Cyclic NonEmpty (Point 2 r) -vertices of - verts :: NonEmpty (Point 2 r) -verts@(Point 2 r -_:|Point 2 r -v1:[Point 2 r] -vs) -> (NEMap (E r) (Point 2 r) +vertices of + verts :: NonEmpty (Point 2 r) +verts@(Point 2 r +_:|Point 2 r +v1:[Point 2 r] +vs) -> (NEMap (E r) (Point 2 r) -> NEMap (E r) (Point 2 r) -> NEMap (E r) (Point 2 r)) -> NonEmpty (Map (Point 2 r) (NEMap (E r) (Point 2 r))) -> Map (Point 2 r) (NEMap (E r) (Point 2 r)) @@ -576,29 +576,29 @@ (Dimension b ~ 2, Ord b, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> Map b (NEMap (E (NumType b)) b) -mkEdge NonEmpty (Point 2 r) -verts (Point 2 r -v1Point 2 r -> [Point 2 r] -> NonEmpty (Point 2 r) +mkEdge NonEmpty (Point 2 r) +verts (Point 2 r +v1Point 2 r -> [Point 2 r] -> NonEmpty (Point 2 r) forall a. a -> [a] -> NonEmpty a :|[Point 2 r] -vs) +vs) NonEmpty (Point 2 r) _ -> [Char] -> Map (Point 2 r) (NEMap (E r) (Point 2 r)) forall a. HasCallStack => [Char] -> a error [Char] "toGR: absurd, <2 vertices" Unbounded Vector 2 r -_ NonEmpty (Point 2 r) -vertices Vector 2 r +_ NonEmpty (Point 2 r) +vertices Vector 2 r _ -> case NonEmpty (Point 2 r) -vertices of +vertices of Point 2 r _ :| [] -> Map (Point 2 r) (NEMap (E r) (Point 2 r)) forall k a. Map k a Map.empty - Point 2 r -u :| [Point 2 r] -vs -> (NEMap (E r) (Point 2 r) + Point 2 r +u :| [Point 2 r] +vs -> (NEMap (E r) (Point 2 r) -> NEMap (E r) (Point 2 r) -> NEMap (E r) (Point 2 r)) -> [Map (Point 2 r) (NEMap (E r) (Point 2 r))] -> Map (Point 2 r) (NEMap (E r) (Point 2 r)) @@ -627,20 +627,20 @@ (Dimension b ~ 2, Ord b, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> Map b (NEMap (E (NumType b)) b) -mkEdge (Point 2 r -uPoint 2 r -> [Point 2 r] -> [Point 2 r] +mkEdge (Point 2 r +uPoint 2 r -> [Point 2 r] -> [Point 2 r] forall a. a -> [a] -> [a] :[Point 2 r] -vs) [Point 2 r] -vs +vs) [Point 2 r] +vs where - mkEdge :: b -> b -> Map b (NEMap (E (NumType b)) b) -mkEdge b -u b -v = [(b, NEMap (E (NumType b)) b)] -> Map b (NEMap (E (NumType b)) b) + mkEdge :: b -> b -> Map b (NEMap (E (NumType b)) b) +mkEdge b +u b +v = [(b, NEMap (E (NumType b)) b)] -> Map b (NEMap (E (NumType b)) b) forall k a. Ord k => [(k, a)] -> Map k a Map.fromList [ (b -u, ((E (NumType b) -> b -> NEMap (E (NumType b)) b) +u, ((E (NumType b) -> b -> NEMap (E (NumType b)) b) -> (E (NumType b), b) -> NEMap (E (NumType b)) b forall a b c. (a -> b -> c) -> (a, b) -> c uncurry E (NumType b) -> b -> NEMap (E (NumType b)) b @@ -652,11 +652,11 @@ forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge b -u b -v)) +edge b +u b +v)) , (b -v, ((E (NumType b) -> b -> NEMap (E (NumType b)) b) +v, ((E (NumType b) -> b -> NEMap (E (NumType b)) b) -> (E (NumType b), b) -> NEMap (E (NumType b)) b forall a b c. (a -> b -> c) -> (a, b) -> c uncurry E (NumType b) -> b -> NEMap (E (NumType b)) b @@ -668,31 +668,31 @@ forall {b}. (Dimension b ~ 2, Affine_ b 2 (NumType b), Num (NumType b)) => b -> b -> (E (NumType b), b) -edge b -v b -u)) +edge b +v b +u)) ] - edge :: b -> b -> (E (NumType b), b) -edge b -u b -v = ((Vector 2 (NumType b) -> E (NumType b) + edge :: b -> b -> (E (NumType b), b) +edge b +u b +v = ((Vector 2 (NumType b) -> E (NumType b) forall r. Vector 2 r -> E r E (Vector 2 (NumType b) -> E (NumType b)) -> Vector 2 (NumType b) -> E (NumType b) forall a b. (a -> b) -> a -> b $ b -v b -> b -> Vector 2 (NumType b) +v b -> b -> Vector 2 (NumType b) forall point (d :: Natural) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. b -u), b -v) +u), b +v) -------------------------------------------------------------------------------- -- | Helper to construct a NEMap from an explicit list of key value pairs -mkNEMap :: Ord k => [(k,v)] -> NEMap k v +mkNEMap :: Ord k => [(k,v)] -> NEMap k v mkNEMap :: forall k v. Ord k => [(k, v)] -> NEMap k v mkNEMap = NonEmpty (k, v) -> NEMap k v forall k a. Ord k => NonEmpty (k, a) -> NEMap k a diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.MonoidalMap.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.MonoidalMap.html index 4e0277cfe..6854cf763 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.MonoidalMap.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.MonoidalMap.html @@ -18,12 +18,12 @@ -- * Operations on Maps -- | Merge a bunch of maps -unionsWithKey :: (Foldable f, Ord k) => (k -> a-> a ->a) -> f (Map k a) -> Map k a +unionsWithKey :: (Foldable f, Ord k) => (k -> a-> a ->a) -> f (Map k a) -> Map k a unionsWithKey :: forall (f :: * -> *) k a. (Foldable f, Ord k) => (k -> a -> a -> a) -> f (Map k a) -> Map k a -unionsWithKey k -> a -> a -> a -f = (Map k a -> Map k a -> Map k a) +unionsWithKey k -> a -> a -> a +f = (Map k a -> Map k a -> Map k a) -> Map k a -> f (Map k a) -> Map k a forall b a. (b -> a -> b) -> b -> f a -> b forall (t :: * -> *) b a. @@ -34,42 +34,42 @@ Ord k => (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a Map.unionWithKey k -> a -> a -> a -f) Map k a +f) Map k a forall k a. Map k a Map.empty -- | Merge the maps. When they share a key, combine their values using a semigroup. -mapWithKeyMerge :: (Ord k', Semigroup v') - => (k -> v -> Map k' v') -> Map k v -> Map k' v' +mapWithKeyMerge :: (Ord k', Semigroup v') + => (k -> v -> Map k' v') -> Map k v -> Map k' v' mapWithKeyMerge :: forall k' v' k v. (Ord k', Semigroup v') => (k -> v -> Map k' v') -> Map k v -> Map k' v' -mapWithKeyMerge k -> v -> Map k' v' -f = MonoidalMap k' v' -> Map k' v' +mapWithKeyMerge k -> v -> Map k' v' +f = MonoidalMap k' v' -> Map k' v' forall k v. MonoidalMap k v -> Map k v getMap (MonoidalMap k' v' -> Map k' v') -> (Map k v -> MonoidalMap k' v') -> Map k v -> Map k' v' forall b c a. (b -> c) -> (a -> b) -> a -> c . (k -> v -> MonoidalMap k' v') -> Map k v -> MonoidalMap k' v' forall m k a. Monoid m => (k -> a -> m) -> Map k a -> m -Map.foldMapWithKey (\k -k v -v -> Map k' v' -> MonoidalMap k' v' +Map.foldMapWithKey (\k +k v +v -> Map k' v' -> MonoidalMap k' v' forall k v. Map k v -> MonoidalMap k v MonoidalMap (Map k' v' -> MonoidalMap k' v') -> Map k' v' -> MonoidalMap k' v' forall a b. (a -> b) -> a -> b $ k -> v -> Map k' v' -f k -k v -v) +f k +k v +v) -- | A Map in which we combine conflicting elements by using their semigroup operation -- rather than picking the left value (as is done in the default Data.Map) -newtype MonoidalMap k v = MonoidalMap { forall k v. MonoidalMap k v -> Map k v -getMap :: Map k v } - deriving stock (Int -> MonoidalMap k v -> ShowS +newtype MonoidalMap k v = MonoidalMap { forall k v. MonoidalMap k v -> Map k v +getMap :: Map k v } + deriving stock (Int -> MonoidalMap k v -> ShowS [MonoidalMap k v] -> ShowS MonoidalMap k v -> String (Int -> MonoidalMap k v -> ShowS) @@ -88,7 +88,7 @@ $cshowList :: forall k v. (Show k, Show v) => [MonoidalMap k v] -> ShowS showList :: [MonoidalMap k v] -> ShowS Show) - deriving newtype ((forall a b. (a -> b) -> MonoidalMap k a -> MonoidalMap k b) + deriving newtype ((forall a b. (a -> b) -> MonoidalMap k a -> MonoidalMap k b) -> (forall a b. a -> MonoidalMap k b -> MonoidalMap k a) -> Functor (MonoidalMap k) forall a b. a -> MonoidalMap k b -> MonoidalMap k a @@ -102,7 +102,7 @@ fmap :: forall a b. (a -> b) -> MonoidalMap k a -> MonoidalMap k b $c<$ :: forall k a b. a -> MonoidalMap k b -> MonoidalMap k a <$ :: forall a b. a -> MonoidalMap k b -> MonoidalMap k a -Functor,(forall m. Monoid m => MonoidalMap k m -> m) +Functor,(forall m. Monoid m => MonoidalMap k m -> m) -> (forall m a. Monoid m => (a -> m) -> MonoidalMap k a -> m) -> (forall m a. Monoid m => (a -> m) -> MonoidalMap k a -> m) -> (forall a b. (a -> b -> b) -> b -> MonoidalMap k a -> b) @@ -198,11 +198,11 @@ product :: forall a. Num a => MonoidalMap k a -> a Foldable) -instance (Ord k, Semigroup v) => Semigroup (MonoidalMap k v) where - (MonoidalMap Map k v -ma) <> :: MonoidalMap k v -> MonoidalMap k v -> MonoidalMap k v -<> (MonoidalMap Map k v -mb) = Map k v -> MonoidalMap k v +instance (Ord k, Semigroup v) => Semigroup (MonoidalMap k v) where + (MonoidalMap Map k v +ma) <> :: MonoidalMap k v -> MonoidalMap k v -> MonoidalMap k v +<> (MonoidalMap Map k v +mb) = Map k v -> MonoidalMap k v forall k v. Map k v -> MonoidalMap k v MonoidalMap (Map k v -> MonoidalMap k v) -> Map k v -> MonoidalMap k v forall a b. (a -> b) -> a -> b @@ -211,11 +211,11 @@ Map.unionWith v -> v -> v forall a. Semigroup a => a -> a -> a (<>) Map k v -ma Map k v -mb +ma Map k v +mb -instance (Ord k, Semigroup v) => Monoid (MonoidalMap k v) where - mempty :: MonoidalMap k v +instance (Ord k, Semigroup v) => Monoid (MonoidalMap k v) where + mempty :: MonoidalMap k v mempty = Map k v -> MonoidalMap k v forall k v. Map k v -> MonoidalMap k v MonoidalMap Map k v @@ -230,36 +230,36 @@ -- | Merge the maps. When they share a key, combine their values using a semigroup. -mapWithKeyMerge1 :: (Ord k', Semigroup v') - => (k -> v -> NEMap k' v') -> NEMap k v -> NEMap k' v' +mapWithKeyMerge1 :: (Ord k', Semigroup v') + => (k -> v -> NEMap k' v') -> NEMap k v -> NEMap k' v' mapWithKeyMerge1 :: forall k' v' k v. (Ord k', Semigroup v') => (k -> v -> NEMap k' v') -> NEMap k v -> NEMap k' v' -mapWithKeyMerge1 k -> v -> NEMap k' v' -f = MonoidalNEMap k' v' -> NEMap k' v' +mapWithKeyMerge1 k -> v -> NEMap k' v' +f = MonoidalNEMap k' v' -> NEMap k' v' forall k v. MonoidalNEMap k v -> NEMap k v getNEMap (MonoidalNEMap k' v' -> NEMap k' v') -> (NEMap k v -> MonoidalNEMap k' v') -> NEMap k v -> NEMap k' v' forall b c a. (b -> c) -> (a -> b) -> a -> c . (k -> v -> MonoidalNEMap k' v') -> NEMap k v -> MonoidalNEMap k' v' forall m k a. Semigroup m => (k -> a -> m) -> NEMap k a -> m -NEMap.foldMapWithKey (\k -k v -v -> NEMap k' v' -> MonoidalNEMap k' v' +NEMap.foldMapWithKey (\k +k v +v -> NEMap k' v' -> MonoidalNEMap k' v' forall k v. NEMap k v -> MonoidalNEMap k v MonoidalNEMap (NEMap k' v' -> MonoidalNEMap k' v') -> NEMap k' v' -> MonoidalNEMap k' v' forall a b. (a -> b) -> a -> b $ k -> v -> NEMap k' v' -f k -k v -v) +f k +k v +v) -- | A NonEmpty Map in which we combine conflicting elements by using their semigroup -- operation rather than picking the left value (as is done in the default Data.Map) -newtype MonoidalNEMap k v = MonoidalNEMap { forall k v. MonoidalNEMap k v -> NEMap k v -getNEMap :: NEMap k v } - deriving stock (Int -> MonoidalNEMap k v -> ShowS +newtype MonoidalNEMap k v = MonoidalNEMap { forall k v. MonoidalNEMap k v -> NEMap k v +getNEMap :: NEMap k v } + deriving stock (Int -> MonoidalNEMap k v -> ShowS [MonoidalNEMap k v] -> ShowS MonoidalNEMap k v -> String (Int -> MonoidalNEMap k v -> ShowS) @@ -278,7 +278,7 @@ $cshowList :: forall k v. (Show k, Show v) => [MonoidalNEMap k v] -> ShowS showList :: [MonoidalNEMap k v] -> ShowS Show) - deriving newtype ((forall a b. (a -> b) -> MonoidalNEMap k a -> MonoidalNEMap k b) + deriving newtype ((forall a b. (a -> b) -> MonoidalNEMap k a -> MonoidalNEMap k b) -> (forall a b. a -> MonoidalNEMap k b -> MonoidalNEMap k a) -> Functor (MonoidalNEMap k) forall a b. a -> MonoidalNEMap k b -> MonoidalNEMap k a @@ -292,7 +292,7 @@ fmap :: forall a b. (a -> b) -> MonoidalNEMap k a -> MonoidalNEMap k b $c<$ :: forall k a b. a -> MonoidalNEMap k b -> MonoidalNEMap k a <$ :: forall a b. a -> MonoidalNEMap k b -> MonoidalNEMap k a -Functor,(forall m. Monoid m => MonoidalNEMap k m -> m) +Functor,(forall m. Monoid m => MonoidalNEMap k m -> m) -> (forall m a. Monoid m => (a -> m) -> MonoidalNEMap k a -> m) -> (forall m a. Monoid m => (a -> m) -> MonoidalNEMap k a -> m) -> (forall a b. (a -> b -> b) -> b -> MonoidalNEMap k a -> b) @@ -385,7 +385,7 @@ sum :: forall a. Num a => MonoidalNEMap k a -> a $cproduct :: forall k a. Num a => MonoidalNEMap k a -> a product :: forall a. Num a => MonoidalNEMap k a -> a -Foldable,Foldable (MonoidalNEMap k) +Foldable,Foldable (MonoidalNEMap k) Foldable (MonoidalNEMap k) => (forall m. Semigroup m => MonoidalNEMap k m -> m) -> (forall m a. Semigroup m => (a -> m) -> MonoidalNEMap k a -> m) @@ -460,11 +460,11 @@ foldrMap1' :: forall a b. (a -> b) -> (a -> b -> b) -> MonoidalNEMap k a -> b Foldable1) -instance (Ord k, Semigroup v) => Semigroup (MonoidalNEMap k v) where - (MonoidalNEMap NEMap k v -ma) <> :: MonoidalNEMap k v -> MonoidalNEMap k v -> MonoidalNEMap k v -<> (MonoidalNEMap NEMap k v -mb) = NEMap k v -> MonoidalNEMap k v +instance (Ord k, Semigroup v) => Semigroup (MonoidalNEMap k v) where + (MonoidalNEMap NEMap k v +ma) <> :: MonoidalNEMap k v -> MonoidalNEMap k v -> MonoidalNEMap k v +<> (MonoidalNEMap NEMap k v +mb) = NEMap k v -> MonoidalNEMap k v forall k v. NEMap k v -> MonoidalNEMap k v MonoidalNEMap (NEMap k v -> MonoidalNEMap k v) -> NEMap k v -> MonoidalNEMap k v forall a b. (a -> b) -> a -> b @@ -475,6 +475,6 @@ NEMap.unionWith v -> v -> v forall a. Semigroup a => a -> a -> a (<>) NEMap k v -ma NEMap k v -mb +ma NEMap k v +mb \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Primitives.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Primitives.html index 9c2a8ba9d..bc2c8e57b 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Primitives.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Primitives.html @@ -28,23 +28,23 @@ -- * Geometric Primitives -- | Given two planes, computes the line in which they intersect. -intersectionLine :: (Plane_ plane r, Fractional r, Eq r) - => plane -> plane -> Maybe (VerticalOrLineEQ r) +intersectionLine :: (Plane_ plane r, Fractional r, Eq r) + => plane -> plane -> Maybe (VerticalOrLineEQ r) intersectionLine :: forall plane r. (Plane_ plane r, Fractional r, Eq r) => plane -> plane -> Maybe (VerticalOrLineEQ r) -intersectionLine (Plane_ r -a1 r -b1 r -c1) (Plane_ r -a2 r -b2 r -c2) +intersectionLine (Plane_ r +a1 r +b1 r +c1) (Plane_ r +a2 r +b2 r +c2) | r -b1 r -> r -> Bool +b1 r -> r -> Bool forall a. Eq a => a -> a -> Bool /= r -b2 = VerticalOrLineEQ r -> Maybe (VerticalOrLineEQ r) +b2 = VerticalOrLineEQ r -> Maybe (VerticalOrLineEQ r) forall a. a -> Maybe a Just (VerticalOrLineEQ r -> Maybe (VerticalOrLineEQ r)) -> VerticalOrLineEQ r -> Maybe (VerticalOrLineEQ r) @@ -56,26 +56,26 @@ $ r -> r -> LineEQ r forall r. r -> r -> LineEQ r LineEQ ((r -a2 r -> r -> r +a2 r -> r -> r forall a. Num a => a -> a -> a - r -a1) r -> r -> r +a1) r -> r -> r forall a. Fractional a => a -> a -> a / r -diffB) ((r -c2 r -> r -> r +diffB) ((r +c2 r -> r -> r forall a. Num a => a -> a -> a - r -c1) r -> r -> r +c1) r -> r -> r forall a. Fractional a => a -> a -> a / r -diffB) +diffB) -- the two planes intersect in some normal line | r -a1 r -> r -> Bool +a1 r -> r -> Bool forall a. Eq a => a -> a -> Bool /= r -a2 = VerticalOrLineEQ r -> Maybe (VerticalOrLineEQ r) +a2 = VerticalOrLineEQ r -> Maybe (VerticalOrLineEQ r) forall a. a -> Maybe a Just (VerticalOrLineEQ r -> Maybe (VerticalOrLineEQ r)) -> VerticalOrLineEQ r -> Maybe (VerticalOrLineEQ r) @@ -83,16 +83,16 @@ $ r -> VerticalOrLineEQ r forall r. r -> VerticalOrLineEQ r VerticalLineThrough ((r -c2 r -> r -> r +c2 r -> r -> r forall a. Num a => a -> a -> a -r -c1) r -> r -> r +c1) r -> r -> r forall a. Fractional a => a -> a -> a / (r -a1 r -> r -> r +a1 r -> r -> r forall a. Num a => a -> a -> a - r -a2)) +a2)) -- the planes intersect in a vertical line | Bool otherwise = Maybe (VerticalOrLineEQ r) @@ -100,12 +100,12 @@ Nothing -- the planes don't intersect at all where - diffB :: r -diffB = r -b1 r -> r -> r + diffB :: r +diffB = r +b1 r -> r -> r forall a. Num a => a -> a -> a - r -b2 +b2 -- -- | Computes the directed line in which the two planes h and h' intersect. The returned -- -- line will have h to its left and h' to its right. @@ -125,29 +125,29 @@ -- | Computes the direction vector v of the directed line l in which the two planes h and h' -- intersect, and so that h will be to the left of the directed line -intersectionVector :: ( Plane_ plane r, Ord r, Fractional r) - => plane -> plane -> Maybe (Vector 2 r) +intersectionVector :: ( Plane_ plane r, Ord r, Fractional r) + => plane -> plane -> Maybe (Vector 2 r) intersectionVector :: forall plane r. (Plane_ plane r, Ord r, Fractional r) => plane -> plane -> Maybe (Vector 2 r) -intersectionVector plane -h plane -h' = plane -> plane -> Maybe (VerticalOrLineEQ r) +intersectionVector plane +h plane +h' = plane -> plane -> Maybe (VerticalOrLineEQ r) forall plane r. (Plane_ plane r, Fractional r, Eq r) => plane -> plane -> Maybe (VerticalOrLineEQ r) intersectionLine plane -h plane -h' Maybe (VerticalOrLineEQ r) +h plane +h' Maybe (VerticalOrLineEQ r) -> (VerticalOrLineEQ r -> Vector 2 r) -> Maybe (Vector 2 r) forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b <&> \case - VerticalLineThrough r -x -> Point 2 r -> Vector 2 r -> Vector 2 r -orient (r -> r -> Point 2 r + VerticalLineThrough r +x -> Point 2 r -> Vector 2 r -> Vector 2 r +orient (r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 (r -xr -> r -> r +xr -> r -> r forall a. Num a => a -> a -> a -r 1) r @@ -156,27 +156,27 @@ Vector2 r 0 r 1) - NonVertical (LineEQ r -a r -b) -> Point 2 r -> Vector 2 r -> Vector 2 r -orient (r -> r -> Point 2 r + NonVertical (LineEQ r +a r +b) -> Point 2 r -> Vector 2 r -> Vector 2 r +orient (r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r 0 (r -br -> r -> r +br -> r -> r forall a. Num a => a -> a -> a +r 1)) (r -> r -> Vector 2 r forall r. r -> r -> Vector 2 r Vector2 r 1 r -a) +a) where - orient :: Point 2 r -> Vector 2 r -> Vector 2 r -orient Point 2 r -q Vector 2 r -v = let f :: plane -> r -f = Point 2 r -> plane -> r + orient :: Point 2 r -> Vector 2 r -> Vector 2 r +orient Point 2 r +q Vector 2 r +v = let f :: plane -> r +f = Point 2 r -> plane -> r forall point. (Num r, 1 <= 3, Point_ point (3 - 1) r) => point -> plane -> r @@ -185,125 +185,125 @@ Point_ point (d - 1) r) => point -> hyperPlane -> r evalAt Point 2 r -q in if plane -> r -f plane -h r -> r -> Bool +q in if plane -> r +f plane +h r -> r -> Bool forall a. Ord a => a -> a -> Bool <= plane -> r -f plane -h' then Vector 2 r -v else Vector 2 r -> Vector 2 r +f plane +h' then Vector 2 r +v else Vector 2 r -> Vector 2 r forall r vector (d :: Natural). (Num r, Vector_ vector d r) => vector -> vector negated Vector 2 r -v +v -- | Computes there the three planes intersect -intersectionPoint :: ( Plane_ plane r, Ord r, Fractional r) - => Three plane -> Maybe (Point 3 r) +intersectionPoint :: ( Plane_ plane r, Ord r, Fractional r) + => Three plane -> Maybe (Point 3 r) intersectionPoint :: forall plane r. (Plane_ plane r, Ord r, Fractional r) => Three plane -> Maybe (Point 3 r) -intersectionPoint (Three h1 :: plane -h1@(Plane_ r -a1 r -b1 r -c1) plane -h2 plane -h3) = - do l12 <- plane -> plane -> Maybe (VerticalOrLineEQ r) +intersectionPoint (Three h1 :: plane +h1@(Plane_ r +a1 r +b1 r +c1) plane +h2 plane +h3) = + do l12 <- plane -> plane -> Maybe (VerticalOrLineEQ r) forall plane r. (Plane_ plane r, Fractional r, Eq r) => plane -> plane -> Maybe (VerticalOrLineEQ r) intersectionLine plane -h1 plane -h2 - l13 <- intersectionLine h1 h3 - case (l12,l13) of - (VerticalLineThrough r -_x12, VerticalLineThrough r -_x13) -> Maybe (Point 3 r) +h1 plane +h2 + l13 <- intersectionLine h1 h3 + case (l12,l13) of + (VerticalLineThrough r +_x12, VerticalLineThrough r +_x13) -> Maybe (Point 3 r) forall a. Maybe a Nothing -- if the xes are the same they would be the same plane even - (VerticalLineThrough r -x, NonVertical LineEQ r -l) -> r -> LineEQ r -> Maybe (Point 3 r) -vertNonVertIntersect r -x LineEQ r -l - (NonVertical LineEQ r -l, VerticalLineThrough r -x) -> r -> LineEQ r -> Maybe (Point 3 r) -vertNonVertIntersect r -x LineEQ r -l - (NonVertical LineEQ r -l, NonVertical LineEQ r -m) -> LineEQ r -l LineEQ r -> LineEQ r -> Intersection (LineEQ r) (LineEQ r) + (VerticalLineThrough r +x, NonVertical LineEQ r +l) -> r -> LineEQ r -> Maybe (Point 3 r) +vertNonVertIntersect r +x LineEQ r +l + (NonVertical LineEQ r +l, VerticalLineThrough r +x) -> r -> LineEQ r -> Maybe (Point 3 r) +vertNonVertIntersect r +x LineEQ r +l + (NonVertical LineEQ r +l, NonVertical LineEQ r +m) -> LineEQ r +l LineEQ r -> LineEQ r -> Intersection (LineEQ r) (LineEQ r) forall g h. IsIntersectableWith g h => g -> h -> Intersection g h `intersect` LineEQ r -m Maybe (LineLineIntersectionG r (LineEQ r)) +m Maybe (LineLineIntersectionG r (LineEQ r)) -> (LineLineIntersectionG r (LineEQ r) -> Maybe (Point 3 r)) -> Maybe (Point 3 r) forall a b. Maybe a -> (a -> Maybe b) -> Maybe b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \case - Line_x_Line_Point (Point2 r -x r -y) -> Point 3 r -> Maybe (Point 3 r) + Line_x_Line_Point (Point2 r +x r +y) -> Point 3 r -> Maybe (Point 3 r) forall a. a -> Maybe a Just (Point 3 r -> Maybe (Point 3 r)) -> Point 3 r -> Maybe (Point 3 r) forall a b. (a -> b) -> a -> b $ r -> r -> r -> Point 3 r forall r. r -> r -> r -> Point 3 r Point3 r -x r -y (r -a1 r -> r -> r +x r +y (r +a1 r -> r -> r forall a. Num a => a -> a -> a * r -x r -> r -> r +x r -> r -> r forall a. Num a => a -> a -> a + r -b1r -> r -> r +b1r -> r -> r forall a. Num a => a -> a -> a * r -y r -> r -> r +y r -> r -> r forall a. Num a => a -> a -> a + r -c1) +c1) Line_x_Line_Line LineEQ r _ -> Maybe (Point 3 r) forall a. Maybe a Nothing where - vertNonVertIntersect :: r -> LineEQ r -> Maybe (Point 3 r) -vertNonVertIntersect r -x LineEQ r -l = let y :: r -y = r -> LineEQ r -> r + vertNonVertIntersect :: r -> LineEQ r -> Maybe (Point 3 r) +vertNonVertIntersect r +x LineEQ r +l = let y :: r +y = r -> LineEQ r -> r forall r. Num r => r -> LineEQ r -> r evalAt' r -x LineEQ r -l - z :: r -z = r -a1 r -> r -> r +x LineEQ r +l + z :: r +z = r +a1 r -> r -> r forall a. Num a => a -> a -> a * r -x r -> r -> r +x r -> r -> r forall a. Num a => a -> a -> a + r -b1r -> r -> r +b1r -> r -> r forall a. Num a => a -> a -> a * r -y r -> r -> r +y r -> r -> r forall a. Num a => a -> a -> a + r -c1 +c1 in Point 3 r -> Maybe (Point 3 r) forall a. a -> Maybe a Just (Point 3 r -> Maybe (Point 3 r)) -> Point 3 r -> Maybe (Point 3 r) @@ -311,7 +311,7 @@ $ r -> r -> r -> Point 3 r forall r. r -> r -> r -> Point 3 r Point3 r -x r -y r -z +x r +y r +z \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Regions.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Regions.html index 991a77819..0e0f6eb67 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Regions.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Regions.html @@ -48,58 +48,58 @@ ---------------------------------------- -- | returns the CCW predecessor, and CCW successor of the given plane. -findNeighbours :: Eq plane => plane -> Definers plane -> Maybe (plane,plane) +findNeighbours :: Eq plane => plane -> Definers plane -> Maybe (plane,plane) findNeighbours :: forall plane. Eq plane => plane -> Definers plane -> Maybe (plane, plane) -findNeighbours plane -h (Definers NonEmpty plane -defs) = Int -> (plane, plane) -withNeighs (Int -> (plane, plane)) -> Maybe Int -> Maybe (plane, plane) +findNeighbours plane +h (Definers NonEmpty plane +defs) = Int -> (plane, plane) +withNeighs (Int -> (plane, plane)) -> Maybe Int -> Maybe (plane, plane) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> plane -> NonEmpty plane -> Maybe Int forall {a} {t :: * -> *}. (Eq a, Foldable t) => a -> t a -> Maybe Int -elemIndex plane -h NonEmpty plane -defs +elemIndex plane +h NonEmpty plane +defs where - withNeighs :: Int -> (plane, plane) -withNeighs Int -i = (NonEmpty plane -defs NonEmpty plane -> Int -> plane + withNeighs :: Int -> (plane, plane) +withNeighs Int +i = (NonEmpty plane +defs NonEmpty plane -> Int -> plane forall a. HasCallStack => NonEmpty a -> Int -> a NonEmpty.!! ((Int -iInt -> Int -> Int +iInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) Int -> Int -> Int forall a. Integral a => a -> a -> a `mod` Int -k), NonEmpty plane -defs NonEmpty plane -> Int -> plane +k), NonEmpty plane +defs NonEmpty plane -> Int -> plane forall a. HasCallStack => NonEmpty a -> Int -> a NonEmpty.!! ((Int -iInt -> Int -> Int +iInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) Int -> Int -> Int forall a. Integral a => a -> a -> a `mod` Int -k)) - k :: Int -k = NonEmpty plane -> Int +k)) + k :: Int +k = NonEmpty plane -> Int forall a. NonEmpty a -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length NonEmpty plane -defs - elemIndex :: a -> t a -> Maybe Int -elemIndex a -q = a -> [a] -> Maybe Int +defs + elemIndex :: a -> t a -> Maybe Int +elemIndex a +q = a -> [a] -> Maybe Int forall a. Eq a => a -> [a] -> Maybe Int List.elemIndex a -q ([a] -> Maybe Int) -> (t a -> [a]) -> t a -> Maybe Int +q ([a] -> Maybe Int) -> (t a -> [a]) -> t a -> Maybe Int forall b c a. (b -> c) -> (a -> b) -> a -> c . t a -> [a] forall a. t a -> [a] @@ -114,16 +114,16 @@ -- | Compute the plane that is cheapest vertically above the vertex. -- -- pre: all planes contain the given point -extractH0 :: (Plane_ plane r, Eq plane, Ord r, Fractional r) - => Point 3 r -> NonEmpty plane -> (plane, [plane]) +extractH0 :: (Plane_ plane r, Eq plane, Ord r, Fractional r) + => Point 3 r -> NonEmpty plane -> (plane, [plane]) extractH0 :: forall plane r. (Plane_ plane r, Eq plane, Ord r, Fractional r) => Point 3 r -> NonEmpty plane -> (plane, [plane]) -extractH0 (Point3 r -x r -y r -_) NonEmpty plane -hs = case (plane -> plane -> Ordering) +extractH0 (Point3 r +x r +y r +_) NonEmpty plane +hs = case (plane -> plane -> Ordering) -> NonEmpty plane -> NonEmpty plane :+ [plane] forall a. (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a :+ [a] extractMinimaBy ((plane -> r) -> plane -> plane -> Ordering @@ -142,43 +142,43 @@ evalAt (r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -x (r -yr -> r -> r +x (r +yr -> r -> r forall a. Num a => a -> a -> a +r 1))) NonEmpty plane -hs of - (plane -h0 :| [plane] -eqs) :+ [plane] -rest -> (plane -h0, ((plane -> Bool) -> [plane] -> [plane] +hs of + (plane +h0 :| [plane] +eqs) :+ [plane] +rest -> (plane +h0, ((plane -> Bool) -> [plane] -> [plane] forall a. (a -> Bool) -> [a] -> [a] filter (plane -> plane -> Bool forall a. Eq a => a -> a -> Bool /= plane -h0) [plane] -eqs) [plane] -> [plane] -> [plane] +h0) [plane] +eqs) [plane] -> [plane] -> [plane] forall a. Semigroup a => a -> a -> a <> [plane] -rest) +rest) -- | Given three planes h0, h and h' that all intersect in a common vertex v, -- and so that h0 is the lowest plane vertically above v, order the -- other two planes in CCW order. -cmpPlanesAround :: (Plane_ plane r, Eq plane, Ord r, Fractional r) - => plane -> plane -> plane -> Ordering +cmpPlanesAround :: (Plane_ plane r, Eq plane, Ord r, Fractional r) + => plane -> plane -> plane -> Ordering cmpPlanesAround :: forall plane r. (Plane_ plane r, Eq plane, Ord r, Fractional r) => plane -> plane -> plane -> Ordering -cmpPlanesAround plane -h0 plane -h plane -h' | plane -h plane -> plane -> Bool +cmpPlanesAround plane +h0 plane +h plane +h' | plane +h plane -> plane -> Bool forall a. Eq a => a -> a -> Bool == plane -h' = Ordering +h' = Ordering EQ | Bool otherwise = case (Point 3 r, Definers plane) -> Definers plane @@ -193,17 +193,17 @@ definers (plane -> plane -> plane -> Three plane forall a. a -> a -> a -> Three a Three plane -h0 plane -h plane -h') of +h0 plane +h plane +h') of Just (Definers (plane -_ :| [plane -hPrev, plane -hSucc])) | plane -h plane -> plane -> Bool +_ :| [plane +hPrev, plane +hSucc])) | plane +h plane -> plane -> Bool forall a. Eq a => a -> a -> Bool == plane -hPrev -> Ordering +hPrev -> Ordering LT | Bool otherwise -> Ordering @@ -218,36 +218,36 @@ -- | Merge two lists of definers. -- -- \(O(n\log n)\), where \(n\) is the total number of planes involved. -mergeDefiners :: (Plane_ plane r, Eq plane, Ord r, Fractional r - , Show plane, Show r +mergeDefiners :: (Plane_ plane r, Eq plane, Ord r, Fractional r + , Show plane, Show r ) - => Point 3 r - -> Definers plane -> Definers plane - -> Definers plane + => Point 3 r + -> Definers plane -> Definers plane + -> Definers plane mergeDefiners :: forall plane r. (Plane_ plane r, Eq plane, Ord r, Fractional r, Show plane, Show r) => Point 3 r -> Definers plane -> Definers plane -> Definers plane -mergeDefiners Point 3 r -v Definers plane -defs0 Definers plane -defs1 = case Point 3 r -> NonEmpty plane -> (plane, [plane]) +mergeDefiners Point 3 r +v Definers plane +defs0 Definers plane +defs1 = case Point 3 r -> NonEmpty plane -> (plane, [plane]) forall plane r. (Plane_ plane r, Eq plane, Ord r, Fractional r) => Point 3 r -> NonEmpty plane -> (plane, [plane]) extractH0 Point 3 r -v (Definers plane -> NonEmpty plane +v (Definers plane -> NonEmpty plane forall a b. Coercible a b => a -> b coerce Definers plane -defs0 NonEmpty plane -> NonEmpty plane -> NonEmpty plane +defs0 NonEmpty plane -> NonEmpty plane -> NonEmpty plane forall a. Semigroup a => a -> a -> a <> Definers plane -> NonEmpty plane forall a b. Coercible a b => a -> b coerce Definers plane -defs1) of - (plane -h0, [plane] -planes) -> NonEmpty plane -> Definers plane +defs1) of + (plane +h0, [plane] +planes) -> NonEmpty plane -> Definers plane forall plane. NonEmpty plane -> Definers plane Definers (NonEmpty plane -> Definers plane) -> (NonEmpty plane -> NonEmpty plane) @@ -255,11 +255,11 @@ -> Definers plane forall b c a. (b -> c) -> (a -> b) -> a -> c . NonEmpty plane -> NonEmpty plane -dropDuplicates (NonEmpty plane -> Definers plane) +dropDuplicates (NonEmpty plane -> Definers plane) -> NonEmpty plane -> Definers plane forall a b. (a -> b) -> a -> b $ plane -h0 plane -> [plane] -> NonEmpty plane +h0 plane -> [plane] -> NonEmpty plane forall a. a -> [a] -> NonEmpty a :| (plane -> plane -> Ordering) -> [plane] -> [plane] forall a. (a -> a -> Ordering) -> [a] -> [a] @@ -268,11 +268,11 @@ (Plane_ plane r, Eq plane, Ord r, Fractional r) => plane -> plane -> plane -> Ordering cmpPlanesAround plane -h0) [plane] -planes +h0) [plane] +planes where - dropDuplicates :: NonEmpty plane -> NonEmpty plane -dropDuplicates = (NonEmpty plane -> plane) + dropDuplicates :: NonEmpty plane -> NonEmpty plane +dropDuplicates = (NonEmpty plane -> plane) -> NonEmpty (NonEmpty plane) -> NonEmpty plane forall a b. (a -> b) -> NonEmpty a -> NonEmpty b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -315,8 +315,8 @@ -- | Given the vertices of the lower envelope; compute the minimization diagram. -- -- \(O(h\log h)\) assuming that the input is degenerate. -fromVertexForm :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Show r, Show plane) - => VertexForm r plane -> MinimizationDiagram r plane +fromVertexForm :: (Plane_ plane r, Ord plane, Ord r, Fractional r, Show r, Show plane) + => VertexForm r plane -> MinimizationDiagram r plane fromVertexForm :: forall plane r. (Plane_ plane r, Ord plane, Ord r, Fractional r, Show r, Show plane) => @@ -352,9 +352,9 @@ forall k' v' k v. (Ord k', Semigroup v') => (k -> v -> NEMap k' v') -> NEMap k v -> NEMap k' v' -mapWithKeyMerge1 (\Point 3 r -v Definers plane -defs -> +mapWithKeyMerge1 (\Point 3 r +v Definers plane +defs -> NonEmpty (plane, Set (Point 3 r, Definers plane)) -> NEMap plane (Set (Point 3 r, Definers plane)) forall k a. Ord k => NonEmpty (k, a) -> NEMap k a @@ -373,8 +373,8 @@ fmap (,(Point 3 r, Definers plane) -> Set (Point 3 r, Definers plane) forall a. a -> Set a Set.singleton (Point 3 r -v,Definers plane -defs)) (NonEmpty plane +v,Definers plane +defs)) (NonEmpty plane -> NonEmpty (plane, Set (Point 3 r, Definers plane))) -> (Definers plane -> NonEmpty plane) -> Definers plane @@ -387,7 +387,7 @@ -> Definers plane -> NEMap plane (Set (Point 3 r, Definers plane)) forall a b. (a -> b) -> a -> b $ Definers plane -defs) +defs) (NEMap (Point 3 r) (Definers plane) -> NEMap plane (Set (Point 3 r, Definers plane))) -> (VertexForm r plane -> NEMap (Point 3 r) (Definers plane)) @@ -396,10 +396,10 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . VertexForm r plane -> NEMap (Point 3 r) (Definers plane) forall {k} {a}. Map k a -> NEMap k a -f +f where - f :: Map k a -> NEMap k a -f = Map k a -> NEMap k a + f :: Map k a -> NEMap k a +f = Map k a -> NEMap k a forall {k} {a}. Map k a -> NEMap k a NEMap.unsafeFromMap -- FIXME @@ -414,15 +414,15 @@ -- | Given a plane h, and the set of vertices incident to h, compute the corresponding -- region in the minimization diagram. -sortAroundBoundary :: (Plane_ plane r, Ord r, Fractional r, Ord plane) - => plane -> Set (Point 3 r, Definers plane) - -> Region r (Point 2 r) +sortAroundBoundary :: (Plane_ plane r, Ord r, Fractional r, Ord plane) + => plane -> Set (Point 3 r, Definers plane) + -> Region r (Point 2 r) sortAroundBoundary :: forall plane r. (Plane_ plane r, Ord r, Fractional r, Ord plane) => plane -> Set (Point 3 r, Definers plane) -> Region r (Point 2 r) -sortAroundBoundary plane -h Set (Point 3 r, Definers plane) -vertices = case [(Point 2 r, Definers plane)] -> [(Point 2 r, Definers plane)] +sortAroundBoundary plane +h Set (Point 3 r, Definers plane) +vertices = case [(Point 2 r, Definers plane)] -> [(Point 2 r, Definers plane)] forall r a. (Ord r, Fractional r) => [(Point 2 r, a)] -> [(Point 2 r, a)] @@ -449,16 +449,16 @@ -> Set (Point 3 r, Definers plane) -> [(Point 2 r, Definers plane)] forall a b. (a -> b) -> a -> b $ Set (Point 3 r, Definers plane) -vertices of +vertices of [] -> [Char] -> Region r (Point 2 r) forall a. HasCallStack => [Char] -> a error [Char] "absurd: every plane has a non-empty set of incident vertices" - [(Point 2 r, Definers plane) -v] -> let (Vector 2 r -u,Point 2 r -p,Vector 2 r -w) = plane + [(Point 2 r, Definers plane) +v] -> let (Vector 2 r +u,Point 2 r +p,Vector 2 r +w) = plane -> (Point 2 r, Definers plane) -> (Vector 2 r, Point 2 r, Vector 2 r) forall plane r. @@ -467,34 +467,34 @@ -> (Point 2 r, Definers plane) -> (Vector 2 r, Point 2 r, Vector 2 r) singleVertex plane -h (Point 2 r, Definers plane) -v in Vector 2 r +h (Point 2 r, Definers plane) +v in Vector 2 r -> NonEmpty (Point 2 r) -> Vector 2 r -> Region r (Point 2 r) forall r point. Vector 2 r -> NonEmpty point -> Vector 2 r -> Region r point Unbounded Vector 2 r -u (Point 2 r -> NonEmpty (Point 2 r) +u (Point 2 r -> NonEmpty (Point 2 r) forall a. a -> NonEmpty a NonEmpty.singleton Point 2 r -p) Vector 2 r -w - [(Point 2 r, Definers plane)] -vertices' -> let edges :: [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -edges = [(Point 2 r, Definers plane)] +p) Vector 2 r +w + [(Point 2 r, Definers plane)] +vertices' -> let edges :: [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] +edges = [(Point 2 r, Definers plane)] -> [(Point 2 r, Definers plane)] -> [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] forall a b. [a] -> [b] -> [(a, b)] zip [(Point 2 r, Definers plane)] -vertices' (Int +vertices' (Int -> [(Point 2 r, Definers plane)] -> [(Point 2 r, Definers plane)] forall a. Int -> [a] -> [a] drop Int 1 [(Point 2 r, Definers plane)] -vertices' [(Point 2 r, Definers plane)] +vertices' [(Point 2 r, Definers plane)] -> [(Point 2 r, Definers plane)] -> [(Point 2 r, Definers plane)] forall a. Semigroup a => a -> a -> a <> [(Point 2 r, Definers plane)] -vertices') +vertices') in case (((Point 2 r, Definers plane), (Point 2 r, Definers plane)) -> Bool) -> [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] @@ -510,14 +510,14 @@ -> ((Point 2 r, Definers plane), (Point 2 r, Definers plane)) -> Bool isInvalid plane -h) [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -edges of - ([((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -vs, ((Point 2 r, Definers plane) -u,(Point 2 r, Definers plane) -v) : [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -ws) -> let chain :: NonEmpty (Point 2 r) -chain = [Point 2 r] -> NonEmpty (Point 2 r) +h) [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] +edges of + ([((Point 2 r, Definers plane), (Point 2 r, Definers plane))] +vs, ((Point 2 r, Definers plane) +u,(Point 2 r, Definers plane) +v) : [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] +ws) -> let chain :: NonEmpty (Point 2 r) +chain = [Point 2 r] -> NonEmpty (Point 2 r) forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList ([Point 2 r] -> NonEmpty (Point 2 r)) -> ([((Point 2 r, Definers plane), (Point 2 r, Definers plane))] @@ -548,18 +548,18 @@ -> NonEmpty (Point 2 r) forall a b. (a -> b) -> a -> b $ [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -ws [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] +ws [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -> [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -> [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] forall a. Semigroup a => a -> a -> a <> [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -vs [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] +vs [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -> [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -> [((Point 2 r, Definers plane), (Point 2 r, Definers plane))] forall a. Semigroup a => a -> a -> a <> [((Point 2 r, Definers plane) -u,(Point 2 r, Definers plane) -v)] +u,(Point 2 r, Definers plane) +v)] in plane -> NonEmpty (Point 2 r) -> (Point 2 r, Definers plane) @@ -573,13 +573,13 @@ -> (Point 2 r, Definers plane) -> Region r (Point 2 r) unboundedRegion plane -h NonEmpty (Point 2 r) -chain (Point 2 r, Definers plane) -v (Point 2 r, Definers plane) -u +h NonEmpty (Point 2 r) +chain (Point 2 r, Definers plane) +v (Point 2 r, Definers plane) +u ([((Point 2 r, Definers plane), (Point 2 r, Definers plane))] -_, []) -> let vertices'' :: Cyclic NonEmpty (Point 2 r) -vertices'' = NonEmpty (Point 2 r) -> Cyclic NonEmpty (Point 2 r) +_, []) -> let vertices'' :: Cyclic NonEmpty (Point 2 r) +vertices'' = NonEmpty (Point 2 r) -> Cyclic NonEmpty (Point 2 r) forall a. NonEmpty a -> Cyclic NonEmpty a forall (f :: * -> *) a. HasFromFoldable1 f => NonEmpty a -> f a fromNonEmpty @@ -600,11 +600,11 @@ map (Point 2 r, Definers plane) -> Point 2 r forall a b. (a, b) -> a fst [(Point 2 r, Definers plane)] -vertices' +vertices' in Cyclic NonEmpty (Point 2 r) -> Region r (Point 2 r) forall r point. Cyclic NonEmpty point -> Region r point Bounded Cyclic NonEmpty (Point 2 r) -vertices'' +vertices'' -- | Given a plane h, and the single vertex v incident to the region of h, computes the @@ -612,18 +612,18 @@ -- -- In particular, returns the pair (u,p,w). h is the region to the left of u, and also the -- left of w. -singleVertex :: (Plane_ plane r, Ord r, Fractional r, Ord plane) - => plane -> (Point 2 r, Definers plane) - -> (Vector 2 r, Point 2 r, Vector 2 r) +singleVertex :: (Plane_ plane r, Ord r, Fractional r, Ord plane) + => plane -> (Point 2 r, Definers plane) + -> (Vector 2 r, Point 2 r, Vector 2 r) singleVertex :: forall plane r. (Plane_ plane r, Ord r, Fractional r, Ord plane) => plane -> (Point 2 r, Definers plane) -> (Vector 2 r, Point 2 r, Vector 2 r) -singleVertex plane -h (Point 2 r -v,Definers plane -defs) = (Vector 2 r, Point 2 r, Vector 2 r) +singleVertex plane +h (Point 2 r +v,Definers plane +defs) = (Vector 2 r, Point 2 r, Vector 2 r) -> Maybe (Vector 2 r, Point 2 r, Vector 2 r) -> (Vector 2 r, Point 2 r, Vector 2 r) forall a. a -> Maybe a -> a @@ -636,16 +636,16 @@ -> (Vector 2 r, Point 2 r, Vector 2 r) forall a b. (a -> b) -> a -> b $ - do (hPred,hSucc) <- plane -> Definers plane -> Maybe (plane, plane) + do (hPred,hSucc) <- plane -> Definers plane -> Maybe (plane, plane) forall plane. Eq plane => plane -> Definers plane -> Maybe (plane, plane) findNeighbours plane -h Definers plane -defs - u <- intersectionVector h hPred - w <- intersectionVector h hSucc - pure (w, v, u) +h Definers plane +defs + u <- intersectionVector h hPred + w <- intersectionVector h hSucc + pure (w, v, u) -- | Given: -- @@ -656,11 +656,11 @@ -- -- computes the actual region R. In particular, we compute the direction that the -- unbounded edges have. -unboundedRegion :: forall plane r.(Plane_ plane r, Ord r, Fractional r, Ord plane) - => plane - -> NonEmpty (Point 2 r) - -> (Point 2 r, Definers plane) -> (Point 2 r, Definers plane) - -> Region r (Point 2 r) +unboundedRegion :: forall plane r.(Plane_ plane r, Ord r, Fractional r, Ord plane) + => plane + -> NonEmpty (Point 2 r) + -> (Point 2 r, Definers plane) -> (Point 2 r, Definers plane) + -> Region r (Point 2 r) unboundedRegion :: forall plane r. (Plane_ plane r, Ord r, Fractional r, Ord plane) => plane @@ -668,27 +668,27 @@ -> (Point 2 r, Definers plane) -> (Point 2 r, Definers plane) -> Region r (Point 2 r) -unboundedRegion plane -h NonEmpty (Point 2 r) -chain v :: (Point 2 r, Definers plane) -v@(Point 2 r -v',Definers plane -_) u :: (Point 2 r, Definers plane) -u@(Point 2 r -u',Definers plane +unboundedRegion plane +h NonEmpty (Point 2 r) +chain v :: (Point 2 r, Definers plane) +v@(Point 2 r +v',Definers plane +_) u :: (Point 2 r, Definers plane) +u@(Point 2 r +u',Definers plane _) = Vector 2 r -> NonEmpty (Point 2 r) -> Vector 2 r -> Region r (Point 2 r) forall r point. Vector 2 r -> NonEmpty point -> Vector 2 r -> Region r point Unbounded Vector 2 r -wv NonEmpty (Point 2 r) -chain Vector 2 r -wu +wv NonEmpty (Point 2 r) +chain Vector 2 r +wu where - (Vector 2 r -v1,Point 2 r -_,Vector 2 r -v2) = plane + (Vector 2 r +v1,Point 2 r +_,Vector 2 r +v2) = plane -> (Point 2 r, Definers plane) -> (Vector 2 r, Point 2 r, Vector 2 r) forall plane r. @@ -697,12 +697,12 @@ -> (Point 2 r, Definers plane) -> (Vector 2 r, Point 2 r, Vector 2 r) singleVertex plane -h (Point 2 r, Definers plane) -v - (Vector 2 r -u1,Point 2 r -_,Vector 2 r -u2) = plane +h (Point 2 r, Definers plane) +v + (Vector 2 r +u1,Point 2 r +_,Vector 2 r +u2) = plane -> (Point 2 r, Definers plane) -> (Vector 2 r, Point 2 r, Vector 2 r) forall plane r. @@ -711,28 +711,28 @@ -> (Point 2 r, Definers plane) -> (Vector 2 r, Point 2 r, Vector 2 r) singleVertex plane -h (Point 2 r, Definers plane) -u +h (Point 2 r, Definers plane) +u - z :: Vector 2 r -z = Point 2 r -u' Point 2 r -> Point 2 r -> Vector 2 r + z :: Vector 2 r +z = Point 2 r +u' Point 2 r -> Point 2 r -> Vector 2 r forall point (d :: Natural) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. Point 2 r -v' - wv :: Vector 2 r -wv = case Vector 2 r -> Point 2 r -> Point 2 r -> Point 2 r -> Ordering +v' + wv :: Vector 2 r +wv = case Vector 2 r -> Point 2 r -> Point 2 r -> Point 2 r -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering ccwCmpAroundWith Vector 2 r -z (Point 2 r +z (Point 2 r forall point (d :: Natural) r. (Num r, ConstructablePoint_ point d r) => point -origin :: Point 2 r) (Vector 2 r -> Point 2 r +origin :: Point 2 r) (Vector 2 r -> Point 2 r forall v. v -> PointF v Point (Vector 2 r -> Point 2 r) -> Vector 2 r -> Point 2 r forall a b. (a -> b) -> a -> b @@ -741,7 +741,7 @@ (Num r, Vector_ vector d r) => vector -> vector negated Vector 2 r -v1) (Vector 2 r -> Point 2 r +v1) (Vector 2 r -> Point 2 r forall v. v -> PointF v Point (Vector 2 r -> Point 2 r) -> Vector 2 r -> Point 2 r forall a b. (a -> b) -> a -> b @@ -750,42 +750,42 @@ (Num r, Vector_ vector d r) => vector -> vector negated Vector 2 r -v2) of +v2) of Ordering LT -> Vector 2 r -v1 +v1 Ordering EQ -> Vector 2 r -v2 -- this probably shouldn't happen +v2 -- this probably shouldn't happen Ordering GT -> Vector 2 r -v2 - wu :: Vector 2 r -wu = case Vector 2 r -> Point 2 r -> Point 2 r -> Point 2 r -> Ordering +v2 + wu :: Vector 2 r +wu = case Vector 2 r -> Point 2 r -> Point 2 r -> Point 2 r -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering ccwCmpAroundWith Vector 2 r -z (Point 2 r +z (Point 2 r forall point (d :: Natural) r. (Num r, ConstructablePoint_ point d r) => point -origin :: Point 2 r) (Vector 2 r -> Point 2 r +origin :: Point 2 r) (Vector 2 r -> Point 2 r forall v. v -> PointF v Point Vector 2 r -u1) (Vector 2 r -> Point 2 r +u1) (Vector 2 r -> Point 2 r forall v. v -> PointF v Point Vector 2 r -u2) of +u2) of Ordering LT -> Vector 2 r -u2 +u2 Ordering EQ -> Vector 2 r -u1 -- this probably shouldn't happen +u1 -- this probably shouldn't happen Ordering GT -> Vector 2 r -u1 +u1 -- we essentially compare the vectors u1 and u2, and pick the "most CCW" one with respect -- to the vector from v to u. @@ -809,21 +809,21 @@ -- | Test if (u,v) is an invalid edge to be on the CCW boundary of h. this can mean that -- either (u,v) is not an actual edge (i.e. u and v) are connected to the vertex at -- infinity. Or that the edge is in the wrong orientation -isInvalid :: (Plane_ plane r, Eq plane, Ord r, Fractional r) - => plane - -> ( (Point 2 r, Definers plane) - , (Point 2 r, Definers plane)) -> Bool +isInvalid :: (Plane_ plane r, Eq plane, Ord r, Fractional r) + => plane + -> ( (Point 2 r, Definers plane) + , (Point 2 r, Definers plane)) -> Bool isInvalid :: forall plane r. (Plane_ plane r, Eq plane, Ord r, Fractional r) => plane -> ((Point 2 r, Definers plane), (Point 2 r, Definers plane)) -> Bool -isInvalid plane -h ((Point 2 r -_u,Definers plane -defsU), (Point 2 r -_v,Definers plane -defsV)) = +isInvalid plane +h ((Point 2 r +_u,Definers plane +defsU), (Point 2 r +_v,Definers plane +defsV)) = Bool -> Maybe Bool -> Bool forall a. a -> Maybe a -> a fromMaybe ([Char] -> Bool @@ -832,78 +832,78 @@ "isInvalid: h not found in the definers!?") (Maybe Bool -> Bool) -> Maybe Bool -> Bool forall a b. (a -> b) -> a -> b $ do - (hPredU,_) <- plane -> Definers plane -> Maybe (plane, plane) + (hPredU,_) <- plane -> Definers plane -> Maybe (plane, plane) forall plane. Eq plane => plane -> Definers plane -> Maybe (plane, plane) findNeighbours plane -h Definers plane -defsU - (_,hSuccV) <- findNeighbours h defsV - pure $ hPredU /= hSuccV +h Definers plane +defsU + (_,hSuccV) <- findNeighbours h defsV + pure $ hPredU /= hSuccV -- if (u,v) is actually a valid edge, i.e. it has h to its left, then the CCW -- successor w.r.t to v, and the CCW predecessor w.r.t u must be the same plane. -- if that is not the case the edge must be invalid. -- | Project the vertex onto the plane. -project :: (Point 3 r, a) -> (Point 2 r, a) +project :: (Point 3 r, a) -> (Point 2 r, a) project :: forall r a. (Point 3 r, a) -> (Point 2 r, a) -project (Point3 r -x r -y r -_, a -loc) = (r -> r -> Point 2 r +project (Point3 r +x r +y r +_, a +loc) = (r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -x r -y, a -loc) +x r +y, a +loc) -- | Given a list of vertices of a (possibly unbounded) convex polygonal region (in -- arbitrary orientation), sort the vertices so that they are listed in CCW order. -inCCWOrder :: (Ord r, Fractional r) => [(Point 2 r, a)] -> [(Point 2 r, a)] +inCCWOrder :: (Ord r, Fractional r) => [(Point 2 r, a)] -> [(Point 2 r, a)] inCCWOrder :: forall r a. (Ord r, Fractional r) => [(Point 2 r, a)] -> [(Point 2 r, a)] -inCCWOrder [(Point 2 r, a)] -pts = case [(Point 2 r, a)] -pts of - ((Point 2 r -p,a -_):(Point 2 r -q,a +inCCWOrder [(Point 2 r, a)] +pts = case [(Point 2 r, a)] +pts of + ((Point 2 r +p,a +_):(Point 2 r +q,a _):[(Point 2 r, a)] -_) -> let c :: Point 2 r -c = Point 2 r -p Point 2 r -> Vector 2 r -> Point 2 r +_) -> let c :: Point 2 r +c = Point 2 r +p Point 2 r -> Vector 2 r -> Point 2 r forall point (d :: Natural) r. (Affine_ point d r, Num r) => point -> Vector d r -> point .+^ ((Point 2 r -q Point 2 r -> Point 2 r -> Vector 2 r +q Point 2 r -> Point 2 r -> Vector 2 r forall point (d :: Natural) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. Point 2 r -p) Vector 2 r -> r -> Vector 2 r +p) Vector 2 r -> r -> Vector 2 r forall vector (d :: Natural) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector ^/ r 2) - cmp :: (Point 2 r, a) -> (Point 2 r, a) -> Ordering -cmp (Point 2 r -a,a -_) (Point 2 r -b,a + cmp :: (Point 2 r, a) -> (Point 2 r, a) -> Ordering +cmp (Point 2 r +a,a +_) (Point 2 r +b,a _) = Point 2 r -> Point 2 r -> Point 2 r -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering ccwCmpAround Point 2 r -c Point 2 r -a Point 2 r -b Ordering -> Ordering -> Ordering +c Point 2 r +a Point 2 r +b Ordering -> Ordering -> Ordering forall a. Semigroup a => a -> a -> a <> Point 2 r -> Point 2 r -> Point 2 r -> Ordering forall r point (d :: Natural) center. @@ -911,16 +911,16 @@ Metric_ (Vector d r) d r) => center -> point -> point -> Ordering cmpByDistanceTo Point 2 r -c Point 2 r -a Point 2 r -b +c Point 2 r +a Point 2 r +b in ((Point 2 r, a) -> (Point 2 r, a) -> Ordering) -> [(Point 2 r, a)] -> [(Point 2 r, a)] forall a. (a -> a -> Ordering) -> [a] -> [a] List.sortBy (Point 2 r, a) -> (Point 2 r, a) -> Ordering -cmp [(Point 2 r, a)] -pts +cmp [(Point 2 r, a)] +pts [(Point 2 r, a)] _ -> [(Point 2 r, a)] -pts -- already sorted. +pts -- already sorted. \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Separator.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Separator.html index 7e7d905a1..6eccba7e5 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Separator.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Separator.html @@ -35,7 +35,7 @@ -------------------------------------------------------------------------------- -data LevelInfo v = Level { forall v. LevelInfo v -> Int +data LevelInfo v = Level { forall v. LevelInfo v -> Int levelIndex :: {-# UNPACK #-}!Int , forall v. LevelInfo v -> Int levelSize :: {-# UNPACK #-}!Int @@ -44,9 +44,9 @@ accumSize :: {-# UNPACK #-}!Int -- ^ size of the prefix up to this level , forall v. LevelInfo v -> [v] -levelVertices :: [v] +levelVertices :: [v] } - deriving (Int -> LevelInfo v -> ShowS + deriving (Int -> LevelInfo v -> ShowS [LevelInfo v] -> ShowS LevelInfo v -> String (Int -> LevelInfo v -> ShowS) @@ -64,7 +64,7 @@ show :: LevelInfo v -> String $cshowList :: forall v. Show v => [LevelInfo v] -> ShowS showList :: [LevelInfo v] -> ShowS -Show,LevelInfo v -> LevelInfo v -> Bool +Show,LevelInfo v -> LevelInfo v -> Bool (LevelInfo v -> LevelInfo v -> Bool) -> (LevelInfo v -> LevelInfo v -> Bool) -> Eq (LevelInfo v) forall v. Eq v => LevelInfo v -> LevelInfo v -> Bool @@ -73,7 +73,7 @@ == :: LevelInfo v -> LevelInfo v -> Bool $c/= :: forall v. Eq v => LevelInfo v -> LevelInfo v -> Bool /= :: LevelInfo v -> LevelInfo v -> Bool -Eq,(forall m. Monoid m => LevelInfo m -> m) +Eq,(forall m. Monoid m => LevelInfo m -> m) -> (forall m a. Monoid m => (a -> m) -> LevelInfo a -> m) -> (forall m a. Monoid m => (a -> m) -> LevelInfo a -> m) -> (forall a b. (a -> b -> b) -> b -> LevelInfo a -> b) @@ -176,52 +176,52 @@ -- => planarGraph -- -> ([VertexIx planarGraph], Vector 2 [VertexIx planarGraph]) -type Separator k = ([k],Vector 2 [k]) +type Separator k = ([k],Vector 2 [k]) -- | Extracts the maximum from a non-empty list using the given ordering -viewMaximumBy :: (a -> a -> Ordering) -> NonEmpty a -> (a, [a]) +viewMaximumBy :: (a -> a -> Ordering) -> NonEmpty a -> (a, [a]) viewMaximumBy :: forall a. (a -> a -> Ordering) -> NonEmpty a -> (a, [a]) -viewMaximumBy a -> a -> Ordering -cmp (a -x0:|[a] -xs) = (a -> (a, [a]) -> (a, [a])) -> (a, [a]) -> [a] -> (a, [a]) +viewMaximumBy a -> a -> Ordering +cmp (a +x0:|[a] +xs) = (a -> (a, [a]) -> (a, [a])) -> (a, [a]) -> [a] -> (a, [a]) forall a b. (a -> b -> b) -> b -> [a] -> b forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b -foldr (\a -x (a -m,[a] -rest) -> case a -x a -> a -> Ordering -`cmp` a -m of +foldr (\a +x (a +m,[a] +rest) -> case a +x a -> a -> Ordering +`cmp` a +m of Ordering LT -> (a -m, a -xa -> [a] -> [a] +m, a +xa -> [a] -> [a] forall a. a -> [a] -> [a] :[a] -rest) +rest) Ordering EQ -> (a -m, a -xa -> [a] -> [a] +m, a +xa -> [a] -> [a] forall a. a -> [a] -> [a] :[a] -rest) +rest) Ordering GT -> (a -x, a -ma -> [a] -> [a] +x, a +ma -> [a] -> [a] forall a. a -> [a] -> [a] :[a] -rest) +rest) ) (a -x0, []) [a] -xs +x0, []) [a] +xs -- | Returns a pair (separator, Vector2 verticesSubGraphA verticesSubGraphB) -- so that @@ -229,10 +229,10 @@ -- 1) there are no edges connecting subGraph A and subgraph B, -- 2) the size of the separator is at most sqrt(n). -- 3) the vertex sets of A and B have weight at most 2/3 the total weight -planarSeparator :: Ord k => PlaneGraph' k v e -> Separator k +planarSeparator :: Ord k => PlaneGraph' k v e -> Separator k planarSeparator :: forall k v e. Ord k => PlaneGraph' k v e -> Separator k -planarSeparator PlaneGraph' k v e -gr = case ((Tree k, Int) -> (Tree k, Int) -> Ordering) +planarSeparator PlaneGraph' k v e +gr = case ((Tree k, Int) -> (Tree k, Int) -> Ordering) -> NonEmpty (Tree k, Int) -> ((Tree k, Int), [(Tree k, Int)]) forall a. (a -> a -> Ordering) -> NonEmpty a -> (a, [a]) viewMaximumBy (((Tree k, Int) -> Int) @@ -241,32 +241,32 @@ comparing (Tree k, Int) -> Int forall a b. (a, b) -> b snd) NonEmpty (Tree k, Int) -trees of - ((Tree k -tr,Int -m),[(Tree k, Int)] -rest) +trees of + ((Tree k +tr,Int +m),[(Tree k, Int)] +rest) | Int -m Int -> Int -> Bool +m Int -> Int -> Bool forall a. Ord a => a -> a -> Bool <= Int -twoThirds -> Separator k +twoThirds -> Separator k forall {a}. a -groupComponents +groupComponents | Bool otherwise -> Tree k -> Int -> Separator k -planarSeparator' Tree k -tr Int -m -- we should also add the remaining vertices +planarSeparator' Tree k +tr Int +m -- we should also add the remaining vertices where - trees :: NonEmpty (Tree k, Int) -trees = (\Tree k -t -> (Tree k -t, Tree k -> Int + trees :: NonEmpty (Tree k, Int) +trees = (\Tree k +t -> (Tree k +t, Tree k -> Int forall a. Tree a -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length Tree k -t)) (Tree k -> (Tree k, Int)) +t)) (Tree k -> (Tree k, Int)) -> NonEmpty (Tree k) -> NonEmpty (Tree k, Int) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> PlaneGraph' k v e -> NonEmpty (Tree (VertexIx (PlaneGraph' k v e))) @@ -274,9 +274,9 @@ (DiGraph_ graph, Ord (VertexIx graph)) => graph -> NonEmpty (Tree (VertexIx graph)) bff PlaneGraph' k v e -gr - n :: Int -n = NonEmpty Int -> Int +gr + n :: Int +n = NonEmpty Int -> Int forall a. Num a => NonEmpty a -> a forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum (NonEmpty Int -> Int) -> NonEmpty Int -> Int @@ -287,43 +287,43 @@ fmap (Tree k, Int) -> Int forall a b. (a, b) -> b snd NonEmpty (Tree k, Int) -trees - half :: Int -half = Int -n Int -> Int -> Int +trees + half :: Int +half = Int +n Int -> Int -> Int forall a. Integral a => a -> a -> a `div` Int 2 - twoThirds :: Int -twoThirds = Int + twoThirds :: Int +twoThirds = Int 2 Int -> Int -> Int forall a. Num a => a -> a -> a * (Int -n Int -> Int -> Int +n Int -> Int -> Int forall a. Integral a => a -> a -> a `div` Int 3) - groupComponents :: a -groupComponents = a + groupComponents :: a +groupComponents = a forall a. HasCallStack => a undefined - planarSeparator' :: Tree k -> Int -> Separator k -planarSeparator' Tree k -tr Int + planarSeparator' :: Tree k -> Int -> Separator k +planarSeparator' Tree k +tr Int _ = case (LevelInfo k -> Bool) -> [LevelInfo k] -> ([LevelInfo k], [LevelInfo k]) forall a. (a -> Bool) -> [a] -> ([a], [a]) -List.break (\LevelInfo k -lvl -> LevelInfo k -> Int +List.break (\LevelInfo k +lvl -> LevelInfo k -> Int forall v. LevelInfo v -> Int accumSize LevelInfo k -lvl Int -> Int -> Bool +lvl Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int -half) [LevelInfo k] -lvls of +half) [LevelInfo k] +lvls of ([LevelInfo k] _, []) -> ([], [k] -> [k] -> Vector 2 [k] forall r. r -> r -> Vector 2 r @@ -331,28 +331,28 @@ forall a. Tree a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] F.toList Tree k -tr) []) +tr) []) -- somehow we have too little weight; - ([LevelInfo k] -pref, (LevelInfo k -l1 : [LevelInfo k] -suff)) -> PlaneGraph' k v e -> Tree k -> Separator k + ([LevelInfo k] +pref, (LevelInfo k +l1 : [LevelInfo k] +suff)) -> PlaneGraph' k v e -> Tree k -> Separator k forall k v e. Ord k => PlaneGraph' k v e -> Tree k -> Separator k planarSeparatorTree PlaneGraph' k v e -gr Tree k -tr' +gr Tree k +tr' where - k :: Int -k = LevelInfo k -> Int + k :: Int +k = LevelInfo k -> Int forall v. LevelInfo v -> Int accumSize LevelInfo k -l1 - p :: LevelInfo k -> Bool -p LevelInfo k -lvl = LevelInfo k -> Int +l1 + p :: LevelInfo k -> Bool +p LevelInfo k +lvl = LevelInfo k -> Int forall v. LevelInfo v -> Int levelSize LevelInfo k -lvl Int -> Int -> Int +lvl Int -> Int -> Int forall a. Num a => a -> a -> a + Int 2Int -> Int -> Int @@ -360,25 +360,25 @@ *(LevelInfo k -> Int forall v. LevelInfo v -> Int levelIndex LevelInfo k -l1 Int -> Int -> Int +l1 Int -> Int -> Int forall a. Num a => a -> a -> a - LevelInfo k -> Int forall v. LevelInfo v -> Int levelIndex LevelInfo k -lvl) Int -> Int -> Bool +lvl) Int -> Int -> Bool forall a. Ord a => a -> a -> Bool <= Int 2 Int -> Int -> Int forall a. Num a => a -> a -> a * Int -> Int sqrt' Int -k - p' :: LevelInfo k -> Bool -p' LevelInfo k -lvl = LevelInfo k -> Int +k + p' :: LevelInfo k -> Bool +p' LevelInfo k +lvl = LevelInfo k -> Int forall v. LevelInfo v -> Int levelSize LevelInfo k -lvl Int -> Int -> Int +lvl Int -> Int -> Int forall a. Num a => a -> a -> a + Int 2Int -> Int -> Int @@ -386,12 +386,12 @@ *(LevelInfo k -> Int forall v. LevelInfo v -> Int levelIndex LevelInfo k -lvl Int -> Int -> Int +lvl Int -> Int -> Int forall a. Num a => a -> a -> a - LevelInfo k -> Int forall v. LevelInfo v -> Int levelIndex LevelInfo k -l1 Int -> Int -> Int +l1 Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1) Int -> Int -> Bool @@ -401,33 +401,33 @@ forall a. Num a => a -> a -> a * Int -> Int sqrt' (Int -nInt -> Int -> Int +nInt -> Int -> Int forall a. Num a => a -> a -> a -Int -k) +k) - l0 :: Maybe (LevelInfo k) -l0 = (LevelInfo k -> Bool) -> [LevelInfo k] -> Maybe (LevelInfo k) + l0 :: Maybe (LevelInfo k) +l0 = (LevelInfo k -> Bool) -> [LevelInfo k] -> Maybe (LevelInfo k) forall a. (a -> Bool) -> [a] -> Maybe a findR LevelInfo k -> Bool -p ([LevelInfo k] -pref [LevelInfo k] -> [LevelInfo k] -> [LevelInfo k] +p ([LevelInfo k] +pref [LevelInfo k] -> [LevelInfo k] -> [LevelInfo k] forall a. Semigroup a => a -> a -> a <> [LevelInfo k -l1]) - l2 :: Maybe (LevelInfo k) -l2 = (LevelInfo k -> Bool) -> [LevelInfo k] -> Maybe (LevelInfo k) +l1]) + l2 :: Maybe (LevelInfo k) +l2 = (LevelInfo k -> Bool) -> [LevelInfo k] -> Maybe (LevelInfo k) forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a List.find LevelInfo k -> Bool -p' [LevelInfo k] -suff - tr' :: Tree k -tr' = Maybe (LevelInfo k) -> Maybe (LevelInfo k) -> Tree k -> Tree k +p' [LevelInfo k] +suff + tr' :: Tree k +tr' = Maybe (LevelInfo k) -> Maybe (LevelInfo k) -> Tree k -> Tree k forall {p} {p} {p}. p -> p -> p -> p trim Maybe (LevelInfo k) -l0 Maybe (LevelInfo k) -l2 Tree k -tr +l0 Maybe (LevelInfo k) +l2 Tree k +tr -- sep = undefined @@ -436,42 +436,42 @@ where -- compute the levels, their sizes, and the sum of their sizes (Vector 2 Int -_, [LevelInfo k] -lvls) = (Vector 2 Int -> [k] -> (Vector 2 Int, LevelInfo k)) +_, [LevelInfo k] +lvls) = (Vector 2 Int -> [k] -> (Vector 2 Int, LevelInfo k)) -> Vector 2 Int -> [[k]] -> (Vector 2 Int, [LevelInfo k]) forall (t :: * -> *) s a b. Traversable t => (s -> a -> (s, b)) -> s -> t a -> (s, t b) -List.mapAccumL (\(Vector2 Int -i Int -acc) [k] -lvl -> - let m :: Int -m = [k] -> Int +List.mapAccumL (\(Vector2 Int +i Int +acc) [k] +lvl -> + let m :: Int +m = [k] -> Int forall a. [a] -> Int forall (t :: * -> *) a. Foldable t => t a -> Int length [k] -lvl - acc' :: Int -acc' = Int -acc Int -> Int -> Int +lvl + acc' :: Int +acc' = Int +acc Int -> Int -> Int forall a. Num a => a -> a -> a + Int -m +m in ( Int -> Int -> Vector 2 Int forall r. r -> r -> Vector 2 r Vector2 (Int -iInt -> Int -> Int +iInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) Int -acc', Int -> Int -> Int -> [k] -> LevelInfo k +acc', Int -> Int -> Int -> [k] -> LevelInfo k forall v. Int -> Int -> Int -> [v] -> LevelInfo v Level Int -i Int -m Int -acc' [k] -lvl) +i Int +m Int +acc' [k] +lvl) ) (Int -> Int -> Vector 2 Int forall r. r -> r -> Vector 2 r Vector2 Int @@ -482,11 +482,11 @@ $ Tree k -> [[k]] forall a. Tree a -> [[a]] levels Tree k -tr +tr -- | contracts the plane graph so that we get a spanning tree of diameter at most sqrt(n). -contract :: PlaneGraph' k v e -> Tree k -> (PlaneGraph' k v e, Tree k) +contract :: PlaneGraph' k v e -> Tree k -> (PlaneGraph' k v e, Tree k) contract :: forall k v e. PlaneGraph' k v e -> Tree k -> (PlaneGraph' k v e, Tree k) contract = PlaneGraph' k v e -> Tree k -> (PlaneGraph' k v e, Tree k) @@ -496,19 +496,19 @@ trim :: p -> p -> p -> p trim p _ p -_ p -tr = p -tr +_ p +tr = p +tr -- TODO: -- | Given a spanning tree of the graph that has diameter r, compute -- a separator of size at most 2r+1 -planarSeparatorTree :: Ord k => PlaneGraph' k v e -> Tree k -> Separator k +planarSeparatorTree :: Ord k => PlaneGraph' k v e -> Tree k -> Separator k planarSeparatorTree :: forall k v e. Ord k => PlaneGraph' k v e -> Tree k -> Separator k -planarSeparatorTree PlaneGraph' k v e -gr Tree k -tr = ([k] -sep, (Tree k -> [k]) -> [Tree k] -> [k] +planarSeparatorTree PlaneGraph' k v e +gr Tree k +tr = ([k] +sep, (Tree k -> [k]) -> [Tree k] -> [k] forall m a. Monoid m => (a -> m) -> [a] -> m forall (t :: * -> *) m a. (Foldable t, Monoid m) => @@ -519,26 +519,26 @@ F.toList ([Tree k] -> [k]) -> Vector 2 [Tree k] -> Vector 2 [k] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Vector 2 [Tree k] -trees) +trees) -- FIXME: continue searching where - e :: (k, k) -e = Set (k, k) -> (k, k) + e :: (k, k) +e = Set (k, k) -> (k, k) forall a. Set a -> a Set.findMin (Set (k, k) -> (k, k)) -> Set (k, k) -> (k, k) forall a b. (a -> b) -> a -> b $ PlaneGraph' k v e -> Set (k, k) forall k v e. Ord k => PlaneGraph' k v e -> Set (k, k) graphEdges PlaneGraph' k v e -gr Set (k, k) -> Set (k, k) -> Set (k, k) +gr Set (k, k) -> Set (k, k) -> Set (k, k) forall a. Ord a => Set a -> Set a -> Set a `Set.difference` Tree k -> Set (k, k) forall k. Ord k => Tree k -> Set (k, k) treeEdges Tree k -tr - ([k] -sep, Vector 2 [Tree k] -trees) = SplitTree k (EndPoint k) -> ([k], Vector 2 [Tree k]) +tr + ([k] +sep, Vector 2 [Tree k] +trees) = SplitTree k (EndPoint k) -> ([k], Vector 2 [Tree k]) forall a. Eq a => SplitTree a (EndPoint a) -> ([a], Vector 2 [Tree a]) @@ -554,15 +554,15 @@ PlaneGraph' k v e -> (k, k) -> SplitTree k (Tree k) -> SplitTree k (EndPoint k) splitLeaf PlaneGraph' k v e -gr (k, k) -e (SplitTree k (Tree k) -> ([k], Vector 2 [Tree k])) +gr (k, k) +e (SplitTree k (Tree k) -> ([k], Vector 2 [Tree k])) -> SplitTree k (Tree k) -> ([k], Vector 2 [Tree k]) forall a b. (a -> b) -> a -> b $ (k, k) -> Tree k -> SplitTree k (Tree k) forall a. Eq a => (a, a) -> Tree a -> SplitTree a (Tree a) splitTree (k, k) -e Tree k -tr +e Tree k +tr -------------------------------------------------------------------------------- -- * Spliting the tree @@ -572,8 +572,8 @@ -- deriving (Show,Eq) -- -- still not quite right, since now we can't represent rotosplits lower than the root . -newtype SplitTree a l = SplitTree (Path a (Split a l)) - deriving (Int -> SplitTree a l -> ShowS +newtype SplitTree a l = SplitTree (Path a (Split a l)) + deriving (Int -> SplitTree a l -> ShowS [SplitTree a l] -> ShowS SplitTree a l -> String (Int -> SplitTree a l -> ShowS) @@ -591,7 +591,7 @@ show :: SplitTree a l -> String $cshowList :: forall a l. (Show l, Show a) => [SplitTree a l] -> ShowS showList :: [SplitTree a l] -> ShowS -Show,SplitTree a l -> SplitTree a l -> Bool +Show,SplitTree a l -> SplitTree a l -> Bool (SplitTree a l -> SplitTree a l -> Bool) -> (SplitTree a l -> SplitTree a l -> Bool) -> Eq (SplitTree a l) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -600,7 +600,7 @@ == :: SplitTree a l -> SplitTree a l -> Bool $c/= :: forall a l. (Eq l, Eq a) => SplitTree a l -> SplitTree a l -> Bool /= :: SplitTree a l -> SplitTree a l -> Bool -Eq,(forall a b. (a -> b) -> SplitTree a a -> SplitTree a b) +Eq,(forall a b. (a -> b) -> SplitTree a a -> SplitTree a b) -> (forall a b. a -> SplitTree a b -> SplitTree a a) -> Functor (SplitTree a) forall a b. a -> SplitTree a b -> SplitTree a a @@ -617,8 +617,8 @@ Functor) -- | A path in the tree that ends at a "leaf" in which we store something of type l -newtype Path a l = MkPath (NonEmpty (PathNode a l)) - deriving (Int -> Path a l -> ShowS +newtype Path a l = MkPath (NonEmpty (PathNode a l)) + deriving (Int -> Path a l -> ShowS [Path a l] -> ShowS Path a l -> String (Int -> Path a l -> ShowS) @@ -634,7 +634,7 @@ show :: Path a l -> String $cshowList :: forall a l. (Show l, Show a) => [Path a l] -> ShowS showList :: [Path a l] -> ShowS -Show,Path a l -> Path a l -> Bool +Show,Path a l -> Path a l -> Bool (Path a l -> Path a l -> Bool) -> (Path a l -> Path a l -> Bool) -> Eq (Path a l) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -643,7 +643,7 @@ == :: Path a l -> Path a l -> Bool $c/= :: forall a l. (Eq l, Eq a) => Path a l -> Path a l -> Bool /= :: Path a l -> Path a l -> Bool -Eq,(forall a b. (a -> b) -> Path a a -> Path a b) +Eq,(forall a b. (a -> b) -> Path a a -> Path a b) -> (forall a b. a -> Path a b -> Path a a) -> Functor (Path a) forall a b. a -> Path a b -> Path a a forall a b. (a -> b) -> Path a a -> Path a b @@ -658,9 +658,9 @@ <$ :: forall a b. a -> Path a b -> Path a a Functor) -data PathNode a l = PathLeaf l - | PathNode a [Tree a] [Tree a] - deriving (Int -> PathNode a l -> ShowS +data PathNode a l = PathLeaf l + | PathNode a [Tree a] [Tree a] + deriving (Int -> PathNode a l -> ShowS [PathNode a l] -> ShowS PathNode a l -> String (Int -> PathNode a l -> ShowS) @@ -678,7 +678,7 @@ show :: PathNode a l -> String $cshowList :: forall a l. (Show l, Show a) => [PathNode a l] -> ShowS showList :: [PathNode a l] -> ShowS -Show,PathNode a l -> PathNode a l -> Bool +Show,PathNode a l -> PathNode a l -> Bool (PathNode a l -> PathNode a l -> Bool) -> (PathNode a l -> PathNode a l -> Bool) -> Eq (PathNode a l) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -687,7 +687,7 @@ == :: PathNode a l -> PathNode a l -> Bool $c/= :: forall a l. (Eq l, Eq a) => PathNode a l -> PathNode a l -> Bool /= :: PathNode a l -> PathNode a l -> Bool -Eq,(forall a b. (a -> b) -> PathNode a a -> PathNode a b) +Eq,(forall a b. (a -> b) -> PathNode a a -> PathNode a b) -> (forall a b. a -> PathNode a b -> PathNode a a) -> Functor (PathNode a) forall a b. a -> PathNode a b -> PathNode a a @@ -703,61 +703,61 @@ <$ :: forall a b. a -> PathNode a b -> PathNode a a Functor) -pattern Leaf :: l -> Path a l +pattern Leaf :: l -> Path a l pattern $bLeaf :: forall l a. l -> Path a l $mLeaf :: forall {r} {l} {a}. Path a l -> (l -> r) -> ((# #) -> r) -> r -Leaf l = MkPath (PathLeaf l :| []) +Leaf l = MkPath (PathLeaf l :| []) -(<|) :: PathNode a l -> Path a l -> Path a l -PathNode a l -n <| :: forall a l. PathNode a l -> Path a l -> Path a l -<| (MkPath NonEmpty (PathNode a l) -path) = NonEmpty (PathNode a l) -> Path a l +(<|) :: PathNode a l -> Path a l -> Path a l +PathNode a l +n <| :: forall a l. PathNode a l -> Path a l -> Path a l +<| (MkPath NonEmpty (PathNode a l) +path) = NonEmpty (PathNode a l) -> Path a l forall a l. NonEmpty (PathNode a l) -> Path a l MkPath (NonEmpty (PathNode a l) -> Path a l) -> NonEmpty (PathNode a l) -> Path a l forall a b. (a -> b) -> a -> b $ PathNode a l -n PathNode a l -> NonEmpty (PathNode a l) -> NonEmpty (PathNode a l) +n PathNode a l -> NonEmpty (PathNode a l) -> NonEmpty (PathNode a l) forall a. a -> NonEmpty a -> NonEmpty a NonEmpty.<| NonEmpty (PathNode a l) -path +path -pattern Path :: a -> [Tree a] -> Path a l -> [Tree a] -> Path a l +pattern Path :: a -> [Tree a] -> Path a l -> [Tree a] -> Path a l pattern $bPath :: forall a l. a -> [Tree a] -> Path a l -> [Tree a] -> Path a l $mPath :: forall {r} {a} {l}. Path a l -> (a -> [Tree a] -> Path a l -> [Tree a] -> r) -> ((# #) -> r) -> r -Path u before path after <- (unconsPath -> Just (u, before, after, path)) +Path u before path after <- (unconsPath -> Just (u, before, after, path)) where - Path a -u [Tree a] -before Path a l -path [Tree a] -after = a -> [Tree a] -> [Tree a] -> PathNode a l + Path a +u [Tree a] +before Path a l +path [Tree a] +after = a -> [Tree a] -> [Tree a] -> PathNode a l forall a l. a -> [Tree a] -> [Tree a] -> PathNode a l PathNode a -u [Tree a] -before [Tree a] -after PathNode a l -> Path a l -> Path a l +u [Tree a] +before [Tree a] +after PathNode a l -> Path a l -> Path a l forall a l. PathNode a l -> Path a l -> Path a l <| Path a l -path +path -unconsPath :: Path a l -> Maybe (a, [Tree a], [Tree a], Path a l) +unconsPath :: Path a l -> Maybe (a, [Tree a], [Tree a], Path a l) unconsPath :: forall a l. Path a l -> Maybe (a, [Tree a], [Tree a], Path a l) unconsPath = \case - MkPath (PathNode a -u [Tree a] -before [Tree a] -after :| [PathNode a l] -path') -> (a -u,[Tree a] -before,[Tree a] -after,) (Path a l -> (a, [Tree a], [Tree a], Path a l)) + MkPath (PathNode a +u [Tree a] +before [Tree a] +after :| [PathNode a l] +path') -> (a +u,[Tree a] +before,[Tree a] +after,) (Path a l -> (a, [Tree a], [Tree a], Path a l)) -> (NonEmpty (PathNode a l) -> Path a l) -> NonEmpty (PathNode a l) -> (a, [Tree a], [Tree a], Path a l) @@ -772,7 +772,7 @@ <$> [PathNode a l] -> Maybe (NonEmpty (PathNode a l)) forall a. [a] -> Maybe (NonEmpty a) NonEmpty.nonEmpty [PathNode a l] -path' +path' Path a l _ -> Maybe (a, [Tree a], [Tree a], Path a l) forall a. Maybe a @@ -781,20 +781,20 @@ -- | The split node where the two paths diverge -data Split a l = - RootSplit l -- ^ apparently root is the split we are looking for. - [Tree a] (Path a l) [Tree a] - | NodeSplit a -- ^ label of the node we are splitting - [Tree a] -- ^ children before the left path - (Path a l) +data Split a l = + RootSplit l -- ^ apparently root is the split we are looking for. + [Tree a] (Path a l) [Tree a] + | NodeSplit a -- ^ label of the node we are splitting + [Tree a] -- ^ children before the left path + (Path a l) -- ^ the value stored at the left node (i.e. the leaf) we argoing to, -- and the pato that goes there. - [Tree a] -- ^ middle nodes - (Path a l) + [Tree a] -- ^ middle nodes + (Path a l) -- ^ the value stored at the right node we argoing to, and the pato that -- goes there. - [Tree a] - deriving (Int -> Split a l -> ShowS + [Tree a] + deriving (Int -> Split a l -> ShowS [Split a l] -> ShowS Split a l -> String (Int -> Split a l -> ShowS) @@ -812,7 +812,7 @@ show :: Split a l -> String $cshowList :: forall a l. (Show l, Show a) => [Split a l] -> ShowS showList :: [Split a l] -> ShowS -Show,Split a l -> Split a l -> Bool +Show,Split a l -> Split a l -> Bool (Split a l -> Split a l -> Bool) -> (Split a l -> Split a l -> Bool) -> Eq (Split a l) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -821,7 +821,7 @@ == :: Split a l -> Split a l -> Bool $c/= :: forall a l. (Eq l, Eq a) => Split a l -> Split a l -> Bool /= :: Split a l -> Split a l -> Bool -Eq,(forall a b. (a -> b) -> Split a a -> Split a b) +Eq,(forall a b. (a -> b) -> Split a a -> Split a b) -> (forall a b. a -> Split a b -> Split a a) -> Functor (Split a) forall a b. a -> Split a b -> Split a a forall a b. (a -> b) -> Split a a -> Split a b @@ -837,28 +837,28 @@ Functor) -- | Given an non-tree edge (v,w), split the tree usign the root to v,w paths -splitTree :: Eq a => (a,a) -> Tree a -> SplitTree a (Tree a) +splitTree :: Eq a => (a,a) -> Tree a -> SplitTree a (Tree a) splitTree :: forall a. Eq a => (a, a) -> Tree a -> SplitTree a (Tree a) -splitTree (a, a) -e Tree a -t = case (a, a) -> Tree a -> Result a +splitTree (a, a) +e Tree a +t = case (a, a) -> Tree a -> Result a forall a. Eq a => (a, a) -> Tree a -> Result a splitTree' (a, a) -e Tree a -t of - Both SplitTree a (Tree a) -split -> SplitTree a (Tree a) -split +e Tree a +t of + Both SplitTree a (Tree a) +split -> SplitTree a (Tree a) +split Result a _ -> String -> SplitTree a (Tree a) forall a. HasCallStack => String -> a error String "splitTree: absurd, didn't find both endpoints" -data ResultF a b = NotFound - | Single a - | Both b - deriving (Int -> ResultF a b -> ShowS +data ResultF a b = NotFound + | Single a + | Both b + deriving (Int -> ResultF a b -> ShowS [ResultF a b] -> ShowS ResultF a b -> String (Int -> ResultF a b -> ShowS) @@ -876,7 +876,7 @@ show :: ResultF a b -> String $cshowList :: forall a b. (Show a, Show b) => [ResultF a b] -> ShowS showList :: [ResultF a b] -> ShowS -Show,ResultF a b -> ResultF a b -> Bool +Show,ResultF a b -> ResultF a b -> Bool (ResultF a b -> ResultF a b -> Bool) -> (ResultF a b -> ResultF a b -> Bool) -> Eq (ResultF a b) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -885,7 +885,7 @@ == :: ResultF a b -> ResultF a b -> Bool $c/= :: forall a b. (Eq a, Eq b) => ResultF a b -> ResultF a b -> Bool /= :: ResultF a b -> ResultF a b -> Bool -Eq,(forall a b. (a -> b) -> ResultF a a -> ResultF a b) +Eq,(forall a b. (a -> b) -> ResultF a a -> ResultF a b) -> (forall a b. a -> ResultF a b -> ResultF a a) -> Functor (ResultF a) forall a b. a -> ResultF a b -> ResultF a a @@ -901,23 +901,23 @@ <$ :: forall a b. a -> ResultF a b -> ResultF a a Functor) -type Result a = ResultF (VW, Path a (Tree a) ) (SplitTree a (Tree a)) +type Result a = ResultF (VW, Path a (Tree a) ) (SplitTree a (Tree a)) data VW = V | W -other :: p -> p -> VW -> p +other :: p -> p -> VW -> p other :: forall p. p -> p -> VW -> p -other p -v p -w = \case +other p +v p +w = \case VW V -> p -w +w VW W -> p -v +v -data Loc a b = Here a | There b deriving (Int -> Loc a b -> ShowS +data Loc a b = Here a | There b deriving (Int -> Loc a b -> ShowS [Loc a b] -> ShowS Loc a b -> String (Int -> Loc a b -> ShowS) @@ -933,7 +933,7 @@ show :: Loc a b -> String $cshowList :: forall a b. (Show a, Show b) => [Loc a b] -> ShowS showList :: [Loc a b] -> ShowS -Show,Loc a b -> Loc a b -> Bool +Show,Loc a b -> Loc a b -> Bool (Loc a b -> Loc a b -> Bool) -> (Loc a b -> Loc a b -> Bool) -> Eq (Loc a b) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -945,11 +945,11 @@ Eq) -- | Implementation of splitTree; i.e. tries to find both endpoints of the given edge. -splitTree' :: Eq a => (a,a) -> Tree a -> Result a +splitTree' :: Eq a => (a,a) -> Tree a -> Result a splitTree' :: forall a. Eq a => (a, a) -> Tree a -> Result a -splitTree' (a -v,a -w) = (Path a (Split a (Tree a)) -> SplitTree a (Tree a)) +splitTree' (a +v,a +w) = (Path a (Split a (Tree a)) -> SplitTree a (Tree a)) -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) -> ResultF (VW, Path a (Tree a)) (SplitTree a (Tree a)) forall a b. @@ -967,36 +967,36 @@ -> ResultF (VW, Path a (Tree a)) (SplitTree a (Tree a)) forall b c a. (b -> c) -> (a -> b) -> a -> c . Tree a -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) -go +go where -- Handle the cases that we find one of the elemtns (identified by 'found') here. - here :: VW + here :: VW -> Tree a -> [Tree a] -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) -here VW -found Tree a -tr [Tree a] -chs = case a -> [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) +here VW +found Tree a +tr [Tree a] +chs = case a -> [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) forall a. Eq a => a -> [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) findNodes a -w [Tree a] -chs of +w [Tree a] +chs of Maybe ([Tree a], [Tree a], Path a (Tree a)) Nothing -> (VW, Path a (Tree a)) -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) forall a b. a -> ResultF a b Single (VW -found, Tree a -> Path a (Tree a) +found, Tree a -> Path a (Tree a) forall l a. l -> Path a l Leaf Tree a -tr) - Just ([Tree a] -before, [Tree a] -after, Path a (Tree a) -path) -> Path a (Split a (Tree a)) +tr) + Just ([Tree a] +before, [Tree a] +after, Path a (Tree a) +path) -> Path a (Split a (Tree a)) -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) forall a b. b -> ResultF a b Both (Path a (Split a (Tree a)) @@ -1016,40 +1016,40 @@ -> [Tree a] -> Path a (Tree a) -> [Tree a] -> Split a (Tree a) forall a l. l -> [Tree a] -> Path a l -> [Tree a] -> Split a l RootSplit Tree a -tr [Tree a] -before Path a (Tree a) -path [Tree a] -after +tr [Tree a] +before Path a (Tree a) +path [Tree a] +after - go :: Tree a -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) -go tr :: Tree a -tr@(Node a -u [Tree a] -chs) + go :: Tree a -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) +go tr :: Tree a +tr@(Node a +u [Tree a] +chs) | a -u a -> a -> Bool +u a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -v = VW +v = VW -> Tree a -> [Tree a] -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) -here VW +here VW V Tree a -tr [Tree a] -chs +tr [Tree a] +chs | a -u a -> a -> Bool +u a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -w = VW +w = VW -> Tree a -> [Tree a] -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) -here VW +here VW W Tree a -tr [Tree a] -chs +tr [Tree a] +chs | Bool otherwise = case (Tree a -> (ResultF @@ -1100,7 +1100,7 @@ (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a)))), [Tree a]) -process (ResultF +process (ResultF ([Tree a], (VW, Path a (Tree a))) ([Tree a], Loc @@ -1108,7 +1108,7 @@ (Path a (Split a (Tree a)))) forall a b. ResultF a b NotFound, []) [Tree a] -chs of +chs of (ResultF ([Tree a], (VW, Path a (Tree a))) ([Tree a], @@ -1119,29 +1119,29 @@ _) -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) forall a b. ResultF a b NotFound - (Single ([Tree a] -middle, (VW -x,Path a (Tree a) -path)),[Tree a] -after) -> (VW, Path a (Tree a)) + (Single ([Tree a] +middle, (VW +x,Path a (Tree a) +path)),[Tree a] +after) -> (VW, Path a (Tree a)) -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) forall a b. a -> ResultF a b Single (VW -x, a -> [Tree a] -> [Tree a] -> PathNode a (Tree a) +x, a -> [Tree a] -> [Tree a] -> PathNode a (Tree a) forall a l. a -> [Tree a] -> [Tree a] -> PathNode a l PathNode a -u [Tree a] -middle [Tree a] -after PathNode a (Tree a) -> Path a (Tree a) -> Path a (Tree a) +u [Tree a] +middle [Tree a] +after PathNode a (Tree a) -> Path a (Tree a) -> Path a (Tree a) forall a l. PathNode a l -> Path a l -> Path a l <| Path a (Tree a) -path) - (Both ([Tree a] -before, Loc +path) + (Both ([Tree a] +before, Loc (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a))) -both'), [Tree a] -after) -> Path a (Split a (Tree a)) +both'), [Tree a] +after) -> Path a (Split a (Tree a)) -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) forall a b. b -> ResultF a b Both (Path a (Split a (Tree a)) @@ -1152,11 +1152,11 @@ $ case Loc (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a))) -both' of - Here (Path a (Tree a) -lp,[Tree a] -middle,Path a (Tree a) -rp) -> Split a (Tree a) -> Path a (Split a (Tree a)) +both' of + Here (Path a (Tree a) +lp,[Tree a] +middle,Path a (Tree a) +rp) -> Split a (Tree a) -> Path a (Split a (Tree a)) forall l a. l -> Path a l Leaf (Split a (Tree a) -> Path a (Split a (Tree a))) -> Split a (Tree a) -> Path a (Split a (Tree a)) @@ -1177,25 +1177,25 @@ -> [Tree a] -> Split a l NodeSplit a -u [Tree a] -before Path a (Tree a) -lp [Tree a] -middle Path a (Tree a) -rp [Tree a] -after) - There Path a (Split a (Tree a)) -path -> a -> [Tree a] -> [Tree a] -> PathNode a (Split a (Tree a)) +u [Tree a] +before Path a (Tree a) +lp [Tree a] +middle Path a (Tree a) +rp [Tree a] +after) + There Path a (Split a (Tree a)) +path -> a -> [Tree a] -> [Tree a] -> PathNode a (Split a (Tree a)) forall a l. a -> [Tree a] -> [Tree a] -> PathNode a l PathNode a -u [Tree a] -before [Tree a] -after PathNode a (Split a (Tree a)) +u [Tree a] +before [Tree a] +after PathNode a (Split a (Tree a)) -> Path a (Split a (Tree a)) -> Path a (Split a (Tree a)) forall a l. PathNode a l -> Path a l -> Path a l <| Path a (Split a (Tree a)) -path +path - process :: Tree a + process :: Tree a -> (ResultF ([Tree a], (VW, Path a (Tree a))) ([Tree a], @@ -1210,20 +1210,20 @@ (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a)))), [Tree a]) -process ch :: Tree a -ch@(Node a -u [Tree a] -chs) = \case +process ch :: Tree a +ch@(Node a +u [Tree a] +chs) = \case (ResultF ([Tree a], (VW, Path a (Tree a))) ([Tree a], Loc (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a)))) -NotFound, [Tree a] -after) -> case Tree a -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) -go Tree a -ch of +NotFound, [Tree a] +after) -> case Tree a -> ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) +go Tree a +ch of ResultF (VW, Path a (Tree a)) (Path a (Split a (Tree a))) NotFound -> (ResultF ([Tree a], (VW, Path a (Tree a))) @@ -1233,12 +1233,12 @@ (Path a (Split a (Tree a)))) forall a b. ResultF a b NotFound, Tree a -chTree a -> [Tree a] -> [Tree a] +chTree a -> [Tree a] -> [Tree a] forall a. a -> [a] -> [a] :[Tree a] -after) - Single (VW, Path a (Tree a)) -rightPath -> (([Tree a], (VW, Path a (Tree a))) +after) + Single (VW, Path a (Tree a)) +rightPath -> (([Tree a], (VW, Path a (Tree a))) -> ResultF ([Tree a], (VW, Path a (Tree a))) ([Tree a], @@ -1247,10 +1247,10 @@ (Path a (Split a (Tree a)))) forall a b. a -> ResultF a b Single ([], (VW, Path a (Tree a)) -rightPath), [Tree a] -after) - Both Path a (Split a (Tree a)) -split -> (([Tree a], +rightPath), [Tree a] +after) + Both Path a (Split a (Tree a)) +split -> (([Tree a], Loc (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a)))) @@ -1267,24 +1267,24 @@ (Path a (Split a (Tree a))) forall a b. b -> Loc a b There Path a (Split a (Tree a)) -split), [Tree a] -after) +split), [Tree a] +after) - (Single ([Tree a] -middle, path :: (VW, Path a (Tree a)) -path@(VW -x, Path a (Tree a) -rightPath)), [Tree a] -after) + (Single ([Tree a] +middle, path :: (VW, Path a (Tree a)) +path@(VW +x, Path a (Tree a) +rightPath)), [Tree a] +after) | a -> a -> VW -> a forall p. p -> p -> VW -> p other a -v a -w VW -x a -> a -> Bool +v a +w VW +x a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -u -> (([Tree a], +u -> (([Tree a], Loc (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a)))) @@ -1303,15 +1303,15 @@ Here (Tree a -> Path a (Tree a) forall l a. l -> Path a l Leaf Tree a -ch, [Tree a] -middle, Path a (Tree a) -rightPath)), [Tree a] -after) +ch, [Tree a] +middle, Path a (Tree a) +rightPath)), [Tree a] +after) | Bool otherwise -> case a -> ([Tree a], [Tree a], Path a (Tree a)) -> Path a (Tree a) forall a l. a -> ([Tree a], [Tree a], Path a l) -> Path a l pathNode a -u (([Tree a], [Tree a], Path a (Tree a)) -> Path a (Tree a)) +u (([Tree a], [Tree a], Path a (Tree a)) -> Path a (Tree a)) -> Maybe ([Tree a], [Tree a], Path a (Tree a)) -> Maybe (Path a (Tree a)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -1322,10 +1322,10 @@ findNodes (a -> a -> VW -> a forall p. p -> p -> VW -> p other a -v a -w VW -x) [Tree a] -chs of +v a +w VW +x) [Tree a] +chs of Maybe (Path a (Tree a)) Nothing -> (([Tree a], (VW, Path a (Tree a))) -> ResultF @@ -1336,14 +1336,14 @@ (Path a (Split a (Tree a)))) forall a b. a -> ResultF a b Single (Tree a -chTree a -> [Tree a] -> [Tree a] +chTree a -> [Tree a] -> [Tree a] forall a. a -> [a] -> [a] :[Tree a] -middle,(VW, Path a (Tree a)) -path), [Tree a] -after) - Just Path a (Tree a) -leftPath -> (([Tree a], +middle,(VW, Path a (Tree a)) +path), [Tree a] +after) + Just Path a (Tree a) +leftPath -> (([Tree a], Loc (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a)))) @@ -1360,17 +1360,17 @@ (Path a (Split a (Tree a))) forall a b. a -> Loc a b Here (Path a (Tree a) -leftPath, [Tree a] -middle, Path a (Tree a) -rightPath)), [Tree a] -after) +leftPath, [Tree a] +middle, Path a (Tree a) +rightPath)), [Tree a] +after) - (Both ([Tree a] -before, Loc + (Both ([Tree a] +before, Loc (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a))) -split), [Tree a] -after) -> (([Tree a], +split), [Tree a] +after) -> (([Tree a], Loc (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a)))) @@ -1382,28 +1382,28 @@ (Path a (Split a (Tree a)))) forall a b. b -> ResultF a b Both (Tree a -chTree a -> [Tree a] -> [Tree a] +chTree a -> [Tree a] -> [Tree a] forall a. a -> [a] -> [a] :[Tree a] -before, Loc +before, Loc (Path a (Tree a), [Tree a], Path a (Tree a)) (Path a (Split a (Tree a))) -split), [Tree a] -after) +split), [Tree a] +after) -- | Search for a given element in a bunch of trees. Returns the path towards -- the node if we find it. -findNodes :: Eq a => a -> [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) +findNodes :: Eq a => a -> [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) findNodes :: forall a. Eq a => a -> [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) -findNodes a -v = [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) -go +findNodes a +v = [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) +go where - go :: [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) -go [Tree a] -chs = case (Tree a + go :: [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) +go [Tree a] +chs = case (Tree a -> (Maybe ([Tree a], Path a (Tree a)), [Tree a]) -> (Maybe ([Tree a], Path a (Tree a)), [Tree a])) -> (Maybe ([Tree a], Path a (Tree a)), [Tree a]) @@ -1416,123 +1416,123 @@ foldr Tree a -> (Maybe ([Tree a], Path a (Tree a)), [Tree a]) -> (Maybe ([Tree a], Path a (Tree a)), [Tree a]) -process (Maybe ([Tree a], Path a (Tree a)) +process (Maybe ([Tree a], Path a (Tree a)) forall a. Maybe a Nothing, []) [Tree a] -chs of +chs of (Maybe ([Tree a], Path a (Tree a)) Nothing, [Tree a] _) -> Maybe ([Tree a], [Tree a], Path a (Tree a)) forall a. Maybe a Nothing - (Just ([Tree a] -before, Path a (Tree a) -path), [Tree a] -after) -> ([Tree a], [Tree a], Path a (Tree a)) + (Just ([Tree a] +before, Path a (Tree a) +path), [Tree a] +after) -> ([Tree a], [Tree a], Path a (Tree a)) -> Maybe ([Tree a], [Tree a], Path a (Tree a)) forall a. a -> Maybe a Just ([Tree a] -before, [Tree a] -after, Path a (Tree a) -path) +before, [Tree a] +after, Path a (Tree a) +path) - process :: Tree a + process :: Tree a -> (Maybe ([Tree a], Path a (Tree a)), [Tree a]) -> (Maybe ([Tree a], Path a (Tree a)), [Tree a]) -process Tree a -ch = \case +process Tree a +ch = \case (Maybe ([Tree a], Path a (Tree a)) -Nothing, [Tree a] -after) -> case Tree a -> Maybe (Path a (Tree a)) -findNode' Tree a -ch of +Nothing, [Tree a] +after) -> case Tree a -> Maybe (Path a (Tree a)) +findNode' Tree a +ch of Maybe (Path a (Tree a)) Nothing -> (Maybe ([Tree a], Path a (Tree a)) forall a. Maybe a Nothing, Tree a -chTree a -> [Tree a] -> [Tree a] +chTree a -> [Tree a] -> [Tree a] forall a. a -> [a] -> [a] :[Tree a] -after) - Just Path a (Tree a) -path -> (([Tree a], Path a (Tree a)) -> Maybe ([Tree a], Path a (Tree a)) +after) + Just Path a (Tree a) +path -> (([Tree a], Path a (Tree a)) -> Maybe ([Tree a], Path a (Tree a)) forall a. a -> Maybe a Just ([],Path a (Tree a) -path), [Tree a] -after) - (Just ([Tree a] -before, Path a (Tree a) -path), [Tree a] -after) -> (([Tree a], Path a (Tree a)) -> Maybe ([Tree a], Path a (Tree a)) +path), [Tree a] +after) + (Just ([Tree a] +before, Path a (Tree a) +path), [Tree a] +after) -> (([Tree a], Path a (Tree a)) -> Maybe ([Tree a], Path a (Tree a)) forall a. a -> Maybe a Just (Tree a -chTree a -> [Tree a] -> [Tree a] +chTree a -> [Tree a] -> [Tree a] forall a. a -> [a] -> [a] :[Tree a] -before, Path a (Tree a) -path), [Tree a] -after) +before, Path a (Tree a) +path), [Tree a] +after) - findNode' :: Tree a -> Maybe (Path a (Tree a)) -findNode' t :: Tree a -t@(Node a -u [Tree a] -chs) + findNode' :: Tree a -> Maybe (Path a (Tree a)) +findNode' t :: Tree a +t@(Node a +u [Tree a] +chs) | a -u a -> a -> Bool +u a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -v = Path a (Tree a) -> Maybe (Path a (Tree a)) +v = Path a (Tree a) -> Maybe (Path a (Tree a)) forall a. a -> Maybe a Just (Tree a -> Path a (Tree a) forall l a. l -> Path a l Leaf Tree a -t) +t) | Bool otherwise = a -> ([Tree a], [Tree a], Path a (Tree a)) -> Path a (Tree a) forall a l. a -> ([Tree a], [Tree a], Path a l) -> Path a l pathNode a -u (([Tree a], [Tree a], Path a (Tree a)) -> Path a (Tree a)) +u (([Tree a], [Tree a], Path a (Tree a)) -> Path a (Tree a)) -> Maybe ([Tree a], [Tree a], Path a (Tree a)) -> Maybe (Path a (Tree a)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Tree a] -> Maybe ([Tree a], [Tree a], Path a (Tree a)) -go [Tree a] -chs +go [Tree a] +chs -- | Smart constructor for producign a pathNode -pathNode :: a -> ([Tree a], [Tree a], Path a l) -> Path a l +pathNode :: a -> ([Tree a], [Tree a], Path a l) -> Path a l pathNode :: forall a l. a -> ([Tree a], [Tree a], Path a l) -> Path a l -pathNode a -u ([Tree a] -before, [Tree a] -after, Path a l -path) = a -> [Tree a] -> [Tree a] -> PathNode a l +pathNode a +u ([Tree a] +before, [Tree a] +after, Path a l +path) = a -> [Tree a] -> [Tree a] -> PathNode a l forall a l. a -> [Tree a] -> [Tree a] -> PathNode a l PathNode a -u [Tree a] -before [Tree a] -after PathNode a l -> Path a l -> Path a l +u [Tree a] +before [Tree a] +after PathNode a l -> Path a l -> Path a l forall a l. PathNode a l -> Path a l -> Path a l <| Path a l -path +path ---------------------------------------- -type EndPoint a = (a, [Tree a], [Tree a]) +type EndPoint a = (a, [Tree a], [Tree a]) -- | Split the leaf of the path -splitLeaf :: Ord k - => PlaneGraph' k v e - -> (k,k) -> SplitTree k (Tree k) -> SplitTree k (EndPoint k) +splitLeaf :: Ord k + => PlaneGraph' k v e + -> (k,k) -> SplitTree k (Tree k) -> SplitTree k (EndPoint k) splitLeaf :: forall k v e. Ord k => PlaneGraph' k v e -> (k, k) -> SplitTree k (Tree k) -> SplitTree k (EndPoint k) -splitLeaf PlaneGraph' k v e -gr (k -v',k -w') = (Tree k -> EndPoint k) +splitLeaf PlaneGraph' k v e +gr (k +v',k +w') = (Tree k -> EndPoint k) -> SplitTree k (Tree k) -> SplitTree k (EndPoint k) forall a b. (a -> b) -> SplitTree k a -> SplitTree k b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -1542,50 +1542,50 @@ -> SplitTree k (Tree k) -> SplitTree k (EndPoint k) forall a b. (a -> b) -> a -> b -$ \(Node k -u [Tree k] -chs) -> k -> [Tree k] -> k -> EndPoint k -split k -u [Tree k] -chs (if k -u k -> k -> Bool +$ \(Node k +u [Tree k] +chs) -> k -> [Tree k] -> k -> EndPoint k +split k +u [Tree k] +chs (if k +u k -> k -> Bool forall a. Eq a => a -> a -> Bool == k -v' then k -w' else k -v') +v' then k +w' else k +v') where - split :: k -> [Tree k] -> k -> EndPoint k -split k -v [Tree k] -chs k -w = case (Tree k -> Bool) -> [Tree k] -> ([Tree k], [Tree k]) + split :: k -> [Tree k] -> k -> EndPoint k +split k +v [Tree k] +chs k +w = case (Tree k -> Bool) -> [Tree k] -> ([Tree k], [Tree k]) forall a. (a -> Bool) -> [a] -> ([a], [a]) List.break (k -> Tree k -> Bool -hasEdge k -v) [Tree k] -chs of - ([Tree k] -before, Tree k -_:[Tree k] -after) -> (k -v, [Tree k] -before, [Tree k] -after) +hasEdge k +v) [Tree k] +chs of + ([Tree k] +before, Tree k +_:[Tree k] +after) -> (k +v, [Tree k] +before, [Tree k] +after) ([Tree k], [Tree k]) _ -> String -> EndPoint k forall a. HasCallStack => String -> a error String "splitLeaf: absurd. edge not found!?" - hasEdge :: k -> Tree k -> Bool -hasEdge k -v Tree k -w = Maybe e -> Bool + hasEdge :: k -> Tree k -> Bool +hasEdge k +v Tree k +w = Maybe e -> Bool forall a. Maybe a -> Bool isJust (Maybe e -> Bool) -> Maybe e -> Bool forall a b. (a -> b) -> a -> b $ PlaneGraph' k v e -grPlaneGraph' k v e +grPlaneGraph' k v e -> Getting (First e) (PlaneGraph' k v e) e -> Maybe e forall s a. s -> Getting (First a) s a -> Maybe a ^?EdgeIx (PlaneGraph' k v e) @@ -1597,69 +1597,69 @@ HasEdges' graph => EdgeIx graph -> IndexedTraversal' (EdgeIx graph) graph (Edge graph) edgeAt (k -v, Tree k -> k +v, Tree k -> k forall a. Tree a -> a root Tree k -w) +w) -- maybe False (F.elem (root w) . fst) $ gr^?vertexAt v -- note: this is linear in the number of edges out of v -- | Turn the split tree into a separator, and the trees inside the cycle, and outside the -- separator. -fromSplitTree :: Eq a => SplitTree a (EndPoint a) -> ([a],Vector 2 [Tree a]) +fromSplitTree :: Eq a => SplitTree a (EndPoint a) -> ([a],Vector 2 [Tree a]) fromSplitTree :: forall a. Eq a => SplitTree a (EndPoint a) -> ([a], Vector 2 [Tree a]) -fromSplitTree (SplitTree Path a (Split a (EndPoint a)) -t) = Path a (Split a (EndPoint a)) -> ([a], Vector 2 [Tree a]) -go Path a (Split a (EndPoint a)) -t +fromSplitTree (SplitTree Path a (Split a (EndPoint a)) +t) = Path a (Split a (EndPoint a)) -> ([a], Vector 2 [Tree a]) +go Path a (Split a (EndPoint a)) +t where - go :: Path a (Split a (EndPoint a)) -> ([a], Vector 2 [Tree a]) -go = \case - Leaf Split a (EndPoint a) -split -> Split a (EndPoint a) -> ([a], Vector 2 [Tree a]) + go :: Path a (Split a (EndPoint a)) -> ([a], Vector 2 [Tree a]) +go = \case + Leaf Split a (EndPoint a) +split -> Split a (EndPoint a) -> ([a], Vector 2 [Tree a]) forall a. Eq a => Split a (EndPoint a) -> ([a], Vector 2 [Tree a]) fromSplit Split a (EndPoint a) -split - Path a -u [Tree a] -before Path a (Split a (EndPoint a)) -path [Tree a] -after -> let ([a] -sep,Vector2 [Tree a] -inside [Tree a] -outside) = Path a (Split a (EndPoint a)) -> ([a], Vector 2 [Tree a]) -go Path a (Split a (EndPoint a)) -path +split + Path a +u [Tree a] +before Path a (Split a (EndPoint a)) +path [Tree a] +after -> let ([a] +sep,Vector2 [Tree a] +inside [Tree a] +outside) = Path a (Split a (EndPoint a)) -> ([a], Vector 2 [Tree a]) +go Path a (Split a (EndPoint a)) +path in (a -u a -> [a] -> [a] +u a -> [a] -> [a] forall a. a -> [a] -> [a] : [a] -sep,[Tree a] -> [Tree a] -> Vector 2 [Tree a] +sep,[Tree a] -> [Tree a] -> Vector 2 [Tree a] forall r. r -> r -> Vector 2 r Vector2 [Tree a] -inside ([Tree a] -before [Tree a] -> [Tree a] -> [Tree a] +inside ([Tree a] +before [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -outside [Tree a] -> [Tree a] -> [Tree a] +outside [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -after)) +after)) -- | Handling a split node -fromSplit :: Eq a => Split a (EndPoint a) -> ([a],Vector 2 [Tree a]) +fromSplit :: Eq a => Split a (EndPoint a) -> ([a],Vector 2 [Tree a]) fromSplit :: forall a. Eq a => Split a (EndPoint a) -> ([a], Vector 2 [Tree a]) fromSplit = \case - RootSplit (a -v,[Tree a] -beforeV,[Tree a] -afterV) [Tree a] -_ Path a (EndPoint a) -path [Tree a] + RootSplit (a +v,[Tree a] +beforeV,[Tree a] +afterV) [Tree a] +_ Path a (EndPoint a) +path [Tree a] _ -> case Path a (EndPoint a) -path of +path of Leaf (a _,[Tree a] _,[Tree a] @@ -1667,61 +1667,61 @@ forall a. HasCallStack => String -> a error String "w is a child of v, that shouldn't really happen" - Path a -u [Tree a] -_ Path a (EndPoint a) -path' [Tree a] + Path a +u [Tree a] +_ Path a (EndPoint a) +path' [Tree a] _ -> case (Tree a -> Bool) -> [Tree a] -> ([Tree a], [Tree a]) forall a. (a -> Bool) -> [a] -> ([a], [a]) List.break ((a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -u) (a -> Bool) -> (Tree a -> a) -> Tree a -> Bool +u) (a -> Bool) -> (Tree a -> a) -> Tree a -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . Tree a -> a forall a. Tree a -> a root) [Tree a] -beforeV of +beforeV of -- edge vw lies after the path from v via u to w - ([Tree a] -before, Tree a -_:[Tree a] -insideV) -> (a -v a -> [a] -> [a] + ([Tree a] +before, Tree a +_:[Tree a] +insideV) -> (a +v a -> [a] -> [a] forall a. a -> [a] -> [a] : a -u a -> [a] -> [a] +u a -> [a] -> [a] forall a. a -> [a] -> [a] : [a] -sep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] +sep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] forall r. r -> r -> Vector 2 r Vector2 [Tree a] -inside [Tree a] -outside) +inside [Tree a] +outside) where - ([a] -sep, Vector2 [Tree a] -insideU [Tree a] -beforeU) = Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) + ([a] +sep, Vector2 [Tree a] +insideU [Tree a] +beforeU) = Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) forall a. Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) fromPath Side After Path a (EndPoint a) -path' - inside :: [Tree a] -inside = [Tree a] -insideU [Tree a] -> [Tree a] -> [Tree a] +path' + inside :: [Tree a] +inside = [Tree a] +insideU [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -insideV - outside :: [Tree a] -outside = [Tree a] -before [Tree a] -> [Tree a] -> [Tree a] +insideV + outside :: [Tree a] +outside = [Tree a] +before [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -beforeU [Tree a] -> [Tree a] -> [Tree a] +beforeU [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -afterV +afterV -- ede vw lies before the path from v via u to w ([Tree a], [Tree a]) _ -> case (Tree a -> Bool) -> [Tree a] -> ([Tree a], [Tree a]) @@ -1729,112 +1729,112 @@ List.break ((a -> a -> Bool forall a. Eq a => a -> a -> Bool == a -u) (a -> Bool) -> (Tree a -> a) -> Tree a -> Bool +u) (a -> Bool) -> (Tree a -> a) -> Tree a -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . Tree a -> a forall a. Tree a -> a root) [Tree a] -afterV of - ([Tree a] -middle, Tree a -_:[Tree a] -afterU) -> (a -v a -> [a] -> [a] +afterV of + ([Tree a] +middle, Tree a +_:[Tree a] +afterU) -> (a +v a -> [a] -> [a] forall a. a -> [a] -> [a] : a -u a -> [a] -> [a] +u a -> [a] -> [a] forall a. a -> [a] -> [a] : [a] -sep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] +sep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] forall r. r -> r -> Vector 2 r Vector2 [Tree a] -inside [Tree a] -outside) +inside [Tree a] +outside) where - ([a] -sep, Vector2 [Tree a] -insideU [Tree a] -afterW) = Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) + ([a] +sep, Vector2 [Tree a] +insideU [Tree a] +afterW) = Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) forall a. Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) fromPath Side Before Path a (EndPoint a) -path' - inside :: [Tree a] -inside = [Tree a] -middle [Tree a] -> [Tree a] -> [Tree a] +path' + inside :: [Tree a] +inside = [Tree a] +middle [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -insideU - outside :: [Tree a] -outside = [Tree a] -beforeV [Tree a] -> [Tree a] -> [Tree a] +insideU + outside :: [Tree a] +outside = [Tree a] +beforeV [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -afterW [Tree a] -> [Tree a] -> [Tree a] +afterW [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -afterU +afterU ([Tree a], [Tree a]) _ -> String -> ([a], Vector 2 [Tree a]) forall a. HasCallStack => String -> a error String "fromSplit. Rootsplit (v,w) not found" - NodeSplit a -u [Tree a] -before Path a (EndPoint a) -lp [Tree a] -middle Path a (EndPoint a) -rp [Tree a] -after -> (a -u a -> [a] -> [a] + NodeSplit a +u [Tree a] +before Path a (EndPoint a) +lp [Tree a] +middle Path a (EndPoint a) +rp [Tree a] +after -> (a +u a -> [a] -> [a] forall a. a -> [a] -> [a] : [a] -lSep [a] -> [a] -> [a] +lSep [a] -> [a] -> [a] forall a. Semigroup a => a -> a -> a <> [a] -rSep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] +rSep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] forall r. r -> r -> Vector 2 r Vector2 [Tree a] -inside [Tree a] -outside) +inside [Tree a] +outside) where - ([a] -lSep, Vector2 [Tree a] -lInside [Tree a] -lOutside) = Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) + ([a] +lSep, Vector2 [Tree a] +lInside [Tree a] +lOutside) = Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) forall a. Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) fromPath Side After Path a (EndPoint a) -lp - ([a] -rSep, Vector2 [Tree a] -rInside [Tree a] -rOutside) = Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) +lp + ([a] +rSep, Vector2 [Tree a] +rInside [Tree a] +rOutside) = Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) forall a. Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) fromPath Side Before Path a (EndPoint a) -rp +rp - inside :: [Tree a] -inside = [Tree a] -lInside [Tree a] -> [Tree a] -> [Tree a] + inside :: [Tree a] +inside = [Tree a] +lInside [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -rInside - outside :: [Tree a] -outside = [Tree a] -before [Tree a] -> [Tree a] -> [Tree a] +rInside + outside :: [Tree a] +outside = [Tree a] +before [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -lOutside [Tree a] -> [Tree a] -> [Tree a] +lOutside [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -rOutside [Tree a] -> [Tree a] -> [Tree a] +rOutside [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -after +after -data Side = Before | After deriving (Int -> Side -> ShowS +data Side = Before | After deriving (Int -> Side -> ShowS [Side] -> ShowS Side -> String (Int -> Side -> ShowS) @@ -1847,7 +1847,7 @@ show :: Side -> String $cshowList :: [Side] -> ShowS showList :: [Side] -> ShowS -Show,Side -> Side -> Bool +Show,Side -> Side -> Bool (Side -> Side -> Bool) -> (Side -> Side -> Bool) -> Eq Side forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Side -> Side -> Bool @@ -1857,84 +1857,84 @@ Eq) -- | And handling the path. The side indicates which side is the inside. -fromPath :: Side -> Path a (EndPoint a) -> ([a],Vector 2 [Tree a]) +fromPath :: Side -> Path a (EndPoint a) -> ([a],Vector 2 [Tree a]) fromPath :: forall a. Side -> Path a (EndPoint a) -> ([a], Vector 2 [Tree a]) -fromPath Side -sel = Path a (a, [Tree a], [Tree a]) -> ([a], Vector 2 [Tree a]) -go +fromPath Side +sel = Path a (a, [Tree a], [Tree a]) -> ([a], Vector 2 [Tree a]) +go where - go :: Path a (a, [Tree a], [Tree a]) -> ([a], Vector 2 [Tree a]) -go = \case - Leaf (a -v, [Tree a] -before, [Tree a] -after) -> case Side -sel of + go :: Path a (a, [Tree a], [Tree a]) -> ([a], Vector 2 [Tree a]) +go = \case + Leaf (a +v, [Tree a] +before, [Tree a] +after) -> case Side +sel of Side Before -> ([a -v], [Tree a] -> [Tree a] -> Vector 2 [Tree a] +v], [Tree a] -> [Tree a] -> Vector 2 [Tree a] forall r. r -> r -> Vector 2 r Vector2 [Tree a] -before [Tree a] -after) +before [Tree a] +after) Side After -> ([a -v], [Tree a] -> [Tree a] -> Vector 2 [Tree a] +v], [Tree a] -> [Tree a] -> Vector 2 [Tree a] forall r. r -> r -> Vector 2 r Vector2 [Tree a] -after [Tree a] -before) - Path a -u [Tree a] -before Path a (a, [Tree a], [Tree a]) -path [Tree a] -after -> let ([a] -sep, Vector2 [Tree a] -inside [Tree a] -outside) = Path a (a, [Tree a], [Tree a]) -> ([a], Vector 2 [Tree a]) -go Path a (a, [Tree a], [Tree a]) -path +after [Tree a] +before) + Path a +u [Tree a] +before Path a (a, [Tree a], [Tree a]) +path [Tree a] +after -> let ([a] +sep, Vector2 [Tree a] +inside [Tree a] +outside) = Path a (a, [Tree a], [Tree a]) -> ([a], Vector 2 [Tree a]) +go Path a (a, [Tree a], [Tree a]) +path in case Side -sel of +sel of Side Before -> (a -u a -> [a] -> [a] +u a -> [a] -> [a] forall a. a -> [a] -> [a] : [a] -sep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] +sep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] forall r. r -> r -> Vector 2 r Vector2 ([Tree a] -before [Tree a] -> [Tree a] -> [Tree a] +before [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -inside) ([Tree a] -after [Tree a] -> [Tree a] -> [Tree a] +inside) ([Tree a] +after [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -outside)) +outside)) Side After -> (a -u a -> [a] -> [a] +u a -> [a] -> [a] forall a. a -> [a] -> [a] : [a] -sep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] +sep, [Tree a] -> [Tree a] -> Vector 2 [Tree a] forall r. r -> r -> Vector 2 r Vector2 ([Tree a] -after [Tree a] -> [Tree a] -> [Tree a] +after [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -inside) ([Tree a] -before [Tree a] -> [Tree a] -> [Tree a] +inside) ([Tree a] +before [Tree a] -> [Tree a] -> [Tree a] forall a. Semigroup a => a -> a -> a <> [Tree a] -outside)) +outside)) -class IsWeight w where - data Weighted w :: Type -> Type - getWeight :: Weighted w a -> w +class IsWeight w where + data Weighted w :: Type -> Type + getWeight :: Weighted w a -> w instance IsWeight Int where - data Weighted Int a = Weighted {-#UNPACK#-}!Int a deriving (Int -> Weighted Int a -> ShowS + data Weighted Int a = Weighted {-#UNPACK#-}!Int a deriving (Int -> Weighted Int a -> ShowS [Weighted Int a] -> ShowS Weighted Int a -> String (Int -> Weighted Int a -> ShowS) @@ -1952,7 +1952,7 @@ show :: Weighted Int a -> String $cshowList :: forall a. Show a => [Weighted Int a] -> ShowS showList :: [Weighted Int a] -> ShowS -Show,Weighted Int a -> Weighted Int a -> Bool +Show,Weighted Int a -> Weighted Int a -> Bool (Weighted Int a -> Weighted Int a -> Bool) -> (Weighted Int a -> Weighted Int a -> Bool) -> Eq (Weighted Int a) @@ -1962,7 +1962,7 @@ == :: Weighted Int a -> Weighted Int a -> Bool $c/= :: forall a. Eq a => Weighted Int a -> Weighted Int a -> Bool /= :: Weighted Int a -> Weighted Int a -> Bool -Eq,(forall a b. (a -> b) -> Weighted Int a -> Weighted Int b) +Eq,(forall a b. (a -> b) -> Weighted Int a -> Weighted Int b) -> (forall a b. a -> Weighted Int b -> Weighted Int a) -> Functor (Weighted Int) forall a b. a -> Weighted Int b -> Weighted Int a @@ -1975,34 +1975,34 @@ $c<$ :: forall a b. a -> Weighted Int b -> Weighted Int a <$ :: forall a b. a -> Weighted Int b -> Weighted Int a Functor) - getWeight :: forall a. Weighted Int a -> Int -getWeight (Weighted Int -w a + getWeight :: forall a. Weighted Int a -> Int +getWeight (Weighted Int +w a _) = Int -w +w -mkSeparator :: (Num w, IsWeight w) - => (a,a) -> Tree (Weighted w a) -> Vector 2 (Tree (Weighted w a)) +mkSeparator :: (Num w, IsWeight w) + => (a,a) -> Tree (Weighted w a) -> Vector 2 (Tree (Weighted w a)) mkSeparator :: forall w a. (Num w, IsWeight w) => (a, a) -> Tree (Weighted w a) -> Vector 2 (Tree (Weighted w a)) -mkSeparator (a -v,a -w) = Tree (Weighted w a) -> Vector 2 (Tree (Weighted w a)) +mkSeparator (a +v,a +w) = Tree (Weighted w a) -> Vector 2 (Tree (Weighted w a)) forall {a} {a}. Tree a -> a -go +go where - go :: Tree a -> a -go (Node a -u [Tree a] -chs) = a + go :: Tree a -> a +go (Node a +u [Tree a] +chs) = a forall a. HasCallStack => a undefined -costs :: (Num w, IsWeight w) => [Tree (Weighted w a)] -> w +costs :: (Num w, IsWeight w) => [Tree (Weighted w a)] -> w costs :: forall w a. (Num w, IsWeight w) => [Tree (Weighted w a)] -> w costs = [w] -> w forall a. Num a => [a] -> a @@ -2027,18 +2027,18 @@ -- | Annotate tht tree with the size of the subtrees -annotate :: Tree k -> Tree (Weighted Int k) +annotate :: Tree k -> Tree (Weighted Int k) annotate :: forall k. Tree k -> Tree (Weighted Int k) -annotate (Node k -v [Tree k] -chs) = let chs' :: [Tree (Weighted Int k)] -chs' = (Tree k -> Tree (Weighted Int k)) +annotate (Node k +v [Tree k] +chs) = let chs' :: [Tree (Weighted Int k)] +chs' = (Tree k -> Tree (Weighted Int k)) -> [Tree k] -> [Tree (Weighted Int k)] forall a b. (a -> b) -> [a] -> [b] map Tree k -> Tree (Weighted Int k) forall k. Tree k -> Tree (Weighted Int k) annotate [Tree k] -chs +chs in Weighted Int k -> [Tree (Weighted Int k)] -> Tree (Weighted Int k) forall a. a -> [Tree a] -> Tree a Node (Int -> k -> Weighted Int k @@ -2049,21 +2049,21 @@ + [Tree (Weighted Int k)] -> Int forall w a. (Num w, IsWeight w) => [Tree (Weighted w a)] -> w costs [Tree (Weighted Int k)] -chs') k -v) [Tree (Weighted Int k)] -chs' +chs') k +v) [Tree (Weighted Int k)] +chs' -graphEdges :: Ord k => PlaneGraph' k v e -> Set (k,k) +graphEdges :: Ord k => PlaneGraph' k v e -> Set (k,k) graphEdges :: forall k v e. Ord k => PlaneGraph' k v e -> Set (k, k) -graphEdges PlaneGraph' k v e -gr = [(k, k)] -> Set (k, k) +graphEdges PlaneGraph' k v e +gr = [(k, k)] -> Set (k, k) forall a. Ord a => [a] -> Set a Set.fromList [ (k -u,k -v) | (k -u,k -v) <- PlaneGraph' k v e -grPlaneGraph' k v e +u,k +v) | (k +u,k +v) <- PlaneGraph' k v e +grPlaneGraph' k v e -> Getting (Endo [(k, k)]) (PlaneGraph' k v e) (k, k) -> [(k, k)] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..Indexed (k, k) e (Const (Endo [(k, k)]) e) @@ -2095,28 +2095,28 @@ (Indexable i p, Contravariant f, Functor f) => p i (f i) -> Indexed i s (f s) asIndex, k -u k -> k -> Bool +u k -> k -> Bool forall a. Ord a => a -> a -> Bool <= k -v ] +v ] -- Map.foldMapWithKey (\u (es,_) -> Set.fromList [ (u,v) | v <- Map.elems es, u <= v]) -treeEdges :: Ord k => Tree k -> Set (k,k) +treeEdges :: Ord k => Tree k -> Set (k,k) treeEdges :: forall k. Ord k => Tree k -> Set (k, k) -treeEdges (Node k -u [Tree k] -chs) = [(k, k)] -> Set (k, k) +treeEdges (Node k +u [Tree k] +chs) = [(k, k)] -> Set (k, k) forall a. Ord a => [a] -> Set a Set.fromList [ (k, k) -> (k, k) forall {b}. Ord b => (b, b) -> (b, b) -orient (k -u,k -v) | Node k -v [Tree k] +orient (k +u,k +v) | Node k +v [Tree k] _ <- [Tree k] -chs ] +chs ] Set (k, k) -> Set (k, k) -> Set (k, k) forall a. Semigroup a => a -> a -> a <> (Tree k -> Set (k, k)) -> [Tree k] -> Set (k, k) @@ -2127,38 +2127,38 @@ foldMap Tree k -> Set (k, k) forall k. Ord k => Tree k -> Set (k, k) treeEdges [Tree k] -chs +chs where - orient :: (b, b) -> (b, b) -orient (b -a,b -b) = if b -a b -> b -> Bool + orient :: (b, b) -> (b, b) +orient (b +a,b +b) = if b +a b -> b -> Bool forall a. Ord a => a -> a -> Bool <= b -b then (b -a,b -b) else (b -b,b -a) +b then (b +a,b +b) else (b +b,b +a) -root :: Tree a -> a +root :: Tree a -> a root :: forall a. Tree a -> a -root (Node a -v [Tree a] +root (Node a +v [Tree a] _) = a -v +v -------------------------------------------------------------------------------- -- | Find the last element matching some predicate -findR :: (a -> Bool) -> [a] -> Maybe a +findR :: (a -> Bool) -> [a] -> Maybe a findR :: forall a. (a -> Bool) -> [a] -> Maybe a -findR a -> Bool -p = (a -> Bool) -> [a] -> Maybe a +findR a -> Bool +p = (a -> Bool) -> [a] -> Maybe a forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Maybe a List.find a -> Bool -p ([a] -> Maybe a) -> ([a] -> [a]) -> [a] -> Maybe a +p ([a] -> Maybe a) -> ([a] -> [a]) -> [a] -> Maybe a forall b c a. (b -> c) -> (a -> b) -> a -> c . [a] -> [a] forall a. [a] -> [a] diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Type.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Type.html index 778601653..cd7a70a24 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Type.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.Type.html @@ -68,8 +68,8 @@ -- | A minimization daigram just maps every plane on the lower envelope to the region -- above which it is minimal. Every plane has at most one such a region. -newtype MinimizationDiagram r plane = MinimizationDiagram (NEMap plane (Region r (Point 2 r))) - deriving stock (Int -> MinimizationDiagram r plane -> ShowS +newtype MinimizationDiagram r plane = MinimizationDiagram (NEMap plane (Region r (Point 2 r))) + deriving stock (Int -> MinimizationDiagram r plane -> ShowS [MinimizationDiagram r plane] -> ShowS MinimizationDiagram r plane -> String (Int -> MinimizationDiagram r plane -> ShowS) @@ -99,7 +99,7 @@ (Show plane, Show r) => [MinimizationDiagram r plane] -> ShowS showList :: [MinimizationDiagram r plane] -> ShowS -Show,MinimizationDiagram r plane -> MinimizationDiagram r plane -> Bool +Show,MinimizationDiagram r plane -> MinimizationDiagram r plane -> Bool (MinimizationDiagram r plane -> MinimizationDiagram r plane -> Bool) -> (MinimizationDiagram r plane @@ -119,19 +119,19 @@ /= :: MinimizationDiagram r plane -> MinimizationDiagram r plane -> Bool Eq) -type instance NumType (MinimizationDiagram r plane) = r -type instance Dimension (MinimizationDiagram r plane) = 2 +type instance NumType (MinimizationDiagram r plane) = r +type instance Dimension (MinimizationDiagram r plane) = 2 -instance Constrained (MinimizationDiagram r) where - type Dom (MinimizationDiagram r) plane = (Ord plane, NumType plane ~ r) +instance Constrained (MinimizationDiagram r) where + type Dom (MinimizationDiagram r) plane = (Ord plane, NumType plane ~ r) -instance CFunctor (MinimizationDiagram r) where - cmap :: forall a b. +instance CFunctor (MinimizationDiagram r) where + cmap :: forall a b. (Dom (MinimizationDiagram r) a, Dom (MinimizationDiagram r) b) => (a -> b) -> MinimizationDiagram r a -> MinimizationDiagram r b -cmap a -> b -f (MinimizationDiagram NEMap a (Region r (Point 2 r)) -m) = NEMap b (Region r (Point 2 r)) -> MinimizationDiagram r b +cmap a -> b +f (MinimizationDiagram NEMap a (Region r (Point 2 r)) +m) = NEMap b (Region r (Point 2 r)) -> MinimizationDiagram r b forall r plane. NEMap plane (Region r (Point 2 r)) -> MinimizationDiagram r plane MinimizationDiagram (NEMap b (Region r (Point 2 r)) -> MinimizationDiagram r b) @@ -141,35 +141,35 @@ -> NEMap a (Region r (Point 2 r)) -> NEMap b (Region r (Point 2 r)) forall k2 k1 a. Ord k2 => (k1 -> k2) -> NEMap k1 a -> NEMap k2 a NEMap.mapKeys a -> b -f NEMap a (Region r (Point 2 r)) -m +f NEMap a (Region r (Point 2 r)) +m -- | Get the underlying Map that relates every plane in the envelope to its projected region -asMap :: MinimizationDiagram r plane -> NEMap plane (Region r (Point 2 r)) +asMap :: MinimizationDiagram r plane -> NEMap plane (Region r (Point 2 r)) asMap :: forall r plane. MinimizationDiagram r plane -> NEMap plane (Region r (Point 2 r)) -asMap (MinimizationDiagram NEMap plane (Region r (Point 2 r)) -m) = NEMap plane (Region r (Point 2 r)) -m +asMap (MinimizationDiagram NEMap plane (Region r (Point 2 r)) +m) = NEMap plane (Region r (Point 2 r)) +m -- | A region in the minimization diagram. The boundary is given in CCW order; i.e. the -- region is to the left of the boundary. -data Region r point = Bounded (Cyclic NonEmpty point) - | Unbounded (Vector 2 r) +data Region r point = Bounded (Cyclic NonEmpty point) + | Unbounded (Vector 2 r) -- ^ vector indicating the direction of the unbounded edge -- incident to the first vertex. Note that this vector -- thus points INTO vertex v. - (NonEmpty point) + (NonEmpty point) -- ^ the vertices in CCW order, - (Vector 2 r) + (Vector 2 r) -- ^ the vector indicating the direction of the unbounded -- edge incident to the last vertex. The vector points -- away from the vertex (i.e. towards +infty). - deriving stock (Int -> Region r point -> ShowS + deriving stock (Int -> Region r point -> ShowS [Region r point] -> ShowS Region r point -> String (Int -> Region r point -> ShowS) @@ -191,7 +191,7 @@ show :: Region r point -> String $cshowList :: forall r point. (Show point, Show r) => [Region r point] -> ShowS showList :: [Region r point] -> ShowS -Show,Region r point -> Region r point -> Bool +Show,Region r point -> Region r point -> Bool (Region r point -> Region r point -> Bool) -> (Region r point -> Region r point -> Bool) -> Eq (Region r point) @@ -207,7 +207,7 @@ (Eq point, Eq r) => Region r point -> Region r point -> Bool /= :: Region r point -> Region r point -> Bool -Eq,(forall a b. (a -> b) -> Region r a -> Region r b) +Eq,(forall a b. (a -> b) -> Region r a -> Region r b) -> (forall a b. a -> Region r b -> Region r a) -> Functor (Region r) forall a b. a -> Region r b -> Region r a @@ -221,7 +221,7 @@ fmap :: forall a b. (a -> b) -> Region r a -> Region r b $c<$ :: forall r a b. a -> Region r b -> Region r a <$ :: forall a b. a -> Region r b -> Region r a -Functor,(forall m. Monoid m => Region r m -> m) +Functor,(forall m. Monoid m => Region r m -> m) -> (forall m a. Monoid m => (a -> m) -> Region r a -> m) -> (forall m a. Monoid m => (a -> m) -> Region r a -> m) -> (forall a b. (a -> b -> b) -> b -> Region r a -> b) @@ -314,7 +314,7 @@ sum :: forall a. Num a => Region r a -> a $cproduct :: forall r a. Num a => Region r a -> a product :: forall a. Num a => Region r a -> a -Foldable,Functor (Region r) +Foldable,Functor (Region r) Foldable (Region r) (Functor (Region r), Foldable (Region r)) => (forall (f :: * -> *) a b. @@ -389,19 +389,19 @@ sequence :: forall (m :: * -> *) a. Monad m => Region r (m a) -> m (Region r a) Traversable) -type instance NumType (Region r point) = r -type instance Dimension (Region r point) = Dimension point +type instance NumType (Region r point) = r +type instance Dimension (Region r point) = Dimension point -- | Computes a convex polygon corresponding to the region. -- -- pre: the bounding box (strictly) contains all vertices in its interior -toConvexPolygonIn :: ( Rectangle_ rectangle corner, Point_ corner 2 r - , Point_ point 2 r, Ord r, Fractional r +toConvexPolygonIn :: ( Rectangle_ rectangle corner, Point_ corner 2 r + , Point_ point 2 r, Ord r, Fractional r ) - => rectangle -> Region r point - -> Either (ConvexPolygonF NonEmpty point) - (ConvexPolygonF NonEmpty (OriginalOrExtra point (Point 2 r))) + => rectangle -> Region r point + -> Either (ConvexPolygonF NonEmpty point) + (ConvexPolygonF NonEmpty (OriginalOrExtra point (Point 2 r))) toConvexPolygonIn :: forall rectangle corner r point. (Rectangle_ rectangle corner, Point_ corner 2 r, Point_ point 2 r, Ord r, Fractional r) => @@ -410,10 +410,10 @@ -> Either (ConvexPolygonF NonEmpty point) (ConvexPolygonF NonEmpty (OriginalOrExtra point (Point 2 r))) -toConvexPolygonIn rectangle -rect = \case - Bounded Cyclic NonEmpty point -vertices -> ConvexPolygonF NonEmpty point +toConvexPolygonIn rectangle +rect = \case + Bounded Cyclic NonEmpty point +vertices -> ConvexPolygonF NonEmpty point -> Either (ConvexPolygonF NonEmpty point) (ConvexPolygonF NonEmpty (OriginalOrExtra point (Point 2 r))) @@ -435,28 +435,28 @@ Foldable1 f => f point -> ConvexPolygonF NonEmpty point uncheckedFromCCWPoints Cyclic NonEmpty point -vertices - Unbounded Vector 2 r -u NonEmpty point -pts Vector 2 r -v -> let p :: point -p = NonEmpty point -> point +vertices + Unbounded Vector 2 r +u NonEmpty point +pts Vector 2 r +v -> let p :: point +p = NonEmpty point -> point forall a. NonEmpty a -> a NonEmpty.head NonEmpty point -pts - q :: point -q = NonEmpty point -> point +pts + q :: point +q = NonEmpty point -> point forall a. NonEmpty a -> a NonEmpty.last NonEmpty point -pts - hp :: HalfLine (Point 2 r) -hp = Point 2 r +pts + hp :: HalfLine (Point 2 r) +hp = Point 2 r -> Vector (Dimension (Point 2 r)) (NumType (Point 2 r)) -> HalfLine (Point 2 r) forall point. point -> Vector (Dimension point) (NumType point) -> HalfLine point HalfLine (point -ppoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r +ppoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point (Point 2 r) forall point (d :: Nat) r. @@ -469,15 +469,15 @@ (Num r, Vector_ vector d r) => r -> vector -> vector *^ Vector 2 r -u) - hq :: HalfLine (Point 2 r) -hq = Point 2 r +u) + hq :: HalfLine (Point 2 r) +hq = Point 2 r -> Vector (Dimension (Point 2 r)) (NumType (Point 2 r)) -> HalfLine (Point 2 r) forall point. point -> Vector (Dimension point) (NumType point) -> HalfLine point HalfLine (point -qpoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r +qpoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point (Point 2 r) forall point (d :: Nat) r. @@ -486,9 +486,9 @@ Lens' point (Point 2 r) asPoint) Vector 2 r Vector (Dimension (Point 2 r)) (NumType (Point 2 r)) -v - extras :: NonEmpty (Point 2 r) -extras = HalfLine (Point 2 r) +v + extras :: NonEmpty (Point 2 r) +extras = HalfLine (Point 2 r) -> HalfLine (Point 2 r) -> Box (Point 2 r) -> NonEmpty (Point 2 r) forall rectangle corner r point. (Rectangle_ rectangle corner, Point_ corner 2 r, Point_ point 2 r, @@ -501,14 +501,14 @@ HalfLine point -> HalfLine point -> rectangle -> NonEmpty (Point 2 r) extraPoints HalfLine (Point 2 r) -hp HalfLine (Point 2 r) -hq (Box (Point 2 r) -> NonEmpty (Point 2 r)) +hp HalfLine (Point 2 r) +hq (Box (Point 2 r) -> NonEmpty (Point 2 r)) -> Box (Point 2 r) -> NonEmpty (Point 2 r) forall a b. (a -> b) -> a -> b $ Point 2 r -> Point 2 r -> Box (Point 2 r) forall point. point -> point -> Box point Box (rectangle -rectrectangle -> Getting (Point 2 r) rectangle (Point 2 r) -> Point 2 r +rectrectangle -> Getting (Point 2 r) rectangle (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(corner -> Const (Point 2 r) corner) -> rectangle -> Const (Point 2 r) rectangle @@ -528,7 +528,7 @@ Lens' corner (Point 2 r) asPoint) (rectangle -rectrectangle -> Getting (Point 2 r) rectangle (Point 2 r) -> Point 2 r +rectrectangle -> Getting (Point 2 r) rectangle (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(corner -> Const (Point 2 r) corner) -> rectangle -> Const (Point 2 r) rectangle @@ -589,7 +589,7 @@ -> NonEmpty (OriginalOrExtra point (Point 2 r)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> NonEmpty (Point 2 r) -extras) NonEmpty (OriginalOrExtra point (Point 2 r)) +extras) NonEmpty (OriginalOrExtra point (Point 2 r)) -> NonEmpty (OriginalOrExtra point (Point 2 r)) -> NonEmpty (OriginalOrExtra point (Point 2 r)) forall a. Semigroup a => a -> a -> a @@ -599,18 +599,18 @@ -> NonEmpty point -> NonEmpty (OriginalOrExtra point (Point 2 r)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> NonEmpty point -pts) +pts) -- | computes the extra vertices that we have to insert to make an unbounded region bounded -extraPoints :: ( Rectangle_ rectangle corner, Point_ corner 2 r - , Point_ point 2 r, Fractional r, Ord r - , IsIntersectableWith (HalfLine point) (ClosedLineSegment corner) - , Intersection (HalfLine point) (ClosedLineSegment corner) - ~ Maybe (HalfLineLineSegmentIntersection (Point 2 r) - (ClosedLineSegment corner)) +extraPoints :: ( Rectangle_ rectangle corner, Point_ corner 2 r + , Point_ point 2 r, Fractional r, Ord r + , IsIntersectableWith (HalfLine point) (ClosedLineSegment corner) + , Intersection (HalfLine point) (ClosedLineSegment corner) + ~ Maybe (HalfLineLineSegmentIntersection (Point 2 r) + (ClosedLineSegment corner)) ) - => HalfLine point -> HalfLine point -> rectangle - -> NonEmpty (Point 2 r) + => HalfLine point -> HalfLine point -> rectangle + -> NonEmpty (Point 2 r) extraPoints :: forall rectangle corner r point. (Rectangle_ rectangle corner, Point_ corner 2 r, Point_ point 2 r, Fractional r, Ord r, @@ -621,44 +621,44 @@ (Point 2 r) (ClosedLineSegment corner))) => HalfLine point -> HalfLine point -> rectangle -> NonEmpty (Point 2 r) -extraPoints HalfLine point -hp HalfLine point -hq rectangle -rect = NonEmpty (Point 2 r) -> NonEmpty (Point 2 r) -noDuplicates (NonEmpty (Point 2 r) -> NonEmpty (Point 2 r)) +extraPoints HalfLine point +hp HalfLine point +hq rectangle +rect = NonEmpty (Point 2 r) -> NonEmpty (Point 2 r) +noDuplicates (NonEmpty (Point 2 r) -> NonEmpty (Point 2 r)) -> NonEmpty (Point 2 r) -> NonEmpty (Point 2 r) forall a b. (a -> b) -> a -> b $ Point 2 r -q Point 2 r -> [Point 2 r] -> NonEmpty (Point 2 r) +q Point 2 r -> [Point 2 r] -> NonEmpty (Point 2 r) forall a. a -> [a] -> NonEmpty a :| CardinalDirection -> CardinalDirection -> rectangle -> [Point 2 r] forall rectangle point r. (Rectangle_ rectangle point, Point_ point 2 r, Num r) => CardinalDirection -> CardinalDirection -> rectangle -> [Point 2 r] cornersInBetween CardinalDirection -qSide CardinalDirection -pSide rectangle -rect [Point 2 r] -> [Point 2 r] -> [Point 2 r] +qSide CardinalDirection +pSide rectangle +rect [Point 2 r] -> [Point 2 r] -> [Point 2 r] forall a. Semigroup a => a -> a -> a <> [Point 2 r -p] +p] -- if the intersection point coincides with a corner then the current code includes -- the corner. We use the noDuplicates to get rid of those. where - (Point 2 r -q,CardinalDirection -qSide) = HalfLine point -> (Point 2 r, CardinalDirection) -intersectionPoint HalfLine point -hq - (Point 2 r -p,CardinalDirection -pSide) = HalfLine point -> (Point 2 r, CardinalDirection) -intersectionPoint HalfLine point -hp + (Point 2 r +q,CardinalDirection +qSide) = HalfLine point -> (Point 2 r, CardinalDirection) +intersectionPoint HalfLine point +hq + (Point 2 r +p,CardinalDirection +pSide) = HalfLine point -> (Point 2 r, CardinalDirection) +intersectionPoint HalfLine point +hp - intersectionPoint :: HalfLine point -> (Point 2 r, CardinalDirection) -intersectionPoint HalfLine point -h = case First (Point 2 r, CardinalDirection) + intersectionPoint :: HalfLine point -> (Point 2 r, CardinalDirection) +intersectionPoint HalfLine point +h = case First (Point 2 r, CardinalDirection) -> Maybe (Point 2 r, CardinalDirection) forall a. First a -> Maybe a getFirst (First (Point 2 r, CardinalDirection) @@ -667,19 +667,19 @@ -> Maybe (Point 2 r, CardinalDirection) forall a b. (a -> b) -> a -> b $ HalfLine point -> First (Point 2 r, CardinalDirection) -intersectionPoint' HalfLine point -h of +intersectionPoint' HalfLine point +h of Maybe (Point 2 r, CardinalDirection) Nothing -> String -> (Point 2 r, CardinalDirection) forall a. HasCallStack => String -> a error String "extraPoints: precondititon failed " - Just (Point 2 r, CardinalDirection) -x -> (Point 2 r, CardinalDirection) -x - intersectionPoint' :: HalfLine point -> First (Point 2 r, CardinalDirection) -intersectionPoint' HalfLine point -h = ((CardinalDirection + Just (Point 2 r, CardinalDirection) +x -> (Point 2 r, CardinalDirection) +x + intersectionPoint' :: HalfLine point -> First (Point 2 r, CardinalDirection) +intersectionPoint' HalfLine point +h = ((CardinalDirection -> ClosedLineSegment corner -> First (Point 2 r, CardinalDirection)) -> Sides (ClosedLineSegment corner) @@ -706,7 +706,7 @@ (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Sides (ClosedLineSegment point) sides rectangle -rect) ((CardinalDirection +rect) ((CardinalDirection -> ClosedLineSegment corner -> First (Point 2 r, CardinalDirection)) -> First (Point 2 r, CardinalDirection)) @@ -715,18 +715,18 @@ -> First (Point 2 r, CardinalDirection)) -> First (Point 2 r, CardinalDirection) forall a b. (a -> b) -> a -> b -$ \CardinalDirection -side ClosedLineSegment corner -seg -> +$ \CardinalDirection +side ClosedLineSegment corner +seg -> case HalfLine point -h HalfLine point +h HalfLine point -> ClosedLineSegment corner -> Intersection (HalfLine point) (ClosedLineSegment corner) forall g h. IsIntersectableWith g h => g -> h -> Intersection g h `intersect` ClosedLineSegment corner -seg of - Just (HalfLine_x_LineSegment_Point Point 2 r -x) -> Maybe (Point 2 r, CardinalDirection) +seg of + Just (HalfLine_x_LineSegment_Point Point 2 r +x) -> Maybe (Point 2 r, CardinalDirection) -> First (Point 2 r, CardinalDirection) forall a. Maybe a -> First a First (Maybe (Point 2 r, CardinalDirection) @@ -738,8 +738,8 @@ -> Maybe (Point 2 r, CardinalDirection) forall a. a -> Maybe a Just (Point 2 r -x, CardinalDirection -side) +x, CardinalDirection +side) Intersection (HalfLine point) (ClosedLineSegment corner) _ -> Maybe (Point 2 r, CardinalDirection) -> First (Point 2 r, CardinalDirection) @@ -748,8 +748,8 @@ forall a. Maybe a Nothing - noDuplicates :: NonEmpty (Point 2 r) -> NonEmpty (Point 2 r) -noDuplicates = (NonEmpty (Point 2 r) -> Point 2 r) + noDuplicates :: NonEmpty (Point 2 r) -> NonEmpty (Point 2 r) +noDuplicates = (NonEmpty (Point 2 r) -> Point 2 r) -> NonEmpty (NonEmpty (Point 2 r)) -> NonEmpty (Point 2 r) forall a b. (a -> b) -> NonEmpty a -> NonEmpty b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -766,15 +766,15 @@ -- | Computes the corners in between the two given sides (in CCW order) -cornersInBetween :: (Rectangle_ rectangle point, Point_ point 2 r, Num r) - => CardinalDirection -> CardinalDirection -> rectangle -> [Point 2 r] +cornersInBetween :: (Rectangle_ rectangle point, Point_ point 2 r, Num r) + => CardinalDirection -> CardinalDirection -> rectangle -> [Point 2 r] cornersInBetween :: forall rectangle point r. (Rectangle_ rectangle point, Point_ point 2 r, Num r) => CardinalDirection -> CardinalDirection -> rectangle -> [Point 2 r] -cornersInBetween CardinalDirection -s CardinalDirection -e rectangle -rect = ((CardinalDirection, Point 2 r) -> Point 2 r) +cornersInBetween CardinalDirection +s CardinalDirection +e rectangle +rect = ((CardinalDirection, Point 2 r) -> Point 2 r) -> [(CardinalDirection, Point 2 r)] -> [Point 2 r] forall a b. (a -> b) -> [a] -> [b] map (CardinalDirection, Point 2 r) -> Point 2 r @@ -793,7 +793,7 @@ takeWhile ((CardinalDirection -> CardinalDirection -> Bool forall a. Eq a => a -> a -> Bool /= CardinalDirection -e) (CardinalDirection -> Bool) +e) (CardinalDirection -> Bool) -> ((CardinalDirection, Point 2 r) -> CardinalDirection) -> (CardinalDirection, Point 2 r) -> Bool @@ -814,7 +814,7 @@ dropWhile ((CardinalDirection -> CardinalDirection -> Bool forall a. Eq a => a -> a -> Bool /= CardinalDirection -s) (CardinalDirection -> Bool) +s) (CardinalDirection -> Bool) -> ((CardinalDirection, Point 2 r) -> CardinalDirection) -> (CardinalDirection, Point 2 r) -> Bool @@ -830,19 +830,19 @@ forall a. HasCallStack => [a] -> [a] cycle [(CardinalDirection East,Point 2 r -tr),(CardinalDirection +tr),(CardinalDirection North,Point 2 r -tl),(CardinalDirection +tl),(CardinalDirection West,Point 2 r -bl),(CardinalDirection +bl),(CardinalDirection South,Point 2 r -br)] +br)] where - Corners Point 2 r -tl Point 2 r -tr Point 2 r -br Point 2 r -bl = Getting (Point 2 r) point (Point 2 r) -> point -> Point 2 r + Corners Point 2 r +tl Point 2 r +tr Point 2 r +br Point 2 r +bl = Getting (Point 2 r) point (Point 2 r) -> point -> Point 2 r forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a view Getting (Point 2 r) point (Point 2 r) forall point (d :: Nat) r. @@ -856,7 +856,7 @@ (Num r, Rectangle_ rectangle point, Point_ point 2 r) => rectangle -> Corners point corners rectangle -rect +rect -------------------------------------------------------------------------------- diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.VertexForm.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.VertexForm.html index 98bacad6f..8217b616d 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.VertexForm.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Connected.VertexForm.html @@ -34,15 +34,15 @@ -- | The vertices of a lower envelope is just a Map with every vertex its definers, -- i.e. the planes that define the vertex in CCW order around it. -type VertexForm r plane = Map (Point 3 r) (Definers plane) +type VertexForm r plane = Map (Point 3 r) (Definers plane) ---------------------------------------- -- * The planes defining a vertex -- | in CCW order, starting with the plane that is minimal at the vertical up direction -- from their common vertex. -newtype Definers plane = Definers (NonEmpty plane) - deriving stock (Int -> Definers plane -> ShowS +newtype Definers plane = Definers (NonEmpty plane) + deriving stock (Int -> Definers plane -> ShowS [Definers plane] -> ShowS Definers plane -> String (Int -> Definers plane -> ShowS) @@ -60,7 +60,7 @@ show :: Definers plane -> String $cshowList :: forall plane. Show plane => [Definers plane] -> ShowS showList :: [Definers plane] -> ShowS -Show,Definers plane -> Definers plane -> Bool +Show,Definers plane -> Definers plane -> Bool (Definers plane -> Definers plane -> Bool) -> (Definers plane -> Definers plane -> Bool) -> Eq (Definers plane) @@ -70,7 +70,7 @@ == :: Definers plane -> Definers plane -> Bool $c/= :: forall plane. Eq plane => Definers plane -> Definers plane -> Bool /= :: Definers plane -> Definers plane -> Bool -Eq,Eq (Definers plane) +Eq,Eq (Definers plane) Eq (Definers plane) => (Definers plane -> Definers plane -> Ordering) -> (Definers plane -> Definers plane -> Bool) @@ -122,7 +122,7 @@ Definers plane -> Definers plane -> Definers plane min :: Definers plane -> Definers plane -> Definers plane Ord) - deriving newtype ((forall a b. (a -> b) -> Definers a -> Definers b) + deriving newtype ((forall a b. (a -> b) -> Definers a -> Definers b) -> (forall a b. a -> Definers b -> Definers a) -> Functor Definers forall a b. a -> Definers b -> Definers a forall a b. (a -> b) -> Definers a -> Definers b @@ -133,7 +133,7 @@ fmap :: forall a b. (a -> b) -> Definers a -> Definers b $c<$ :: forall a b. a -> Definers b -> Definers a <$ :: forall a b. a -> Definers b -> Definers a -Functor,(forall m. Monoid m => Definers m -> m) +Functor,(forall m. Monoid m => Definers m -> m) -> (forall m a. Monoid m => (a -> m) -> Definers a -> m) -> (forall m a. Monoid m => (a -> m) -> Definers a -> m) -> (forall a b. (a -> b -> b) -> b -> Definers a -> b) @@ -215,7 +215,7 @@ sum :: forall a. Num a => Definers a -> a $cproduct :: forall a. Num a => Definers a -> a product :: forall a. Num a => Definers a -> a -Foldable,Foldable Definers +Foldable,Foldable Definers Foldable Definers => (forall m. Semigroup m => Definers m -> m) -> (forall m a. Semigroup m => (a -> m) -> Definers a -> m) @@ -280,7 +280,7 @@ -- | Given the planes in order, starting with the one that is closest in the up direction, -- construct the Definers. -fromCCWList :: NonEmpty plane -> Definers plane +fromCCWList :: NonEmpty plane -> Definers plane fromCCWList :: forall plane. NonEmpty plane -> Definers plane fromCCWList = NonEmpty plane -> Definers plane forall plane. NonEmpty plane -> Definers plane @@ -288,7 +288,7 @@ -- | Given the planes in order, starting with the one that is closest in the up direction, -- construct the Definers. -fromCCWList' :: [plane] -> Definers plane +fromCCWList' :: [plane] -> Definers plane fromCCWList' :: forall plane. [plane] -> Definers plane fromCCWList' = NonEmpty plane -> Definers plane forall plane. NonEmpty plane -> Definers plane @@ -300,65 +300,65 @@ NonEmpty.fromList -- | Smart constructor for creating the definers of three planes -definers :: forall plane r.(Plane_ plane r, Ord r, Fractional r) - => Three plane -> Maybe (Point 3 r, Definers plane) +definers :: forall plane r.(Plane_ plane r, Ord r, Fractional r) + => Three plane -> Maybe (Point 3 r, Definers plane) definers :: forall plane r. (Plane_ plane r, Ord r, Fractional r) => Three plane -> Maybe (Point 3 r, Definers plane) -definers (Three h1 :: plane -h1@(Plane_ r -a1 r -b1 r -c1) plane -h2 plane -h3) = - do l12 <- plane -> plane -> Maybe (VerticalOrLineEQ r) +definers (Three h1 :: plane +h1@(Plane_ r +a1 r +b1 r +c1) plane +h2 plane +h3) = + do l12 <- plane -> plane -> Maybe (VerticalOrLineEQ r) forall plane r. (Plane_ plane r, Fractional r, Eq r) => plane -> plane -> Maybe (VerticalOrLineEQ r) intersectionLine plane -h1 plane -h2 - l13 <- intersectionLine h1 h3 - intersect l12 l13 >>= \case +h1 plane +h2 + l13 <- intersectionLine h1 h3 + intersect l12 l13 >>= \case Line_x_Line_Line VerticalOrLineEQ r _ -> Maybe (Point 3 r, Definers plane) forall a. Maybe a Nothing - Line_x_Line_Point (Point2 r -x r -y) -> (Point 3 r, Definers plane) -> Maybe (Point 3 r, Definers plane) + Line_x_Line_Point (Point2 r +x r +y) -> (Point 3 r, Definers plane) -> Maybe (Point 3 r, Definers plane) forall a. a -> Maybe a Just ( r -> r -> r -> Point 3 r forall r. r -> r -> r -> Point 3 r Point3 r -x r -y (r -a1 r -> r -> r +x r +y (r +a1 r -> r -> r forall a. Num a => a -> a -> a * r -x r -> r -> r +x r -> r -> r forall a. Num a => a -> a -> a + r -b1r -> r -> r +b1r -> r -> r forall a. Num a => a -> a -> a * r -y r -> r -> r +y r -> r -> r forall a. Num a => a -> a -> a + r -c1) +c1) , [plane] -> Definers plane forall plane. [plane] -> Definers plane fromCCWList' [plane -hMin, plane -hTwo, plane -hThree] +hMin, plane +hTwo, plane +hThree] ) where - (plane -hMin,plane -h,plane -h') = (plane -> r) -> plane -> plane -> plane -> (plane, plane, plane) + (plane +hMin,plane +h,plane +h') = (plane -> r) -> plane -> plane -> plane -> (plane, plane, plane) forall a c. Ord a => (c -> a) -> c -> c -> c -> (c, c, c) extractMinOn (Point 2 r -> plane -> r forall point. @@ -373,21 +373,21 @@ $ r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -x (r -yr -> r -> r +x (r +yr -> r -> r forall a. Num a => a -> a -> a +r 1)) plane -h1 plane -h2 plane -h3 +h1 plane +h2 plane +h3 -- we compute the plane hMin that is cheapest directly above the vertex h and -- h' are the other two planes. That Means hMin is the first definer (in the -- CCW order). What remains is to determine the order in which the remaining -- planes h and h' appear in the order. - (plane -hTwo,plane -hThree) = case Vector 2 r -> Point 2 r -> Point 2 r -> Point 2 r -> Ordering + (plane +hTwo,plane +hThree) = case Vector 2 r -> Point 2 r -> Point 2 r -> Point 2 r -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering @@ -399,18 +399,18 @@ forall point (d :: Natural) r. (Num r, ConstructablePoint_ point d r) => point -origin :: Point 2 r) +origin :: Point 2 r) (Vector 2 r -> Point 2 r forall v. v -> PointF v Point Vector 2 r -vMinH) (Vector 2 r -> Point 2 r +vMinH) (Vector 2 r -> Point 2 r forall v. v -> PointF v Point Vector 2 r -vMinH') of +vMinH') of Ordering LT -> (plane -h,plane -h') +h,plane +h') Ordering EQ -> String -> (plane, plane) forall a. HasCallStack => String -> a @@ -418,15 +418,15 @@ "definers: weird degeneracy?" Ordering GT -> (plane -h',plane -h) +h',plane +h) - vMinH :: Vector 2 r -vMinH = Vector 2 r -> Maybe (Vector 2 r) -> Vector 2 r + vMinH :: Vector 2 r +vMinH = Vector 2 r -> Maybe (Vector 2 r) -> Vector 2 r forall a. a -> Maybe a -> a fromMaybe Vector 2 r forall {a}. a -err (Maybe (Vector 2 r) -> Vector 2 r) +err (Maybe (Vector 2 r) -> Vector 2 r) -> Maybe (Vector 2 r) -> Vector 2 r forall a b. (a -> b) -> a -> b $ plane -> plane -> Maybe (Vector 2 r) @@ -434,14 +434,14 @@ (Plane_ plane r, Ord r, Fractional r) => plane -> plane -> Maybe (Vector 2 r) intersectionVector plane -h plane -hMin - vMinH' :: Vector 2 r -vMinH' = Vector 2 r -> Maybe (Vector 2 r) -> Vector 2 r +h plane +hMin + vMinH' :: Vector 2 r +vMinH' = Vector 2 r -> Maybe (Vector 2 r) -> Vector 2 r forall a. a -> Maybe a -> a fromMaybe Vector 2 r forall {a}. a -err (Maybe (Vector 2 r) -> Vector 2 r) +err (Maybe (Vector 2 r) -> Vector 2 r) -> Maybe (Vector 2 r) -> Vector 2 r forall a b. (a -> b) -> a -> b $ plane -> plane -> Maybe (Vector 2 r) @@ -449,54 +449,54 @@ (Plane_ plane r, Ord r, Fractional r) => plane -> plane -> Maybe (Vector 2 r) intersectionVector plane -h' plane -hMin - err :: a -err = String -> a +h' plane +hMin + err :: a +err = String -> a forall a. HasCallStack => String -> a error String "definers: absurd" -- | given three elements, returns the minimum element in the first argument and the -- remaining two elements in the second and third argument (in arbitrary order). -extractMinOn :: Ord a => (c -> a) -> c -> c -> c -> (c, c, c) +extractMinOn :: Ord a => (c -> a) -> c -> c -> c -> (c, c, c) extractMinOn :: forall a c. Ord a => (c -> a) -> c -> c -> c -> (c, c, c) -extractMinOn c -> a -f c -a c -b c -c = let (c -m,c -ab) = c -> c -> (c, c) -min' c -a c -b - (c -mi,c -c') = c -> c -> (c, c) -min' c -m c -c +extractMinOn c -> a +f c +a c +b c +c = let (c +m,c +ab) = c -> c -> (c, c) +min' c +a c +b + (c +mi,c +c') = c -> c -> (c, c) +min' c +m c +c in (c -mi, c -ab, c -c') +mi, c +ab, c +c') where - min' :: c -> c -> (c, c) -min' c -x c -y + min' :: c -> c -> (c, c) +min' c +x c +y | c -> a -f c -x a -> a -> Bool +f c +x a -> a -> Bool forall a. Ord a => a -> a -> Bool <= c -> a -f c -y = (c -x,c -y) +f c +y = (c +x,c +y) | Bool otherwise = (c -y,c -x) +y,c +x) \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Naive.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Naive.html index 111fb2c2f..3059f1416 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Naive.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Naive.html @@ -32,10 +32,10 @@ -- -- -- running time: \(O(n^4 )\) -lowerEnvelope :: ( Plane_ plane r - , Ord r, Fractional r, Foldable1 f, Functor f, Ord plane - , Show plane, Show r - ) => f plane -> LowerEnvelope plane +lowerEnvelope :: ( Plane_ plane r + , Ord r, Fractional r, Foldable1 f, Functor f, Ord plane + , Show plane, Show r + ) => f plane -> LowerEnvelope plane lowerEnvelope :: forall plane r (f :: * -> *). (Plane_ plane r, Ord r, Fractional r, Foldable1 f, Functor f, Ord plane, Show plane, Show r) => @@ -64,19 +64,19 @@ -- lower envelope algorithm to compute the lower envelope of the (parallel) planes. -- -- \(O(T(n) + n \log n)\). -lowerEnvelopeWith :: forall nonEmpty plane r. - ( Plane_ plane r - , Ord r, Fractional r, Foldable1 nonEmpty +lowerEnvelopeWith :: forall nonEmpty plane r. + ( Plane_ plane r + , Ord r, Fractional r, Foldable1 nonEmpty ) - => (NonEmpty plane -> MinimizationDiagram r plane) - -> nonEmpty plane -> LowerEnvelope plane + => (NonEmpty plane -> MinimizationDiagram r plane) + -> nonEmpty plane -> LowerEnvelope plane lowerEnvelopeWith :: forall (nonEmpty :: * -> *) plane r. (Plane_ plane r, Ord r, Fractional r, Foldable1 nonEmpty) => (NonEmpty plane -> MinimizationDiagram r plane) -> nonEmpty plane -> LowerEnvelope plane -lowerEnvelopeWith NonEmpty plane -> MinimizationDiagram r plane -minimizationDiagram nonEmpty plane -hs = case NonEmpty plane +lowerEnvelopeWith NonEmpty plane -> MinimizationDiagram r plane +minimizationDiagram nonEmpty plane +hs = case NonEmpty plane -> Either (NonEmpty (LineEQ r :+ plane)) (Vector 3 plane, [plane]) forall plane r. (Plane_ plane r, Eq r, Fractional r) => @@ -86,9 +86,9 @@ forall a. nonEmpty a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty nonEmpty plane -hs) of - Left NonEmpty (LineEQ r :+ plane) -lines' -> Alternating Vector (VerticalOrLineEQ r) plane +hs) of + Left NonEmpty (LineEQ r :+ plane) +lines' -> Alternating Vector (VerticalOrLineEQ r) plane -> LowerEnvelope plane Alternating Vector (VerticalOrLineEQ (NumType plane)) plane -> LowerEnvelope plane @@ -104,52 +104,52 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . NonEmpty (LineEQ r :+ plane) -> Alternating Vector (VerticalOrLineEQ r) plane -fromLines (NonEmpty (LineEQ r :+ plane) -> LowerEnvelope plane) +fromLines (NonEmpty (LineEQ r :+ plane) -> LowerEnvelope plane) -> NonEmpty (LineEQ r :+ plane) -> LowerEnvelope plane forall a b. (a -> b) -> a -> b $ NonEmpty (LineEQ r :+ plane) -lines' - Right (Vector3 plane -h1 plane -h2 plane -h3, [plane] -hs') -> MinimizationDiagram (NumType plane) plane -> LowerEnvelope plane +lines' + Right (Vector3 plane +h1 plane +h2 plane +h3, [plane] +hs') -> MinimizationDiagram (NumType plane) plane -> LowerEnvelope plane forall plane. MinimizationDiagram (NumType plane) plane -> LowerEnvelope plane ConnectedEnvelope (MinimizationDiagram (NumType plane) plane -> LowerEnvelope plane) -> MinimizationDiagram (NumType plane) plane -> LowerEnvelope plane forall a b. (a -> b) -> a -> b $ NonEmpty plane -> MinimizationDiagram r plane -minimizationDiagram (plane -h1 plane -> [plane] -> NonEmpty plane +minimizationDiagram (plane +h1 plane -> [plane] -> NonEmpty plane forall a. a -> [a] -> NonEmpty a :| plane -h2 plane -> [plane] -> [plane] +h2 plane -> [plane] -> [plane] forall a. a -> [a] -> [a] : plane -h3 plane -> [plane] -> [plane] +h3 plane -> [plane] -> [plane] forall a. a -> [a] -> [a] : [plane] -hs') +hs') where - fromLines :: NonEmpty (LineEQ r :+ plane) + fromLines :: NonEmpty (LineEQ r :+ plane) -> Alternating Vector (VerticalOrLineEQ r) plane -fromLines = (plane -> Point 2 r -> plane -> VerticalOrLineEQ r) +fromLines = (plane -> Point 2 r -> plane -> VerticalOrLineEQ r) -> Alternating Vector (Point 2 r) plane -> Alternating Vector (VerticalOrLineEQ r) plane forall (f :: * -> *) a sep sep'. Traversable f => (a -> sep -> a -> sep') -> Alternating f sep a -> Alternating f sep' a -firstWithNeighbors (\plane -h Point 2 r -_ plane -h' -> VerticalOrLineEQ r +firstWithNeighbors (\plane +h Point 2 r +_ plane +h' -> VerticalOrLineEQ r -> Maybe (VerticalOrLineEQ r) -> VerticalOrLineEQ r forall a. a -> Maybe a -> a fromMaybe VerticalOrLineEQ r forall {a}. a -err (Maybe (VerticalOrLineEQ r) -> VerticalOrLineEQ r) +err (Maybe (VerticalOrLineEQ r) -> VerticalOrLineEQ r) -> Maybe (VerticalOrLineEQ r) -> VerticalOrLineEQ r forall a b. (a -> b) -> a -> b $ plane -> plane -> Maybe (VerticalOrLineEQ r) @@ -157,8 +157,8 @@ (Plane_ plane r, Fractional r, Eq r) => plane -> plane -> Maybe (VerticalOrLineEQ r) intersectionLine plane -h plane -h') +h plane +h') (Alternating Vector (Point 2 r) plane -> Alternating Vector (VerticalOrLineEQ r) plane) -> (NonEmpty (LineEQ r :+ plane) @@ -215,18 +215,18 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . NonEmpty (LineEQ r :+ plane) -> LowerEnvelopeF Vector (Point 2 r) (LineEQ r :+ plane) -lowerEnvelope' - err :: a -err = [Char] -> a +lowerEnvelope' + err :: a +err = [Char] -> a forall a. HasCallStack => [Char] -> a error [Char] "lowerEnvelopeWith. absurd: neighbouring planes must intersect" - lowerEnvelope' :: NonEmpty (LineEQ r :+ plane) - -> Line.LowerEnvelope (Point 2 r) (LineEQ r :+ plane) - lowerEnvelope' :: NonEmpty (LineEQ r :+ plane) + lowerEnvelope' :: NonEmpty (LineEQ r :+ plane) + -> Line.LowerEnvelope (Point 2 r) (LineEQ r :+ plane) + lowerEnvelope' :: NonEmpty (LineEQ r :+ plane) -> LowerEnvelopeF Vector (Point 2 r) (LineEQ r :+ plane) -lowerEnvelope' = NonEmpty (LineEQ r :+ plane) +lowerEnvelope' = NonEmpty (LineEQ r :+ plane) -> LowerEnvelopeF Vector (Point 2 r) (LineEQ r :+ plane) forall (g :: * -> *) (f :: * -> *) line r. (NonVerticalHyperPlane_ line 2 r, Fractional r, Ord r, Foldable1 f, @@ -247,27 +247,27 @@ -- envelope). -- -- running time: \(O(n)\) -distinguish :: ( Plane_ plane r, Eq r, Fractional r +distinguish :: ( Plane_ plane r, Eq r, Fractional r ) - => NonEmpty plane -> Either (NonEmpty (LineEQ r :+ plane)) - (Vector 3 plane, [plane]) + => NonEmpty plane -> Either (NonEmpty (LineEQ r :+ plane)) + (Vector 3 plane, [plane]) distinguish :: forall plane r. (Plane_ plane r, Eq r, Fractional r) => NonEmpty plane -> Either (NonEmpty (LineEQ r :+ plane)) (Vector 3 plane, [plane]) -distinguish hs :: NonEmpty plane -hs@(plane -h :| [plane] -rest) = case [Maybe (VerticalOrLineEQ r) :+ plane] +distinguish hs :: NonEmpty plane +hs@(plane +h :| [plane] +rest) = case [Maybe (VerticalOrLineEQ r) :+ plane] -> Either (VerticalOrLineEQ r) (Vector 2 plane, [plane]) forall r plane. (Eq r, Num r) => [Maybe (VerticalOrLineEQ r) :+ plane] -> Either (VerticalOrLineEQ r) (Vector 2 plane, [plane]) findDifferent [Maybe (VerticalOrLineEQ r) :+ plane] -lines' of - Left VerticalOrLineEQ r -baseLine -> NonEmpty (LineEQ r :+ plane) +lines' of + Left VerticalOrLineEQ r +baseLine -> NonEmpty (LineEQ r :+ plane) -> Either (NonEmpty (LineEQ r :+ plane)) (Vector 3 plane, [plane]) forall a b. a -> Either a b Left (NonEmpty (LineEQ r :+ plane) @@ -287,29 +287,29 @@ (Plane_ plane r, Num r) => plane -> VerticalOrLineEQ r -> LineEQ r :+ plane asLine VerticalOrLineEQ r -baseLine) NonEmpty plane -hs - Right (Vector2 plane -h2 plane -h3, [plane] -rest') -> (Vector 3 plane, [plane]) +baseLine) NonEmpty plane +hs + Right (Vector2 plane +h2 plane +h3, [plane] +rest') -> (Vector 3 plane, [plane]) -> Either (NonEmpty (LineEQ r :+ plane)) (Vector 3 plane, [plane]) forall a b. b -> Either a b Right (plane -> plane -> plane -> Vector 3 plane forall r. r -> r -> r -> Vector 3 r Vector3 plane -h plane -h2 plane -h3, [plane] -rest') +h plane +h2 plane +h3, [plane] +rest') where - lines' :: [Maybe (VerticalOrLineEQ r) :+ plane] -lines' = (plane -> Maybe (VerticalOrLineEQ r) :+ plane) + lines' :: [Maybe (VerticalOrLineEQ r) :+ plane] +lines' = (plane -> Maybe (VerticalOrLineEQ r) :+ plane) -> [plane] -> [Maybe (VerticalOrLineEQ r) :+ plane] forall a b. (a -> b) -> [a] -> [b] -map (\plane -h' -> (VerticalOrLineEQ r -> VerticalOrLineEQ r +map (\plane +h' -> (VerticalOrLineEQ r -> VerticalOrLineEQ r forall r. (Fractional r, Eq r) => VerticalOrLineEQ r -> VerticalOrLineEQ r @@ -321,13 +321,13 @@ (Plane_ plane r, Fractional r, Eq r) => plane -> plane -> Maybe (VerticalOrLineEQ r) intersectionLine plane -h plane -h') Maybe (VerticalOrLineEQ r) +h plane +h') Maybe (VerticalOrLineEQ r) -> plane -> Maybe (VerticalOrLineEQ r) :+ plane forall core extra. core -> extra -> core :+ extra :+ plane -h') [plane] -rest +h') [plane] +rest -- for each plane, compute (the downward projection of) its line of intersection with -- with h. We actually all rotate these lines by 90 degrees. -- @@ -335,13 +335,13 @@ -- those lines baseLine, and compute the intersection of the plane h with the vertical -- wall through this -perpendicularTo' :: (Fractional r, Eq r) => VerticalOrLineEQ r -> VerticalOrLineEQ r +perpendicularTo' :: (Fractional r, Eq r) => VerticalOrLineEQ r -> VerticalOrLineEQ r perpendicularTo' :: forall r. (Fractional r, Eq r) => VerticalOrLineEQ r -> VerticalOrLineEQ r perpendicularTo' = \case - VerticalLineThrough r -x -> LineEQ r -> VerticalOrLineEQ r + VerticalLineThrough r +x -> LineEQ r -> VerticalOrLineEQ r forall r. LineEQ r -> VerticalOrLineEQ r NonVertical (LineEQ r -> VerticalOrLineEQ r) -> LineEQ r -> VerticalOrLineEQ r forall a b. (a -> b) -> a -> b @@ -349,16 +349,16 @@ forall r. r -> r -> LineEQ r LineEQ r 0 r -x +x NonVertical (LineEQ r -0 r -b) -> r -> VerticalOrLineEQ r +0 r +b) -> r -> VerticalOrLineEQ r forall r. r -> VerticalOrLineEQ r VerticalLineThrough r -b - NonVertical (LineEQ r -a r -b) -> LineEQ r -> VerticalOrLineEQ r +b + NonVertical (LineEQ r +a r +b) -> LineEQ r -> VerticalOrLineEQ r forall r. LineEQ r -> VerticalOrLineEQ r NonVertical (LineEQ r -> VerticalOrLineEQ r) -> LineEQ r -> VerticalOrLineEQ r forall a b. (a -> b) -> a -> b @@ -368,24 +368,24 @@ 1r -> r -> r forall a. Fractional a => a -> a -> a /r -a) r -b +a) r +b -- | Given the planes tagged with their intersection line with some plane h0, returns -- either a Left baseLine if all these lines are parallel, or two planes that have -- non-paralel intersection lines (as well as the rest of the planes). -- -- the baseLine is one of the parallel lines (or vertical if there are no lines to begin with). -findDifferent :: (Eq r, Num r +findDifferent :: (Eq r, Num r ) - => [Maybe (VerticalOrLineEQ r) :+ plane] -> Either (VerticalOrLineEQ r) - (Vector 2 plane, [plane]) + => [Maybe (VerticalOrLineEQ r) :+ plane] -> Either (VerticalOrLineEQ r) + (Vector 2 plane, [plane]) findDifferent :: forall r plane. (Eq r, Num r) => [Maybe (VerticalOrLineEQ r) :+ plane] -> Either (VerticalOrLineEQ r) (Vector 2 plane, [plane]) -findDifferent [Maybe (VerticalOrLineEQ r) :+ plane] -xs = case [Either plane (VerticalOrLineEQ r :+ plane)] +findDifferent [Maybe (VerticalOrLineEQ r) :+ plane] +xs = case [Either plane (VerticalOrLineEQ r :+ plane)] -> ([plane], [VerticalOrLineEQ r :+ plane]) forall a b. [Either a b] -> ([a], [b]) partitionEithers ([Either plane (VerticalOrLineEQ r :+ plane)] @@ -402,8 +402,8 @@ -> Either plane (VerticalOrLineEQ r :+ plane) forall {core} {extra}. (Maybe core :+ extra) -> Either extra (core :+ extra) -distinguishParallel [Maybe (VerticalOrLineEQ r) :+ plane] -xs of +distinguishParallel [Maybe (VerticalOrLineEQ r) :+ plane] +xs of ([plane] _,[]) -> VerticalOrLineEQ r -> Either (VerticalOrLineEQ r) (Vector 2 plane, [plane]) @@ -417,11 +417,11 @@ forall r. r -> VerticalOrLineEQ r VerticalLineThrough r 0 -- all planes happen to be paralell - ([plane] -pars0, (VerticalOrLineEQ r -l :+ plane -h) : [VerticalOrLineEQ r :+ plane] -rest) -> case ((VerticalOrLineEQ r :+ plane) -> Bool) + ([plane] +pars0, (VerticalOrLineEQ r +l :+ plane +h) : [VerticalOrLineEQ r :+ plane] +rest) -> case ((VerticalOrLineEQ r :+ plane) -> Bool) -> [VerticalOrLineEQ r :+ plane] -> ([VerticalOrLineEQ r :+ plane], [VerticalOrLineEQ r :+ plane]) forall a. (a -> Bool) -> [a] -> ([a], [a]) @@ -431,28 +431,28 @@ Has_ Metric_ d r, Num r, Eq r, 1 <= d) => hyperPlane -> hyperPlane' -> Bool isParallelTo VerticalOrLineEQ r -l) [VerticalOrLineEQ r :+ plane] -rest of +l) [VerticalOrLineEQ r :+ plane] +rest of ([VerticalOrLineEQ r :+ plane] _,[]) -> VerticalOrLineEQ r -> Either (VerticalOrLineEQ r) (Vector 2 plane, [plane]) forall a b. a -> Either a b Left VerticalOrLineEQ r -l -- degnerate; planes are all parralel - ([VerticalOrLineEQ r :+ plane] -pars1, (VerticalOrLineEQ r -_ :+ plane -h') : [VerticalOrLineEQ r :+ plane] -rest') -> (Vector 2 plane, [plane]) +l -- degnerate; planes are all parralel + ([VerticalOrLineEQ r :+ plane] +pars1, (VerticalOrLineEQ r +_ :+ plane +h') : [VerticalOrLineEQ r :+ plane] +rest') -> (Vector 2 plane, [plane]) -> Either (VerticalOrLineEQ r) (Vector 2 plane, [plane]) forall a b. b -> Either a b Right ( plane -> plane -> Vector 2 plane forall r. r -> r -> Vector 2 r Vector2 plane -h plane -h' +h plane +h' , [plane] -pars0 [plane] -> [plane] -> [plane] +pars0 [plane] -> [plane] -> [plane] forall a. Semigroup a => a -> a -> a <> ((VerticalOrLineEQ r :+ plane) -> plane) -> [VerticalOrLineEQ r :+ plane] -> [plane] @@ -465,81 +465,81 @@ Functor f => (extra -> f extra') -> (core :+ extra) -> f (core :+ extra') extra) ([VerticalOrLineEQ r :+ plane] -pars1 [VerticalOrLineEQ r :+ plane] +pars1 [VerticalOrLineEQ r :+ plane] -> [VerticalOrLineEQ r :+ plane] -> [VerticalOrLineEQ r :+ plane] forall a. Semigroup a => a -> a -> a <> [VerticalOrLineEQ r :+ plane] -rest') +rest') ) where - distinguishParallel :: (Maybe core :+ extra) -> Either extra (core :+ extra) -distinguishParallel (Maybe core -m :+ extra -h) = case Maybe core -m of + distinguishParallel :: (Maybe core :+ extra) -> Either extra (core :+ extra) +distinguishParallel (Maybe core +m :+ extra +h) = case Maybe core +m of Maybe core Nothing -> extra -> Either extra (core :+ extra) forall a b. a -> Either a b Left extra -h - Just core -l -> (core :+ extra) -> Either extra (core :+ extra) +h + Just core +l -> (core :+ extra) -> Either extra (core :+ extra) forall a b. b -> Either a b Right (core -l core -> extra -> core :+ extra +l core -> extra -> core :+ extra forall core extra. core -> extra -> core :+ extra :+ extra -h) +h) -- | given a plane h, and a line l, erect a vertical plane through l, and return the line -- in which h intersects this vertical plane. -asLine :: (Plane_ plane r, Num r) - => plane -> VerticalOrLineEQ r -> LineEQ r :+ plane +asLine :: (Plane_ plane r, Num r) + => plane -> VerticalOrLineEQ r -> LineEQ r :+ plane asLine :: forall plane r. (Plane_ plane r, Num r) => plane -> VerticalOrLineEQ r -> LineEQ r :+ plane -asLine h :: plane -h@(Plane_ r -a r -b r -c) = \case - VerticalLineThrough r -x -> r -> r -> LineEQ r +asLine h :: plane +h@(Plane_ r +a r +b r +c) = \case + VerticalLineThrough r +x -> r -> r -> LineEQ r forall r. r -> r -> LineEQ r LineEQ r -b (r -ar -> r -> r +b (r +ar -> r -> r forall a. Num a => a -> a -> a *r -x r -> r -> r +x r -> r -> r forall a. Num a => a -> a -> a + r -c) LineEQ r -> plane -> LineEQ r :+ plane +c) LineEQ r -> plane -> LineEQ r :+ plane forall core extra. core -> extra -> core :+ extra :+ plane -h - NonVertical (LineEQ r -a' r -b') -> r -> r -> LineEQ r +h + NonVertical (LineEQ r +a' r +b') -> r -> r -> LineEQ r forall r. r -> r -> LineEQ r LineEQ (r -a r -> r -> r +a r -> r -> r forall a. Num a => a -> a -> a + r -a'r -> r -> r +a'r -> r -> r forall a. Num a => a -> a -> a *r -b) (r -br -> r -> r +b) (r +br -> r -> r forall a. Num a => a -> a -> a *r -b' r -> r -> r +b' r -> r -> r forall a. Num a => a -> a -> a + r -c) LineEQ r -> plane -> LineEQ r :+ plane +c) LineEQ r -> plane -> LineEQ r :+ plane forall core extra. core -> extra -> core :+ extra :+ plane -h +h -- we simply fill in the coordinates of the line into the equation for h. this gives us -- line (either parameterized in terms of the y-coordinate, or in case of the -- x-coordinate of R^3 in the second case). diff --git a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Type.html b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Type.html index 5fc4c43ab..a7f3349f8 100644 --- a/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Type.html +++ b/haddocks/hgeometry/src/HGeometry.Plane.LowerEnvelope.Type.html @@ -20,12 +20,12 @@ -- * Data type defining a lower envelope -- | The lower enevelope of planes in R^3. (Or rather, its minimization diagram) -data LowerEnvelope plane = - ParallelStrips !(Alternating Vector.Vector (VerticalOrLineEQ (NumType plane)) plane) - | ConnectedEnvelope !(MinimizationDiagram (NumType plane) plane) +data LowerEnvelope plane = + ParallelStrips !(Alternating Vector.Vector (VerticalOrLineEQ (NumType plane)) plane) + | ConnectedEnvelope !(MinimizationDiagram (NumType plane) plane) -deriving instance (Show plane, Show (NumType plane)) => Show (LowerEnvelope plane) -deriving instance (Eq plane, Eq (NumType plane)) => Eq (LowerEnvelope plane) +deriving instance (Show plane, Show (NumType plane)) => Show (LowerEnvelope plane) +deriving instance (Eq plane, Eq (NumType plane)) => Eq (LowerEnvelope plane) -------------------------------------------------------------------------------- @@ -33,48 +33,48 @@ -- | Point locates the given point among the parralel strips. -- -- \(O(\log h)\), where \(h\) is the number of planes on the lower envelope -pointLocateParallel :: (Plane_ plane r, Point_ point 2 r, Ord r, Num r) - => point - -> Alternating Vector.Vector (VerticalOrLineEQ r) plane - -> plane +pointLocateParallel :: (Plane_ plane r, Point_ point 2 r, Ord r, Num r) + => point + -> Alternating Vector.Vector (VerticalOrLineEQ r) plane + -> plane pointLocateParallel :: forall plane r point. (Plane_ plane r, Point_ point 2 r, Ord r, Num r) => point -> Alternating Vector (VerticalOrLineEQ r) plane -> plane -pointLocateParallel point -q (Alternating plane -h0 Vector (VerticalOrLineEQ r, plane) -hs) = case (Elem (Vector (VerticalOrLineEQ r, plane)) -> Bool) +pointLocateParallel point +q (Alternating plane +h0 Vector (VerticalOrLineEQ r, plane) +hs) = case (Elem (Vector (VerticalOrLineEQ r, plane)) -> Bool) -> Vector (VerticalOrLineEQ r, plane) -> BinarySearchResult (Elem (Vector (VerticalOrLineEQ r, plane))) forall v. BinarySearch v => (Elem v -> Bool) -> v -> BinarySearchResult (Elem v) binarySearchIn (point -q point -> (VerticalOrLineEQ r, plane) -> Bool -`liesRightOf`) Vector (VerticalOrLineEQ r, plane) -hs of +q point -> (VerticalOrLineEQ r, plane) -> Bool +`liesRightOf`) Vector (VerticalOrLineEQ r, plane) +hs of AllTrue (VerticalOrLineEQ r -_,plane -h) -> plane -h +_,plane +h) -> plane +h FlipsAt Elem (Vector (VerticalOrLineEQ r, plane)) _ (VerticalOrLineEQ r -_,plane -h) -> plane -h +_,plane +h) -> plane +h AllFalse Maybe (Elem (Vector (VerticalOrLineEQ r, plane))) _ -> plane -h0 +h0 where - point -q' liesRightOf :: point -> (VerticalOrLineEQ r, plane) -> Bool -`liesRightOf` (VerticalOrLineEQ r -sep, plane + point +q' liesRightOf :: point -> (VerticalOrLineEQ r, plane) -> Bool +`liesRightOf` (VerticalOrLineEQ r +sep, plane _) = case VerticalOrLineEQ r -sep of - VerticalLineThrough r -x -> point -q'point -> Getting r point r -> r +sep of + VerticalLineThrough r +x -> point +q'point -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Natural) point r. @@ -84,9 +84,9 @@ xCoord r -> r -> Bool forall a. Ord a => a -> a -> Bool > r -x - NonVertical LineEQ r -l -> point -> LineEQ r -> Ordering +x + NonVertical LineEQ r +l -> point -> LineEQ r -> Ordering forall point. (1 <= 2, Point_ point 2 r, Ord r, Num r) => point -> LineEQ r -> Ordering @@ -95,8 +95,8 @@ Ord r, Num r) => point -> hyperPlane -> Ordering verticalSideTest point -q LineEQ r -l Ordering -> Ordering -> Bool +q LineEQ r +l Ordering -> Ordering -> Bool forall a. Eq a => a -> a -> Bool == Ordering GT diff --git a/haddocks/hgeometry/src/HGeometry.PlaneGraph.Class.html b/haddocks/hgeometry/src/HGeometry.PlaneGraph.Class.html index af6a3182b..519e0253b 100644 --- a/haddocks/hgeometry/src/HGeometry.PlaneGraph.Class.html +++ b/haddocks/hgeometry/src/HGeometry.PlaneGraph.Class.html @@ -46,13 +46,13 @@ -- | A class representing Plane graphs, i.e. planar graphs that have a straight line -- embedding in the plane. -class ( PlanarGraph_ planeGraph - , vertex ~ Vertex planeGraph - , Point_ vertex 2 (NumType vertex) - , NumType vertex ~ NumType planeGraph +class ( PlanarGraph_ planeGraph + , vertex ~ Vertex planeGraph + , Point_ vertex 2 (NumType vertex) + , NumType vertex ~ NumType planeGraph -- , HasVertices graph graph - , HasEdges planeGraph planeGraph - ) => PlaneGraph_ planeGraph vertex | planeGraph -> vertex where + , HasEdges planeGraph planeGraph + ) => PlaneGraph_ planeGraph vertex | planeGraph -> vertex where {-# MINIMAL fromEmbedding #-} @@ -63,17 +63,17 @@ -- that itself does not appear in the adjacencylist, we may drop -- it. In other words if u has a neighbour v, then v better have a -- specification of its neighbours somewhere. - fromEmbedding :: ( Foldable1 f, Functor f, Foldable h, Functor h - , vi ~ VertexIx planeGraph - , v ~ Vertex planeGraph - , e ~ Edge planeGraph - , GraphFromAdjListExtraConstraints planeGraph h - ) => f (vi, v, h (vi, e)) -> planeGraph + fromEmbedding :: ( Foldable1 f, Functor f, Foldable h, Functor h + , vi ~ VertexIx planeGraph + , v ~ Vertex planeGraph + , e ~ Edge planeGraph + , GraphFromAdjListExtraConstraints planeGraph h + ) => f (vi, v, h (vi, e)) -> planeGraph -- | Getter to access the outer face - outerFace :: Eq (FaceIx planeGraph) - => IndexedLens' (FaceIx planeGraph) planeGraph (Face planeGraph) - outerFace = Traversing + outerFace :: Eq (FaceIx planeGraph) + => IndexedLens' (FaceIx planeGraph) planeGraph (Face planeGraph) + outerFace = Traversing p f planeGraph planeGraph (Face planeGraph) (Face planeGraph) -> p (Face planeGraph) (f (Face planeGraph)) -> planeGraph @@ -88,48 +88,48 @@ Indexable (FaceIx graph) p, Applicative f, Point_ (Vertex graph) 2 (NumType graph)) => p (Face graph) (f (Face graph)) -> graph -> f graph -theLens +theLens where - theLens :: p (Face graph) (f (Face graph)) -> graph -> f graph -theLens p (Face graph) (f (Face graph)) -pFaceFFace graph -g = FaceIx graph -> IndexedTraversal' (FaceIx graph) graph (Face graph) + theLens :: p (Face graph) (f (Face graph)) -> graph -> f graph +theLens p (Face graph) (f (Face graph)) +pFaceFFace graph +g = FaceIx graph -> IndexedTraversal' (FaceIx graph) graph (Face graph) forall graph. HasFaces' graph => FaceIx graph -> IndexedTraversal' (FaceIx graph) graph (Face graph) faceAt FaceIx graph -theOuterFaceId p (Face graph) (f (Face graph)) -pFaceFFace graph -g +theOuterFaceId p (Face graph) (f (Face graph)) +pFaceFFace graph +g where - theOuterFaceId :: FaceIx graph -theOuterFaceId = graph -> FaceIx graph + theOuterFaceId :: FaceIx graph +theOuterFaceId = graph -> FaceIx graph forall planeGraph vertex. PlaneGraph_ planeGraph vertex => planeGraph -> FaceIx planeGraph outerFaceId graph -g +g -- | Traversal of all interior faces in the graph - interiorFaces :: (Eq (FaceIx planeGraph)) - => IndexedTraversal' (FaceIx planeGraph) planeGraph (Face planeGraph) - interiorFaces = p (Face planeGraph) (f (Face planeGraph)) + interiorFaces :: (Eq (FaceIx planeGraph)) + => IndexedTraversal' (FaceIx planeGraph) planeGraph (Face planeGraph) + interiorFaces = p (Face planeGraph) (f (Face planeGraph)) -> planeGraph -> f planeGraph forall (f :: * -> *) (p :: * -> * -> *). (Applicative f, Indexable (FaceIx planeGraph) p) => p (Face planeGraph) (f (Face planeGraph)) -> planeGraph -> f planeGraph -theTraversal +theTraversal where - theTraversal :: (Applicative f, Indexable (FaceIx planeGraph) p) - => p (Face planeGraph) (f (Face planeGraph)) -> planeGraph -> f planeGraph - theTraversal :: forall (f :: * -> *) (p :: * -> * -> *). + theTraversal :: (Applicative f, Indexable (FaceIx planeGraph) p) + => p (Face planeGraph) (f (Face planeGraph)) -> planeGraph -> f planeGraph + theTraversal :: forall (f :: * -> *) (p :: * -> * -> *). (Applicative f, Indexable (FaceIx planeGraph) p) => p (Face planeGraph) (f (Face planeGraph)) -> planeGraph -> f planeGraph -theTraversal p (Face planeGraph) (f (Face planeGraph)) -pFaceFFace planeGraph -g = WrappedApplicative f planeGraph -> f planeGraph +theTraversal p (Face planeGraph) (f (Face planeGraph)) +pFaceFFace planeGraph +g = WrappedApplicative f planeGraph -> f planeGraph forall (f :: * -> *) a. WrappedApplicative f a -> f a unwrapApplicative (WrappedApplicative f planeGraph -> f planeGraph) @@ -173,13 +173,13 @@ forall i (p :: * -> * -> *) (f :: * -> *) a. (Indexable i p, Applicative f) => (i -> a -> Bool) -> Optical' p (Indexed i) f a a -ifiltered (\FaceIx planeGraph -i Face planeGraph +ifiltered (\FaceIx planeGraph +i Face planeGraph _ -> FaceIx planeGraph -i FaceIx planeGraph -> FaceIx planeGraph -> Bool +i FaceIx planeGraph -> FaceIx planeGraph -> Bool forall a. Eq a => a -> a -> Bool /= FaceIx planeGraph -theOuterFaceId)) +theOuterFaceId)) ((f (Face planeGraph) -> WrappedApplicative f (Face planeGraph)) -> p (Face planeGraph) (f (Face planeGraph)) -> p (Face planeGraph) (WrappedApplicative f (Face planeGraph)) @@ -190,24 +190,24 @@ rmap f (Face planeGraph) -> WrappedApplicative f (Face planeGraph) forall (f :: * -> *) a. f a -> WrappedApplicative f a WrapApplicative p (Face planeGraph) (f (Face planeGraph)) -pFaceFFace) +pFaceFFace) planeGraph -g +g where - theOuterFaceId :: FaceIx planeGraph -theOuterFaceId = planeGraph -> FaceIx planeGraph + theOuterFaceId :: FaceIx planeGraph +theOuterFaceId = planeGraph -> FaceIx planeGraph forall planeGraph vertex. PlaneGraph_ planeGraph vertex => planeGraph -> FaceIx planeGraph outerFaceId planeGraph -g +g -- | gets the id of the outer face -- - outerFaceId :: planeGraph -> FaceIx planeGraph - outerFaceId planeGraph -ps = planeGraph -psplaneGraph + outerFaceId :: planeGraph -> FaceIx planeGraph + outerFaceId planeGraph +ps = planeGraph +psplaneGraph -> Getting (FaceIx planeGraph) planeGraph (FaceIx planeGraph) -> FaceIx planeGraph forall s a. s -> Getting a s a -> a @@ -222,7 +222,7 @@ PlaneGraph_ planeGraph vertex => planeGraph -> DartIx planeGraph outerFaceDart planeGraph -ps)(Indexed +ps)(Indexed (FaceIx planeGraph) (Face planeGraph) (Const (FaceIx planeGraph) (Face planeGraph)) @@ -251,11 +251,11 @@ -- -- running time: \(O(n)\) -- - outerFaceDart :: planeGraph -> DartIx planeGraph - default outerFaceDart :: (r ~ NumType planeGraph, Ord r, Num r) - => planeGraph -> DartIx planeGraph - outerFaceDart planeGraph -pg = Getting + outerFaceDart :: planeGraph -> DartIx planeGraph + default outerFaceDart :: (r ~ NumType planeGraph, Ord r, Num r) + => planeGraph -> DartIx planeGraph + outerFaceDart planeGraph +pg = Getting (Endo (Endo (Maybe (DartIx planeGraph)))) planeGraph (DartIx planeGraph) @@ -271,7 +271,7 @@ DiGraph_ graph => VertexIx graph -> IndexedFold (DartIx graph) graph (Dart graph) outgoingDartsOf VertexIx planeGraph -vi(Indexed +vi(Indexed (DartIx planeGraph) (Dart planeGraph) (Const (Endo (Endo (Maybe (DartIx planeGraph)))) (Dart planeGraph)) @@ -301,12 +301,12 @@ (Indexable i p, Contravariant f, Functor f) => p i (f i) -> Indexed i s (f s) asIndex) DartIx planeGraph -> DartIx planeGraph -> Ordering -cmp planeGraph -pg +cmp planeGraph +pg where - (VertexIx planeGraph -vi,vertex -v) = Getting + (VertexIx planeGraph +vi,vertex +v) = Getting (Endo (Endo (Maybe (VertexIx planeGraph, vertex)))) planeGraph (VertexIx planeGraph, vertex) @@ -406,12 +406,12 @@ Lens' point (Point d r) Lens' vertex (Point 2 r) asPoint)) planeGraph -pg +pg -- compare lexicographically; i.e. if same x-coord prefer the one with the lowest one - cmp :: DartIx planeGraph -> DartIx planeGraph -> Ordering -cmp DartIx planeGraph -d1 DartIx planeGraph -d2 = Vector 2 r -> vertex -> vertex -> vertex -> Ordering + cmp :: DartIx planeGraph -> DartIx planeGraph -> Ordering +cmp DartIx planeGraph +d1 DartIx planeGraph +d2 = Vector 2 r -> vertex -> vertex -> vertex -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering @@ -420,8 +420,8 @@ Vector2 (-r 1) r 0) vertex -v (planeGraph -pgplaneGraph -> Getting vertex planeGraph vertex -> vertex +v (planeGraph +pgplaneGraph -> Getting vertex planeGraph vertex -> vertex forall s a. s -> Getting a s a -> a ^.DartIx planeGraph -> IndexedGetter @@ -430,8 +430,8 @@ DiGraph_ graph => DartIx graph -> IndexedGetter (VertexIx graph) graph (Vertex graph) headOf DartIx planeGraph -d1) (planeGraph -pgplaneGraph -> Getting vertex planeGraph vertex -> vertex +d1) (planeGraph +pgplaneGraph -> Getting vertex planeGraph vertex -> vertex forall s a. s -> Getting a s a -> a ^.DartIx planeGraph -> IndexedGetter @@ -440,7 +440,7 @@ DiGraph_ graph => DartIx graph -> IndexedGetter (VertexIx graph) graph (Vertex graph) headOf DartIx planeGraph -d2) +d2) -- based on the approach sketched at https://cstheory.stackexchange.com/questions/27586/finding-outer-face-in-plane-graph-embedded-planar-graph -- basically: find the leftmost vertex, find the incident edge with the largest slope @@ -458,42 +458,42 @@ -- -- Note that this is a fold rather than a getter for the same reason dartAt is a traversal -- rather than a lens: i.e. if you pass some nonsensical DartIx the dart may not exist. -dartSegmentAt :: forall planeGraph vertex. - ( PlaneGraph_ planeGraph vertex - , Point_ vertex 2 (NumType vertex) +dartSegmentAt :: forall planeGraph vertex. + ( PlaneGraph_ planeGraph vertex + , Point_ vertex 2 (NumType vertex) ) - => DartIx planeGraph - -> IndexedFold (DartIx planeGraph) - planeGraph - (ClosedLineSegment vertex) + => DartIx planeGraph + -> IndexedFold (DartIx planeGraph) + planeGraph + (ClosedLineSegment vertex) dartSegmentAt :: forall planeGraph vertex. (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => DartIx planeGraph -> IndexedFold (DartIx planeGraph) planeGraph (ClosedLineSegment vertex) -dartSegmentAt DartIx planeGraph -ei = p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) +dartSegmentAt DartIx planeGraph +ei = p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> planeGraph -> f planeGraph -theFold +theFold where - theFold :: p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) + theFold :: p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> planeGraph -> f planeGraph -theFold p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -pSegFSeg planeGraph -g = DartIx planeGraph +theFold p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) +pSegFSeg planeGraph +g = DartIx planeGraph -> IndexedTraversal' (DartIx planeGraph) planeGraph (Dart planeGraph) forall graph. HasDarts' graph => DartIx graph -> IndexedTraversal' (DartIx graph) graph (Dart graph) dartAt DartIx planeGraph -ei p (Dart planeGraph) (f (Dart planeGraph)) -pDartFDart planeGraph -g +ei p (Dart planeGraph) (f (Dart planeGraph)) +pDartFDart planeGraph +g where - pDartFDart :: p (Dart planeGraph) (f (Dart planeGraph)) -pDartFDart = (Dart planeGraph -> ClosedLineSegment vertex) + pDartFDart :: p (Dart planeGraph) (f (Dart planeGraph)) +pDartFDart = (Dart planeGraph -> ClosedLineSegment vertex) -> (f (ClosedLineSegment vertex) -> f (Dart planeGraph)) -> p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> p (Dart planeGraph) (f (Dart planeGraph)) @@ -502,11 +502,11 @@ Profunctor p => (a -> b) -> (c -> d) -> p b c -> p a d dimap Dart planeGraph -> ClosedLineSegment vertex -dartToSeg f (ClosedLineSegment vertex) -> f (Dart planeGraph) -fSegTofDart p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -pSegFSeg - dartToSeg :: Dart planeGraph -> ClosedLineSegment vertex -dartToSeg Dart planeGraph +dartToSeg f (ClosedLineSegment vertex) -> f (Dart planeGraph) +fSegTofDart p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) +pSegFSeg + dartToSeg :: Dart planeGraph -> ClosedLineSegment vertex +dartToSeg Dart planeGraph _ = (vertex -> vertex -> ClosedLineSegment vertex) -> (vertex, vertex) -> ClosedLineSegment vertex forall a b c. (a -> b -> c) -> (a, b) -> c @@ -516,7 +516,7 @@ -> (vertex, vertex) -> ClosedLineSegment vertex forall a b. (a -> b) -> a -> b $ planeGraph -gplaneGraph +gplaneGraph -> Getting (vertex, vertex) planeGraph (vertex, vertex) -> (vertex, vertex) forall s a. s -> Getting a s a -> a @@ -531,57 +531,57 @@ -> IndexedGetter (VertexIx graph, VertexIx graph) graph (Vertex graph, Vertex graph) endPointsOf DartIx planeGraph -ei - fSegTofDart :: f (ClosedLineSegment vertex) -> f (Dart planeGraph) -fSegTofDart = (Dart planeGraph -> ClosedLineSegment vertex) +ei + fSegTofDart :: f (ClosedLineSegment vertex) -> f (Dart planeGraph) +fSegTofDart = (Dart planeGraph -> ClosedLineSegment vertex) -> f (ClosedLineSegment vertex) -> f (Dart planeGraph) forall a' a. (a' -> a) -> f a -> f a' forall (f :: * -> *) a' a. Contravariant f => (a' -> a) -> f a -> f a' contramap Dart planeGraph -> ClosedLineSegment vertex -dartToSeg +dartToSeg -- | Get the line segment representing a particular edge. -- -- Note that this is a fold rather than a getter for the same reason edgeAt is a traversal -- rather than a lens: i.e. if you pass some nonsensical EdgeIx the edge may not exist. -edgeSegmentAt :: forall planeGraph vertex. - ( PlaneGraph_ planeGraph vertex - , Point_ vertex 2 (NumType vertex) +edgeSegmentAt :: forall planeGraph vertex. + ( PlaneGraph_ planeGraph vertex + , Point_ vertex 2 (NumType vertex) ) - => EdgeIx planeGraph - -> IndexedFold (EdgeIx planeGraph) - planeGraph - (ClosedLineSegment vertex) + => EdgeIx planeGraph + -> IndexedFold (EdgeIx planeGraph) + planeGraph + (ClosedLineSegment vertex) edgeSegmentAt :: forall planeGraph vertex. (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => EdgeIx planeGraph -> IndexedFold (EdgeIx planeGraph) planeGraph (ClosedLineSegment vertex) -edgeSegmentAt EdgeIx planeGraph -ei = p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) +edgeSegmentAt EdgeIx planeGraph +ei = p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> planeGraph -> f planeGraph -theFold +theFold where - theFold :: p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) + theFold :: p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> planeGraph -> f planeGraph -theFold p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -pSegFSeg planeGraph -g = EdgeIx planeGraph +theFold p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) +pSegFSeg planeGraph +g = EdgeIx planeGraph -> IndexedTraversal' (EdgeIx planeGraph) planeGraph (Edge planeGraph) forall graph. HasEdges' graph => EdgeIx graph -> IndexedTraversal' (EdgeIx graph) graph (Edge graph) edgeAt EdgeIx planeGraph -ei p (Edge planeGraph) (f (Edge planeGraph)) -pEdgeFEdge planeGraph -g +ei p (Edge planeGraph) (f (Edge planeGraph)) +pEdgeFEdge planeGraph +g where - pEdgeFEdge :: p (Edge planeGraph) (f (Edge planeGraph)) -pEdgeFEdge = (Edge planeGraph -> ClosedLineSegment vertex) + pEdgeFEdge :: p (Edge planeGraph) (f (Edge planeGraph)) +pEdgeFEdge = (Edge planeGraph -> ClosedLineSegment vertex) -> (f (ClosedLineSegment vertex) -> f (Edge planeGraph)) -> p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> p (Edge planeGraph) (f (Edge planeGraph)) @@ -590,17 +590,17 @@ Profunctor p => (a -> b) -> (c -> d) -> p b c -> p a d dimap Edge planeGraph -> ClosedLineSegment vertex -edgeToSeg ((Edge planeGraph -> ClosedLineSegment vertex) +edgeToSeg ((Edge planeGraph -> ClosedLineSegment vertex) -> f (ClosedLineSegment vertex) -> f (Edge planeGraph) forall a' a. (a' -> a) -> f a -> f a' forall (f :: * -> *) a' a. Contravariant f => (a' -> a) -> f a -> f a' contramap Edge planeGraph -> ClosedLineSegment vertex -edgeToSeg) p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -pSegFSeg - edgeToSeg :: Edge planeGraph -> ClosedLineSegment vertex -edgeToSeg Edge planeGraph +edgeToSeg) p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) +pSegFSeg + edgeToSeg :: Edge planeGraph -> ClosedLineSegment vertex +edgeToSeg Edge planeGraph _ = (vertex -> vertex -> ClosedLineSegment vertex) -> (vertex, vertex) -> ClosedLineSegment vertex forall a b c. (a -> b -> c) -> (a, b) -> c @@ -610,7 +610,7 @@ -> (vertex, vertex) -> ClosedLineSegment vertex forall a b. (a -> b) -> a -> b $ planeGraph -gplaneGraph +gplaneGraph -> Getting (vertex, vertex) planeGraph (vertex, vertex) -> (vertex, vertex) forall s a. s -> Getting a s a -> a @@ -629,17 +629,17 @@ BidirGraph_ graph => graph -> EdgeIx graph -> DartIx graph getPositiveDart planeGraph -g EdgeIx planeGraph -ei) +g EdgeIx planeGraph +ei) -- see dartSegment for more info. -- | Renders all darts as line segments. Thesegments are all oriented in the direction of -- the dart. -dartSegments :: forall planeGraph vertex. - ( PlaneGraph_ planeGraph vertex - , Point_ vertex 2 (NumType vertex) +dartSegments :: forall planeGraph vertex. + ( PlaneGraph_ planeGraph vertex + , Point_ vertex 2 (NumType vertex) ) - => IndexedFold (DartIx planeGraph) planeGraph (ClosedLineSegment vertex) + => IndexedFold (DartIx planeGraph) planeGraph (ClosedLineSegment vertex) dartSegments :: forall planeGraph vertex. (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => @@ -652,21 +652,21 @@ Contravariant f) => p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> planeGraph -> f planeGraph -theFold +theFold where - theFold :: forall p f. - ( Indexable (DartIx planeGraph) p, Applicative f, Contravariant f) - => p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) - -> planeGraph - -> f planeGraph - theFold :: forall (p :: * -> * -> *) (f :: * -> *). + theFold :: forall p f. + ( Indexable (DartIx planeGraph) p, Applicative f, Contravariant f) + => p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) + -> planeGraph + -> f planeGraph + theFold :: forall (p :: * -> * -> *) (f :: * -> *). (Indexable (DartIx planeGraph) p, Applicative f, Contravariant f) => p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> planeGraph -> f planeGraph -theFold p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -pSegFSeg planeGraph -g = Indexed (DartIx planeGraph) (Dart planeGraph) (f (Dart planeGraph)) +theFold p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) +pSegFSeg planeGraph +g = Indexed (DartIx planeGraph) (Dart planeGraph) (f (Dart planeGraph)) -> planeGraph -> f planeGraph forall graph graph'. HasDarts graph graph' => @@ -683,15 +683,15 @@ (DartIx planeGraph) (Dart planeGraph) (f (Dart planeGraph)) forall i a b. (i -> a -> b) -> Indexed i a b Indexed DartIx planeGraph -> Dart planeGraph -> f (Dart planeGraph) -draw) planeGraph -g +draw) planeGraph +g where - draw :: DartIx planeGraph -> Dart planeGraph -> f (Dart planeGraph) - draw :: DartIx planeGraph -> Dart planeGraph -> f (Dart planeGraph) -draw DartIx planeGraph -d Dart planeGraph -_ = let seg :: ClosedLineSegment vertex -seg = (vertex -> vertex -> ClosedLineSegment vertex) + draw :: DartIx planeGraph -> Dart planeGraph -> f (Dart planeGraph) + draw :: DartIx planeGraph -> Dart planeGraph -> f (Dart planeGraph) +draw DartIx planeGraph +d Dart planeGraph +_ = let seg :: ClosedLineSegment vertex +seg = (vertex -> vertex -> ClosedLineSegment vertex) -> (vertex, vertex) -> ClosedLineSegment vertex forall a b c. (a -> b -> c) -> (a, b) -> c uncurry vertex -> vertex -> ClosedLineSegment vertex @@ -700,7 +700,7 @@ -> (vertex, vertex) -> ClosedLineSegment vertex forall a b. (a -> b) -> a -> b $ planeGraph -gplaneGraph +gplaneGraph -> Getting (vertex, vertex) planeGraph (vertex, vertex) -> (vertex, vertex) forall s a. s -> Getting a s a -> a @@ -715,9 +715,9 @@ -> IndexedGetter (VertexIx graph, VertexIx graph) graph (Vertex graph, Vertex graph) endPointsOf DartIx planeGraph -d +d in ClosedLineSegment vertex -seg ClosedLineSegment vertex +seg ClosedLineSegment vertex -> f (ClosedLineSegment vertex) -> f (Dart planeGraph) forall b a. b -> f b -> f a forall (f :: * -> *) b a. Contravariant f => b -> f b -> f a @@ -730,18 +730,18 @@ Indexable i p => p a b -> i -> a -> b indexed p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -pSegFSeg DartIx planeGraph -d ClosedLineSegment vertex -seg +pSegFSeg DartIx planeGraph +d ClosedLineSegment vertex +seg -- | Renders all edges as line segments. -edgeSegments :: forall planeGraph vertex. - ( HasEdges planeGraph planeGraph - , BidirGraph_ planeGraph - , vertex ~ Vertex planeGraph - , Point_ vertex 2 (NumType vertex) +edgeSegments :: forall planeGraph vertex. + ( HasEdges planeGraph planeGraph + , BidirGraph_ planeGraph + , vertex ~ Vertex planeGraph + , Point_ vertex 2 (NumType vertex) ) - => IndexedFold (EdgeIx planeGraph) planeGraph (ClosedLineSegment vertex) + => IndexedFold (EdgeIx planeGraph) planeGraph (ClosedLineSegment vertex) edgeSegments :: forall planeGraph vertex. (HasEdges planeGraph planeGraph, BidirGraph_ planeGraph, vertex ~ Vertex planeGraph, Point_ vertex 2 (NumType vertex)) => @@ -754,21 +754,21 @@ Contravariant f) => p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> planeGraph -> f planeGraph -theFold +theFold where - theFold :: forall p f. - ( Indexable (EdgeIx planeGraph) p, Applicative f, Contravariant f) - => p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) - -> planeGraph - -> f planeGraph - theFold :: forall (p :: * -> * -> *) (f :: * -> *). + theFold :: forall p f. + ( Indexable (EdgeIx planeGraph) p, Applicative f, Contravariant f) + => p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) + -> planeGraph + -> f planeGraph + theFold :: forall (p :: * -> * -> *) (f :: * -> *). (Indexable (EdgeIx planeGraph) p, Applicative f, Contravariant f) => p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -> planeGraph -> f planeGraph -theFold p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -pSegFSeg planeGraph -g = Indexed (EdgeIx planeGraph) (Edge planeGraph) (f (Edge planeGraph)) +theFold p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) +pSegFSeg planeGraph +g = Indexed (EdgeIx planeGraph) (Edge planeGraph) (f (Edge planeGraph)) -> planeGraph -> f planeGraph forall graph graph'. HasEdges graph graph' => @@ -785,15 +785,15 @@ (EdgeIx planeGraph) (Edge planeGraph) (f (Edge planeGraph)) forall i a b. (i -> a -> b) -> Indexed i a b Indexed EdgeIx planeGraph -> Edge planeGraph -> f (Edge planeGraph) -draw) planeGraph -g +draw) planeGraph +g where - draw :: EdgeIx planeGraph -> Edge planeGraph -> f (Edge planeGraph) - draw :: EdgeIx planeGraph -> Edge planeGraph -> f (Edge planeGraph) -draw EdgeIx planeGraph -ei Edge planeGraph -_ = let seg :: ClosedLineSegment vertex -seg = (vertex -> vertex -> ClosedLineSegment vertex) + draw :: EdgeIx planeGraph -> Edge planeGraph -> f (Edge planeGraph) + draw :: EdgeIx planeGraph -> Edge planeGraph -> f (Edge planeGraph) +draw EdgeIx planeGraph +ei Edge planeGraph +_ = let seg :: ClosedLineSegment vertex +seg = (vertex -> vertex -> ClosedLineSegment vertex) -> (vertex, vertex) -> ClosedLineSegment vertex forall a b c. (a -> b -> c) -> (a, b) -> c uncurry vertex -> vertex -> ClosedLineSegment vertex @@ -802,7 +802,7 @@ -> (vertex, vertex) -> ClosedLineSegment vertex forall a b. (a -> b) -> a -> b $ planeGraph -gplaneGraph +gplaneGraph -> Getting (vertex, vertex) planeGraph (vertex, vertex) -> (vertex, vertex) forall s a. s -> Getting a s a -> a @@ -821,10 +821,10 @@ BidirGraph_ graph => graph -> EdgeIx graph -> DartIx graph getPositiveDart planeGraph -g EdgeIx planeGraph -ei) +g EdgeIx planeGraph +ei) in ClosedLineSegment vertex -seg ClosedLineSegment vertex +seg ClosedLineSegment vertex -> f (ClosedLineSegment vertex) -> f (Edge planeGraph) forall b a. b -> f b -> f a forall (f :: * -> *) b a. Contravariant f => b -> f b -> f a @@ -837,21 +837,21 @@ Indexable i p => p a b -> i -> a -> b indexed p (ClosedLineSegment vertex) (f (ClosedLineSegment vertex)) -pSegFSeg EdgeIx planeGraph -ei ClosedLineSegment vertex -seg +pSegFSeg EdgeIx planeGraph +ei ClosedLineSegment vertex +seg -- | Renders all interior faces as simple polygons. -interiorFacePolygons :: forall planeGraph vertex r. - ( PlaneGraph_ planeGraph vertex - , Point_ vertex 2 r - , Ord r, Num r - , Eq (FaceIx planeGraph) +interiorFacePolygons :: forall planeGraph vertex r. + ( PlaneGraph_ planeGraph vertex + , Point_ vertex 2 r + , Ord r, Num r + , Eq (FaceIx planeGraph) ) - => IndexedFold (FaceIx planeGraph) - planeGraph - (SimplePolygon (vertex :+ VertexIx planeGraph)) + => IndexedFold (FaceIx planeGraph) + planeGraph + (SimplePolygon (vertex :+ VertexIx planeGraph)) interiorFacePolygons :: forall planeGraph vertex r. (PlaneGraph_ planeGraph vertex, Point_ vertex 2 r, Ord r, Num r, Eq (FaceIx planeGraph)) => @@ -868,25 +868,25 @@ p (SimplePolygon (vertex :+ VertexIx planeGraph)) (f (SimplePolygon (vertex :+ VertexIx planeGraph))) -> planeGraph -> f planeGraph -theFold +theFold where - theFold :: forall p f. - ( PlaneGraph_ planeGraph vertex - , Indexable (FaceIx planeGraph) p, Applicative f, Contravariant f) - => p (SimplePolygon (vertex :+ VertexIx planeGraph)) - (f (SimplePolygon (vertex :+ VertexIx planeGraph))) - -> planeGraph - -> f planeGraph - theFold :: forall (p :: * -> * -> *) (f :: * -> *). + theFold :: forall p f. + ( PlaneGraph_ planeGraph vertex + , Indexable (FaceIx planeGraph) p, Applicative f, Contravariant f) + => p (SimplePolygon (vertex :+ VertexIx planeGraph)) + (f (SimplePolygon (vertex :+ VertexIx planeGraph))) + -> planeGraph + -> f planeGraph + theFold :: forall (p :: * -> * -> *) (f :: * -> *). (PlaneGraph_ planeGraph vertex, Indexable (FaceIx planeGraph) p, Applicative f, Contravariant f) => p (SimplePolygon (vertex :+ VertexIx planeGraph)) (f (SimplePolygon (vertex :+ VertexIx planeGraph))) -> planeGraph -> f planeGraph -theFold p (SimplePolygon (vertex :+ VertexIx planeGraph)) +theFold p (SimplePolygon (vertex :+ VertexIx planeGraph)) (f (SimplePolygon (vertex :+ VertexIx planeGraph))) -pPolyFPoly planeGraph -g = Indexed (FaceIx planeGraph) (Face planeGraph) (f (Face planeGraph)) +pPolyFPoly planeGraph +g = Indexed (FaceIx planeGraph) (Face planeGraph) (f (Face planeGraph)) -> planeGraph -> f planeGraph forall planeGraph vertex. (PlaneGraph_ planeGraph vertex, Eq (FaceIx planeGraph)) => @@ -897,15 +897,15 @@ (FaceIx planeGraph) (Face planeGraph) (f (Face planeGraph)) forall i a b. (i -> a -> b) -> Indexed i a b Indexed FaceIx planeGraph -> Face planeGraph -> f (Face planeGraph) -draw) planeGraph -g +draw) planeGraph +g where - draw :: FaceIx planeGraph -> Face planeGraph -> f (Face planeGraph) - draw :: FaceIx planeGraph -> Face planeGraph -> f (Face planeGraph) -draw FaceIx planeGraph -fi Face planeGraph -_ = let poly :: SimplePolygon (vertex :+ VertexIx planeGraph) -poly = planeGraph + draw :: FaceIx planeGraph -> Face planeGraph -> f (Face planeGraph) + draw :: FaceIx planeGraph -> Face planeGraph -> f (Face planeGraph) +draw FaceIx planeGraph +fi Face planeGraph +_ = let poly :: SimplePolygon (vertex :+ VertexIx planeGraph) +poly = planeGraph -> FaceIx planeGraph -> SimplePolygon (vertex :+ VertexIx planeGraph) forall planeGraph vertex r. @@ -914,10 +914,10 @@ -> FaceIx planeGraph -> SimplePolygon (vertex :+ VertexIx planeGraph) polygonFromFace planeGraph -g FaceIx planeGraph -fi +g FaceIx planeGraph +fi in SimplePolygon (vertex :+ VertexIx planeGraph) -poly SimplePolygon (vertex :+ VertexIx planeGraph) +poly SimplePolygon (vertex :+ VertexIx planeGraph) -> f (SimplePolygon (vertex :+ VertexIx planeGraph)) -> f (Face planeGraph) forall b a. b -> f b -> f a @@ -933,24 +933,24 @@ p a b -> i -> a -> b indexed p (SimplePolygon (vertex :+ VertexIx planeGraph)) (f (SimplePolygon (vertex :+ VertexIx planeGraph))) -pPolyFPoly FaceIx planeGraph -fi SimplePolygon (vertex :+ VertexIx planeGraph) -poly +pPolyFPoly FaceIx planeGraph +fi SimplePolygon (vertex :+ VertexIx planeGraph) +poly -polygonFromFace :: forall planeGraph vertex r.( PlaneGraph_ planeGraph vertex - , Point_ vertex 2 r +polygonFromFace :: forall planeGraph vertex r.( PlaneGraph_ planeGraph vertex + , Point_ vertex 2 r ) - => planeGraph -> FaceIx planeGraph - -> SimplePolygon (vertex :+ VertexIx planeGraph) + => planeGraph -> FaceIx planeGraph + -> SimplePolygon (vertex :+ VertexIx planeGraph) polygonFromFace :: forall planeGraph vertex r. (PlaneGraph_ planeGraph vertex, Point_ vertex 2 r) => planeGraph -> FaceIx planeGraph -> SimplePolygon (vertex :+ VertexIx planeGraph) -polygonFromFace planeGraph -gr FaceIx planeGraph -fi = SimplePolygon (vertex :+ VertexIx planeGraph) -poly'SimplePolygon (vertex :+ VertexIx planeGraph) +polygonFromFace planeGraph +gr FaceIx planeGraph +fi = SimplePolygon (vertex :+ VertexIx planeGraph) +poly'SimplePolygon (vertex :+ VertexIx planeGraph) -> (SimplePolygon (vertex :+ VertexIx planeGraph) -> SimplePolygon (vertex :+ VertexIx planeGraph)) -> SimplePolygon (vertex :+ VertexIx planeGraph) @@ -1002,9 +1002,9 @@ forall a b. Coercible a b => a -> b coerce where - poly' :: SimplePolygon (vertex :+ VertexIx planeGraph) - poly' :: SimplePolygon (vertex :+ VertexIx planeGraph) -poly' = NonEmptyVector (vertex :+ VertexIx planeGraph) + poly' :: SimplePolygon (vertex :+ VertexIx planeGraph) + poly' :: SimplePolygon (vertex :+ VertexIx planeGraph) +poly' = NonEmptyVector (vertex :+ VertexIx planeGraph) -> SimplePolygon (vertex :+ VertexIx planeGraph) forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => @@ -1026,9 +1026,9 @@ -> NonEmptyVector (vertex :+ VertexIx planeGraph) forall a b. (a -> b) -> NonEmptyVector a -> NonEmptyVector b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\VertexIx planeGraph -vi -> planeGraph -grplaneGraph -> Getting (Endo vertex) planeGraph vertex -> vertex +fmap (\VertexIx planeGraph +vi -> planeGraph +grplaneGraph -> Getting (Endo vertex) planeGraph vertex -> vertex forall s a. HasCallStack => s -> Getting (Endo a) s a -> a ^?!VertexIx planeGraph -> IndexedTraversal' @@ -1038,10 +1038,10 @@ VertexIx graph -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt VertexIx planeGraph -vi vertex -> VertexIx planeGraph -> vertex :+ VertexIx planeGraph +vi vertex -> VertexIx planeGraph -> vertex :+ VertexIx planeGraph forall core extra. core -> extra -> core :+ extra :+ VertexIx planeGraph -vi) +vi) (NonEmptyVector (VertexIx planeGraph) -> SimplePolygon (vertex :+ VertexIx planeGraph)) -> NonEmptyVector (VertexIx planeGraph) @@ -1054,8 +1054,8 @@ FaceIx planarGraph -> planarGraph -> NonEmptyVector (VertexIx planarGraph) boundaryVertices FaceIx planeGraph -fi planeGraph -gr +fi planeGraph +gr -- note that this is safe, since boundaryVerticesOf guarantees that for -- interior faces, the vertices are returned in CCW order. @@ -1066,14 +1066,14 @@ -- -- Note that this is a fold rather than a getter for the same reason faceAt is a traversal -- rather than a lens: i.e. if you pass some nonsensical FaceIx the face may not exist. -interiorFacePolygonAt :: forall planeGraph vertex. - ( PlaneGraph_ planeGraph vertex - , Point_ vertex 2 (NumType vertex) +interiorFacePolygonAt :: forall planeGraph vertex. + ( PlaneGraph_ planeGraph vertex + , Point_ vertex 2 (NumType vertex) ) - => FaceIx planeGraph - -> IndexedFold (FaceIx planeGraph) - planeGraph - (SimplePolygon (vertex :+ VertexIx planeGraph)) + => FaceIx planeGraph + -> IndexedFold (FaceIx planeGraph) + planeGraph + (SimplePolygon (vertex :+ VertexIx planeGraph)) interiorFacePolygonAt :: forall planeGraph vertex. (PlaneGraph_ planeGraph vertex, Point_ vertex 2 (NumType vertex)) => @@ -1082,34 +1082,34 @@ (FaceIx planeGraph) planeGraph (SimplePolygon (vertex :+ VertexIx planeGraph)) -interiorFacePolygonAt FaceIx planeGraph -fi = p (SimplePolygon (vertex :+ VertexIx planeGraph)) +interiorFacePolygonAt FaceIx planeGraph +fi = p (SimplePolygon (vertex :+ VertexIx planeGraph)) (f (SimplePolygon (vertex :+ VertexIx planeGraph))) -> planeGraph -> f planeGraph -theFold +theFold where - theFold :: p (SimplePolygon (vertex :+ VertexIx planeGraph)) + theFold :: p (SimplePolygon (vertex :+ VertexIx planeGraph)) (f (SimplePolygon (vertex :+ VertexIx planeGraph))) -> planeGraph -> f planeGraph -theFold p (SimplePolygon (vertex :+ VertexIx planeGraph)) +theFold p (SimplePolygon (vertex :+ VertexIx planeGraph)) (f (SimplePolygon (vertex :+ VertexIx planeGraph))) -pPolyFPoly planeGraph -gr = FaceIx planeGraph +pPolyFPoly planeGraph +gr = FaceIx planeGraph -> IndexedTraversal' (FaceIx planeGraph) planeGraph (Face planeGraph) forall graph. HasFaces' graph => FaceIx graph -> IndexedTraversal' (FaceIx graph) graph (Face graph) faceAt FaceIx planeGraph -fi Face planeGraph -> f (Face planeGraph) -draw planeGraph -gr +fi Face planeGraph -> f (Face planeGraph) +draw planeGraph +gr where -- draw :: Face planeGraph -> f (Face planeGraph) - draw :: Face planeGraph -> f (Face planeGraph) -draw Face planeGraph -_ = let poly :: SimplePolygon (vertex :+ VertexIx planeGraph) -poly = planeGraph + draw :: Face planeGraph -> f (Face planeGraph) +draw Face planeGraph +_ = let poly :: SimplePolygon (vertex :+ VertexIx planeGraph) +poly = planeGraph -> FaceIx planeGraph -> SimplePolygon (vertex :+ VertexIx planeGraph) forall planeGraph vertex r. @@ -1118,10 +1118,10 @@ -> FaceIx planeGraph -> SimplePolygon (vertex :+ VertexIx planeGraph) polygonFromFace planeGraph -gr FaceIx planeGraph -fi +gr FaceIx planeGraph +fi in SimplePolygon (vertex :+ VertexIx planeGraph) -poly SimplePolygon (vertex :+ VertexIx planeGraph) +poly SimplePolygon (vertex :+ VertexIx planeGraph) -> f (SimplePolygon (vertex :+ VertexIx planeGraph)) -> f (Face planeGraph) forall b a. b -> f b -> f a @@ -1137,20 +1137,20 @@ p a b -> i -> a -> b indexed p (SimplePolygon (vertex :+ VertexIx planeGraph)) (f (SimplePolygon (vertex :+ VertexIx planeGraph))) -pPolyFPoly FaceIx planeGraph -fi SimplePolygon (vertex :+ VertexIx planeGraph) -poly +pPolyFPoly FaceIx planeGraph +fi SimplePolygon (vertex :+ VertexIx planeGraph) +poly -------------------------------------------------------------------------------- -- | get the minimum of the elements the lens points to using the given comparison function -minimum1ByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> a +minimum1ByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> a minimum1ByOf :: forall a s. Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> a -minimum1ByOf Getting (Endo (Endo (Maybe a))) s a -l a -> a -> Ordering -cmp = a -> Maybe a -> a +minimum1ByOf Getting (Endo (Endo (Maybe a))) s a +l a -> a -> Ordering +cmp = a -> Maybe a -> a forall a. a -> Maybe a -> a fromMaybe ([Char] -> a forall a. HasCallStack => [Char] -> a @@ -1163,8 +1163,8 @@ Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> Maybe a minimumByOf Getting (Endo (Endo (Maybe a))) s a -l a -> a -> Ordering -cmp +l a -> a -> Ordering +cmp -- -- type Getting r s a = (a -> Const r a) -> s -> Const r s diff --git a/haddocks/hgeometry/src/HGeometry.PlaneGraph.Connected.Type.html b/haddocks/hgeometry/src/HGeometry.PlaneGraph.Connected.Type.html index 2b18ee213..c9f87f62f 100644 --- a/haddocks/hgeometry/src/HGeometry.PlaneGraph.Connected.Type.html +++ b/haddocks/hgeometry/src/HGeometry.PlaneGraph.Connected.Type.html @@ -52,9 +52,9 @@ -- * The CPlaneGraph type -- | An Embedded, *connected*, planar graph -newtype CPlaneGraph s v e f = - CPlaneGraph (CPlanarGraph Primal s v e f) - deriving stock (Int -> CPlaneGraph s v e f -> ShowS +newtype CPlaneGraph s v e f = + CPlaneGraph (CPlanarGraph Primal s v e f) + deriving stock (Int -> CPlaneGraph s v e f -> ShowS [CPlaneGraph s v e f] -> ShowS CPlaneGraph s v e f -> String (Int -> CPlaneGraph s v e f -> ShowS) @@ -84,7 +84,7 @@ (Show v, Show e, Show f) => [CPlaneGraph s v e f] -> ShowS showList :: [CPlaneGraph s v e f] -> ShowS -Show,CPlaneGraph s v e f -> CPlaneGraph s v e f -> Bool +Show,CPlaneGraph s v e f -> CPlaneGraph s v e f -> Bool (CPlaneGraph s v e f -> CPlaneGraph s v e f -> Bool) -> (CPlaneGraph s v e f -> CPlaneGraph s v e f -> Bool) -> Eq (CPlaneGraph s v e f) @@ -100,7 +100,7 @@ (Eq v, Eq e, Eq f) => CPlaneGraph s v e f -> CPlaneGraph s v e f -> Bool /= :: CPlaneGraph s v e f -> CPlaneGraph s v e f -> Bool -Eq,(forall x. CPlaneGraph s v e f -> Rep (CPlaneGraph s v e f) x) +Eq,(forall x. CPlaneGraph s v e f -> Rep (CPlaneGraph s v e f) x) -> (forall x. Rep (CPlaneGraph s v e f) x -> CPlaneGraph s v e f) -> Generic (CPlaneGraph s v e f) forall x. Rep (CPlaneGraph s v e f) x -> CPlaneGraph s v e f @@ -119,12 +119,12 @@ to :: forall x. Rep (CPlaneGraph s v e f) x -> CPlaneGraph s v e f Generic) -type instance NumType (CPlaneGraph s v e f) = NumType v -type instance Dimension (CPlaneGraph s v e f) = 2 +type instance NumType (CPlaneGraph s v e f) = NumType v +type instance Dimension (CPlaneGraph s v e f) = 2 -- | Iso to access the graph -_CPlanarGraph :: Iso (CPlaneGraph s v e f) (CPlaneGraph s v' e' f') - (CPlanarGraph Primal s v e f) (CPlanarGraph Primal s v' e' f') +_CPlanarGraph :: Iso (CPlaneGraph s v e f) (CPlaneGraph s v' e' f') + (CPlanarGraph Primal s v e f) (CPlanarGraph Primal s v' e' f') _CPlanarGraph :: forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => @@ -145,16 +145,16 @@ ---------------------------------------- -instance HasVertices' (CPlaneGraph s v e f) where - type Vertex (CPlaneGraph s v e f) = v - type VertexIx (CPlaneGraph s v e f) = VertexId s - vertexAt :: VertexIx (CPlaneGraph s v e f) +instance HasVertices' (CPlaneGraph s v e f) where + type Vertex (CPlaneGraph s v e f) = v + type VertexIx (CPlaneGraph s v e f) = VertexId s + vertexAt :: VertexIx (CPlaneGraph s v e f) -> IndexedTraversal' (VertexIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Vertex (CPlaneGraph s v e f)) -vertexAt VertexIx (CPlaneGraph s v e f) -i = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +vertexAt VertexIx (CPlaneGraph s v e f) +i = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -182,16 +182,16 @@ -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt VertexIx (CPlanarGraph 'Primal s v e f) VertexIx (CPlaneGraph s v e f) -i +i -instance HasVertices (CPlaneGraph s v e f) (CPlaneGraph s v' e f) where - vertices :: IndexedTraversal1 +instance HasVertices (CPlaneGraph s v e f) (CPlaneGraph s v' e f) where + vertices :: IndexedTraversal1 (VertexIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v' e f) (Vertex (CPlaneGraph s v e f)) (Vertex (CPlaneGraph s v' e f)) -vertices = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v' e f)) +vertices = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v' e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v' e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -230,16 +230,16 @@ ---------------------------------------- -instance HasDarts' (CPlaneGraph s v e f) where - type Dart (CPlaneGraph s v e f) = e - type DartIx (CPlaneGraph s v e f) = DartId s - dartAt :: DartIx (CPlaneGraph s v e f) +instance HasDarts' (CPlaneGraph s v e f) where + type Dart (CPlaneGraph s v e f) = e + type DartIx (CPlaneGraph s v e f) = DartId s + dartAt :: DartIx (CPlaneGraph s v e f) -> IndexedTraversal' (DartIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Dart (CPlaneGraph s v e f)) -dartAt DartIx (CPlaneGraph s v e f) -i = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +dartAt DartIx (CPlaneGraph s v e f) +i = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -266,16 +266,16 @@ DartIx graph -> IndexedTraversal' (DartIx graph) graph (Dart graph) dartAt DartIx (CPlanarGraph 'Primal s v e f) DartIx (CPlaneGraph s v e f) -i +i -instance HasDarts (CPlaneGraph s v e f) (CPlaneGraph s v e' f) where - darts :: IndexedTraversal +instance HasDarts (CPlaneGraph s v e f) (CPlaneGraph s v e' f) where + darts :: IndexedTraversal (DartIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v e' f) (Dart (CPlaneGraph s v e f)) (Dart (CPlaneGraph s v e' f)) -darts = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e' f)) +darts = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e' f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e' f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -314,16 +314,16 @@ ---------------------------------------- -instance HasEdges' (CPlaneGraph s v e f) where - type Edge (CPlaneGraph s v e f) = e - type EdgeIx (CPlaneGraph s v e f) = DartId s - edgeAt :: EdgeIx (CPlaneGraph s v e f) +instance HasEdges' (CPlaneGraph s v e f) where + type Edge (CPlaneGraph s v e f) = e + type EdgeIx (CPlaneGraph s v e f) = DartId s + edgeAt :: EdgeIx (CPlaneGraph s v e f) -> IndexedTraversal' (EdgeIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Edge (CPlaneGraph s v e f)) -edgeAt EdgeIx (CPlaneGraph s v e f) -d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +edgeAt EdgeIx (CPlaneGraph s v e f) +d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -350,16 +350,16 @@ EdgeIx graph -> IndexedTraversal' (EdgeIx graph) graph (Edge graph) edgeAt EdgeIx (CPlanarGraph 'Primal s v e f) EdgeIx (CPlaneGraph s v e f) -d +d -instance HasEdges (CPlaneGraph s v e f) (CPlaneGraph s v e f) where - edges :: IndexedTraversal +instance HasEdges (CPlaneGraph s v e f) (CPlaneGraph s v e f) where + edges :: IndexedTraversal (EdgeIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v e f) (Edge (CPlaneGraph s v e f)) (Edge (CPlaneGraph s v e f)) -edges = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +edges = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -395,16 +395,16 @@ ---------------------------------------- -instance HasFaces' (CPlaneGraph s v e f) where - type Face (CPlaneGraph s v e f) = f - type FaceIx (CPlaneGraph s v e f) = FaceId s - faceAt :: FaceIx (CPlaneGraph s v e f) +instance HasFaces' (CPlaneGraph s v e f) where + type Face (CPlaneGraph s v e f) = f + type FaceIx (CPlaneGraph s v e f) = FaceId s + faceAt :: FaceIx (CPlaneGraph s v e f) -> IndexedTraversal' (FaceIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Face (CPlaneGraph s v e f)) -faceAt FaceIx (CPlaneGraph s v e f) -fi = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +faceAt FaceIx (CPlaneGraph s v e f) +fi = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -431,17 +431,17 @@ FaceIx graph -> IndexedTraversal' (FaceIx graph) graph (Face graph) faceAt FaceIx (CPlanarGraph 'Primal s v e f) FaceIx (CPlaneGraph s v e f) -fi +fi -instance HasFaces (CPlaneGraph s v e f) (CPlaneGraph s v e f') where - faces :: IndexedTraversal1 +instance HasFaces (CPlaneGraph s v e f) (CPlaneGraph s v e f') where + faces :: IndexedTraversal1 (FaceIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (CPlaneGraph s v e f') (Face (CPlaneGraph s v e f)) (Face (CPlaneGraph s v e f')) -faces = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f')) +faces = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f')) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f') forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -479,12 +479,12 @@ faces ---------------------------------------- -instance DiGraph_ (CPlaneGraph s v e f) where - endPoints :: CPlaneGraph s v e f +instance DiGraph_ (CPlaneGraph s v e f) where + endPoints :: CPlaneGraph s v e f -> DartIx (CPlaneGraph s v e f) -> (VertexIx (CPlaneGraph s v e f), VertexIx (CPlaneGraph s v e f)) -endPoints (CPlaneGraph CPlanarGraph 'Primal s v e f -g) = CPlanarGraph 'Primal s v e f +endPoints (CPlaneGraph CPlanarGraph 'Primal s v e f +g) = CPlanarGraph 'Primal s v e f -> DartIx (CPlanarGraph 'Primal s v e f) -> (VertexIx (CPlanarGraph 'Primal s v e f), VertexIx (CPlanarGraph 'Primal s v e f)) @@ -492,18 +492,18 @@ DiGraph_ graph => graph -> DartIx graph -> (VertexIx graph, VertexIx graph) endPoints CPlanarGraph 'Primal s v e f -g - twinDartOf :: DartIx (CPlaneGraph s v e f) +g + twinDartOf :: DartIx (CPlaneGraph s v e f) -> Getter (CPlaneGraph s v e f) (Maybe (DartIx (CPlaneGraph s v e f))) -twinDartOf DartIx (CPlaneGraph s v e f) -d = DartIx (CPlaneGraph s v e f) +twinDartOf DartIx (CPlaneGraph s v e f) +d = DartIx (CPlaneGraph s v e f) -> Getter (CPlaneGraph s v e f) (DartIx (CPlaneGraph s v e f)) forall graph. BidirGraph_ graph => DartIx graph -> Getter graph (DartIx graph) twinOf DartIx (CPlaneGraph s v e f) -d ((DartId s -> f (DartId s)) +d ((DartId s -> f (DartId s)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f)) -> ((Maybe (DartId s) -> f (Maybe (DartId s))) -> DartId s -> f (DartId s)) @@ -521,13 +521,13 @@ to DartId s -> Maybe (DartId s) forall a. a -> Maybe a Just - outgoingDartsOf :: VertexIx (CPlaneGraph s v e f) + outgoingDartsOf :: VertexIx (CPlaneGraph s v e f) -> IndexedFold (DartIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Dart (CPlaneGraph s v e f)) -outgoingDartsOf VertexIx (CPlaneGraph s v e f) -v = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +outgoingDartsOf VertexIx (CPlaneGraph s v e f) +v = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -554,19 +554,19 @@ VertexIx graph -> IndexedFold (DartIx graph) graph (Dart graph) outgoingDartsOf VertexIx (CPlanarGraph 'Primal s v e f) VertexIx (CPlaneGraph s v e f) -v +v -instance ConstructableDiGraph_ (CPlaneGraph s v e f) where - type DiGraphFromAdjListExtraConstraints (CPlaneGraph s v e f) h = (f ~ (), Foldable1 h) +instance ConstructableDiGraph_ (CPlaneGraph s v e f) where + type DiGraphFromAdjListExtraConstraints (CPlaneGraph s v e f) h = (f ~ (), Foldable1 h) -- | The vertices are expected to have their adjacencies in CCW order. - diGraphFromAdjacencyLists :: forall (f :: * -> *) (h :: * -> *) vi v d. + diGraphFromAdjacencyLists :: forall (f :: * -> *) (h :: * -> *) vi v d. (Foldable1 f, Functor f, Foldable h, Functor h, vi ~ VertexIx (CPlaneGraph s v e f), v ~ Vertex (CPlaneGraph s v e f), d ~ Dart (CPlaneGraph s v e f), DiGraphFromAdjListExtraConstraints (CPlaneGraph s v e f) h) => f (vi, v, h (vi, d)) -> CPlaneGraph s v e f -diGraphFromAdjacencyLists = CPlanarGraph 'Primal s v e f -> CPlaneGraph s v e f +diGraphFromAdjacencyLists = CPlanarGraph 'Primal s v e f -> CPlaneGraph s v e f forall {k} (s :: k) v e f. CPlanarGraph 'Primal s v e f -> CPlaneGraph s v e f CPlaneGraph (CPlanarGraph 'Primal s v e f -> CPlaneGraph s v e f) @@ -592,11 +592,11 @@ -- TODO: we should probably use some toEmbedding here as well I think -instance BidirGraph_ (CPlaneGraph s v e f) where - twinOf :: DartIx (CPlaneGraph s v e f) +instance BidirGraph_ (CPlaneGraph s v e f) where + twinOf :: DartIx (CPlaneGraph s v e f) -> Getter (CPlaneGraph s v e f) (DartIx (CPlaneGraph s v e f)) -twinOf DartIx (CPlaneGraph s v e f) -d = (CPlaneGraph s v e f -> DartIx (CPlaneGraph s v e f)) +twinOf DartIx (CPlaneGraph s v e f) +d = (CPlaneGraph s v e f -> DartIx (CPlaneGraph s v e f)) -> (DartIx (CPlaneGraph s v e f) -> f (DartIx (CPlaneGraph s v e f))) -> CPlaneGraph s v e f @@ -621,33 +621,33 @@ forall {k} (s :: k). Dart s -> Dart s PG.twin DartIx (CPlaneGraph s v e f) Dart s -d) - getPositiveDart :: CPlaneGraph s v e f +d) + getPositiveDart :: CPlaneGraph s v e f -> EdgeIx (CPlaneGraph s v e f) -> DartIx (CPlaneGraph s v e f) -getPositiveDart (CPlaneGraph CPlanarGraph 'Primal s v e f -g) EdgeIx (CPlaneGraph s v e f) -e = CPlanarGraph 'Primal s v e f +getPositiveDart (CPlaneGraph CPlanarGraph 'Primal s v e f +g) EdgeIx (CPlaneGraph s v e f) +e = CPlanarGraph 'Primal s v e f -> EdgeIx (CPlanarGraph 'Primal s v e f) -> DartIx (CPlanarGraph 'Primal s v e f) forall graph. BidirGraph_ graph => graph -> EdgeIx graph -> DartIx graph getPositiveDart CPlanarGraph 'Primal s v e f -g EdgeIx (CPlanarGraph 'Primal s v e f) +g EdgeIx (CPlanarGraph 'Primal s v e f) EdgeIx (CPlaneGraph s v e f) -e +e -- | Computes the cyclic order of adjacencies around each vertex. -- -- \(O(n \log n)\) -toEmbedding :: ( Foldable1 g, Functor g, Foldable h, Functor h - , vi ~ VertexIx (CPlaneGraph s v e f) - , v ~ Vertex (CPlaneGraph s v e f) - , e ~ Edge (CPlaneGraph s v e f) - , GraphFromAdjListExtraConstraints (CPlaneGraph s v e f) h - , Point_ v 2 r, Ord r, Num r - ) => g (vi, v, h (vi, e)) -> g (vi, v, Vector.NonEmptyVector (vi, e)) +toEmbedding :: ( Foldable1 g, Functor g, Foldable h, Functor h + , vi ~ VertexIx (CPlaneGraph s v e f) + , v ~ Vertex (CPlaneGraph s v e f) + , e ~ Edge (CPlaneGraph s v e f) + , GraphFromAdjListExtraConstraints (CPlaneGraph s v e f) h + , Point_ v 2 r, Ord r, Num r + ) => g (vi, v, h (vi, e)) -> g (vi, v, Vector.NonEmptyVector (vi, e)) toEmbedding :: forall {k} (g :: * -> *) (h :: * -> *) vi (s :: k) v e f r. (Foldable1 g, Functor g, Foldable h, Functor h, vi ~ VertexIx (CPlaneGraph s v e f), @@ -655,38 +655,38 @@ GraphFromAdjListExtraConstraints (CPlaneGraph s v e f) h, Point_ v 2 r, Ord r, Num r) => g (vi, v, h (vi, e)) -> g (vi, v, NonEmptyVector (vi, e)) -toEmbedding g (vi, v, h (vi, e)) -vs = ((vi, v, h (vi, e)) -> (vi, v, NonEmptyVector (vi, e))) +toEmbedding g (vi, v, h (vi, e)) +vs = ((vi, v, h (vi, e)) -> (vi, v, NonEmptyVector (vi, e))) -> g (vi, v, h (vi, e)) -> g (vi, v, NonEmptyVector (vi, e)) forall a b. (a -> b) -> g a -> g b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (vi, v, h (vi, e)) -> (vi, v, NonEmptyVector (vi, e)) -sortAround' g (vi, v, h (vi, e)) -vs +sortAround' g (vi, v, h (vi, e)) +vs where - vertexLocs :: Map vi v -vertexLocs = ((vi, v, h (vi, e)) -> Map vi v) + vertexLocs :: Map vi v +vertexLocs = ((vi, v, h (vi, e)) -> Map vi v) -> g (vi, v, h (vi, e)) -> Map vi v forall m a. Monoid m => (a -> m) -> g a -> m forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m -foldMap (\(vi -vi,v -v,h (vi, e) +foldMap (\(vi +vi,v +v,h (vi, e) _) -> vi -> v -> Map vi v forall k a. k -> a -> Map k a Map.singleton vi -vi v -v) g (vi, v, h (vi, e)) -vs - sortAround' :: (vi, v, h (vi, e)) -> (vi, v, NonEmptyVector (vi, e)) -sortAround' (vi -vi,v -v,h (vi, e) -adjs) = (vi -vi,v -v, Vector (vi, e) -> NonEmptyVector (vi, e) +vi v +v) g (vi, v, h (vi, e)) +vs + sortAround' :: (vi, v, h (vi, e)) -> (vi, v, NonEmptyVector (vi, e)) +sortAround' (vi +vi,v +v,h (vi, e) +adjs) = (vi +vi,v +v, Vector (vi, e) -> NonEmptyVector (vi, e) forall a. Vector a -> NonEmptyVector a Vector.unsafeFromVector (Vector (vi, e) -> NonEmptyVector (vi, e)) -> Vector (vi, e) -> NonEmptyVector (vi, e) @@ -696,42 +696,42 @@ (Foldable f, Vector vector a) => (a -> a -> Ordering) -> f a -> vector a sortBy (v -> (vi, e) -> (vi, e) -> Ordering -ccwCmpAround' v -v) h (vi, e) -adjs) - ccwCmpAround' :: v -> (vi, e) -> (vi, e) -> Ordering -ccwCmpAround' v -v (vi -ui,e -_) (vi -wi,e +ccwCmpAround' v +v) h (vi, e) +adjs) + ccwCmpAround' :: v -> (vi, e) -> (vi, e) -> Ordering +ccwCmpAround' v +v (vi +ui,e +_) (vi +wi,e _) = v -> v -> v -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => center -> point -> point -> Ordering ccwCmpAround v -v (Map vi v -vertexLocs Map vi v -> vi -> v +v (Map vi v +vertexLocs Map vi v -> vi -> v forall k a. Ord k => Map k a -> k -> a Map.! vi -ui) (Map vi v -vertexLocs Map vi v -> vi -> v +ui) (Map vi v +vertexLocs Map vi v -> vi -> v forall k a. Ord k => Map k a -> k -> a Map.! vi -wi) +wi) -instance ( Point_ v 2 (NumType v) - , Ord (NumType v), Num (NumType v) - ) => Graph_ (CPlaneGraph s v e f) where - neighboursOf :: VertexIx (CPlaneGraph s v e f) +instance ( Point_ v 2 (NumType v) + , Ord (NumType v), Num (NumType v) + ) => Graph_ (CPlaneGraph s v e f) where + neighboursOf :: VertexIx (CPlaneGraph s v e f) -> IndexedFold (VertexIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Vertex (CPlaneGraph s v e f)) -neighboursOf VertexIx (CPlaneGraph s v e f) -u = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +neighboursOf VertexIx (CPlaneGraph s v e f) +u = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -758,14 +758,14 @@ VertexIx graph -> IndexedFold (VertexIx graph) graph (Vertex graph) neighboursOf VertexIx (CPlanarGraph 'Primal s v e f) VertexIx (CPlaneGraph s v e f) -u - incidentEdgesOf :: VertexIx (CPlaneGraph s v e f) +u + incidentEdgesOf :: VertexIx (CPlaneGraph s v e f) -> IndexedFold (EdgeIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Edge (CPlaneGraph s v e f)) -incidentEdgesOf VertexIx (CPlaneGraph s v e f) -u = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +incidentEdgesOf VertexIx (CPlaneGraph s v e f) +u = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -792,20 +792,20 @@ VertexIx graph -> IndexedFold (EdgeIx graph) graph (Edge graph) incidentEdgesOf VertexIx (CPlanarGraph 'Primal s v e f) VertexIx (CPlaneGraph s v e f) -u +u -instance ( Point_ v 2 (NumType v) - , Ord (NumType v), Num (NumType v) - ) => ConstructableGraph_ (CPlaneGraph s v e f) where - type GraphFromAdjListExtraConstraints (CPlaneGraph s v e f) h = (f ~ (), Foldable1 h) +instance ( Point_ v 2 (NumType v) + , Ord (NumType v), Num (NumType v) + ) => ConstructableGraph_ (CPlaneGraph s v e f) where + type GraphFromAdjListExtraConstraints (CPlaneGraph s v e f) h = (f ~ (), Foldable1 h) - fromAdjacencyLists :: forall (f :: * -> *) (h :: * -> *) vi v e. + fromAdjacencyLists :: forall (f :: * -> *) (h :: * -> *) vi v e. (Foldable1 f, Functor f, Foldable h, Functor h, vi ~ VertexIx (CPlaneGraph s v e f), v ~ Vertex (CPlaneGraph s v e f), e ~ Edge (CPlaneGraph s v e f), GraphFromAdjListExtraConstraints (CPlaneGraph s v e f) h) => f (vi, v, h (vi, e)) -> CPlaneGraph s v e f -fromAdjacencyLists = f (vi, v, NonEmptyVector (vi, e)) -> CPlaneGraph s v e f +fromAdjacencyLists = f (vi, v, NonEmptyVector (vi, e)) -> CPlaneGraph s v e f forall planeGraph vertex (f :: * -> *) (h :: * -> *) vi v e. (PlaneGraph_ planeGraph vertex, Foldable1 f, Functor f, Foldable h, Functor h, vi ~ VertexIx planeGraph, v ~ Vertex planeGraph, @@ -834,13 +834,13 @@ toEmbedding -instance ( Point_ v 2 (NumType v) - , Ord (NumType v), Num (NumType v) - ) => PlanarGraph_ (CPlaneGraph s v e f) where - type DualGraphOf (CPlaneGraph s v e f) = CPlanarGraph Dual s f e v +instance ( Point_ v 2 (NumType v) + , Ord (NumType v), Num (NumType v) + ) => PlanarGraph_ (CPlaneGraph s v e f) where + type DualGraphOf (CPlaneGraph s v e f) = CPlanarGraph Dual s f e v - dualGraph :: CPlaneGraph s v e f -> DualGraphOf (CPlaneGraph s v e f) -dualGraph = CPlanarGraph 'Primal s v e f -> CPlanarGraph 'Dual s f e v + dualGraph :: CPlaneGraph s v e f -> DualGraphOf (CPlaneGraph s v e f) +dualGraph = CPlanarGraph 'Primal s v e f -> CPlanarGraph 'Dual s f e v CPlanarGraph 'Primal s v e f -> DualGraphOf (CPlanarGraph 'Primal s v e f) forall planarGraph. @@ -853,15 +853,15 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. Coercible a b => a -> b forall a b. Coercible a b => a -> b -coerce @_ @(CPlanarGraph Primal s v e f) +coerce @_ @(CPlanarGraph Primal s v e f) - leftFaceOf :: DartIx (CPlaneGraph s v e f) + leftFaceOf :: DartIx (CPlaneGraph s v e f) -> IndexedLens' (FaceIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Face (CPlaneGraph s v e f)) -leftFaceOf DartIx (CPlaneGraph s v e f) -d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +leftFaceOf DartIx (CPlaneGraph s v e f) +d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -889,14 +889,14 @@ -> IndexedLens' (FaceIx planarGraph) planarGraph (Face planarGraph) leftFaceOf DartIx (CPlanarGraph 'Primal s v e f) DartIx (CPlaneGraph s v e f) -d - rightFaceOf :: DartIx (CPlaneGraph s v e f) +d + rightFaceOf :: DartIx (CPlaneGraph s v e f) -> IndexedLens' (FaceIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Face (CPlaneGraph s v e f)) -rightFaceOf DartIx (CPlaneGraph s v e f) -d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +rightFaceOf DartIx (CPlaneGraph s v e f) +d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -924,15 +924,15 @@ -> IndexedLens' (FaceIx planarGraph) planarGraph (Face planarGraph) rightFaceOf DartIx (CPlanarGraph 'Primal s v e f) DartIx (CPlaneGraph s v e f) -d +d - nextDartOf :: DartIx (CPlaneGraph s v e f) + nextDartOf :: DartIx (CPlaneGraph s v e f) -> IndexedLens' (DartIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Dart (CPlaneGraph s v e f)) -nextDartOf DartIx (CPlaneGraph s v e f) -d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +nextDartOf DartIx (CPlaneGraph s v e f) +d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -960,14 +960,14 @@ -> IndexedLens' (DartIx planarGraph) planarGraph (Dart planarGraph) nextDartOf DartIx (CPlanarGraph 'Primal s v e f) DartIx (CPlaneGraph s v e f) -d - prevDartOf :: DartIx (CPlaneGraph s v e f) +d + prevDartOf :: DartIx (CPlaneGraph s v e f) -> IndexedLens' (DartIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Dart (CPlaneGraph s v e f)) -prevDartOf DartIx (CPlaneGraph s v e f) -d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +prevDartOf DartIx (CPlaneGraph s v e f) +d = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -995,15 +995,15 @@ -> IndexedLens' (DartIx planarGraph) planarGraph (Dart planarGraph) prevDartOf DartIx (CPlanarGraph 'Primal s v e f) DartIx (CPlaneGraph s v e f) -d +d - boundaryDartOf :: FaceIx (CPlaneGraph s v e f) + boundaryDartOf :: FaceIx (CPlaneGraph s v e f) -> IndexedLens' (DartIx (CPlaneGraph s v e f)) (CPlaneGraph s v e f) (Dart (CPlaneGraph s v e f)) -boundaryDartOf FaceIx (CPlaneGraph s v e f) -f = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) +boundaryDartOf FaceIx (CPlaneGraph s v e f) +f = (CPlanarGraph 'Primal s v e f -> f (CPlanarGraph 'Primal s v e f)) -> CPlaneGraph s v e f -> f (CPlaneGraph s v e f) forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *) (f :: * -> *). @@ -1031,12 +1031,12 @@ -> IndexedLens' (DartIx planarGraph) planarGraph (Dart planarGraph) boundaryDartOf FaceIx (CPlanarGraph 'Primal s v e f) FaceIx (CPlaneGraph s v e f) -f - boundaryDarts :: FaceIx (CPlaneGraph s v e f) +f + boundaryDarts :: FaceIx (CPlaneGraph s v e f) -> CPlaneGraph s v e f -> NonEmptyVector (DartIx (CPlaneGraph s v e f)) -boundaryDarts FaceIx (CPlaneGraph s v e f) -f = FaceIx (CPlanarGraph 'Primal s v e f) +boundaryDarts FaceIx (CPlaneGraph s v e f) +f = FaceIx (CPlanarGraph 'Primal s v e f) -> CPlanarGraph 'Primal s v e f -> NonEmptyVector (DartIx (CPlanarGraph 'Primal s v e f)) forall planarGraph. @@ -1045,20 +1045,20 @@ -> planarGraph -> NonEmptyVector (DartIx planarGraph) boundaryDarts FaceIx (CPlanarGraph 'Primal s v e f) FaceIx (CPlaneGraph s v e f) -f (CPlanarGraph 'Primal s v e f -> NonEmptyVector (DartId s)) +f (CPlanarGraph 'Primal s v e f -> NonEmptyVector (DartId s)) -> (CPlaneGraph s v e f -> CPlanarGraph 'Primal s v e f) -> CPlaneGraph s v e f -> NonEmptyVector (DartId s) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. Coercible a b => a -> b forall a b. Coercible a b => a -> b -coerce @_ @(CPlanarGraph Primal s v e f) +coerce @_ @(CPlanarGraph Primal s v e f) -instance ( Point_ v 2 (NumType v) - , Ord (NumType v), Num (NumType v) - ) => PlaneGraph_ (CPlaneGraph s v e f) v where - fromEmbedding :: forall (f :: * -> *) (h :: * -> *) vi v e. +instance ( Point_ v 2 (NumType v) + , Ord (NumType v), Num (NumType v) + ) => PlaneGraph_ (CPlaneGraph s v e f) v where + fromEmbedding :: forall (f :: * -> *) (h :: * -> *) vi v e. (Foldable1 f, Functor f, Foldable h, Functor h, vi ~ VertexIx (CPlaneGraph s v e f), v ~ Vertex (CPlaneGraph s v e f), e ~ Edge (CPlaneGraph s v e f), @@ -1088,16 +1088,16 @@ f (vi, v, h (vi, e)) -> CPlanarGraph 'Primal s v e f fromAdjacencyLists -instance ( Point_ v 2 r, Point_ v' 2 r' - ) => HasPoints (CPlaneGraph s v e f) - (CPlaneGraph s v' e f) v v' where - allPoints :: forall (d :: Nat) r r'. +instance ( Point_ v 2 r, Point_ v' 2 r' + ) => HasPoints (CPlaneGraph s v e f) + (CPlaneGraph s v' e f) v v' where + allPoints :: forall (d :: Nat) r r'. (Point_ v d r, Point_ v' d r', NumType (CPlaneGraph s v e f) ~ r, NumType (CPlaneGraph s v' e f) ~ r', Dimension (CPlaneGraph s v e f) ~ d, Dimension (CPlaneGraph s v' e f) ~ d) => Traversal1 (CPlaneGraph s v e f) (CPlaneGraph s v' e f) v v' -allPoints = (v -> f v') -> CPlaneGraph s v e f -> f (CPlaneGraph s v' e f) +allPoints = (v -> f v') -> CPlaneGraph s v e f -> f (CPlaneGraph s v' e f) (Vertex (CPlaneGraph s v e f) -> f (Vertex (CPlaneGraph s v' e f))) -> CPlaneGraph s v e f -> f (CPlaneGraph s v' e f) forall graph graph'. @@ -1112,13 +1112,13 @@ (Vertex (CPlaneGraph s v' e f)) vertices -instance ( Point_ v 2 r - , Ord r, Num r - ) => IsBoxable (CPlaneGraph s v e f) +instance ( Point_ v 2 r + , Ord r, Num r + ) => IsBoxable (CPlaneGraph s v e f) -instance ( Point_ v 2 r - , DefaultTransformByConstraints (CPlaneGraph s v e f) 2 r - ) => IsTransformable (CPlaneGraph s v e f) +instance ( Point_ v 2 r + , DefaultTransformByConstraints (CPlaneGraph s v e f) 2 r + ) => IsTransformable (CPlaneGraph s v e f) @@ -1133,18 +1133,18 @@ -- No two segments partially overlap. -- -- running time: \(O(n\log n)\) -fromConnectedSegments :: ( Foldable1 f, Ord r, Num r - , LineSegment_ lineSegment point - , Point_ point 2 r +fromConnectedSegments :: ( Foldable1 f, Ord r, Num r + , LineSegment_ lineSegment point + , Point_ point 2 r ) - => f lineSegment - -> CPlaneGraph s (NonEmpty.NonEmpty point) lineSegment () + => f lineSegment + -> CPlaneGraph s (NonEmpty.NonEmpty point) lineSegment () fromConnectedSegments :: forall {k} (f :: * -> *) r lineSegment point (s :: k). (Foldable1 f, Ord r, Num r, LineSegment_ lineSegment point, Point_ point 2 r) => f lineSegment -> CPlaneGraph s (NonEmpty point) lineSegment () -fromConnectedSegments f lineSegment -segs = CPlanarGraph 'Primal s (NonEmpty point) lineSegment () +fromConnectedSegments f lineSegment +segs = CPlanarGraph 'Primal s (NonEmpty point) lineSegment () -> CPlaneGraph s (NonEmpty point) lineSegment () forall {k} (s :: k) v e f. CPlanarGraph 'Primal s v e f -> CPlaneGraph s v e f @@ -1159,7 +1159,7 @@ forall {k} (s :: k) e. NonEmpty (NonEmpty (DartId s, e)) -> CPlanarGraph 'Primal s () e () PG.planarGraph NonEmpty (NonEmpty (DartId s, lineSegment)) -theDarts)CPlanarGraph 'Primal s () lineSegment () +theDarts)CPlanarGraph 'Primal s () lineSegment () -> (CPlanarGraph 'Primal s () lineSegment () -> CPlanarGraph 'Primal s (NonEmpty point) lineSegment ()) -> CPlanarGraph 'Primal s (NonEmpty point) lineSegment () @@ -1181,12 +1181,12 @@ -> CPlanarGraph 'Primal s (NonEmpty point) lineSegment () forall s t a b. ASetter s t a b -> b -> s -> t .~ NonEmptyVector (NonEmpty point) -vtxData +vtxData where -- to get the darts we simply convert the NEMap (_, NEMap _ (dart, seg)) into -- a NonEmpty (NonEmpty (dart, seg)) - theDarts :: NonEmpty (NonEmpty (DartId s, lineSegment)) -theDarts = NEMap (E r) (DartId s, lineSegment) + theDarts :: NonEmpty (NonEmpty (DartId s, lineSegment)) +theDarts = NEMap (E r) (DartId s, lineSegment) -> NonEmpty (DartId s, lineSegment) forall a. NEMap (E r) a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a @@ -1206,9 +1206,9 @@ -> NonEmpty (NonEmpty (DartId s, lineSegment)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> NonEmpty (NonEmpty point, NEMap (E r) (DartId s, lineSegment)) -verts - vtxData :: NonEmptyVector (NonEmpty point) -vtxData = NonEmpty (NonEmpty point) -> NonEmptyVector (NonEmpty point) +verts + vtxData :: NonEmptyVector (NonEmpty point) +vtxData = NonEmpty (NonEmpty point) -> NonEmptyVector (NonEmpty point) forall a. NonEmpty a -> NonEmptyVector a Vector.fromNonEmpty (NonEmpty (NonEmpty point) -> NonEmptyVector (NonEmpty point)) -> NonEmpty (NonEmpty point) -> NonEmptyVector (NonEmpty point) @@ -1222,11 +1222,11 @@ -> NonEmpty (NonEmpty point) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> NonEmpty (NonEmpty point, NEMap (E r) (DartId s, lineSegment)) -verts +verts -- Collects all edges per vertex - verts :: NonEmpty (NonEmpty point, NEMap (E r) (DartId s, lineSegment)) -verts = MonoidalNEMap + verts :: NonEmpty (NonEmpty point, NEMap (E r) (DartId s, lineSegment)) +verts = MonoidalNEMap (Point 2 r) (NonEmpty point, NEMap (E r) (DartId s, lineSegment)) -> NonEmpty (NonEmpty point, NEMap (E r) (DartId s, lineSegment)) forall a. MonoidalNEMap (Point 2 r) a -> NonEmpty a @@ -1268,7 +1268,7 @@ -> MonoidalNEMap (Point 2 (NumType s)) (VtxData (NonEmpty s) (NumType s) (Dart s, b)) -f (NonEmpty lineSegment +f (NonEmpty lineSegment -> NonEmpty (NonEmpty point, NEMap (E r) (DartId s, lineSegment))) -> NonEmpty lineSegment -> NonEmpty (NonEmpty point, NEMap (E r) (DartId s, lineSegment)) @@ -1277,39 +1277,39 @@ forall a. f a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty f lineSegment -segs +segs -- Creates two vertices with one edge each ; combines them into a single Map - f :: Int + f :: Int -> b -> MonoidalNEMap (Point 2 (NumType s)) (VtxData (NonEmpty s) (NumType s) (Dart s, b)) -f Int -i b -seg = let u :: s -u = b -segb -> Getting s b s -> s +f Int +i b +seg = let u :: s +u = b +segb -> Getting s b s -> s forall s a. s -> Getting a s a -> a ^.Getting s b s forall seg p. HasStart seg p => Lens' seg p Lens' b s start - v :: s -v = b -segb -> Getting s b s -> s + v :: s +v = b +segb -> Getting s b s -> s forall s a. s -> Getting a s a -> a ^.Getting s b s forall seg p. HasEnd seg p => Lens' seg p Lens' b s end - d :: Dart s -d = Arc s -> Direction -> Dart s + d :: Dart s +d = Arc s -> Direction -> Dart s forall {k} (s :: k). Arc s -> Direction -> Dart s Dart.Dart (Int -> Arc s forall {k} (s :: k). Int -> Arc s Dart.Arc Int -i) Direction +i) Direction Dart.Positive in Point 2 (NumType s) -> VtxData (NonEmpty s) (NumType s) (Dart s, b) @@ -1317,8 +1317,8 @@ (Point 2 (NumType s)) (VtxData (NonEmpty s) (NumType s) (Dart s, b)) forall {k} {v}. k -> v -> MonoidalNEMap k v -singleton (s -us +singleton (s +us -> Getting (Point 2 (NumType s)) s (Point 2 (NumType s)) -> Point 2 (NumType s) forall s a. s -> Getting a s a -> a @@ -1333,10 +1333,10 @@ (Point_ point 2 r, Ord r, Num r) => e -> point -> point -> VtxData (NonEmpty point) r e vtx (Dart s -d ,b -seg) s -u s -v) +d ,b +seg) s +u s +v) MonoidalNEMap (Point 2 (NumType s)) (VtxData (NonEmpty s) (NumType s) (Dart s, b)) @@ -1353,8 +1353,8 @@ (Point 2 (NumType s)) (VtxData (NonEmpty s) (NumType s) (Dart s, b)) forall {k} {v}. k -> v -> MonoidalNEMap k v -singleton (s -vs +singleton (s +vs -> Getting (Point 2 (NumType s)) s (Point 2 (NumType s)) -> Point 2 (NumType s) forall s a. s -> Getting a s a -> a @@ -1371,54 +1371,54 @@ vtx (Dart s -> Dart s forall {k} (s :: k). Dart s -> Dart s Dart.twin Dart s -d,b -seg) s -v s -u) +d,b +seg) s +v s +u) - singleton :: k -> v -> MonoidalNEMap k v -singleton k -k v -v = NEMap k v -> MonoidalNEMap k v + singleton :: k -> v -> MonoidalNEMap k v +singleton k +k v +v = NEMap k v -> MonoidalNEMap k v forall k v. NEMap k v -> MonoidalNEMap k v MonoidalNEMap (NEMap k v -> MonoidalNEMap k v) -> NEMap k v -> MonoidalNEMap k v forall a b. (a -> b) -> a -> b $ k -> v -> NEMap k v forall k a. k -> a -> NEMap k a NEMap.singleton k -k v -v +k v +v -- | Helper type to represent the vertex data of a vertex. The NEMap -- represents the edges ordered cyclically around the vertex -type VtxData v r e = (v, NEMap.NEMap (E r) e) +type VtxData v r e = (v, NEMap.NEMap (E r) e) -- | Creates the vertex data -vtx :: (Point_ point 2 r, Ord r, Num r) - => e -> point -> point -> VtxData (NonEmpty.NonEmpty point) r e +vtx :: (Point_ point 2 r, Ord r, Num r) + => e -> point -> point -> VtxData (NonEmpty.NonEmpty point) r e vtx :: forall point r e. (Point_ point 2 r, Ord r, Num r) => e -> point -> point -> VtxData (NonEmpty point) r e -vtx e -e point -p point -q = (point -> NonEmpty point +vtx e +e point +p point +q = (point -> NonEmpty point forall a. a -> NonEmpty a NonEmpty.singleton point -p, E r -> e -> NEMap (E r) e +p, E r -> e -> NEMap (E r) e forall k a. k -> a -> NEMap k a NEMap.singleton (Vector 2 r -> E r forall r. Vector 2 r -> E r E (Vector 2 r -> E r) -> Vector 2 r -> E r forall a b. (a -> b) -> a -> b $ point -q point -> point -> Vector 2 r +q point -> point -> Vector 2 r forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. point -p) e -e) +p) e +e) -------------------------------------------------------------------------------- @@ -1426,13 +1426,13 @@ -- CPlaneGraph. -- -- \(O(n\log n)\) -fromAdjacencyRep :: (Point_ vertex 2 r, Ord i, Foldable1 f) - => proxy s -> GGraph f i vertex e -> CPlaneGraph s vertex e () +fromAdjacencyRep :: (Point_ vertex 2 r, Ord i, Foldable1 f) + => proxy s -> GGraph f i vertex e -> CPlaneGraph s vertex e () fromAdjacencyRep :: forall {k} vertex r i (f :: * -> *) (proxy :: k -> *) (s :: k) e. (Point_ vertex 2 r, Ord i, Foldable1 f) => proxy s -> GGraph f i vertex e -> CPlaneGraph s vertex e () -fromAdjacencyRep proxy s -proxy = CPlanarGraph 'Primal s vertex e () -> CPlaneGraph s vertex e () +fromAdjacencyRep proxy s +proxy = CPlanarGraph 'Primal s vertex e () -> CPlaneGraph s vertex e () forall {k} (s :: k) v e f. CPlanarGraph 'Primal s v e f -> CPlaneGraph s v e f CPlaneGraph (CPlanarGraph 'Primal s vertex e () -> CPlaneGraph s vertex e ()) @@ -1446,14 +1446,14 @@ (Ord i, Foldable1 f) => proxy s -> GGraph f i v e -> CPlanarGraph 'Primal s v e () PG.fromAdjacencyRep proxy s -proxy +proxy -------------------------------------------------------------------------------- -- | Helper type to sort vectors cyclically around the origine -newtype E r = E (Vector 2 r) - deriving newtype (Int -> E r -> ShowS +newtype E r = E (Vector 2 r) + deriving newtype (Int -> E r -> ShowS [E r] -> ShowS E r -> String (Int -> E r -> ShowS) @@ -1471,23 +1471,23 @@ showList :: [E r] -> ShowS Show) -instance (Ord r, Num r) => Eq (E r) where - E r -a == :: E r -> E r -> Bool -== E r -b = E r -a E r -> E r -> Ordering +instance (Ord r, Num r) => Eq (E r) where + E r +a == :: E r -> E r -> Bool +== E r +b = E r +a E r -> E r -> Ordering forall a. Ord a => a -> a -> Ordering `compare` E r -b Ordering -> Ordering -> Bool +b Ordering -> Ordering -> Bool forall a. Eq a => a -> a -> Bool == Ordering EQ -instance (Ord r, Num r) => Ord (E r) where - (E Vector 2 r -v) compare :: E r -> E r -> Ordering -`compare` (E Vector 2 r -u) = Vector 2 r -> Point 2 r -> Point 2 r -> Point 2 r -> Ordering +instance (Ord r, Num r) => Ord (E r) where + (E Vector 2 r +v) compare :: E r -> E r -> Ordering +`compare` (E Vector 2 r +u) = Vector 2 r -> Point 2 r -> Point 2 r -> Point 2 r -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering @@ -1499,11 +1499,11 @@ forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point -origin :: Point 2 r) (Vector 2 r -> Point 2 r +origin :: Point 2 r) (Vector 2 r -> Point 2 r forall v. v -> PointF v Point Vector 2 r -v) (Vector 2 r -> Point 2 r +v) (Vector 2 r -> Point 2 r forall v. v -> PointF v Point Vector 2 r -u) +u) \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.PlaneGraph.Type.html b/haddocks/hgeometry/src/HGeometry.PlaneGraph.Type.html new file mode 100644 index 000000000..02418695e --- /dev/null +++ b/haddocks/hgeometry/src/HGeometry.PlaneGraph.Type.html @@ -0,0 +1,714 @@ +
{-# LANGUAGE UndecidableInstances #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  HGeometry.PlaneGraph.Type
+-- Copyright   :  (C) Frank Staals
+-- License     :  see the LICENSE file
+-- Maintainer  :  Frank Staals
+--
+-- Type type for planar graphs embedded in \(\mathbb{R}^2\). For functions that
+-- export faces and edges etc, we assume the graph has a (planar) straight line
+-- embedding.
+--
+--------------------------------------------------------------------------------
+module HGeometry.PlaneGraph.Type
+  ( PlaneGraph(..)
+  -- , fromAdjacencyRep
+  -- , fromConnectedSegments
+  -- , VertexData(VertexData), location
+
+  -- , E(..)
+  ) where
+
+import           Control.Lens hiding (holes, holesOf, (.=))
+import           Data.Coerce
+import           Data.Foldable1
+import           Data.Foldable1.WithIndex
+import qualified Data.List.NonEmpty as NonEmpty
+import qualified Data.Map as Map
+import qualified Data.Map.NonEmpty as NEMap
+import qualified Data.Vector.NonEmpty as Vector
+import           GHC.Generics (Generic)
+import           HGeometry.Box
+import           HGeometry.Foldable.Sort (sortBy )
+import           HGeometry.LineSegment
+import           HGeometry.Plane.LowerEnvelope.Connected.MonoidalMap
+import           HGeometry.PlaneGraph.Class
+import           HGeometry.Point
+import           HGeometry.Properties
+import           HGeometry.Transformation
+import           HGeometry.Vector
+import           Hiraffe.AdjacencyListRep.Map
+import           Hiraffe.Graph.Class
+import           Hiraffe.PlanarGraph ( PlanarGraph, World(..)
+                                     , DartId, VertexId, FaceId
+                                     )
+import           Hiraffe.PlanarGraph.Class
+import qualified Hiraffe.PlanarGraph as PG
+import qualified Hiraffe.PlanarGraph.Dart as Dart
+
+
+-- import           Data.YAML
+
+--------------------------------------------------------------------------------
+-- * The PlaneGraph type
+
+-- | An Embedded, *connected*, planar graph
+newtype PlaneGraph s v e f = PlaneGraph (PlanarGraph Primal s v e f)
+      -- deriving stock (Show,Eq,Generic)
+      -- deriving newtype (ToYAML,FromYAML)
+
+type instance NumType   (PlaneGraph s v e f) = NumType v
+type instance Dimension (PlaneGraph s v e f) = 2
+
+-- | Iso to access the graph
+_PlanarGraph :: Iso (PlaneGraph s v e f)         (PlaneGraph s v' e' f')
+                    (PlanarGraph Primal s v e f) (PlanarGraph Primal s v' e' f')
+_PlanarGraph :: forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph = p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
+Iso
+  (PlaneGraph s v e f)
+  (PlaneGraph s v' e' f')
+  (PlanarGraph 'Primal s v e f)
+  (PlanarGraph 'Primal s v' e' f')
+coerced
+{-# INLINE _PlanarGraph #-}
+
+----------------------------------------
+
+instance HasVertices' (PlaneGraph s v e f) where
+  type Vertex   (PlaneGraph s v e f) = v
+  type VertexIx (PlaneGraph s v e f) = VertexId s
+  vertexAt :: VertexIx (PlaneGraph s v e f)
+-> IndexedTraversal'
+     (VertexIx (PlaneGraph s v e f))
+     (PlaneGraph s v e f)
+     (Vertex (PlaneGraph s v e f))
+vertexAt VertexIx (PlaneGraph s v e f)
+i = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f))
+-> (p v (f v)
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> p v (f v)
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.VertexIx (PlanarGraph 'Primal s v e f)
+-> IndexedTraversal'
+     (VertexIx (PlanarGraph 'Primal s v e f))
+     (PlanarGraph 'Primal s v e f)
+     (Vertex (PlanarGraph 'Primal s v e f))
+forall graph.
+HasVertices' graph =>
+VertexIx graph
+-> IndexedTraversal' (VertexIx graph) graph (Vertex graph)
+vertexAt VertexIx (PlanarGraph 'Primal s v e f)
+VertexIx (PlaneGraph s v e f)
+i
+
+instance HasVertices (PlaneGraph s v e f) (PlaneGraph s v' e f) where
+  vertices :: IndexedTraversal1
+  (VertexIx (PlaneGraph s v e f))
+  (PlaneGraph s v e f)
+  (PlaneGraph s v' e f)
+  (Vertex (PlaneGraph s v e f))
+  (Vertex (PlaneGraph s v' e f))
+vertices = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v' e f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v' e f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v' e f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v' e f))
+-> (p v (f v')
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v' e f))
+-> p v (f v')
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v' e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.p v (f v')
+-> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v' e f)
+p (Vertex (PlanarGraph 'Primal s v e f))
+  (f (Vertex (PlanarGraph 'Primal s v' e f)))
+-> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v' e f)
+forall graph graph'.
+HasVertices graph graph' =>
+IndexedTraversal1
+  (VertexIx graph) graph graph' (Vertex graph) (Vertex graph')
+IndexedTraversal1
+  (VertexIx (PlanarGraph 'Primal s v e f))
+  (PlanarGraph 'Primal s v e f)
+  (PlanarGraph 'Primal s v' e f)
+  (Vertex (PlanarGraph 'Primal s v e f))
+  (Vertex (PlanarGraph 'Primal s v' e f))
+vertices
+
+----------------------------------------
+
+instance HasDarts' (PlaneGraph s v e f) where
+  type Dart   (PlaneGraph s v e f) = e
+  type DartIx (PlaneGraph s v e f) = DartId s
+  dartAt :: DartIx (PlaneGraph s v e f)
+-> IndexedTraversal'
+     (DartIx (PlaneGraph s v e f))
+     (PlaneGraph s v e f)
+     (Dart (PlaneGraph s v e f))
+dartAt DartIx (PlaneGraph s v e f)
+i = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f))
+-> (p e (f e)
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> p e (f e)
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.DartIx (PlanarGraph 'Primal s v e f)
+-> IndexedTraversal'
+     (DartIx (PlanarGraph 'Primal s v e f))
+     (PlanarGraph 'Primal s v e f)
+     (Dart (PlanarGraph 'Primal s v e f))
+forall graph.
+HasDarts' graph =>
+DartIx graph -> IndexedTraversal' (DartIx graph) graph (Dart graph)
+dartAt DartIx (PlanarGraph 'Primal s v e f)
+DartIx (PlaneGraph s v e f)
+i
+
+instance HasDarts (PlaneGraph s v e f) (PlaneGraph s v e' f) where
+  darts :: IndexedTraversal
+  (DartIx (PlaneGraph s v e f))
+  (PlaneGraph s v e f)
+  (PlaneGraph s v e' f)
+  (Dart (PlaneGraph s v e f))
+  (Dart (PlaneGraph s v e' f))
+darts = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e' f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e' f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e' f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e' f))
+-> (p e (f e')
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e' f))
+-> p e (f e')
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e' f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.p e (f e')
+-> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e' f)
+p (Dart (PlanarGraph 'Primal s v e f))
+  (f (Dart (PlanarGraph 'Primal s v e' f)))
+-> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e' f)
+forall graph graph'.
+HasDarts graph graph' =>
+IndexedTraversal
+  (DartIx graph) graph graph' (Dart graph) (Dart graph')
+IndexedTraversal
+  (DartIx (PlanarGraph 'Primal s v e f))
+  (PlanarGraph 'Primal s v e f)
+  (PlanarGraph 'Primal s v e' f)
+  (Dart (PlanarGraph 'Primal s v e f))
+  (Dart (PlanarGraph 'Primal s v e' f))
+darts
+
+----------------------------------------
+
+instance HasEdges' (PlaneGraph s v e f) where
+  type Edge   (PlaneGraph s v e f) = e
+  type EdgeIx (PlaneGraph s v e f) = DartId s
+  edgeAt :: EdgeIx (PlaneGraph s v e f)
+-> IndexedTraversal'
+     (EdgeIx (PlaneGraph s v e f))
+     (PlaneGraph s v e f)
+     (Edge (PlaneGraph s v e f))
+edgeAt EdgeIx (PlaneGraph s v e f)
+d = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f))
+-> (p e (f e)
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> p e (f e)
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.EdgeIx (PlanarGraph 'Primal s v e f)
+-> IndexedTraversal'
+     (EdgeIx (PlanarGraph 'Primal s v e f))
+     (PlanarGraph 'Primal s v e f)
+     (Edge (PlanarGraph 'Primal s v e f))
+forall graph.
+HasEdges' graph =>
+EdgeIx graph -> IndexedTraversal' (EdgeIx graph) graph (Edge graph)
+edgeAt EdgeIx (PlanarGraph 'Primal s v e f)
+EdgeIx (PlaneGraph s v e f)
+d
+
+instance HasEdges (PlaneGraph s v e f) (PlaneGraph s v e f) where
+  edges :: IndexedTraversal
+  (EdgeIx (PlaneGraph s v e f))
+  (PlaneGraph s v e f)
+  (PlaneGraph s v e f)
+  (Edge (PlaneGraph s v e f))
+  (Edge (PlaneGraph s v e f))
+edges = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f))
+-> (p e (f e)
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> p e (f e)
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.p e (f e)
+-> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f)
+p (Edge (PlanarGraph 'Primal s v e f))
+  (f (Edge (PlanarGraph 'Primal s v e f)))
+-> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f)
+forall graph graph'.
+HasEdges graph graph' =>
+IndexedTraversal
+  (EdgeIx graph) graph graph' (Edge graph) (Edge graph')
+IndexedTraversal
+  (EdgeIx (PlanarGraph 'Primal s v e f))
+  (PlanarGraph 'Primal s v e f)
+  (PlanarGraph 'Primal s v e f)
+  (Edge (PlanarGraph 'Primal s v e f))
+  (Edge (PlanarGraph 'Primal s v e f))
+edges
+
+----------------------------------------
+
+instance HasFaces' (PlaneGraph s v e f) where
+  type Face   (PlaneGraph s v e f) = f
+  type FaceIx (PlaneGraph s v e f) = FaceId s
+  faceAt :: FaceIx (PlaneGraph s v e f)
+-> IndexedTraversal'
+     (FaceIx (PlaneGraph s v e f))
+     (PlaneGraph s v e f)
+     (Face (PlaneGraph s v e f))
+faceAt FaceIx (PlaneGraph s v e f)
+fi = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f))
+-> (p f (f f)
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> p f (f f)
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.FaceIx (PlanarGraph 'Primal s v e f)
+-> IndexedTraversal'
+     (FaceIx (PlanarGraph 'Primal s v e f))
+     (PlanarGraph 'Primal s v e f)
+     (Face (PlanarGraph 'Primal s v e f))
+forall graph.
+HasFaces' graph =>
+FaceIx graph -> IndexedTraversal' (FaceIx graph) graph (Face graph)
+faceAt FaceIx (PlanarGraph 'Primal s v e f)
+FaceIx (PlaneGraph s v e f)
+fi
+
+
+instance HasFaces (PlaneGraph s v e f) (PlaneGraph s v e f') where
+  faces :: IndexedTraversal1
+  (FaceIx (PlaneGraph s v e f))
+  (PlaneGraph s v e f)
+  (PlaneGraph s v e f')
+  (Face (PlaneGraph s v e f))
+  (Face (PlaneGraph s v e f'))
+faces = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f'))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e f')
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f'))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f'))
+-> (p f (f f')
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f'))
+-> p f (f f')
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f')
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.p f (f f')
+-> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f')
+p (Face (PlanarGraph 'Primal s v e f))
+  (f (Face (PlanarGraph 'Primal s v e f')))
+-> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f')
+forall graph graph'.
+HasFaces graph graph' =>
+IndexedTraversal1
+  (FaceIx graph) graph graph' (Face graph) (Face graph')
+IndexedTraversal1
+  (FaceIx (PlanarGraph 'Primal s v e f))
+  (PlanarGraph 'Primal s v e f)
+  (PlanarGraph 'Primal s v e f')
+  (Face (PlanarGraph 'Primal s v e f))
+  (Face (PlanarGraph 'Primal s v e f'))
+faces
+
+----------------------------------------
+instance DiGraph_ (PlaneGraph s v e f) where
+  endPoints :: PlaneGraph s v e f
+-> DartIx (PlaneGraph s v e f)
+-> (VertexIx (PlaneGraph s v e f), VertexIx (PlaneGraph s v e f))
+endPoints (PlaneGraph PlanarGraph 'Primal s v e f
+g) = PlanarGraph 'Primal s v e f
+-> DartIx (PlanarGraph 'Primal s v e f)
+-> (VertexIx (PlanarGraph 'Primal s v e f),
+    VertexIx (PlanarGraph 'Primal s v e f))
+forall graph.
+DiGraph_ graph =>
+graph -> DartIx graph -> (VertexIx graph, VertexIx graph)
+endPoints PlanarGraph 'Primal s v e f
+g
+  twinDartOf :: DartIx (PlaneGraph s v e f)
+-> Getter
+     (PlaneGraph s v e f) (Maybe (DartIx (PlaneGraph s v e f)))
+twinDartOf DartIx (PlaneGraph s v e f)
+d = DartIx (PlaneGraph s v e f)
+-> Getter (PlaneGraph s v e f) (DartIx (PlaneGraph s v e f))
+forall graph.
+BidirGraph_ graph =>
+DartIx graph -> Getter graph (DartIx graph)
+twinOf DartIx (PlaneGraph s v e f)
+d ((Dart s -> f (Dart s))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f))
+-> ((Maybe (Dart s) -> f (Maybe (Dart s))) -> Dart s -> f (Dart s))
+-> (Maybe (Dart s) -> f (Maybe (Dart s)))
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+. (Dart s -> Maybe (Dart s))
+-> (Maybe (Dart s) -> f (Maybe (Dart s))) -> Dart s -> f (Dart s)
+forall (p :: * -> * -> *) (f :: * -> *) s a.
+(Profunctor p, Contravariant f) =>
+(s -> a) -> Optic' p f s a
+to Dart s -> Maybe (Dart s)
+forall a. a -> Maybe a
+Just
+  outgoingDartsOf :: VertexIx (PlaneGraph s v e f)
+-> IndexedFold
+     (DartIx (PlaneGraph s v e f))
+     (PlaneGraph s v e f)
+     (Dart (PlaneGraph s v e f))
+outgoingDartsOf VertexIx (PlaneGraph s v e f)
+v = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f))
+-> (p e (f e)
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> p e (f e)
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.VertexIx (PlanarGraph 'Primal s v e f)
+-> IndexedFold
+     (DartIx (PlanarGraph 'Primal s v e f))
+     (PlanarGraph 'Primal s v e f)
+     (Dart (PlanarGraph 'Primal s v e f))
+forall graph.
+DiGraph_ graph =>
+VertexIx graph -> IndexedFold (DartIx graph) graph (Dart graph)
+outgoingDartsOf VertexIx (PlanarGraph 'Primal s v e f)
+VertexIx (PlaneGraph s v e f)
+v
+
+{-
+instance ConstructableDiGraph_ (PlaneGraph s v e f) where
+  type DiGraphFromAdjListExtraConstraints (PlaneGraph s v e f) h = (f ~ (), Foldable1 h)
+
+  -- | The vertices are expected to have their adjacencies in CCW order.
+  diGraphFromAdjacencyLists = PlaneGraph . diGraphFromAdjacencyLists
+  -- TODO: we should probably use some toEmbedding here as well I think
+-}
+
+instance BidirGraph_ (PlaneGraph s v e f) where
+  twinOf :: DartIx (PlaneGraph s v e f)
+-> Getter (PlaneGraph s v e f) (DartIx (PlaneGraph s v e f))
+twinOf DartIx (PlaneGraph s v e f)
+d = (PlaneGraph s v e f -> DartIx (PlaneGraph s v e f))
+-> (DartIx (PlaneGraph s v e f) -> f (DartIx (PlaneGraph s v e f)))
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall (p :: * -> * -> *) (f :: * -> *) s a.
+(Profunctor p, Contravariant f) =>
+(s -> a) -> Optic' p f s a
+to ((PlaneGraph s v e f -> DartIx (PlaneGraph s v e f))
+ -> (DartIx (PlaneGraph s v e f) -> f (DartIx (PlaneGraph s v e f)))
+ -> PlaneGraph s v e f
+ -> f (PlaneGraph s v e f))
+-> (PlaneGraph s v e f -> DartIx (PlaneGraph s v e f))
+-> (DartIx (PlaneGraph s v e f) -> f (DartIx (PlaneGraph s v e f)))
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall a b. (a -> b) -> a -> b
+$ Dart s -> PlaneGraph s v e f -> Dart s
+forall a b. a -> b -> a
+const (Dart s -> Dart s
+forall {k} (s :: k). Dart s -> Dart s
+PG.twin DartIx (PlaneGraph s v e f)
+Dart s
+d)
+  getPositiveDart :: PlaneGraph s v e f
+-> EdgeIx (PlaneGraph s v e f) -> DartIx (PlaneGraph s v e f)
+getPositiveDart (PlaneGraph PlanarGraph 'Primal s v e f
+g) EdgeIx (PlaneGraph s v e f)
+e = PlanarGraph 'Primal s v e f
+-> EdgeIx (PlanarGraph 'Primal s v e f)
+-> DartIx (PlanarGraph 'Primal s v e f)
+forall graph.
+BidirGraph_ graph =>
+graph -> EdgeIx graph -> DartIx graph
+getPositiveDart PlanarGraph 'Primal s v e f
+g EdgeIx (PlanarGraph 'Primal s v e f)
+EdgeIx (PlaneGraph s v e f)
+e
+
+instance ( Point_ v 2 (NumType v)
+         , Ord (NumType v), Num (NumType v)
+         ) => Graph_ (PlaneGraph s v e f) where
+  neighboursOf :: VertexIx (PlaneGraph s v e f)
+-> IndexedFold
+     (VertexIx (PlaneGraph s v e f))
+     (PlaneGraph s v e f)
+     (Vertex (PlaneGraph s v e f))
+neighboursOf VertexIx (PlaneGraph s v e f)
+u = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f))
+-> (p v (f v)
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> p v (f v)
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.VertexIx (PlanarGraph 'Primal s v e f)
+-> IndexedFold
+     (VertexIx (PlanarGraph 'Primal s v e f))
+     (PlanarGraph 'Primal s v e f)
+     (Vertex (PlanarGraph 'Primal s v e f))
+forall graph.
+Graph_ graph =>
+VertexIx graph -> IndexedFold (VertexIx graph) graph (Vertex graph)
+neighboursOf VertexIx (PlanarGraph 'Primal s v e f)
+VertexIx (PlaneGraph s v e f)
+u
+  incidentEdgesOf :: VertexIx (PlaneGraph s v e f)
+-> IndexedFold
+     (EdgeIx (PlaneGraph s v e f))
+     (PlaneGraph s v e f)
+     (Edge (PlaneGraph s v e f))
+incidentEdgesOf VertexIx (PlaneGraph s v e f)
+u = (PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> PlaneGraph s v e f -> f (PlaneGraph s v e f)
+forall {k} (s :: k) v e f v' e' f' (p :: * -> * -> *)
+       (f :: * -> *).
+(Profunctor p, Functor f) =>
+p (PlanarGraph 'Primal s v e f)
+  (f (PlanarGraph 'Primal s v' e' f'))
+-> p (PlaneGraph s v e f) (f (PlaneGraph s v' e' f'))
+_PlanarGraph((PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+ -> PlaneGraph s v e f -> f (PlaneGraph s v e f))
+-> (p e (f e)
+    -> PlanarGraph 'Primal s v e f -> f (PlanarGraph 'Primal s v e f))
+-> p e (f e)
+-> PlaneGraph s v e f
+-> f (PlaneGraph s v e f)
+forall b c a. (b -> c) -> (a -> b) -> a -> c
+.VertexIx (PlanarGraph 'Primal s v e f)
+-> IndexedFold
+     (EdgeIx (PlanarGraph 'Primal s v e f))
+     (PlanarGraph 'Primal s v e f)
+     (Edge (PlanarGraph 'Primal s v e f))
+forall graph.
+Graph_ graph =>
+VertexIx graph -> IndexedFold (EdgeIx graph) graph (Edge graph)
+incidentEdgesOf VertexIx (PlanarGraph 'Primal s v e f)
+VertexIx (PlaneGraph s v e f)
+u
+
+{-
+instance ( Point_ v 2 (NumType v)
+         , Ord (NumType v), Num (NumType v)
+         ) => ConstructableGraph_ (PlaneGraph s v e f) where
+  type GraphFromAdjListExtraConstraints (PlaneGraph s v e f) h = (f ~ (), Foldable1 h)
+  fromAdjacencyLists = fromEmbedding . toEmbedding
+-}
+
+{-
+instance ( Point_ v 2 (NumType v)
+         , Ord (NumType v), Num (NumType v)
+
+         ) => PlanarGraph_ (PlaneGraph s v e f) where
+  type DualGraphOf (PlaneGraph s v e f) = PlanarGraph Dual s f e v
+
+  dualGraph = dualGraph . coerce @_ @(PlanarGraph Primal s v e f)
+
+  leftFaceOf  d = _PlanarGraph.leftFaceOf d
+  rightFaceOf d = _PlanarGraph.rightFaceOf d
+
+  nextDartOf d = _PlanarGraph.nextDartOf d
+  prevDartOf d = _PlanarGraph.prevDartOf d
+
+  boundaryDartOf f = _PlanarGraph.boundaryDartOf f
+  boundaryDarts f = boundaryDarts f . coerce @_ @(PlanarGraph Primal s v e f)
+
+
+instance ( Point_ v 2 (NumType v)
+         , Ord (NumType v), Num (NumType v)
+         ) => PlaneGraph_ (PlaneGraph s v e f) v where
+  fromEmbedding = PlaneGraph . fromAdjacencyLists
+
+instance ( Point_ v 2 r, Point_ v' 2 r'
+         ) => HasPoints (PlaneGraph s v e f)
+                        (PlaneGraph s v' e f) v v' where
+  allPoints = vertices
+
+instance ( Point_ v 2 r
+         , Ord r, Num r
+         ) => IsBoxable (PlaneGraph s v e f)
+
+instance ( Point_ v 2 r
+         , DefaultTransformByConstraints (PlaneGraph s v e f) 2 r
+         ) => IsTransformable (PlaneGraph s v e f)
+
+
+
+  -- boundingBox = boundingBoxList' . F.toList . fmap (^._2.location) . vertices
+
+
+--------------------------------------------------------------------------------
+
+-- | Constructs a connected plane graph
+--
+-- pre: The segments form a single connected component
+--      No two segments partially overlap.
+--
+-- running time: \(O(n\log n)\)
+fromConnectedSegments      :: ( Foldable1 f, Ord r, Num r
+                              , LineSegment_ lineSegment point
+                              , Point_ point 2 r
+                              )
+                           => f lineSegment
+                           -> PlaneGraph s (NonEmpty.NonEmpty point) lineSegment ()
+fromConnectedSegments segs = PlaneGraph $
+                             (PG.planarGraph theDarts)&PG.vertexData .~ vtxData
+  where
+    -- to get the darts we simply convert the NEMap (_, NEMap _ (dart, seg)) into
+    -- a NonEmpty (NonEmpty (dart, seg))
+    theDarts = toNonEmpty . snd  <$> verts
+    vtxData  = Vector.fromNonEmpty $ fst <$> verts
+
+    -- Collects all edges per vertex
+    verts    = toNonEmpty . ifoldMap1 f $ toNonEmpty segs
+
+    -- Creates two vertices with one edge each ; combines them into a single Map
+    f i seg = let u = seg^.start
+                  v = seg^.end
+                  d = Dart.Dart (Dart.Arc i) Dart.Positive
+              in    singleton (u^.asPoint) (vtx (d          ,seg) u v)
+                 <> singleton (v^.asPoint) (vtx (Dart.twin d,seg) v u)
+
+    singleton k v = MonoidalNEMap $ NEMap.singleton k v
+
+-- | Helper type to represent the vertex data of a vertex. The NEMap
+-- represents the edges ordered cyclically around the vertex
+type VtxData v r e = (v, NEMap.NEMap (E r) e)
+
+-- | Creates the vertex data
+vtx       :: (Point_ point 2 r, Ord r, Num r)
+          => e -> point -> point -> VtxData (NonEmpty.NonEmpty point) r e
+vtx e p q = (NonEmpty.singleton p, NEMap.singleton (E $ q .-. p) e)
+
+--------------------------------------------------------------------------------
+
+-- | Given a connected plane graph in adjacency list format; convert it into an actual
+-- PlaneGraph.
+--
+-- \(O(n\log n)\)
+fromAdjacencyRep       :: (Point_ vertex 2 r, Ord i, Foldable1 f)
+                       => proxy s -> GGraph f i vertex e -> PlaneGraph s vertex e ()
+fromAdjacencyRep proxy = PlaneGraph . PG.fromAdjacencyRep proxy
+
+
+--------------------------------------------------------------------------------
+
+-- | Helper type to sort vectors cyclically around the origine
+newtype E r = E (Vector 2 r)
+  deriving newtype (Show)
+
+instance (Ord r, Num r) => Eq (E r) where
+  a == b = a `compare` b == EQ
+instance (Ord r, Num r) => Ord (E r) where
+  (E v) `compare` (E u) = ccwCmpAroundWith (Vector2 0 1) (origin :: Point 2 r) (Point v) (Point u)
+
+-}
+
\ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.PolyLine.Class.html b/haddocks/hgeometry/src/HGeometry.PolyLine.Class.html index 61a9761ac..ffd13c92f 100644 --- a/haddocks/hgeometry/src/HGeometry.PolyLine.Class.html +++ b/haddocks/hgeometry/src/HGeometry.PolyLine.Class.html @@ -25,31 +25,31 @@
-------------------------------------------------------------------------------- -- | A class representing PolyLines -class ( HasVertices polyLine polyLine - , HasPoints' polyLine point - , HasStart polyLine point - , HasEnd polyLine point - , Vertex polyLine ~ point - , Point_ point (Dimension point) (NumType point) - , NumType polyLine ~ NumType point - , Dimension polyLine ~ Dimension point - ) => PolyLine_ polyLine point | polyLine -> point where +class ( HasVertices polyLine polyLine + , HasPoints' polyLine point + , HasStart polyLine point + , HasEnd polyLine point + , Vertex polyLine ~ point + , Point_ point (Dimension point) (NumType point) + , NumType polyLine ~ NumType point + , Dimension polyLine ~ Dimension point + ) => PolyLine_ polyLine point | polyLine -> point where -- | Class for constructable polylglines -class PolyLine_ polyLine point => ConstructablePolyLine_ polyLine point where +class PolyLine_ polyLine point => ConstructablePolyLine_ polyLine point where -- | Constructs a polyline from a given sequence of points. -- -- pre: there should be at least two distinct points - polyLineFromPoints :: Foldable1 f => f point -> polyLine + polyLineFromPoints :: Foldable1 f => f point -> polyLine -- maybe make these two functions into a prism instead -- | Prism between a polyline and a line segment -_PolyLineLineSegment :: ( ConstructableLineSegment_ lineSegment point - , ConstructablePolyLine_ polyLine point - ) => Prism' polyLine lineSegment +_PolyLineLineSegment :: ( ConstructableLineSegment_ lineSegment point + , ConstructablePolyLine_ polyLine point + ) => Prism' polyLine lineSegment _PolyLineLineSegment :: forall lineSegment point polyLine. (ConstructableLineSegment_ lineSegment point, ConstructablePolyLine_ polyLine point) => @@ -66,7 +66,7 @@ HasEnd s (Vertex c), Point_ (Vertex c) (Dimension c) (NumType c)) => s -> c -lineSegmentToPolyLine polyLine -> Maybe lineSegment +lineSegmentToPolyLine polyLine -> Maybe lineSegment forall {a} {s}. (Dimension (IxValue (EndPointOf a)) ~ Dimension a, NumType (IxValue (EndPointOf a)) ~ NumType a, HasVertices s s, @@ -74,11 +74,11 @@ HasStart s (IxValue (EndPointOf a)), HasEnd s (IxValue (EndPointOf a))) => s -> Maybe a -polyLineToLineSegment +polyLineToLineSegment where - lineSegmentToPolyLine :: s -> c -lineSegmentToPolyLine s -s = NonEmpty (Vertex c) -> c + lineSegmentToPolyLine :: s -> c +lineSegmentToPolyLine s +s = NonEmpty (Vertex c) -> c forall polyLine point (f :: * -> *). (ConstructablePolyLine_ polyLine point, Foldable1 f) => f point -> polyLine @@ -91,22 +91,22 @@ NonEmpty.fromList ([Vertex c] -> c) -> [Vertex c] -> c forall a b. (a -> b) -> a -> b $ [s -ss -> Getting (Vertex c) s (Vertex c) -> Vertex c +ss -> Getting (Vertex c) s (Vertex c) -> Vertex c forall s a. s -> Getting a s a -> a ^.Getting (Vertex c) s (Vertex c) forall seg p. HasStart seg p => Lens' seg p Lens' s (Vertex c) start, s -ss -> Getting (Vertex c) s (Vertex c) -> Vertex c +ss -> Getting (Vertex c) s (Vertex c) -> Vertex c forall s a. s -> Getting a s a -> a ^.Getting (Vertex c) s (Vertex c) forall seg p. HasEnd seg p => Lens' seg p Lens' s (Vertex c) end] - polyLineToLineSegment :: s -> Maybe a -polyLineToLineSegment s -pl + polyLineToLineSegment :: s -> Maybe a +polyLineToLineSegment s +pl | Getting (Endo (Endo Int)) s (Vertex s) -> s -> Int forall s a. Getting (Endo (Endo Int)) s a -> s -> Int lengthOf Getting (Endo (Endo Int)) s (Vertex s) @@ -116,7 +116,7 @@ (VertexIx graph) graph graph' (Vertex graph) (Vertex graph') IndexedTraversal1 (VertexIx s) s s (Vertex s) (Vertex s) vertices s -pl Int -> Int -> Bool +pl Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 2 = a -> Maybe a @@ -128,7 +128,7 @@ ConstructableLineSegment_ lineSegment point => point -> point -> lineSegment uncheckedLineSegment (s -pls +pls -> Getting (IxValue (EndPointOf a)) s (IxValue (EndPointOf a)) -> IxValue (EndPointOf a) forall s a. s -> Getting a s a -> a @@ -136,7 +136,7 @@ forall seg p. HasStart seg p => Lens' seg p Lens' s (IxValue (EndPointOf a)) start) (s -pls +pls -> Getting (IxValue (EndPointOf a)) s (IxValue (EndPointOf a)) -> IxValue (EndPointOf a) forall s a. s -> Getting a s a -> a diff --git a/haddocks/hgeometry/src/HGeometry.PolyLine.Frechet.Discrete.html b/haddocks/hgeometry/src/HGeometry.PolyLine.Frechet.Discrete.html index ccb3c68e4..ac941a542 100644 --- a/haddocks/hgeometry/src/HGeometry.PolyLine.Frechet.Discrete.html +++ b/haddocks/hgeometry/src/HGeometry.PolyLine.Frechet.Discrete.html @@ -22,49 +22,49 @@ -- -- O(nm*(I+T)), where I is the time to index one of the vertices and T is the time to -- evaluate the distance function. -frechetDistanceWith :: ( HasVertices' polyLine - , HasVertices' polyLine' - , Ord r - , VertexIx polyLine ~ Int, VertexIx polyLine' ~ Int +frechetDistanceWith :: ( HasVertices' polyLine + , HasVertices' polyLine' + , Ord r + , VertexIx polyLine ~ Int, VertexIx polyLine' ~ Int ) - => (Vertex polyLine -> Vertex polyLine' -> r) - -> polyLine -> polyLine' - -> r + => (Vertex polyLine -> Vertex polyLine' -> r) + -> polyLine -> polyLine' + -> r frechetDistanceWith :: forall polyLine polyLine' r. (HasVertices' polyLine, HasVertices' polyLine', Ord r, VertexIx polyLine ~ Int, VertexIx polyLine' ~ Int) => (Vertex polyLine -> Vertex polyLine' -> r) -> polyLine -> polyLine' -> r -frechetDistanceWith Vertex polyLine -> Vertex polyLine' -> r -dist' polyLine -polyP polyLine' -polyQ = (Int, Int) -> r -fd (Int -n,Int -m) +frechetDistanceWith Vertex polyLine -> Vertex polyLine' -> r +dist' polyLine +polyP polyLine' +polyQ = (Int, Int) -> r +fd (Int +n,Int +m) where - n :: Int -n = polyLine -> Int + n :: Int +n = polyLine -> Int forall graph. HasVertices' graph => graph -> Int numVertices polyLine -polyP Int -> Int -> Int +polyP Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1 - m :: Int -m = polyLine' -> Int + m :: Int +m = polyLine' -> Int forall graph. HasVertices' graph => graph -> Int numVertices polyLine' -polyQ Int -> Int -> Int +polyQ Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1 - dist :: Int -> Int -> r -dist Int -i Int -j = Vertex polyLine -> Vertex polyLine' -> r -dist' (polyLine -polyPpolyLine + dist :: Int -> Int -> r +dist Int +i Int +j = Vertex polyLine -> Vertex polyLine' -> r +dist' (polyLine +polyPpolyLine -> Getting (Endo (Vertex polyLine)) polyLine (Vertex polyLine) -> Vertex polyLine forall s a. HasCallStack => s -> Getting (Endo a) s a -> a @@ -76,8 +76,8 @@ -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt Int VertexIx polyLine -i) (polyLine' -polyQpolyLine' +i) (polyLine' +polyQpolyLine' -> Getting (Endo (Vertex polyLine')) polyLine' (Vertex polyLine') -> Vertex polyLine' forall s a. HasCallStack => s -> Getting (Endo a) s a -> a @@ -90,84 +90,84 @@ -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt Int VertexIx polyLine' -j) +j) -- use dynamic programming - fd :: (Int, Int) -> r -fd = ((Int, Int), (Int, Int)) -> ((Int, Int) -> r) -> (Int, Int) -> r + fd :: (Int, Int) -> r +fd = ((Int, Int), (Int, Int)) -> ((Int, Int) -> r) -> (Int, Int) -> r forall i a. Ix i => (i, i) -> (i -> a) -> i -> a memo ((Int 0, Int 0), (Int -n, Int -m)) (Int, Int) -> r -fd' +n, Int +m)) (Int, Int) -> r +fd' - fd' :: (Int, Int) -> r -fd' (Int + fd' :: (Int, Int) -> r +fd' (Int 0,Int 0) = Int -> Int -> r -dist Int +dist Int 0 Int 0 - fd' (Int -0,Int -q) = Int -> Int -> r -dist Int + fd' (Int +0,Int +q) = Int -> Int -> r +dist Int 0 Int -q r -> r -> r +q r -> r -> r forall a. Ord a => a -> a -> a `max` (Int, Int) -> r -fd (Int +fd (Int 0, Int -qInt -> Int -> Int +qInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) - fd' (Int -p,Int + fd' (Int +p,Int 0) = Int -> Int -> r -dist Int -p Int +dist Int +p Int 0 r -> r -> r forall a. Ord a => a -> a -> a `max` (Int, Int) -> r -fd (Int -pInt -> Int -> Int +fd (Int +pInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1, Int 0) - fd' (Int -p,Int -q) = Int -> Int -> r -dist Int -p Int -q r -> r -> r + fd' (Int +p,Int +q) = Int -> Int -> r +dist Int +p Int +q r -> r -> r forall a. Ord a => a -> a -> a `max` ((Int, Int) -> r -fd (Int -p, Int -qInt -> Int -> Int +fd (Int +p, Int +qInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) r -> r -> r forall a. Ord a => a -> a -> a `min` (Int, Int) -> r -fd (Int -pInt -> Int -> Int +fd (Int +pInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1, Int -q) r -> r -> r +q) r -> r -> r forall a. Ord a => a -> a -> a `min` (Int, Int) -> r -fd (Int -pInt -> Int -> Int +fd (Int +pInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1, Int -qInt -> Int -> Int +qInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1)) @@ -177,28 +177,28 @@ -- * Dynamic programming / Memoization stuff -- | Create a table -tabulate :: Ix i => (i,i) -> (i -> a) -> Array i a +tabulate :: Ix i => (i,i) -> (i -> a) -> Array i a tabulate :: forall i a. Ix i => (i, i) -> (i -> a) -> Array i a -tabulate (i, i) -rng i -> a -f = (i, i) -> [a] -> Array i a +tabulate (i, i) +rng i -> a +f = (i, i) -> [a] -> Array i a forall i e. Ix i => (i, i) -> [e] -> Array i e listArray (i, i) -rng ((i -> a) -> [i] -> [a] +rng ((i -> a) -> [i] -> [a] forall a b. (a -> b) -> [a] -> [b] map i -> a -f ([i] -> [a]) -> [i] -> [a] +f ([i] -> [a]) -> [i] -> [a] forall a b. (a -> b) -> a -> b $ (i, i) -> [i] forall a. Ix a => (a, a) -> [a] range (i, i) -rng) +rng) -- | Memoize a function using an Array -memo :: Ix i => (i,i) -> (i -> a) -> (i -> a) +memo :: Ix i => (i,i) -> (i -> a) -> (i -> a) memo :: forall i a. Ix i => (i, i) -> (i -> a) -> i -> a -memo (i, i) -rng = Array i a -> i -> a +memo (i, i) +rng = Array i a -> i -> a forall i e. Ix i => Array i e -> i -> e (!) (Array i a -> i -> a) -> ((i -> a) -> Array i a) -> (i -> a) -> i -> a @@ -206,7 +206,7 @@ . (i, i) -> (i -> a) -> Array i a forall i a. Ix i => (i, i) -> (i -> a) -> Array i a tabulate (i, i) -rng +rng -- see: for the idea of this memoization -- https://byorgey.wordpress.com/2023/06/06/dynamic-programming-in-haskell-automatic-memoization/ diff --git a/haddocks/hgeometry/src/HGeometry.PolyLine.Simplification.DouglasPeucker.html b/haddocks/hgeometry/src/HGeometry.PolyLine.Simplification.DouglasPeucker.html index 1b2c8a801..c523c69a1 100644 --- a/haddocks/hgeometry/src/HGeometry.PolyLine.Simplification.DouglasPeucker.html +++ b/haddocks/hgeometry/src/HGeometry.PolyLine.Simplification.DouglasPeucker.html @@ -29,20 +29,20 @@ -- original polyline. -- -- Running time: \( O(n^2) \) worst case, \( O(n log n) \) on average. -douglasPeucker :: forall polyLine point d r. - ( PolyLine_ polyLine point - , Point_ point d r - , Ord r, Fractional r - , HasSquaredEuclideanDistance point +douglasPeucker :: forall polyLine point d r. + ( PolyLine_ polyLine point + , Point_ point d r + , Ord r, Fractional r + , HasSquaredEuclideanDistance point ) - => r -> polyLine -> PolyLineF ViewR1 point + => r -> polyLine -> PolyLineF ViewR1 point douglasPeucker :: forall polyLine point (d :: Nat) r. (PolyLine_ polyLine point, Point_ point d r, Ord r, Fractional r, HasSquaredEuclideanDistance point) => r -> polyLine -> PolyLineF ViewR1 point -douglasPeucker r -eps = PolyLineF ViewR1 point -> PolyLineF ViewR1 point -go (PolyLineF ViewR1 point -> PolyLineF ViewR1 point) +douglasPeucker r +eps = PolyLineF ViewR1 point -> PolyLineF ViewR1 point +go (PolyLineF ViewR1 point -> PolyLineF ViewR1 point) -> (polyLine -> PolyLineF ViewR1 point) -> polyLine -> PolyLineF ViewR1 point @@ -75,17 +75,17 @@ Traversal1 polyLine polyLine point point allPoints where - go :: PolyLineF ViewR1 point -> PolyLineF ViewR1 point -go PolyLineF ViewR1 point -pl + go :: PolyLineF ViewR1 point -> PolyLineF ViewR1 point +go PolyLineF ViewR1 point +pl | r -dst r -> r -> Bool +dst r -> r -> Bool forall a. Ord a => a -> a -> Bool <= (r -epsr -> r -> r +epsr -> r -> r forall a. Num a => a -> a -> a *r -eps) = NonEmpty point -> PolyLineF ViewR1 point +eps) = NonEmpty point -> PolyLineF ViewR1 point forall polyLine point (f :: * -> *). (ConstructablePolyLine_ polyLine point, Foldable1 f) => f point -> polyLine @@ -96,50 +96,50 @@ -> NonEmpty point -> PolyLineF ViewR1 point forall a b. (a -> b) -> a -> b $ point -a point -> [point] -> NonEmpty point +a point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :| [point -b] +b] | Bool otherwise = PolyLineF ViewR1 point -> PolyLineF ViewR1 point -go PolyLineF ViewR1 point -pref PolyLineF ViewR1 point +go PolyLineF ViewR1 point +pref PolyLineF ViewR1 point -> PolyLineF ViewR1 point -> PolyLineF ViewR1 point forall point. PolyLineF ViewR1 point -> PolyLineF ViewR1 point -> PolyLineF ViewR1 point `merge` PolyLineF ViewR1 point -> PolyLineF ViewR1 point -go PolyLineF ViewR1 point -subf +go
PolyLineF ViewR1 point +subf where - a, b :: point - a :: point -a = PolyLineF ViewR1 point -plPolyLineF ViewR1 point + a, b :: point + a :: point +a = PolyLineF ViewR1 point +plPolyLineF ViewR1 point -> Getting point (PolyLineF ViewR1 point) point -> point forall s a. s -> Getting a s a -> a ^.Getting point (PolyLineF ViewR1 point) point forall seg p. HasStart seg p => Lens' seg p Lens' (PolyLineF ViewR1 point) point start - b :: point -b = PolyLineF ViewR1 point -plPolyLineF ViewR1 point + b :: point +b = PolyLineF ViewR1 point +plPolyLineF ViewR1 point -> Getting point (PolyLineF ViewR1 point) point -> point forall s a. s -> Getting a s a -> a ^.Getting point (PolyLineF ViewR1 point) point forall seg p. HasEnd seg p => Lens' seg p Lens' (PolyLineF ViewR1 point) point end - (OnSnd Int -i r -dst) = ViewR1 point -> ClosedLineSegment point -> OnSnd r + (OnSnd Int +i r +dst) = ViewR1 point -> ClosedLineSegment point -> OnSnd r forall point (d :: Nat) r (f :: * -> *). (Point_ point d r, Ord r, Fractional r, Foldable1WithIndex Int f, HasSquaredEuclideanDistance point) => f point -> ClosedLineSegment point -> OnSnd r maxDist (PolyLineF ViewR1 point -plPolyLineF ViewR1 point +plPolyLineF ViewR1 point -> Getting (ViewR1 point) (PolyLineF ViewR1 point) (ViewR1 point) -> ViewR1 point forall s a. s -> Getting a s a -> a @@ -152,11 +152,11 @@ _PolyLineF) (point -> point -> ClosedLineSegment point forall point. point -> point -> ClosedLineSegment point ClosedLineSegment point -a point -b) - (PolyLineF ViewR1 point -pref,PolyLineF ViewR1 point -subf) = Int +a point +b) + (PolyLineF ViewR1 point +pref,PolyLineF ViewR1 point +subf) = Int -> PolyLineF ViewR1 point -> (PolyLineF ViewR1 point, PolyLineF ViewR1 point) forall point. @@ -164,23 +164,23 @@ -> PolyLineF ViewR1 point -> (PolyLineF ViewR1 point, PolyLineF ViewR1 point) split Int -i PolyLineF ViewR1 point -pl +i PolyLineF ViewR1 point +pl -------------------------------------------------------------------------------- -- * Internal functions -- | Concatenate the two polylines, dropping their shared vertex -merge :: PolyLineF ViewR1 point -> PolyLineF ViewR1 point -> PolyLineF ViewR1 point +merge :: PolyLineF ViewR1 point -> PolyLineF ViewR1 point -> PolyLineF ViewR1 point merge :: forall point. PolyLineF ViewR1 point -> PolyLineF ViewR1 point -> PolyLineF ViewR1 point -merge PolyLineF ViewR1 point -pref PolyLineF ViewR1 point -sub = let (point -_ :<< Seq point -sub') = PolyLineF ViewR1 point -subPolyLineF ViewR1 point +merge PolyLineF ViewR1 point +pref PolyLineF ViewR1 point +sub = let (point +_ :<< Seq point +sub') = PolyLineF ViewR1 point +subPolyLineF ViewR1 point -> Getting (ViewL1 point) (PolyLineF ViewR1 point) (ViewL1 point) -> ViewL1 point forall s a. s -> Getting a s a -> a @@ -215,7 +215,7 @@ -> ViewR1 point -> PolyLineF ViewR1 point forall a b. (a -> b) -> a -> b $ (PolyLineF ViewR1 point -prefPolyLineF ViewR1 point +prefPolyLineF ViewR1 point -> Getting (ViewR1 point) (PolyLineF ViewR1 point) (ViewR1 point) -> ViewR1 point forall s a. s -> Getting a s a -> a @@ -228,56 +228,56 @@ _PolyLineF) ViewR1 point -> Seq point -> ViewR1 point forall a. ViewR1 a -> Seq a -> ViewR1 a <>> Seq point -sub' +sub' -- | Split the polyline at the given vertex. Both polylines contain this vertex -split :: Int -> PolyLineF ViewR1 point - -> (PolyLineF ViewR1 point, PolyLineF ViewR1 point) +split :: Int -> PolyLineF ViewR1 point + -> (PolyLineF ViewR1 point, PolyLineF ViewR1 point) split :: forall point. Int -> PolyLineF ViewR1 point -> (PolyLineF ViewR1 point, PolyLineF ViewR1 point) -split Int -i (PolyLine (Seq point -vs :>> point -r)) = (ViewR1 point -> PolyLineF ViewR1 point +split
Int +i (PolyLine (Seq point +vs :>> point +r)) = (ViewR1 point -> PolyLineF ViewR1 point forall {k} (f :: k -> *) (point :: k). f point -> PolyLineF f point PolyLine ViewR1 point -ls, ViewR1 point -> PolyLineF ViewR1 point +ls, ViewR1 point -> PolyLineF ViewR1 point forall {k} (f :: k -> *) (point :: k). f point -> PolyLineF f point PolyLine ViewR1 point -rs) +rs
) where - (Seq point -ls',Seq point -rs') = Int -> Seq point -> (Seq point, Seq point) + (Seq point +ls',Seq point +rs') = Int -> Seq point -> (Seq point, Seq point) forall a. Int -> Seq a -> (Seq a, Seq a) Seq.splitAt (Int -iInt -> Int -> Int +iInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) Seq point -vs - (ViewR1 point -ls,ViewR1 point -rs) = case Seq point -> ViewR point +vs + (ViewR1 point +ls,ViewR1 point +rs) = case Seq point -> ViewR point forall a. Seq a -> ViewR a Seq.viewr Seq point -ls' of - (Seq point -xs Seq.:> point -v) -> (Seq point -xs Seq point -> point -> ViewR1 point +ls' of + (Seq point +xs Seq.:> point +v) -> (Seq point +xs Seq point -> point -> ViewR1 point forall a. Seq a -> a -> ViewR1 a :>> point -v, (point -v point -> Seq point -> Seq point +v, (point +v point -> Seq point -> Seq point forall a. a -> Seq a -> Seq a :<| Seq point -rs') Seq point -> point -> ViewR1 point +rs') Seq point -> point -> ViewR1 point forall a. Seq a -> a -> ViewR1 a :>> point -r) +r) ViewR point _ -> [Char] -> (ViewR1 point, ViewR1 point) forall a. HasCallStack => [Char] -> a @@ -288,27 +288,27 @@ -- | Given a sequence of points, find the index of the point that has the -- Furthest distance to the LineSegment. The result is the index of the point -- and this distance. -maxDist :: ( Point_ point d r, Ord r, Fractional r, Foldable1WithIndex Int f - , HasSquaredEuclideanDistance point +maxDist :: ( Point_ point d r, Ord r, Fractional r, Foldable1WithIndex Int f + , HasSquaredEuclideanDistance point ) - => f point -> ClosedLineSegment point -> OnSnd r + => f point -> ClosedLineSegment point -> OnSnd r maxDist :: forall point (d :: Nat) r (f :: * -> *). (Point_ point d r, Ord r, Fractional r, Foldable1WithIndex Int f, HasSquaredEuclideanDistance point) => f point -> ClosedLineSegment point -> OnSnd r -maxDist f point -pts ClosedLineSegment point -s = (Int -> point -> OnSnd r) -> f point -> OnSnd r +maxDist f point +pts ClosedLineSegment point +s = (Int -> point -> OnSnd r) -> f point -> OnSnd r forall m a. Semigroup m => (Int -> a -> m) -> f a -> m forall i (f :: * -> *) m a. (Foldable1WithIndex i f, Semigroup m) => (i -> a -> m) -> f a -> m -ifoldMap1' (\Int -i point -p -> Int -> r -> OnSnd r +ifoldMap1' (\Int +i point +p -> Int -> r -> OnSnd r forall r. Int -> r -> OnSnd r OnSnd Int -i (r -> OnSnd r) -> r -> OnSnd r +i (r -> OnSnd r) -> r -> OnSnd r forall a b. (a -> b) -> a -> b $ point -> ClosedLineSegment point -> r forall g r (d :: Nat) point. @@ -321,16 +321,16 @@ Point_ point d r) => point -> ClosedLineSegment point -> r squaredEuclideanDistTo point -p ClosedLineSegment point -s) f point -pts +p
ClosedLineSegment point +s) f point +pts -data OnSnd r = OnSnd { forall r. OnSnd r -> Int +data OnSnd r = OnSnd { forall r. OnSnd r -> Int _getI :: {-# UNPACK #-}!Int, forall r. OnSnd r -> r -getR :: !r } +getR :: !r } -instance Eq r => Eq (OnSnd r) where - == :: OnSnd r -> OnSnd r -> Bool +instance Eq r => Eq (OnSnd r) where + == :: OnSnd r -> OnSnd r -> Bool (==) = r -> r -> Bool forall a. Eq a => a -> a -> Bool (==) (r -> r -> Bool) -> (OnSnd r -> r) -> OnSnd r -> OnSnd r -> Bool @@ -338,24 +338,24 @@ `on` OnSnd r -> r forall r. OnSnd r -> r getR -instance Ord r => Ord (OnSnd r) where - compare :: OnSnd r -> OnSnd r -> Ordering -compare = (OnSnd r -> r) -> OnSnd r -> OnSnd r -> Ordering +instance Ord r => Ord (OnSnd r) where + compare :: OnSnd r -> OnSnd r -> Ordering +compare = (OnSnd r -> r) -> OnSnd r -> OnSnd r -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing OnSnd r -> r forall r. OnSnd r -> r getR -instance Ord r => Semigroup (OnSnd r) where - OnSnd r -a <> :: OnSnd r -> OnSnd r -> OnSnd r -<> OnSnd r -b | OnSnd r -a OnSnd r -> OnSnd r -> Bool +instance Ord r => Semigroup (OnSnd r) where + OnSnd r +a <> :: OnSnd r -> OnSnd r -> OnSnd r +<> OnSnd r +b | OnSnd r +a OnSnd r -> OnSnd r -> Bool forall a. Ord a => a -> a -> Bool < OnSnd r -b = OnSnd r -b -- return the max +b = OnSnd r +b -- return the max | Bool otherwise = OnSnd r -a +a \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.PolyLine.Simplification.ImaiIri.html b/haddocks/hgeometry/src/HGeometry.PolyLine.Simplification.ImaiIri.html index 3c11dc19a..646ae0fea 100644 --- a/haddocks/hgeometry/src/HGeometry.PolyLine.Simplification.ImaiIri.html +++ b/haddocks/hgeometry/src/HGeometry.PolyLine.Simplification.ImaiIri.html @@ -30,18 +30,18 @@ -- dist eps to the original polyline. -- -- Running time: \( O(n^2) \) time. -simplify :: ( PolyLine_ polyLine point - , Point_ point d r - , Ord r, Fractional r - , HasSquaredEuclideanDistance point +simplify :: ( PolyLine_ polyLine point + , Point_ point d r + , Ord r, Fractional r + , HasSquaredEuclideanDistance point ) - => r -> polyLine -> PolyLine point + => r -> polyLine -> PolyLine point simplify :: forall polyLine point (d :: Nat) r. (PolyLine_ polyLine point, Point_ point d r, Ord r, Fractional r, HasSquaredEuclideanDistance point) => r -> polyLine -> PolyLine point -simplify r -eps = +simplify
r +eps = (ClosedLineSegment point -> PolyLine point -> Bool) -> polyLine -> PolyLine point forall polyLine point (d :: Nat) r. @@ -55,9 +55,9 @@ -> polyLine -> PolyLine point forall a b. (a -> b) -> a -> b -$ \ClosedLineSegment point -shortcut PolyLine point -subPoly -> Getting All (PolyLine point) point +$ \ClosedLineSegment point +shortcut PolyLine point +subPoly -> Getting All (PolyLine point) point -> (point -> Bool) -> PolyLine point -> Bool forall s a. Getting All s a -> (a -> Bool) -> s -> Bool allOf Getting All (PolyLine point) point @@ -74,14 +74,14 @@ (Vertex (PolyLine point)) (Vertex (PolyLine point)) vertices (ClosedLineSegment point -> point -> Bool -closeTo ClosedLineSegment point -shortcut) PolyLine point -subPoly +closeTo
ClosedLineSegment point +shortcut) PolyLine point +subPoly where - closeTo :: ClosedLineSegment point -> point -> Bool -closeTo ClosedLineSegment point -seg point -p = point -> ClosedLineSegment point -> r + closeTo :: ClosedLineSegment point -> point -> Bool +closeTo ClosedLineSegment point +seg point +p = point -> ClosedLineSegment point -> r forall g r (d :: Nat) point. (HasSquaredEuclideanDistance g, r ~ NumType g, d ~ Dimension g, Num r, Point_ point d r) => @@ -92,37 +92,37 @@ Point_ point d r) => point -> ClosedLineSegment point -> r squaredEuclideanDistTo point -p ClosedLineSegment point -seg r -> r -> Bool +p ClosedLineSegment point +seg r -> r -> Bool forall a. Ord a => a -> a -> Bool <= r -epsSq - epsSq :: r -epsSq = r -epsr -> r -> r +epsSq + epsSq :: r +epsSq = r +epsr -> r -> r forall a. Num a => a -> a -> a *r -eps +eps -- | Given a function that tests if the shortcut is valid, compute a -- simplification using the Imai-Iri algorithm. -- -- Running time: \( O(Tn^2 \) time, where \(T\) is the time to -- evaluate the predicate. -simplifyWith :: ( PolyLine_ polyLine point - , Point_ point d r - , Ord r, Fractional r +simplifyWith :: ( PolyLine_ polyLine point + , Point_ point d r + , Ord r, Fractional r ) - => (ClosedLineSegment point -> PolyLine point -> Bool) - -> polyLine -> PolyLine point + => (ClosedLineSegment point -> PolyLine point -> Bool) + -> polyLine -> PolyLine point simplifyWith :: forall polyLine point (d :: Nat) r. (PolyLine_ polyLine point, Point_ point d r, Ord r, Fractional r) => (ClosedLineSegment point -> PolyLine point -> Bool) -> polyLine -> PolyLine point -simplifyWith ClosedLineSegment point -> PolyLine point -> Bool -isValid polyLine -pl = NonEmptyVector point -> PolyLine point +simplifyWith
ClosedLineSegment point -> PolyLine point -> Bool +isValid polyLine +pl = NonEmptyVector point -> PolyLine point forall {k} (f :: k -> *) (point :: k). f point -> PolyLineF f point PolyLine (NonEmptyVector point -> PolyLine point) -> NonEmptyVector point -> PolyLine point @@ -131,8 +131,8 @@ forall point. NonEmpty Int -> NonEmptyVector point -> NonEmptyVector point extract NonEmpty Int -path (PolyLine point -pl'PolyLine point +path (PolyLine point +pl'PolyLine point -> Getting (NonEmptyVector point) (PolyLine point) (NonEmptyVector point) -> NonEmptyVector point @@ -146,8 +146,8 @@ -> p (PolyLineF f1 point) (f2 (PolyLineF f' point')) _PolyLineF) where - pl' :: PolyLine point -pl' = NonEmpty point -> PolyLine point + pl' :: PolyLine point +pl' = NonEmpty point -> PolyLine point forall polyLine point (f :: * -> *). (ConstructablePolyLine_ polyLine point, Foldable1 f) => f point -> polyLine @@ -172,93 +172,93 @@ allPoints (polyLine -> PolyLine point) -> polyLine -> PolyLine point forall a b. (a -> b) -> a -> b $ polyLine -pl - g :: Graph -g = (ClosedLineSegment point -> PolyLine point -> Bool) +pl + g :: Graph +g = (ClosedLineSegment point -> PolyLine point -> Bool) -> PolyLine point -> Graph forall point. (ClosedLineSegment point -> PolyLine point -> Bool) -> PolyLine point -> Graph mkGraph ClosedLineSegment point -> PolyLine point -> Bool -isValid PolyLine point -pl' - spt :: Tree (VertexIx Graph) -spt = Graph -> VertexIx Graph -> Tree (VertexIx Graph) +isValid PolyLine point +pl' + spt :: Tree (VertexIx Graph) +spt = Graph -> VertexIx Graph -> Tree (VertexIx Graph) forall graph. (DiGraph_ graph, Enum (VertexIx graph)) => graph -> VertexIx graph -> Tree (VertexIx graph) bfs Graph -g Int +g Int VertexIx Graph 0 - path :: NonEmpty Int -path = case Int -> Tree Int -> [NonEmpty Int] + path :: NonEmpty Int +path = case Int -> Tree Int -> [NonEmpty Int] forall a. Eq a => a -> Tree a -> [NonEmpty a] pathsTo (PolyLine point -> Int forall graph. HasVertices' graph => graph -> Int numVertices PolyLine point -pl' Int -> Int -> Int +pl' Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1) Tree Int Tree (VertexIx Graph) -spt of +spt of [] -> [Char] -> NonEmpty Int forall a. HasCallStack => [Char] -> a error [Char] "no path found?" - (NonEmpty Int -pth:[NonEmpty Int] + (NonEmpty Int +pth:[NonEmpty Int] _) -> NonEmpty Int -pth +pth ---------------------------------------- -- | Constructs the shortcut graph -mkGraph :: (ClosedLineSegment point -> PolyLine point -> Bool) - -> PolyLine point -> Graph +mkGraph :: (ClosedLineSegment point -> PolyLine point -> Bool) + -> PolyLine point -> Graph mkGraph :: forall point. (ClosedLineSegment point -> PolyLine point -> Bool) -> PolyLine point -> Graph -mkGraph ClosedLineSegment point -> PolyLineF NonEmptyVector point -> Bool -isValid pl :: PolyLineF NonEmptyVector point -pl@(PolyLine NonEmptyVector point -vs) = +mkGraph
ClosedLineSegment point -> PolyLineF NonEmptyVector point -> Bool +isValid pl :: PolyLineF NonEmptyVector point +pl@(PolyLine NonEmptyVector point +vs) = Bounds -> [Bounds] -> Graph buildG Bounds -rng [ (Int -i,Int -j) | Int -i <- Bounds -> [Int] +rng [ (Int +i,Int +j) | Int +i <- Bounds -> [Int] forall a. Ix a => (a, a) -> [a] Array.range Bounds -rng, Int -j <- Bounds -> [Int] +rng, Int +j <- Bounds -> [Int] forall a. Ix a => (a, a) -> [a] Array.range Bounds -rng, Int -i Int -> Int -> Bool +rng, Int +i Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int -j, Int -> Int -> Bool -isValid' Int -i Int -j ] +j
, Int -> Int -> Bool +isValid' Int +i Int +j ] where - rng :: Bounds -rng = (Int + rng :: Bounds +rng = (Int 0,PolyLineF NonEmptyVector point -> Int forall graph. HasVertices' graph => graph -> Int numVertices PolyLineF NonEmptyVector point -plInt -> Int -> Int +plInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) - isValid' :: Int -> Int -> Bool -isValid' Int -i Int -j = let subPoly :: PolyLineF NonEmptyVector point -subPoly = NonEmptyVector point -> PolyLineF NonEmptyVector point + isValid' :: Int -> Int -> Bool +isValid' Int +i Int +j = let subPoly :: PolyLineF NonEmptyVector point +subPoly = NonEmptyVector point -> PolyLineF NonEmptyVector point forall {k} (f :: k -> *) (point :: k). f point -> PolyLineF f point PolyLine (NonEmptyVector point -> PolyLineF NonEmptyVector point) -> (Vector point -> NonEmptyVector point) @@ -274,27 +274,27 @@ Int -> Int -> NonEmptyVector point -> Vector point forall a. Int -> Int -> NonEmptyVector a -> Vector a NonEmptyVector.slice Int -i (Int -jInt -> Int -> Int +i (Int +jInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1Int -> Int -> Int forall a. Num a => a -> a -> a -Int -i) NonEmptyVector point -vs - shortcut :: ClosedLineSegment point -shortcut = point -> point -> ClosedLineSegment point +i) NonEmptyVector point +vs + shortcut :: ClosedLineSegment point +shortcut = point -> point -> ClosedLineSegment point forall point. point -> point -> ClosedLineSegment point ClosedLineSegment (PolyLineF NonEmptyVector point -subPolyPolyLineF NonEmptyVector point +subPolyPolyLineF NonEmptyVector point -> Getting point (PolyLineF NonEmptyVector point) point -> point forall s a. s -> Getting a s a -> a ^.Getting point (PolyLineF NonEmptyVector point) point forall seg p. HasStart seg p => Lens' seg p Lens' (PolyLineF NonEmptyVector point) point start) (PolyLineF NonEmptyVector point -subPolyPolyLineF NonEmptyVector point +subPolyPolyLineF NonEmptyVector point -> Getting point (PolyLineF NonEmptyVector point) point -> point forall s a. s -> Getting a s a -> a ^.Getting point (PolyLineF NonEmptyVector point) point @@ -302,20 +302,20 @@ Lens' (PolyLineF NonEmptyVector point) point end) in ClosedLineSegment point -> PolyLineF NonEmptyVector point -> Bool -isValid ClosedLineSegment point -shortcut PolyLineF NonEmptyVector point -subPoly +isValid ClosedLineSegment point +shortcut PolyLineF NonEmptyVector point +subPoly -- | Given a non-empty list of indices, and some LSeq, extract the elemnets -- on those indices. -- -- running time: \(O(n)\) -extract :: NonEmpty Int - -> NonEmptyVector.NonEmptyVector point -> NonEmptyVector.NonEmptyVector point +extract :: NonEmpty Int + -> NonEmptyVector.NonEmptyVector point -> NonEmptyVector.NonEmptyVector point extract :: forall point. NonEmpty Int -> NonEmptyVector point -> NonEmptyVector point -extract NonEmpty Int -is = [point] -> NonEmptyVector point +extract NonEmpty Int +is = [point] -> NonEmptyVector point forall a. [a] -> NonEmptyVector a NonEmptyVector.unsafeFromList ([point] -> NonEmptyVector point) -> (NonEmptyVector point -> [point]) @@ -328,7 +328,7 @@ forall a. NonEmpty a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] F.toList NonEmpty Int -is) Int +is) Int 0 ([point] -> [point]) -> (NonEmptyVector point -> [point]) -> NonEmptyVector point @@ -340,7 +340,7 @@ F.toList -- | Extract the indices -extract' :: [Int] -> Int -> [a] -> [a] +extract' :: [Int] -> Int -> [a] -> [a] extract' :: forall a. [Int] -> Int -> [a] -> [a] extract' [] Int _ [a] @@ -349,38 +349,38 @@ _:[Int] _) Int _ [] = [] -extract' is' :: [Int] -is'@(Int -i:[Int] -is) Int -j (a -x:[a] -xs) | Int -i Int -> Int -> Bool +extract' is' :: [Int] +is'@(Int +i:[Int] +is) Int +j (a +x:[a] +xs) | Int +i Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int -j = a -x a -> [a] -> [a] +j = a +x a -> [a] -> [a] forall a. a -> [a] -> [a] : [Int] -> Int -> [a] -> [a] forall a. [Int] -> Int -> [a] -> [a] extract' [Int] -is (Int -jInt -> Int -> Int +is (Int +jInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) [a] -xs +xs | Bool otherwise = [Int] -> Int -> [a] -> [a] forall a. [Int] -> Int -> [a] -> [a] extract' [Int] -is' (Int -jInt -> Int -> Int +is' (Int +jInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) [a] -xs +xs -------------------------------------------------------------------------------- diff --git a/haddocks/hgeometry/src/HGeometry.PolyLine.html b/haddocks/hgeometry/src/HGeometry.PolyLine.html index c978d7432..50272244a 100644 --- a/haddocks/hgeometry/src/HGeometry.PolyLine.html +++ b/haddocks/hgeometry/src/HGeometry.PolyLine.html @@ -37,8 +37,8 @@ -------------------------------------------------------------------------------- -- | Simple polygons just store their vertices in CCCW order -newtype PolyLineF f point = PolyLine (f point) - deriving stock ((forall x. PolyLineF f point -> Rep (PolyLineF f point) x) +newtype PolyLineF f point = PolyLine (f point) + deriving stock ((forall x. PolyLineF f point -> Rep (PolyLineF f point) x) -> (forall x. Rep (PolyLineF f point) x -> PolyLineF f point) -> Generic (PolyLineF f point) forall x. Rep (PolyLineF f point) x -> PolyLineF f point @@ -55,7 +55,7 @@ $cto :: forall k (f :: k -> *) (point :: k) x. Rep (PolyLineF f point) x -> PolyLineF f point to :: forall x. Rep (PolyLineF f point) x -> PolyLineF f point -Generic,Int -> PolyLineF f point -> ShowS +Generic,Int -> PolyLineF f point -> ShowS [PolyLineF f point] -> ShowS PolyLineF f point -> String (Int -> PolyLineF f point -> ShowS) @@ -85,7 +85,7 @@ Show (f point) => [PolyLineF f point] -> ShowS showList :: [PolyLineF f point] -> ShowS -Show, ReadPrec [PolyLineF f point] +Show, ReadPrec [PolyLineF f point] ReadPrec (PolyLineF f point) Int -> ReadS (PolyLineF f point) ReadS [PolyLineF f point] @@ -126,7 +126,7 @@ ReadPrec [PolyLineF f point] readListPrec :: ReadPrec [PolyLineF f point] Read) - deriving newtype (PolyLineF f point -> () + deriving newtype (PolyLineF f point -> () (PolyLineF f point -> ()) -> NFData (PolyLineF f point) forall a. (a -> ()) -> NFData a forall k (f :: k -> *) (point :: k). @@ -136,7 +136,7 @@ NFData (f point) => PolyLineF f point -> () rnf :: PolyLineF f point -> () -NFData,(forall a b. (a -> b) -> PolyLineF f a -> PolyLineF f b) +NFData,(forall a b. (a -> b) -> PolyLineF f a -> PolyLineF f b) -> (forall a b. a -> PolyLineF f b -> PolyLineF f a) -> Functor (PolyLineF f) forall a b. a -> PolyLineF f b -> PolyLineF f a @@ -158,7 +158,7 @@ Functor f => a -> PolyLineF f b -> PolyLineF f a <$ :: forall a b. a -> PolyLineF f b -> PolyLineF f a -Functor,(forall m. Monoid m => PolyLineF f m -> m) +Functor,(forall m. Monoid m => PolyLineF f m -> m) -> (forall m a. Monoid m => (a -> m) -> PolyLineF f a -> m) -> (forall m a. Monoid m => (a -> m) -> PolyLineF f a -> m) -> (forall a b. (a -> b -> b) -> b -> PolyLineF f a -> b) @@ -283,7 +283,7 @@ sum :: forall a. Num a => PolyLineF f a -> a $cproduct :: forall (f :: * -> *) a. (Foldable f, Num a) => PolyLineF f a -> a product :: forall a. Num a => PolyLineF f a -> a -Foldable,Foldable (PolyLineF f) +Foldable,Foldable (PolyLineF f) Foldable (PolyLineF f) => (forall m. Semigroup m => PolyLineF f m -> m) -> (forall m a. Semigroup m => (a -> m) -> PolyLineF f a -> m) @@ -374,7 +374,7 @@ Foldable1 f => (a -> b) -> (a -> b -> b) -> PolyLineF f a -> b foldrMap1' :: forall a b. (a -> b) -> (a -> b -> b) -> PolyLineF f a -> b -Foldable1,PolyLineF f point -> PolyLineF f point -> Bool +Foldable1,PolyLineF f point -> PolyLineF f point -> Bool (PolyLineF f point -> PolyLineF f point -> Bool) -> (PolyLineF f point -> PolyLineF f point -> Bool) -> Eq (PolyLineF f point) @@ -390,7 +390,7 @@ Eq (f point) => PolyLineF f point -> PolyLineF f point -> Bool /= :: PolyLineF f point -> PolyLineF f point -> Bool -Eq,Eq (PolyLineF f point) +Eq,Eq (PolyLineF f point) Eq (PolyLineF f point) => (PolyLineF f point -> PolyLineF f point -> Ordering) -> (PolyLineF f point -> PolyLineF f point -> Bool) @@ -453,7 +453,7 @@ Ord (f point) => PolyLineF f point -> PolyLineF f point -> PolyLineF f point min :: PolyLineF f point -> PolyLineF f point -> PolyLineF f point -Ord,(forall a. Eq a => Eq (PolyLineF f a)) => +Ord,(forall a. Eq a => Eq (PolyLineF f a)) => (forall a b. (a -> b -> Bool) -> PolyLineF f a -> PolyLineF f b -> Bool) -> Eq1 (PolyLineF f) @@ -472,7 +472,7 @@ (a -> b -> Bool) -> PolyLineF f a -> PolyLineF f b -> Bool liftEq :: forall a b. (a -> b -> Bool) -> PolyLineF f a -> PolyLineF f b -> Bool -Eq1,Eq1 (PolyLineF f) +Eq1,Eq1 (PolyLineF f) (Eq1 (PolyLineF f), forall a. Ord a => Ord (PolyLineF f a)) => (forall a b. (a -> b -> Ordering) -> PolyLineF f a -> PolyLineF f b -> Ordering) @@ -499,13 +499,13 @@ -- | By default we store simple poylline as non-empty vectors. type PolyLine = PolyLineF NonEmptyVector -type instance Dimension (PolyLineF f point) = Dimension point -type instance NumType (PolyLineF f point) = NumType point +type instance Dimension (PolyLineF f point) = Dimension point +type instance NumType (PolyLineF f point) = NumType point -- | Access the container -_PolyLineF :: Iso (PolyLineF f point) (PolyLineF f' point') - (f point) (f' point' ) +_PolyLineF :: Iso (PolyLineF f point) (PolyLineF f' point') + (f point) (f' point' ) _PolyLineF :: forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => @@ -516,19 +516,19 @@ -> Iso (PolyLineF f point) (PolyLineF f' point') (f point) (f' point') forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b -iso (\(PolyLine f point -vs) -> f point -vs) f' point' -> PolyLineF f' point' +iso (\(PolyLine f point +vs) -> f point +vs) f' point' -> PolyLineF f' point' forall {k} (f :: k -> *) (point :: k). f point -> PolyLineF f point PolyLine -instance Traversable f => Traversable (PolyLineF f) where - traverse :: forall (f :: * -> *) a b. +instance Traversable f => Traversable (PolyLineF f) where + traverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> PolyLineF f a -> f (PolyLineF f b) -traverse a -> f b -f (PolyLine f a -vs) = f b -> PolyLineF f b +traverse a -> f b +f (PolyLine f a +vs) = f b -> PolyLineF f b forall {k} (f :: k -> *) (point :: k). f point -> PolyLineF f point PolyLine (f b -> PolyLineF f b) -> f (f b) -> f (PolyLineF f b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -540,15 +540,15 @@ Applicative f => (a -> f b) -> f a -> f (f b) traverse a -> f b -f f a -vs -instance Traversable1 f => Traversable1 (PolyLineF f) where - traverse1 :: forall (f :: * -> *) a b. +f f a +vs +instance Traversable1 f => Traversable1 (PolyLineF f) where + traverse1 :: forall (f :: * -> *) a b. Apply f => (a -> f b) -> PolyLineF f a -> f (PolyLineF f b) -traverse1 a -> f b -f (PolyLine f a -vs) = f b -> PolyLineF f b +traverse1 a -> f b +f (PolyLine f a +vs) = f b -> PolyLineF f b forall {k} (f :: k -> *) (point :: k). f point -> PolyLineF f point PolyLine (f b -> PolyLineF f b) -> f (f b) -> f (PolyLineF f b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -558,22 +558,22 @@ (a -> f b) -> t a -> f (t b) forall (f :: * -> *) a b. Apply f => (a -> f b) -> f a -> f (f b) traverse1 a -> f b -f f a -vs +f f a +vs -instance ( TraversableWithIndex Int f - , Traversable1 f - , IxValue (f point) ~ point - , Index (f point) ~ Int - , Ixed (f point) - ) => HasVertices (PolyLineF f point) (PolyLineF f point') where - vertices :: IndexedTraversal1 +instance ( TraversableWithIndex Int f + , Traversable1 f + , IxValue (f point) ~ point + , Index (f point) ~ Int + , Ixed (f point) + ) => HasVertices (PolyLineF f point) (PolyLineF f point') where + vertices :: IndexedTraversal1 (VertexIx (PolyLineF f point)) (PolyLineF f point) (PolyLineF f point') (Vertex (PolyLineF f point)) (Vertex (PolyLineF f point')) -vertices = (f point -> f (f point')) +vertices = (f point -> f (f point')) -> PolyLineF f point -> f (PolyLineF f point') forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -594,18 +594,18 @@ IndexedTraversal1 Int (f point) (f point') point point' traversed1 -instance ( Traversable1 f - , IxValue (f point) ~ point - , Index (f point) ~ Int - , Ixed (f point) - ) => HasPoints (PolyLineF f point) (PolyLineF f point') point point' where - allPoints :: forall (d :: Nat) r r'. +instance ( Traversable1 f + , IxValue (f point) ~ point + , Index (f point) ~ Int + , Ixed (f point) + ) => HasPoints (PolyLineF f point) (PolyLineF f point') point point' where + allPoints :: forall (d :: Nat) r r'. (Point_ point d r, Point_ point' d r', NumType (PolyLineF f point) ~ r, NumType (PolyLineF f point') ~ r', Dimension (PolyLineF f point) ~ d, Dimension (PolyLineF f point') ~ d) => Traversal1 (PolyLineF f point) (PolyLineF f point') point point' -allPoints = (f point -> f (f point')) +allPoints = (f point -> f (f point')) -> PolyLineF f point -> f (PolyLineF f point') forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -626,37 +626,37 @@ IndexedTraversal1 Int (f point) (f point') point point' traversed1 -instance ( Traversable1 f - , IxValue (f point) ~ point - , Index (f point) ~ Int - , Ixed (f point) - , DefaultTransformByConstraints (PolyLineF f point) 2 r - , Point_ point 2 r - ) => IsTransformable (PolyLineF f point) +instance ( Traversable1 f + , IxValue (f point) ~ point + , Index (f point) ~ Int + , Ixed (f point) + , DefaultTransformByConstraints (PolyLineF f point) 2 r + , Point_ point 2 r + ) => IsTransformable (PolyLineF f point) -instance ( Traversable1 f - , IxValue (f point) ~ point - , Index (f point) ~ Int - , Ixed (f point) - , Point_ point 2 r +instance ( Traversable1 f + , IxValue (f point) ~ point + , Index (f point) ~ Int + , Ixed (f point) + , Point_ point 2 r -- , OptVector_ 2 r, OptMetric_ 2 r - ) => IsBoxable (PolyLineF f point) + ) => IsBoxable (PolyLineF f point) -instance ( TraversableWithIndex Int f - , Traversable1 f - , Ixed (f point) - , IxValue (f point) ~ point - , Index (f point) ~ Int - ) => HasVertices' (PolyLineF f point) where - type Vertex (PolyLineF f point) = point - type VertexIx (PolyLineF f point) = Int - vertexAt :: VertexIx (PolyLineF f point) +instance ( TraversableWithIndex Int f + , Traversable1 f + , Ixed (f point) + , IxValue (f point) ~ point + , Index (f point) ~ Int + ) => HasVertices' (PolyLineF f point) where + type Vertex (PolyLineF f point) = point + type VertexIx (PolyLineF f point) = Int + vertexAt :: VertexIx (PolyLineF f point) -> IndexedTraversal' (VertexIx (PolyLineF f point)) (PolyLineF f point) (Vertex (PolyLineF f point)) -vertexAt VertexIx (PolyLineF f point) -i = (f point -> f (f point)) +vertexAt VertexIx (PolyLineF f point) +i = (f point -> f (f point)) -> PolyLineF f point -> f (PolyLineF f point) forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -678,47 +678,47 @@ Index m -> IndexedTraversal' (Index m) m (IxValue m) iix VertexIx (PolyLineF f point) Index (f point) -i +i -instance ( Traversable1 f +instance ( Traversable1 f -- , Ixed (f point) -- , IxValue (f point) ~ point -- , Index (f point) ~ Int - ) => HasStart (PolyLineF f point) point where - start :: Lens' (PolyLineF f point) point -start = (point -> f point) -> PolyLineF f point -> f (PolyLineF f point) + ) => HasStart (PolyLineF f point) point where + start :: Lens' (PolyLineF f point) point +start = (point -> f point) -> PolyLineF f point -> f (PolyLineF f point) Lens' (PolyLineF f point) point forall (t :: * -> *) a. Traversable1 t => Lens' (t a) a head1 -instance ( Traversable1 f +instance ( Traversable1 f -- , Ixed (f point) -- , IxValue (f point) ~ point -- , Index (f point) ~ Int - ) => HasEnd (PolyLineF f point) point where - end :: Lens' (PolyLineF f point) point -end = (point -> f point) -> PolyLineF f point -> f (PolyLineF f point) + ) => HasEnd (PolyLineF f point) point where + end :: Lens' (PolyLineF f point) point +end = (point -> f point) -> PolyLineF f point -> f (PolyLineF f point) Lens' (PolyLineF f point) point forall (t :: * -> *) a. Traversable1 t => Lens' (t a) a last1 -instance ( Traversable1 f - , IxValue (f point) ~ point, Index (f point) ~ Int - , Ixed (f point) - , HasFromFoldable1 f - , Point_ point d r - , TraversableWithIndex Int f - ) => PolyLine_ (PolyLineF f point) point where +instance ( Traversable1 f + , IxValue (f point) ~ point, Index (f point) ~ Int + , Ixed (f point) + , HasFromFoldable1 f + , Point_ point d r + , TraversableWithIndex Int f + ) => PolyLine_ (PolyLineF f point) point where -instance ( Traversable1 f - , IxValue (f point) ~ point, Index (f point) ~ Int - , Ixed (f point) - , HasFromFoldable1 f - , Point_ point d r - , TraversableWithIndex Int f - ) => ConstructablePolyLine_ (PolyLineF f point) point where - polyLineFromPoints :: forall (f :: * -> *). Foldable1 f => f point -> PolyLineF f point -polyLineFromPoints = f point -> PolyLineF f point +instance ( Traversable1 f + , IxValue (f point) ~ point, Index (f point) ~ Int + , Ixed (f point) + , HasFromFoldable1 f + , Point_ point d r + , TraversableWithIndex Int f + ) => ConstructablePolyLine_ (PolyLineF f point) point where + polyLineFromPoints :: forall (f :: * -> *). Foldable1 f => f point -> PolyLineF f point +polyLineFromPoints = f point -> PolyLineF f point forall {k} (f :: k -> *) (point :: k). f point -> PolyLineF f point PolyLine (f point -> PolyLineF f point) -> (f point -> f point) -> f point -> PolyLineF f point diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Class.html b/haddocks/hgeometry/src/HGeometry.Polygon.Class.html index 479e783c8..2fdeb5b67 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Class.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Class.html @@ -44,17 +44,17 @@ -------------------------------------------------------------------------------- -- ^ A class for items that have an outer boundary. -class HasVertices polygon polygon => HasOuterBoundary polygon where +class HasVertices polygon polygon => HasOuterBoundary polygon where {-# MINIMAL outerBoundaryVertexAt, ccwOuterBoundaryFrom, cwOuterBoundaryFrom #-} -- | A fold over all vertices of the outer boundary, the -- vertices are traversed in CCW order. -- -- running time :: \(O(n)\) - outerBoundary :: IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) - default outerBoundary :: Num (VertexIx polygon) - => IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) - outerBoundary = VertexIx polygon + outerBoundary :: IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) + default outerBoundary :: Num (VertexIx polygon) + => IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) + outerBoundary = VertexIx polygon -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) forall polygon. HasOuterBoundary polygon => @@ -67,21 +67,21 @@ -- from the vertex with the given index. -- -- running time :: \(O(n)\) - ccwOuterBoundaryFrom :: VertexIx polygon - -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) + ccwOuterBoundaryFrom :: VertexIx polygon + -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) -- | A CW-fold over all vertices of the outer boundary, starting -- from the vertex with the given index. -- -- running time :: \(O(n)\) - cwOuterBoundaryFrom :: VertexIx polygon - -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) + cwOuterBoundaryFrom :: VertexIx polygon + -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) -- | A particular vertex of the outer polygon -- -- running time: \(O(1)\) - outerBoundaryVertexAt :: VertexIx polygon - -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) + outerBoundaryVertexAt :: VertexIx polygon + -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) -- | A fold over all edges in the polygon. The edges are folded over -- in CCW order, and each edge is associated with the index of its start vertex @@ -89,12 +89,12 @@ -- -- -- running time :: \(O(n)\) - outerBoundaryEdges :: IndexedFold1 (VertexIx polygon,VertexIx polygon) polygon - (Vertex polygon, Vertex polygon) + outerBoundaryEdges :: IndexedFold1 (VertexIx polygon,VertexIx polygon) polygon + (Vertex polygon, Vertex polygon) default outerBoundaryEdges - :: Enum (VertexIx polygon) - => IndexedFold1 (VertexIx polygon,VertexIx polygon) polygon (Vertex polygon, Vertex polygon) - outerBoundaryEdges = (polygon + :: Enum (VertexIx polygon) + => IndexedFold1 (VertexIx polygon,VertexIx polygon) polygon (Vertex polygon, Vertex polygon) + outerBoundaryEdges = (polygon -> NonEmpty ((VertexIx polygon, VertexIx polygon), (Vertex polygon, Vertex polygon))) @@ -132,13 +132,13 @@ (Vertex polygon, Vertex polygon) forall a b. (a -> b) -> a -> b $ - \polygon -pg -> ( \(VertexIx polygon -i,Vertex polygon -u) -> let (VertexIx polygon -j,Vertex polygon -v) = polygon -pg polygon + \polygon +pg -> ( \(VertexIx polygon +i,Vertex polygon +u) -> let (VertexIx polygon +j,Vertex polygon +v) = polygon +pg polygon -> Getting (VertexIx polygon, Vertex polygon) polygon @@ -154,7 +154,7 @@ outerBoundaryVertexAt (VertexIx polygon -> VertexIx polygon forall a. Enum a => a -> a succ VertexIx polygon -i)(Indexed +i)(Indexed (VertexIx polygon) (Vertex polygon) (Const (VertexIx polygon, Vertex polygon) (Vertex polygon)) @@ -185,10 +185,10 @@ p (i, s) (f (j, t)) -> Indexed i s (f t) withIndex in ((VertexIx polygon -i,VertexIx polygon -j) , (Vertex polygon -u,Vertex polygon -v)) +i,VertexIx polygon +j) , (Vertex polygon +u,Vertex polygon +v)) ) ((VertexIx polygon, Vertex polygon) -> ((VertexIx polygon, VertexIx polygon), (Vertex polygon, Vertex polygon))) @@ -215,7 +215,7 @@ IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) outerBoundary polygon -pg +pg -- \pg -> fmap ( \(i,u) -> (i,(u, pg ^.outerBoundaryVertexAt (succ i))) ) -- . NonEmpty.fromList -- $ itoListOf outerBoundary pg @@ -225,17 +225,17 @@ -- | Get the edge that has the given vertex as its starting edge -- -- running time: \(O(1)\) - outerBoundaryEdgeAt :: VertexIx polygon - -> IndexedGetter (VertexIx polygon, VertexIx polygon) polygon - (Vertex polygon, Vertex polygon) + outerBoundaryEdgeAt :: VertexIx polygon + -> IndexedGetter (VertexIx polygon, VertexIx polygon) polygon + (Vertex polygon, Vertex polygon) -- default implementation of outerBoundaryEdge. It achieves the -- desired running time when indexing is indeed constant. - default outerBoundaryEdgeAt :: Enum (VertexIx polygon) - => VertexIx polygon - -> IndexedGetter (VertexIx polygon, VertexIx polygon) polygon - (Vertex polygon, Vertex polygon) - outerBoundaryEdgeAt VertexIx polygon -i = (polygon + default outerBoundaryEdgeAt :: Enum (VertexIx polygon) + => VertexIx polygon + -> IndexedGetter (VertexIx polygon, VertexIx polygon) polygon + (Vertex polygon, Vertex polygon) + outerBoundaryEdgeAt VertexIx polygon +i = (polygon -> ((VertexIx polygon, VertexIx polygon), (Vertex polygon, Vertex polygon))) -> Over' p f polygon (Vertex polygon, Vertex polygon) @@ -252,11 +252,11 @@ -> Over' p f polygon (Vertex polygon, Vertex polygon) forall a b. (a -> b) -> a -> b $ - \polygon -pg -> let (VertexIx polygon -j,Vertex polygon -v) = polygon -pgpolygon + \polygon +pg -> let (VertexIx polygon +j,Vertex polygon +v) = polygon +pgpolygon -> Getting (VertexIx polygon, Vertex polygon) polygon @@ -272,7 +272,7 @@ outerBoundaryVertexAt (VertexIx polygon -> VertexIx polygon forall a. Enum a => a -> a succ VertexIx polygon -i)(Indexed +i)(Indexed (VertexIx polygon) (Vertex polygon) (Const (VertexIx polygon, Vertex polygon) (Vertex polygon)) @@ -303,9 +303,9 @@ p (i, s) (f (j, t)) -> Indexed i s (f t) withIndex in ( (VertexIx polygon -i,VertexIx polygon -j), (polygon -pgpolygon +i,VertexIx polygon +j), (polygon +pgpolygon -> Getting (Vertex polygon) polygon (Vertex polygon) -> Vertex polygon forall s a. s -> Getting a s a -> a @@ -316,16 +316,16 @@ VertexIx polygon -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt VertexIx polygon -i, Vertex polygon -v)) +i, Vertex polygon +v)) -------------------------------------------------------------------------------- -- end of te HasOuterBoundary class -------------------------------------------------------------------------------- -instance HasOuterBoundary polygon => HasOuterBoundary (polygon :+ extra) where - outerBoundary :: IndexedTraversal1' +instance HasOuterBoundary polygon => HasOuterBoundary (polygon :+ extra) where + outerBoundary :: IndexedTraversal1' (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) @@ -348,13 +348,13 @@ IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) outerBoundary - ccwOuterBoundaryFrom :: VertexIx (polygon :+ extra) + ccwOuterBoundaryFrom :: VertexIx (polygon :+ extra) -> IndexedTraversal1' (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) -ccwOuterBoundaryFrom VertexIx (polygon :+ extra) -u = (polygon -> f polygon) +ccwOuterBoundaryFrom VertexIx (polygon :+ extra) +u = (polygon -> f polygon) -> (polygon :+ extra) -> f (polygon :+ extra) forall core extra core' (f :: * -> *). Functor f => @@ -375,14 +375,14 @@ -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) ccwOuterBoundaryFrom VertexIx polygon VertexIx (polygon :+ extra) -u - cwOuterBoundaryFrom :: VertexIx (polygon :+ extra) +u + cwOuterBoundaryFrom :: VertexIx (polygon :+ extra) -> IndexedTraversal1' (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) -cwOuterBoundaryFrom VertexIx (polygon :+ extra) -u = (polygon -> f polygon) +cwOuterBoundaryFrom VertexIx (polygon :+ extra) +u = (polygon -> f polygon) -> (polygon :+ extra) -> f (polygon :+ extra) forall core extra core' (f :: * -> *). Functor f => @@ -403,14 +403,14 @@ -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) cwOuterBoundaryFrom VertexIx polygon VertexIx (polygon :+ extra) -u - outerBoundaryVertexAt :: VertexIx (polygon :+ extra) +u + outerBoundaryVertexAt :: VertexIx (polygon :+ extra) -> IndexedGetter (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) -outerBoundaryVertexAt VertexIx (polygon :+ extra) -u = (polygon -> f polygon) +outerBoundaryVertexAt VertexIx (polygon :+ extra) +u = (polygon -> f polygon) -> (polygon :+ extra) -> f (polygon :+ extra) forall core extra core' (f :: * -> *). Functor f => @@ -431,8 +431,8 @@ -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt VertexIx polygon VertexIx (polygon :+ extra) -u - outerBoundaryEdges :: IndexedFold1 +u + outerBoundaryEdges :: IndexedFold1 (VertexIx (polygon :+ extra), VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra), Vertex (polygon :+ extra)) @@ -465,13 +465,13 @@ polygon (Vertex polygon, Vertex polygon) outerBoundaryEdges - outerBoundaryEdgeAt :: VertexIx (polygon :+ extra) + outerBoundaryEdgeAt :: VertexIx (polygon :+ extra) -> IndexedGetter (VertexIx (polygon :+ extra), VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra), Vertex (polygon :+ extra)) -outerBoundaryEdgeAt VertexIx (polygon :+ extra) -u = (polygon -> f polygon) +outerBoundaryEdgeAt VertexIx (polygon :+ extra) +u = (polygon -> f polygon) -> (polygon :+ extra) -> f (polygon :+ extra) forall core extra core' (f :: * -> *). Functor f => @@ -500,7 +500,7 @@ (Vertex polygon, Vertex polygon) outerBoundaryEdgeAt VertexIx polygon VertexIx (polygon :+ extra) -u +u -------------------------------------------------------------------------------- -- * HasOuterBoundary Helpers @@ -512,15 +512,15 @@ -- | Yield the minimum vertex of a polygon according to the given comparison function. -- -- running time \( O(n) \) -minimumVertexBy :: forall polygon. (HasOuterBoundary polygon) - => (Vertex polygon -> Vertex polygon -> Ordering) - -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) +minimumVertexBy :: forall polygon. (HasOuterBoundary polygon) + => (Vertex polygon -> Vertex polygon -> Ordering) + -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) minimumVertexBy :: forall polygon. HasOuterBoundary polygon => (Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) -minimumVertexBy Vertex polygon -> Vertex polygon -> Ordering -cmp = ((p ~ (->)) => +minimumVertexBy Vertex polygon -> Vertex polygon -> Ordering +cmp = ((p ~ (->)) => (Vertex polygon -> f (Vertex polygon)) -> polygon -> f polygon) -> (p (Vertex polygon) (f (Vertex polygon)) -> polygon -> f polygon) @@ -536,13 +536,13 @@ (Vertex polygon -> f (Vertex polygon)) -> polygon -> f polygon (Vertex polygon -> f (Vertex polygon)) -> polygon -> f polygon Fold1 polygon (Vertex polygon) -go p (Vertex polygon) (f (Vertex polygon)) -> polygon -> f polygon +go p (Vertex polygon) (f (Vertex polygon)) -> polygon -> f polygon IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) -igo +igo where - go :: Fold1 polygon (Vertex polygon) - go :: Fold1 polygon (Vertex polygon) -go = (polygon -> First (Vertex polygon)) + go :: Fold1 polygon (Vertex polygon) + go :: Fold1 polygon (Vertex polygon) +go = (polygon -> First (Vertex polygon)) -> Fold1 polygon (Vertex polygon) forall (f :: * -> *) s a. Foldable1 f => (s -> f a) -> Fold1 s a folding1 ((polygon -> First (Vertex polygon)) @@ -558,18 +558,18 @@ forall {a} {a}. Getting (Endo (Endo (Maybe a))) a a -> (a -> a -> Ordering) -> a -> First a -f Getting +f Getting (Endo (Endo (Maybe (Vertex polygon)))) polygon (Vertex polygon) forall polygon. HasOuterBoundary polygon => IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) outerBoundary Vertex polygon -> Vertex polygon -> Ordering -cmp +cmp - igo :: IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) - igo :: IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) -igo = (polygon -> First (VertexIx polygon, Vertex polygon)) + igo :: IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) + igo :: IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) +igo = (polygon -> First (VertexIx polygon, Vertex polygon)) -> Over p f polygon polygon (Vertex polygon) (Vertex polygon) forall (f :: * -> *) i (p :: * -> * -> *) (g :: * -> *) s a t b. (Foldable1 f, Indexable i p, Contravariant g, Apply g) => @@ -590,7 +590,7 @@ forall {a} {a}. Getting (Endo (Endo (Maybe a))) a a -> (a -> a -> Ordering) -> a -> First a -f (Indexed +f (Indexed (VertexIx polygon) (Vertex polygon) (Const @@ -641,7 +641,7 @@ (Indexable i p, Functor f) => p (i, s) (f (j, t)) -> Indexed i s (f t) withIndex) (Vertex polygon -> Vertex polygon -> Ordering -cmp (Vertex polygon -> Vertex polygon -> Ordering) +cmp (Vertex polygon -> Vertex polygon -> Ordering) -> ((VertexIx polygon, Vertex polygon) -> Vertex polygon) -> (VertexIx polygon, Vertex polygon) -> (VertexIx polygon, Vertex polygon) @@ -651,11 +651,11 @@ forall a b. (a, b) -> b snd) - f :: Getting (Endo (Endo (Maybe a))) a a + f :: Getting (Endo (Endo (Maybe a))) a a -> (a -> a -> Ordering) -> a -> First a -f Getting (Endo (Endo (Maybe a))) a a -boundary a -> a -> Ordering -cmp' = First a -> (a -> First a) -> Maybe a -> First a +f Getting (Endo (Endo (Maybe a))) a a +boundary a -> a -> Ordering +cmp' = First a -> (a -> First a) -> Maybe a -> First a forall b a. b -> (a -> b) -> Maybe a -> b maybe ([Char] -> First a forall a. HasCallStack => [Char] -> a @@ -671,21 +671,21 @@ Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> Maybe a minimumByOf Getting (Endo (Endo (Maybe a))) a a -boundary a -> a -> Ordering -cmp' +boundary a -> a -> Ordering +cmp' -- | Yield the maximum vertex of a polygon according to the given comparison function. -- -- running time \( O(n) \) -maximumVertexBy :: forall polygon. (HasOuterBoundary polygon) - => (Vertex polygon -> Vertex polygon -> Ordering) - -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) +maximumVertexBy :: forall polygon. (HasOuterBoundary polygon) + => (Vertex polygon -> Vertex polygon -> Ordering) + -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) maximumVertexBy :: forall polygon. HasOuterBoundary polygon => (Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) -maximumVertexBy Vertex polygon -> Vertex polygon -> Ordering -cmp = ((p ~ (->)) => +maximumVertexBy Vertex polygon -> Vertex polygon -> Ordering +cmp = ((p ~ (->)) => (Vertex polygon -> f (Vertex polygon)) -> polygon -> f polygon) -> (p (Vertex polygon) (f (Vertex polygon)) -> polygon -> f polygon) @@ -701,13 +701,13 @@ (Vertex polygon -> f (Vertex polygon)) -> polygon -> f polygon (Vertex polygon -> f (Vertex polygon)) -> polygon -> f polygon Fold1 polygon (Vertex polygon) -go p (Vertex polygon) (f (Vertex polygon)) -> polygon -> f polygon +go p (Vertex polygon) (f (Vertex polygon)) -> polygon -> f polygon IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) -igo +igo where - go :: Fold1 polygon (Vertex polygon) - go :: Fold1 polygon (Vertex polygon) -go = (polygon -> First (Vertex polygon)) + go :: Fold1 polygon (Vertex polygon) + go :: Fold1 polygon (Vertex polygon) +go = (polygon -> First (Vertex polygon)) -> Fold1 polygon (Vertex polygon) forall (f :: * -> *) s a. Foldable1 f => (s -> f a) -> Fold1 s a folding1 ((polygon -> First (Vertex polygon)) @@ -723,18 +723,18 @@ forall {a} {a}. Getting (Endo (Endo (Maybe a))) a a -> (a -> a -> Ordering) -> a -> First a -f Getting +f Getting (Endo (Endo (Maybe (Vertex polygon)))) polygon (Vertex polygon) forall polygon. HasOuterBoundary polygon => IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) outerBoundary Vertex polygon -> Vertex polygon -> Ordering -cmp +cmp - igo :: IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) - igo :: IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) -igo = (polygon -> First (VertexIx polygon, Vertex polygon)) + igo :: IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) + igo :: IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) +igo = (polygon -> First (VertexIx polygon, Vertex polygon)) -> Over p f polygon polygon (Vertex polygon) (Vertex polygon) forall (f :: * -> *) i (p :: * -> * -> *) (g :: * -> *) s a t b. (Foldable1 f, Indexable i p, Contravariant g, Apply g) => @@ -755,7 +755,7 @@ forall {a} {a}. Getting (Endo (Endo (Maybe a))) a a -> (a -> a -> Ordering) -> a -> First a -f (Indexed +f (Indexed (VertexIx polygon) (Vertex polygon) (Const @@ -806,7 +806,7 @@ (Indexable i p, Functor f) => p (i, s) (f (j, t)) -> Indexed i s (f t) withIndex) (Vertex polygon -> Vertex polygon -> Ordering -cmp (Vertex polygon -> Vertex polygon -> Ordering) +cmp (Vertex polygon -> Vertex polygon -> Ordering) -> ((VertexIx polygon, Vertex polygon) -> Vertex polygon) -> (VertexIx polygon, Vertex polygon) -> (VertexIx polygon, Vertex polygon) @@ -816,11 +816,11 @@ forall a b. (a, b) -> b snd) - f :: Getting (Endo (Endo (Maybe a))) a a + f :: Getting (Endo (Endo (Maybe a))) a a -> (a -> a -> Ordering) -> a -> First a -f Getting (Endo (Endo (Maybe a))) a a -boundary a -> a -> Ordering -cmp' = First a -> (a -> First a) -> Maybe a -> First a +f Getting (Endo (Endo (Maybe a))) a a +boundary a -> a -> Ordering +cmp' = First a -> (a -> First a) -> Maybe a -> First a forall b a. b -> (a -> b) -> Maybe a -> b maybe ([Char] -> First a forall a. HasCallStack => [Char] -> a @@ -836,8 +836,8 @@ Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> Maybe a maximumByOf Getting (Endo (Endo (Maybe a))) a a -boundary a -> a -> Ordering -cmp' +boundary a -> a -> Ordering +cmp' -- | Compute the signed area times 2 of a simple polygon. The the -- vertices are in clockwise order, the signed area will be negative, @@ -845,20 +845,20 @@ -- be positive. -- -- running time: \(O(n)\) -signedArea2X :: (Num r, HasOuterBoundary simplePolygon - , Point_ point 2 r - , Vertex simplePolygon ~ point - ) => simplePolygon -> r +signedArea2X :: (Num r, HasOuterBoundary simplePolygon + , Point_ point 2 r + , Vertex simplePolygon ~ point + ) => simplePolygon -> r signedArea2X :: forall r simplePolygon point. (Num r, HasOuterBoundary simplePolygon, Point_ point 2 r, Vertex simplePolygon ~ point) => simplePolygon -> r -signedArea2X simplePolygon -poly = [r] -> r +signedArea2X simplePolygon +poly = [r] -> r forall a. Num a => [a] -> a forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a sum [ point -ppoint -> Getting r point r -> r +ppoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Natural) point r. @@ -868,7 +868,7 @@ xCoord r -> r -> r forall a. Num a => a -> a -> a * point -qpoint -> Getting r point r -> r +qpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Natural) point r. @@ -878,7 +878,7 @@ yCoord r -> r -> r forall a. Num a => a -> a -> a - point -qpoint -> Getting r point r -> r +qpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Natural) point r. @@ -888,7 +888,7 @@ xCoord r -> r -> r forall a. Num a => a -> a -> a * point -ppoint -> Getting r point r -> r +ppoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Natural) point r. @@ -896,10 +896,10 @@ IndexedLens' Int point r IndexedLens' Int point r yCoord - | (point -p,point -q) <- simplePolygon -poly simplePolygon + | (point +p,point +q) <- simplePolygon +poly simplePolygon -> Getting (Endo [(point, point)]) simplePolygon (point, point) -> [(point, point)] forall s a. s -> Getting (Endo [a]) s a -> [a] @@ -924,14 +924,14 @@ -- | Get the line segment representing the edge that has the given vertex as its starting edge -- -- running time: \(O(1)\) -outerBoundaryEdgeSegmentAt :: ( HasOuterBoundary polygon - , Vertex polygon ~ point - , Point_ point 2 r +outerBoundaryEdgeSegmentAt :: ( HasOuterBoundary polygon + , Vertex polygon ~ point + , Point_ point 2 r ) - => VertexIx polygon - -> IndexedGetter (VertexIx polygon, VertexIx polygon) - polygon - (ClosedLineSegment point) + => VertexIx polygon + -> IndexedGetter (VertexIx polygon, VertexIx polygon) + polygon + (ClosedLineSegment point) outerBoundaryEdgeSegmentAt :: forall polygon point r. (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r) => @@ -940,8 +940,8 @@ (VertexIx polygon, VertexIx polygon) polygon (ClosedLineSegment point) -outerBoundaryEdgeSegmentAt VertexIx polygon -i = VertexIx polygon +outerBoundaryEdgeSegmentAt VertexIx polygon +i = VertexIx polygon -> IndexedGetter (VertexIx polygon, VertexIx polygon) polygon @@ -954,7 +954,7 @@ polygon (Vertex polygon, Vertex polygon) outerBoundaryEdgeAt VertexIx polygon -i(p (point, point) (f (point, point)) -> polygon -> f polygon) +i(p (point, point) (f (point, point)) -> polygon -> f polygon) -> (p (ClosedLineSegment point) (f (ClosedLineSegment point)) -> p (point, point) (f (point, point))) -> p (ClosedLineSegment point) (f (ClosedLineSegment point)) @@ -975,14 +975,14 @@ ClosedLineSegment) -- | Get the line segments representing the outer boundary of the polygon. -outerBoundaryEdgeSegments :: forall polygon point r. - ( HasOuterBoundary polygon - , Vertex polygon ~ point - , Point_ point 2 r +outerBoundaryEdgeSegments :: forall polygon point r. + ( HasOuterBoundary polygon + , Vertex polygon ~ point + , Point_ point 2 r ) - => IndexedFold1 (VertexIx polygon,VertexIx polygon) - polygon - (ClosedLineSegment point) + => IndexedFold1 (VertexIx polygon,VertexIx polygon) + polygon + (ClosedLineSegment point) outerBoundaryEdgeSegments :: forall polygon point r. (HasOuterBoundary polygon, Vertex polygon ~ point, Point_ point 2 r) => @@ -1027,13 +1027,13 @@ -- | A fold that associates each vertex on the boundary with its -- predecessor and successor (in that order) along the boundary. -outerBoundaryWithNeighbours :: ( HasOuterBoundary polygon - , VertexIx polygon ~ Int +outerBoundaryWithNeighbours :: ( HasOuterBoundary polygon + , VertexIx polygon ~ Int ) - => IndexedFold1 (VertexIx polygon, - (VertexIx polygon, VertexIx polygon)) - polygon - (Vertex polygon, (Vertex polygon, Vertex polygon)) + => IndexedFold1 (VertexIx polygon, + (VertexIx polygon, VertexIx polygon)) + polygon + (Vertex polygon, (Vertex polygon, Vertex polygon)) outerBoundaryWithNeighbours :: forall polygon. (HasOuterBoundary polygon, VertexIx polygon ~ Int) => IndexedFold1 @@ -1078,8 +1078,8 @@ (Vertex polygon, (Vertex polygon, Vertex polygon)) forall a b. (a -> b) -> a -> b $ - \polygon -pg -> polygon + \polygon +pg -> polygon -> VertexIx polygon -> (VertexIx polygon, Vertex polygon) -> ((VertexIx polygon, (VertexIx polygon, VertexIx polygon)), @@ -1091,11 +1091,11 @@ -> (VertexIx s, a) -> ((VertexIx s, (VertexIx s, VertexIx s)), (a, (Vertex s, Vertex s))) -f polygon -pg (polygon -> Int +f polygon +pg (polygon -> Int forall graph. HasVertices' graph => graph -> Int numVertices polygon -pg) ((Int, Vertex polygon) +pg) ((Int, Vertex polygon) -> ((Int, (Int, Int)), (Vertex polygon, (Vertex polygon, Vertex polygon)))) -> NonEmpty (Int, Vertex polygon) @@ -1115,21 +1115,21 @@ IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) outerBoundary polygon -pg +pg where - f :: s + f :: s -> VertexIx s -> (VertexIx s, a) -> ((VertexIx s, (VertexIx s, VertexIx s)), (a, (Vertex s, Vertex s))) -f s -pg VertexIx s -n (VertexIx s -i,a -u) = let (VertexIx s -j,Vertex s -v) = s -pgs +f s +pg VertexIx s +n (VertexIx s +i,a +u) = let (VertexIx s +j,Vertex s +v) = s +pgs -> Getting (VertexIx s, Vertex s) s (VertexIx s, Vertex s) -> (VertexIx s, Vertex s) forall s a. s -> Getting a s a -> a @@ -1139,13 +1139,13 @@ VertexIx polygon -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt ((VertexIx s -iVertexIx s -> VertexIx s -> VertexIx s +iVertexIx s -> VertexIx s -> VertexIx s forall a. Num a => a -> a -> a -VertexIx s 1) VertexIx s -> VertexIx s -> VertexIx s forall a. Integral a => a -> a -> a `mod` VertexIx s -n)(Indexed +n)(Indexed (VertexIx s) (Vertex s) (Const (VertexIx s, Vertex s) (Vertex s)) -> s -> Const (VertexIx s, Vertex s) s) -> (((VertexIx s, Vertex s) @@ -1162,10 +1162,10 @@ (Indexable i p, Functor f) => p (i, s) (f (j, t)) -> Indexed i s (f t) withIndex - (VertexIx s -k,Vertex s -w) = s -pgs + (VertexIx s +k,Vertex s +w) = s +pgs -> Getting (VertexIx s, Vertex s) s (VertexIx s, Vertex s) -> (VertexIx s, Vertex s) forall s a. s -> Getting a s a -> a @@ -1175,13 +1175,13 @@ VertexIx polygon -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt ((VertexIx s -iVertexIx s -> VertexIx s -> VertexIx s +iVertexIx s -> VertexIx s -> VertexIx s forall a. Num a => a -> a -> a +VertexIx s 1) VertexIx s -> VertexIx s -> VertexIx s forall a. Integral a => a -> a -> a `mod` VertexIx s -n)(Indexed +n)(Indexed (VertexIx s) (Vertex s) (Const (VertexIx s, Vertex s) (Vertex s)) -> s -> Const (VertexIx s, Vertex s) s) -> (((VertexIx s, Vertex s) @@ -1199,62 +1199,62 @@ p (i, s) (f (j, t)) -> Indexed i s (f t) withIndex in ( (VertexIx s -i, (VertexIx s -j,VertexIx s -k)) , (a -u, (Vertex s -v, Vertex s -w)) ) +i, (VertexIx s +j,VertexIx s +k)) , (a +u, (Vertex s +v, Vertex s +w)) ) -------------------------------------------------------------------------------- -- | A hole is a simple polygon -type Hole polygon = SimplePolygonF (HoleF polygon) (Vertex polygon) +type Hole polygon = SimplePolygonF (HoleF polygon) (Vertex polygon) -- | Accessing the holes in a polygon (if there are any.) -- -- the default implementation assumes there are no holes -class VertexContainer (HoleF polygon) (Vertex polygon) => HasHoles polygon where +class VertexContainer (HoleF polygon) (Vertex polygon) => HasHoles polygon where {-# MINIMAL #-} -- | Type we use to index holes. - type HoleIx polygon :: Type - type HoleIx polygon = Void + type HoleIx polygon :: Type + type HoleIx polygon = Void -- | The functor used in the holes - type HoleF polygon :: Type -> Type - type HoleF polygon = Cyclic NonEmptyVector + type HoleF polygon :: Type -> Type + type HoleF polygon = Cyclic NonEmptyVector -- ^ Traversal over the holes in the polygon. Each hole is a simple polygon. - holes :: IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) - holes = \p (Hole polygon) (f (Hole polygon)) -_ polygon -pg -> polygon -> f polygon + holes :: IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) + holes = \p (Hole polygon) (f (Hole polygon)) +_ polygon +pg -> polygon -> f polygon forall a. a -> f a forall (f :: * -> *) a. Applicative f => a -> f a pure polygon -pg +pg -- ^ Access a particular hole. This is supposed to be an affine traversal. - holeAt :: HoleIx polygon -> IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) - holeAt HoleIx polygon + holeAt :: HoleIx polygon -> IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) + holeAt HoleIx polygon _ = \p (Hole polygon) (f (Hole polygon)) -_ polygon -pg -> polygon -> f polygon +_ polygon +pg -> polygon -> f polygon forall a. a -> f a forall (f :: * -> *) a. Applicative f => a -> f a pure polygon -pg +pg -- | A class representing (planar) polygons. The edges of the polygon -- may not intersect. -class ( HasOuterBoundary polygon - , Vertex polygon ~ point - , Point_ point 2 r - , NumType polygon ~ r, Dimension polygon ~ 2 - , HasHoles polygon - ) => Polygon_ polygon point r where +class ( HasOuterBoundary polygon + , Vertex polygon ~ point + , Point_ point 2 r + , NumType polygon ~ r, Dimension polygon ~ 2 + , HasHoles polygon + ) => Polygon_ polygon point r where -- signedArea2X pg - @@ -1262,11 +1262,11 @@ -- | Finds the extreme points, minimum and maximum, in a given direction -- -- running time: \(O(n)\) - extremes :: (Num r, Ord r, Point_ point 2 r) - => Vector 2 r -> polygon -> (point, point) - extremes Vector 2 r -u polygon -pg = ( Getting (First point) polygon point -> polygon -> point + extremes :: (Num r, Ord r, Point_ point 2 r) + => Vector 2 r -> polygon -> (point, point) + extremes Vector 2 r +u polygon +pg = ( Getting (First point) polygon point -> polygon -> point forall a s. Getting (First a) s a -> s -> a first1Of ((Vertex polygon -> Vertex polygon -> Ordering) -> IndexedFold1 (VertexIx polygon) polygon (Vertex polygon) @@ -1279,8 +1279,8 @@ (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering cmpInDirection Vector 2 r -u)) polygon -pg +u)) polygon +pg , Getting (First point) polygon point -> polygon -> point forall a s. Getting (First a) s a -> s -> a first1Of ((Vertex polygon -> Vertex polygon -> Ordering) @@ -1294,27 +1294,27 @@ (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering cmpInDirection Vector 2 r -u)) polygon -pg +u)) polygon +pg ) -- | Given a vertexIdx v; get an IndexedLens to access the CCW predecessor of v - ccwPredecessorOf :: VertexIx polygon - -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) + ccwPredecessorOf :: VertexIx polygon + -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) -- | Given a vertexIdx v; get an IndexedLens to access the CCW predecessor of v - ccwSuccessorOf :: VertexIx polygon - -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) + ccwSuccessorOf :: VertexIx polygon + -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) -------------------------------------------------------------------------------- -- end of te Polygon_ class -------------------------------------------------------------------------------- -instance HasHoles polygon => HasHoles (polygon :+ extra) where - type HoleIx (polygon :+ extra) = HoleIx polygon - type HoleF (polygon :+ extra) = HoleF polygon - holes :: IndexedTraversal' +instance HasHoles polygon => HasHoles (polygon :+ extra) where + type HoleIx (polygon :+ extra) = HoleIx polygon + type HoleF (polygon :+ extra) = HoleF polygon + holes :: IndexedTraversal' (HoleIx (polygon :+ extra)) (polygon :+ extra) (Hole (polygon :+ extra)) @@ -1344,13 +1344,13 @@ polygon (SimplePolygonF (HoleF polygon) (Vertex polygon)) holes - holeAt :: HoleIx (polygon :+ extra) + holeAt :: HoleIx (polygon :+ extra) -> IndexedTraversal' (HoleIx (polygon :+ extra)) (polygon :+ extra) (Hole (polygon :+ extra)) -holeAt HoleIx (polygon :+ extra) -i = (polygon -> f polygon) +holeAt HoleIx (polygon :+ extra) +i = (polygon -> f polygon) -> (polygon :+ extra) -> f (polygon :+ extra) forall core extra core' (f :: * -> *). Functor f => @@ -1376,18 +1376,18 @@ -> IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) holeAt HoleIx polygon HoleIx (polygon :+ extra) -i +i -instance Polygon_ polygon point r => Polygon_ (polygon :+ extra) point r where - extremes :: (Num r, Ord r, Point_ point 2 r) => +instance Polygon_ polygon point r => Polygon_ (polygon :+ extra) point r where + extremes :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> (polygon :+ extra) -> (point, point) -extremes Vector 2 r -u = Vector 2 r -> polygon -> (point, point) +extremes Vector 2 r +u = Vector 2 r -> polygon -> (point, point) forall polygon point r. (Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) => Vector 2 r -> polygon -> (point, point) extremes Vector 2 r -u (polygon -> (point, point)) +u (polygon -> (point, point)) -> ((polygon :+ extra) -> polygon) -> (polygon :+ extra) -> (point, point) @@ -1400,13 +1400,13 @@ Functor f => (core -> f core') -> (core :+ extra) -> f (core' :+ extra) core - ccwPredecessorOf :: VertexIx (polygon :+ extra) + ccwPredecessorOf :: VertexIx (polygon :+ extra) -> IndexedLens' (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) -ccwPredecessorOf VertexIx (polygon :+ extra) -u = (polygon -> f polygon) +ccwPredecessorOf VertexIx (polygon :+ extra) +u = (polygon -> f polygon) -> (polygon :+ extra) -> f (polygon :+ extra) forall core extra core' (f :: * -> *). Functor f => @@ -1426,14 +1426,14 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwPredecessorOf VertexIx polygon VertexIx (polygon :+ extra) -u - ccwSuccessorOf :: VertexIx (polygon :+ extra) +u + ccwSuccessorOf :: VertexIx (polygon :+ extra) -> IndexedLens' (VertexIx (polygon :+ extra)) (polygon :+ extra) (Vertex (polygon :+ extra)) -ccwSuccessorOf VertexIx (polygon :+ extra) -u = (polygon -> f polygon) +ccwSuccessorOf VertexIx (polygon :+ extra) +u = (polygon -> f polygon) -> (polygon :+ extra) -> f (polygon :+ extra) forall core extra core' (f :: * -> *). Functor f => @@ -1453,7 +1453,7 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwSuccessorOf VertexIx polygon VertexIx (polygon :+ extra) -u +u -------------------------------------------------------------------------------- diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Class.html b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Class.html index 2dab8e7b7..e8ceef134 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Class.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Class.html @@ -15,6 +15,6 @@ import HGeometry.Polygon.Simple.Class -- | Class modelling convex polygons. -class ( SimplePolygon_ convexPolygon point r - ) => ConvexPolygon_ convexPolygon point r where +class ( SimplePolygon_ convexPolygon point r + ) => ConvexPolygon_ convexPolygon point r where \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Implementation.html b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Implementation.html index c9e9322ef..d470620bd 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Implementation.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Implementation.html @@ -46,13 +46,13 @@ -------------------------------------------------------------------------------- -- | Convex polygons -newtype ConvexPolygonF f point = +newtype ConvexPolygonF f point = ConvexPolygon { forall {k} (f :: k -> *) (point :: k). ConvexPolygonF f point -> SimplePolygonF f point -toSimplePolygon :: SimplePolygonF f point +toSimplePolygon :: SimplePolygonF f point -- ^ Convert to a simple polygon, i.e. forget the polygon is convex. } - deriving newtype (ConvexPolygonF f point -> () + deriving newtype (ConvexPolygonF f point -> () (ConvexPolygonF f point -> ()) -> NFData (ConvexPolygonF f point) forall a. (a -> ()) -> NFData a forall k (f :: k -> *) (point :: k). @@ -62,7 +62,7 @@ NFData (f point) => ConvexPolygonF f point -> () rnf :: ConvexPolygonF f point -> () -NFData, ConvexPolygonF f point -> ConvexPolygonF f point -> Bool +NFData, ConvexPolygonF f point -> ConvexPolygonF f point -> Bool (ConvexPolygonF f point -> ConvexPolygonF f point -> Bool) -> (ConvexPolygonF f point -> ConvexPolygonF f point -> Bool) -> Eq (ConvexPolygonF f point) @@ -89,8 +89,8 @@ -- -- Note that this is unchecked; i.e. one can turn an arbitrary simple polygon -- into a suposedly convex one. -_UncheckedConvexPolygon :: Iso (ConvexPolygonF f point) (ConvexPolygonF f' point') - (SimplePolygonF f point) (SimplePolygonF f' point') +_UncheckedConvexPolygon :: Iso (ConvexPolygonF f point) (ConvexPolygonF f' point') + (SimplePolygonF f point) (SimplePolygonF f' point') _UncheckedConvexPolygon :: forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => @@ -114,9 +114,9 @@ -- | Prism that can forget that the polygon is convex -- -_ConvexPolygon :: forall f point r. (Num r, Ord r, Point_ point 2 r - , VertexContainer f point - ) => Prism' (SimplePolygonF f point) (ConvexPolygonF f point) +_ConvexPolygon :: forall f point r. (Num r, Ord r, Point_ point 2 r + , VertexContainer f point + ) => Prism' (SimplePolygonF f point) (ConvexPolygonF f point) _ConvexPolygon :: forall (f :: * -> *) point r. (Num r, Ord r, Point_ point 2 r, VertexContainer f point) => Prism' (SimplePolygonF f point) (ConvexPolygonF f point) @@ -139,20 +139,20 @@ -- deriving instance Eq (ConvexPolygonF f point r) -- | Polygons are per definition 2 dimensional -type instance Dimension (ConvexPolygonF f point) = 2 -type instance NumType (ConvexPolygonF f point) = NumType point +type instance Dimension (ConvexPolygonF f point) = 2 +type instance NumType (ConvexPolygonF f point) = NumType point -instance (ShiftedEq (f point), ElemCyclic (f point) ~ point - ) => ShiftedEq (ConvexPolygonF f point) where - type ElemCyclic (ConvexPolygonF f point) = point - isShiftOf :: Eq (ElemCyclic (ConvexPolygonF f point)) => +instance (ShiftedEq (f point), ElemCyclic (f point) ~ point + ) => ShiftedEq (ConvexPolygonF f point) where + type ElemCyclic (ConvexPolygonF f point) = point + isShiftOf :: Eq (ElemCyclic (ConvexPolygonF f point)) => ConvexPolygonF f point -> ConvexPolygonF f point -> Bool -isShiftOf ConvexPolygonF f point -p ConvexPolygonF f point -q = SimplePolygonF f point -> SimplePolygonF f point -> Bool +isShiftOf ConvexPolygonF f point +p ConvexPolygonF f point +q = SimplePolygonF f point -> SimplePolygonF f point -> Bool forall t. (ShiftedEq t, Eq (ElemCyclic t)) => t -> t -> Bool isShiftOf (ConvexPolygonF f point -pConvexPolygonF f point +pConvexPolygonF f point -> Getting (SimplePolygonF f point) (ConvexPolygonF f point) @@ -169,7 +169,7 @@ p (SimplePolygonF f point) (f (SimplePolygonF f' point')) -> p (ConvexPolygonF f point) (f (ConvexPolygonF f' point')) _UncheckedConvexPolygon) (ConvexPolygonF f point -qConvexPolygonF f point +qConvexPolygonF f point -> Getting (SimplePolygonF f point) (ConvexPolygonF f point) @@ -187,15 +187,15 @@ -> p (ConvexPolygonF f point) (f (ConvexPolygonF f' point')) _UncheckedConvexPolygon) -instance ( HasVertices (SimplePolygonF f point) (SimplePolygonF f point') - ) => HasVertices (ConvexPolygonF f point) (ConvexPolygonF f point') where - vertices :: IndexedTraversal1 +instance ( HasVertices (SimplePolygonF f point) (SimplePolygonF f point') + ) => HasVertices (ConvexPolygonF f point) (ConvexPolygonF f point') where + vertices :: IndexedTraversal1 (VertexIx (ConvexPolygonF f point)) (ConvexPolygonF f point) (ConvexPolygonF f point') (Vertex (ConvexPolygonF f point)) (Vertex (ConvexPolygonF f point')) -vertices = (SimplePolygonF f point -> f (SimplePolygonF f point')) +vertices = (SimplePolygonF f point -> f (SimplePolygonF f point')) -> ConvexPolygonF f point -> f (ConvexPolygonF f point') forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -227,9 +227,9 @@ (Vertex (SimplePolygonF f point')) vertices -instance ( VertexContainer f point - ) => HasPoints (ConvexPolygonF f point) (ConvexPolygonF f point') point point' where - allPoints :: forall (d :: Nat) r r'. +instance ( VertexContainer f point + ) => HasPoints (ConvexPolygonF f point) (ConvexPolygonF f point') point point' where + allPoints :: forall (d :: Nat) r r'. (Point_ point d r, Point_ point' d r', NumType (ConvexPolygonF f point) ~ r, NumType (ConvexPolygonF f point') ~ r', @@ -237,7 +237,7 @@ Dimension (ConvexPolygonF f point') ~ d) => Traversal1 (ConvexPolygonF f point) (ConvexPolygonF f point') point point' -allPoints = (SimplePolygonF f point -> f (SimplePolygonF f point')) +allPoints = (SimplePolygonF f point -> f (SimplePolygonF f point')) -> ConvexPolygonF f point -> f (ConvexPolygonF f point') forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -270,16 +270,16 @@ (SimplePolygonF f point) (SimplePolygonF f point') point point' allPoints -instance HasVertices' (SimplePolygonF f point) => HasVertices' (ConvexPolygonF f point) where - type Vertex (ConvexPolygonF f point) = Vertex (SimplePolygonF f point) - type VertexIx (ConvexPolygonF f point) = VertexIx (SimplePolygonF f point) - vertexAt :: VertexIx (ConvexPolygonF f point) +instance HasVertices' (SimplePolygonF f point) => HasVertices' (ConvexPolygonF f point) where + type Vertex (ConvexPolygonF f point) = Vertex (SimplePolygonF f point) + type VertexIx (ConvexPolygonF f point) = VertexIx (SimplePolygonF f point) + vertexAt :: VertexIx (ConvexPolygonF f point) -> IndexedTraversal' (VertexIx (ConvexPolygonF f point)) (ConvexPolygonF f point) (Vertex (ConvexPolygonF f point)) -vertexAt VertexIx (ConvexPolygonF f point) -i = (SimplePolygonF f point -> f (SimplePolygonF f point)) +vertexAt VertexIx (ConvexPolygonF f point) +i = (SimplePolygonF f point -> f (SimplePolygonF f point)) -> ConvexPolygonF f point -> f (ConvexPolygonF f point) forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -307,9 +307,9 @@ -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt VertexIx (SimplePolygonF f point) VertexIx (ConvexPolygonF f point) -i - numVertices :: ConvexPolygonF f point -> Int -numVertices = SimplePolygonF f point -> Int +i + numVertices :: ConvexPolygonF f point -> Int +numVertices = SimplePolygonF f point -> Int forall graph. HasVertices' graph => graph -> Int numVertices (SimplePolygonF f point -> Int) -> (ConvexPolygonF f point -> SimplePolygonF f point) @@ -333,15 +333,15 @@ -> p (ConvexPolygonF f point) (f (ConvexPolygonF f' point')) _UncheckedConvexPolygon -instance ( HasOuterBoundary (SimplePolygonF f point) - , VertexIx (SimplePolygonF f point) ~ Int +instance ( HasOuterBoundary (SimplePolygonF f point) + , VertexIx (SimplePolygonF f point) ~ Int ) => - HasOuterBoundary (ConvexPolygonF f point) where - outerBoundary :: IndexedTraversal1' + HasOuterBoundary (ConvexPolygonF f point) where + outerBoundary :: IndexedTraversal1' (VertexIx (ConvexPolygonF f point)) (ConvexPolygonF f point) (Vertex (ConvexPolygonF f point)) -outerBoundary = (SimplePolygonF f point -> f (SimplePolygonF f point)) +outerBoundary = (SimplePolygonF f point -> f (SimplePolygonF f point)) -> ConvexPolygonF f point -> f (ConvexPolygonF f point) forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -369,13 +369,13 @@ (SimplePolygonF f point) (Vertex (SimplePolygonF f point)) outerBoundary - outerBoundaryVertexAt :: VertexIx (ConvexPolygonF f point) + outerBoundaryVertexAt :: VertexIx (ConvexPolygonF f point) -> IndexedGetter (VertexIx (ConvexPolygonF f point)) (ConvexPolygonF f point) (Vertex (ConvexPolygonF f point)) -outerBoundaryVertexAt VertexIx (ConvexPolygonF f point) -i = (SimplePolygonF f point -> f (SimplePolygonF f point)) +outerBoundaryVertexAt VertexIx (ConvexPolygonF f point) +i = (SimplePolygonF f point -> f (SimplePolygonF f point)) -> ConvexPolygonF f point -> f (ConvexPolygonF f point) forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -403,14 +403,14 @@ -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt VertexIx (SimplePolygonF f point) VertexIx (ConvexPolygonF f point) -i - ccwOuterBoundaryFrom :: VertexIx (ConvexPolygonF f point) +i + ccwOuterBoundaryFrom :: VertexIx (ConvexPolygonF f point) -> IndexedTraversal1' (VertexIx (ConvexPolygonF f point)) (ConvexPolygonF f point) (Vertex (ConvexPolygonF f point)) -ccwOuterBoundaryFrom VertexIx (ConvexPolygonF f point) -i = (SimplePolygonF f point -> f (SimplePolygonF f point)) +ccwOuterBoundaryFrom VertexIx (ConvexPolygonF f point) +i = (SimplePolygonF f point -> f (SimplePolygonF f point)) -> ConvexPolygonF f point -> f (ConvexPolygonF f point) forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -438,14 +438,14 @@ -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) ccwOuterBoundaryFrom VertexIx (SimplePolygonF f point) VertexIx (ConvexPolygonF f point) -i - cwOuterBoundaryFrom :: VertexIx (ConvexPolygonF f point) +i + cwOuterBoundaryFrom :: VertexIx (ConvexPolygonF f point) -> IndexedTraversal1' (VertexIx (ConvexPolygonF f point)) (ConvexPolygonF f point) (Vertex (ConvexPolygonF f point)) -cwOuterBoundaryFrom VertexIx (ConvexPolygonF f point) -i = (SimplePolygonF f point -> f (SimplePolygonF f point)) +cwOuterBoundaryFrom VertexIx (ConvexPolygonF f point) +i = (SimplePolygonF f point -> f (SimplePolygonF f point)) -> ConvexPolygonF f point -> f (ConvexPolygonF f point) forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -473,18 +473,18 @@ -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) cwOuterBoundaryFrom VertexIx (SimplePolygonF f point) VertexIx (ConvexPolygonF f point) -i +i -instance HasHoles (ConvexPolygonF f point) +instance HasHoles (ConvexPolygonF f point) -instance ( SimplePolygon_ (SimplePolygonF f point) point r - , Point_ point 2 r - ) => Polygon_ (ConvexPolygonF f point) point r where - extremes :: (Num r, Ord r, Point_ point 2 r) => +instance ( SimplePolygon_ (SimplePolygonF f point) point r + , Point_ point 2 r + ) => Polygon_ (ConvexPolygonF f point) point r where + extremes :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> ConvexPolygonF f point -> (point, point) -extremes Vector 2 r -u ConvexPolygonF f point -p = (Vector 2 r -> ConvexPolygonF f point -> point +extremes Vector 2 r +u ConvexPolygonF f point +p = (Vector 2 r -> ConvexPolygonF f point -> point forall r convexPolygon point. (Num r, Ord r, ConvexPolygon_ convexPolygon point r) => Vector 2 r -> convexPolygon -> point @@ -494,21 +494,21 @@ (Num r, Vector_ vector d r) => r -> vector -> vector *^ Vector 2 r -u) ConvexPolygonF f point -p, Vector 2 r -> ConvexPolygonF f point -> point +u) ConvexPolygonF f point +p, Vector 2 r -> ConvexPolygonF f point -> point forall r convexPolygon point. (Num r, Ord r, ConvexPolygon_ convexPolygon point r) => Vector 2 r -> convexPolygon -> point maxInDirection Vector 2 r -u ConvexPolygonF f point -p) - ccwPredecessorOf :: VertexIx (ConvexPolygonF f point) +u ConvexPolygonF f point +p) + ccwPredecessorOf :: VertexIx (ConvexPolygonF f point) -> IndexedLens' (VertexIx (ConvexPolygonF f point)) (ConvexPolygonF f point) (Vertex (ConvexPolygonF f point)) -ccwPredecessorOf VertexIx (ConvexPolygonF f point) -u = (SimplePolygonF f point -> f (SimplePolygonF f point)) +ccwPredecessorOf VertexIx (ConvexPolygonF f point) +u = (SimplePolygonF f point -> f (SimplePolygonF f point)) -> ConvexPolygonF f point -> f (ConvexPolygonF f point) forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -534,14 +534,14 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwPredecessorOf VertexIx (SimplePolygonF f point) VertexIx (ConvexPolygonF f point) -u - ccwSuccessorOf :: VertexIx (ConvexPolygonF f point) +u + ccwSuccessorOf :: VertexIx (ConvexPolygonF f point) -> IndexedLens' (VertexIx (ConvexPolygonF f point)) (ConvexPolygonF f point) (Vertex (ConvexPolygonF f point)) -ccwSuccessorOf VertexIx (ConvexPolygonF f point) -u = (SimplePolygonF f point -> f (SimplePolygonF f point)) +ccwSuccessorOf VertexIx (ConvexPolygonF f point) +u = (SimplePolygonF f point -> f (SimplePolygonF f point)) -> ConvexPolygonF f point -> f (ConvexPolygonF f point) forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -567,22 +567,22 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwSuccessorOf VertexIx (SimplePolygonF f point) VertexIx (ConvexPolygonF f point) -u +u -instance ( SimplePolygon_ (SimplePolygonF f point) point r - , Point_ point 2 r - ) => SimplePolygon_ (ConvexPolygonF f point) point r where - type ConstructableSimplePolygon (ConvexPolygonF f point) point r = - ( VertexContainer f point - , Ord r - , Num r +instance ( SimplePolygon_ (SimplePolygonF f point) point r + , Point_ point 2 r + ) => SimplePolygon_ (ConvexPolygonF f point) point r where + type ConstructableSimplePolygon (ConvexPolygonF f point) point r = + ( VertexContainer f point + , Ord r + , Num r ) -- | Additional precondition: the points actually form a convex polygon - uncheckedFromCCWPoints :: forall (f :: * -> *). + uncheckedFromCCWPoints :: forall (f :: * -> *). Foldable1 f => f point -> ConvexPolygonF f point -uncheckedFromCCWPoints = SimplePolygonF f point -> ConvexPolygonF f point +uncheckedFromCCWPoints = SimplePolygonF f point -> ConvexPolygonF f point forall {k} (f :: k -> *) (point :: k). SimplePolygonF f point -> ConvexPolygonF f point ConvexPolygon (SimplePolygonF f point -> ConvexPolygonF f point) @@ -598,12 +598,12 @@ Foldable1 f => f point -> SimplePolygonF f point uncheckedFromCCWPoints - fromPoints :: forall (f :: * -> *). + fromPoints :: forall (f :: * -> *). (Foldable f, ConstructableSimplePolygon (ConvexPolygonF f point) point r) => f point -> Maybe (ConvexPolygonF f point) -fromPoints f point -pts = f point -> Maybe (SimplePolygonF f point) +fromPoints f point +pts = f point -> Maybe (SimplePolygonF f point) forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable f, ConstructableSimplePolygon simplePolygon point r) => @@ -613,7 +613,7 @@ ConstructableSimplePolygon (SimplePolygonF f point) point r) => f point -> Maybe (SimplePolygonF f point) fromPoints f point -pts Maybe (SimplePolygonF f point) +pts Maybe (SimplePolygonF f point) -> (SimplePolygonF f point -> Maybe (ConvexPolygonF f point)) -> Maybe (ConvexPolygonF f point) forall a b. Maybe a -> (a -> Maybe b) -> Maybe b @@ -624,54 +624,54 @@ SimplePolygonF f point -> Maybe (ConvexPolygonF f point) fromSimplePolygon -instance ( SimplePolygon_ (SimplePolygonF f point) point r - , Point_ point 2 r - ) => ConvexPolygon_ (ConvexPolygonF f point) point r where +instance ( SimplePolygon_ (SimplePolygonF f point) point r + , Point_ point 2 r + ) => ConvexPolygon_ (ConvexPolygonF f point) point r where -- | Smart constructor to construct a strictly convex polygon from a -- simple polygon. -fromSimplePolygon :: (Ord r, Num r, Point_ point 2 r, VertexContainer f point) - => SimplePolygonF f point -> Maybe (ConvexPolygonF f point) +fromSimplePolygon :: (Ord r, Num r, Point_ point 2 r, VertexContainer f point) + => SimplePolygonF f point -> Maybe (ConvexPolygonF f point) fromSimplePolygon :: forall r point (f :: * -> *). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Maybe (ConvexPolygonF f point) -fromSimplePolygon SimplePolygonF f point -pg +fromSimplePolygon SimplePolygonF f point +pg | SimplePolygonF f point -> Bool forall r point (f :: * -> *). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Bool isStrictlyConvex SimplePolygonF f point -pg = ConvexPolygonF f point -> Maybe (ConvexPolygonF f point) +pg = ConvexPolygonF f point -> Maybe (ConvexPolygonF f point) forall a. a -> Maybe a Just (SimplePolygonF f point -> ConvexPolygonF f point forall {k} (f :: k -> *) (point :: k). SimplePolygonF f point -> ConvexPolygonF f point ConvexPolygon SimplePolygonF f point -pg) +pg) | Bool otherwise = Maybe (ConvexPolygonF f point) forall a. Maybe a Nothing -instance ( Show point - , SimplePolygon_ (ConvexPolygonF f point) point r - ) => Show (ConvexPolygonF f point) where - showsPrec :: Int -> ConvexPolygonF f point -> ShowS -showsPrec = String -> Int -> ConvexPolygonF f point -> ShowS +instance ( Show point + , SimplePolygon_ (ConvexPolygonF f point) point r + ) => Show (ConvexPolygonF f point) where + showsPrec :: Int -> ConvexPolygonF f point -> ShowS +showsPrec = String -> Int -> ConvexPolygonF f point -> ShowS forall simplePolygon point r. (SimplePolygon_ simplePolygon point r, Show point) => String -> Int -> simplePolygon -> ShowS showsPrecSimplePolygon String "ConvexPolygon" -instance ( Read point - , SimplePolygon_ (ConvexPolygonF f point) point r - ) => Read (ConvexPolygonF f point) where - readsPrec :: Int -> ReadS (ConvexPolygonF f point) -readsPrec = String -> Int -> ReadS (ConvexPolygonF f point) +instance ( Read point + , SimplePolygon_ (ConvexPolygonF f point) point r + ) => Read (ConvexPolygonF f point) where + readsPrec :: Int -> ReadS (ConvexPolygonF f point) +readsPrec = String -> Int -> ReadS (ConvexPolygonF f point) forall simplePolygon point r. (Read point, SimplePolygon_ simplePolygon point r) => String -> Int -> ReadS simplePolygon @@ -691,33 +691,33 @@ -- TODO: we should be able to implement this in O(log n) time instead!! -} -instance ( VertexContainer f point - , DefaultTransformByConstraints (ConvexPolygonF f point) 2 r - , Point_ point 2 r - ) => IsTransformable (ConvexPolygonF f point) +instance ( VertexContainer f point + , DefaultTransformByConstraints (ConvexPolygonF f point) 2 r + , Point_ point 2 r + ) => IsTransformable (ConvexPolygonF f point) -instance ( VertexContainer f point - , Point_ point 2 r, Num r, HasFromFoldable1 f - ) => IsBoxable (ConvexPolygonF f point) where - boundingBox :: forall (d :: Nat) r. +instance ( VertexContainer f point + , Point_ point 2 r, Num r, HasFromFoldable1 f + ) => IsBoxable (ConvexPolygonF f point) where + boundingBox :: forall (d :: Nat) r. (d ~ Dimension (ConvexPolygonF f point), r ~ NumType (ConvexPolygonF f point), Ord r) => ConvexPolygonF f point -> Box (Point d r) -boundingBox ConvexPolygonF f point -pg = Point d r -> Point d r -> Box (Point d r) +boundingBox ConvexPolygonF f point +pg = Point d r -> Point d r -> Box (Point d r) forall point. point -> point -> Box point Box (r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -xMin r -yMin) (r -> r -> Point 2 r +xMin r +yMin) (r -> r -> Point 2 r forall r. r -> r -> Point 2 r Point2 r -xMax r -yMax) +xMax r +yMax) where - xMin :: r -xMin = Getting r point r -> point -> r + xMin :: r +xMin = Getting r point r -> point -> r forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a view (r -> Const r r) -> point -> Const r point Getting r point r @@ -736,9 +736,9 @@ Vector2 (-r 1) r 0 ) ConvexPolygonF f point -pg - xMax :: r -xMax = Getting r point r -> point -> r +pg + xMax :: r +xMax = Getting r point r -> point -> r forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a view (r -> Const r r) -> point -> Const r point Getting r point r @@ -757,9 +757,9 @@ Vector2 r 1 r 0 ) ConvexPolygonF f point -pg - yMin :: r -yMin = Getting r point r -> point -> r +pg + yMin :: r +yMin = Getting r point r -> point -> r forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a view (r -> Const r r) -> point -> Const r point Getting r point r @@ -778,9 +778,9 @@ Vector2 r 0 (-r 1)) ConvexPolygonF f point -pg - yMax :: r -yMax = Getting r point r -> point -> r +pg + yMax :: r +yMax = Getting r point r -> point -> r forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a view (r -> Const r r) -> point -> Const r point Getting r point r @@ -799,7 +799,7 @@ Vector2 r 0 r 1 ) ConvexPolygonF f point -pg +pg -------------------------------------------------------------------------------- @@ -807,8 +807,8 @@ -- | Verify that a convex polygon is strictly convex. -- -- running time \( O(n) \) -verifyConvex :: (Ord r, Num r, Point_ point 2 r, VertexContainer f point) - => ConvexPolygonF f point -> Bool +verifyConvex :: (Ord r, Num r, Point_ point 2 r, VertexContainer f point) + => ConvexPolygonF f point -> Bool verifyConvex :: forall r point (f :: * -> *). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => ConvexPolygonF f point -> Bool @@ -827,8 +827,8 @@ toSimplePolygon -- | \( O(n) \) Check if a polygon is strictly convex. -isStrictlyConvex :: (Ord r, Num r, Point_ point 2 r, VertexContainer f point) - => SimplePolygonF f point -> Bool +isStrictlyConvex :: (Ord r, Num r, Point_ point 2 r, VertexContainer f point) + => SimplePolygonF f point -> Bool isStrictlyConvex :: forall r point (f :: * -> *). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Bool @@ -867,28 +867,28 @@ Point_ point'' 2 (NumType point), Num (NumType point), Ord (NumType point)) => (point', (point, point'')) -> Bool -isStrictlyConvexVertex +isStrictlyConvexVertex where - isStrictlyConvexVertex :: (point', (point, point'')) -> Bool -isStrictlyConvexVertex (point' -v,(point -u,point'' -w)) = point -> point' -> point'' -> CCW + isStrictlyConvexVertex :: (point', (point, point'')) -> Bool +isStrictlyConvexVertex (point' +v,(point +u,point'' +w)) = point -> point' -> point'' -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw point -u point' -v point'' -w CCW -> CCW -> Bool +u point' +v point'' +w CCW -> CCW -> Bool forall a. Eq a => a -> a -> Bool == CCW CCW -- | \( O(n) \) Check if a polygon is convex. -isConvex :: (Ord r, Num r, Point_ point 2 r, VertexContainer f point) - => SimplePolygonF f point -> Bool +isConvex :: (Ord r, Num r, Point_ point 2 r, VertexContainer f point) + => SimplePolygonF f point -> Bool isConvex :: forall r point (f :: * -> *). (Ord r, Num r, Point_ point 2 r, VertexContainer f point) => SimplePolygonF f point -> Bool @@ -927,21 +927,21 @@ Point_ point'' 2 (NumType point), Num (NumType point), Ord (NumType point)) => (point', (point, point'')) -> Bool -isConvexVertex +isConvexVertex where - isConvexVertex :: (point', (point, point'')) -> Bool -isConvexVertex (point' -v,(point -u,point'' -w)) = point -> point' -> point'' -> CCW + isConvexVertex :: (point', (point, point'')) -> Bool +isConvexVertex (point' +v,(point +u,point'' +w)) = point -> point' -> point'' -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw point -u point' -v point'' -w CCW -> CCW -> Bool +u point' +v point'' +w CCW -> CCW -> Bool forall a. Eq a => a -> a -> Bool /= CCW CW @@ -956,13 +956,13 @@ -- pre: The input polygon is strictly convex. -- -- running time: \(O(\log n)\) -maxInDirection :: (Num r, Ord r, ConvexPolygon_ convexPolygon point r) - => Vector 2 r -> convexPolygon -> point +maxInDirection :: (Num r, Ord r, ConvexPolygon_ convexPolygon point r) + => Vector 2 r -> convexPolygon -> point maxInDirection :: forall r convexPolygon point. (Num r, Ord r, ConvexPolygon_ convexPolygon point r) => Vector 2 r -> convexPolygon -> point -maxInDirection Vector 2 r -u = (point -> point -> Ordering) -> convexPolygon -> point +maxInDirection Vector 2 r +u = (point -> point -> Ordering) -> convexPolygon -> point forall convexPolygon point r. ConvexPolygon_ convexPolygon point r => (point -> point -> Ordering) -> convexPolygon -> point @@ -971,20 +971,20 @@ (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering cmpInDirection Vector 2 r -u) +u) -- | Find the maximum vertex in a convex polygon using a binary search. -- \( O(\log n) \) -findMaxWith :: (ConvexPolygon_ convexPolygon point r) - => (point -> point -> Ordering) - -> convexPolygon -> point +findMaxWith :: (ConvexPolygon_ convexPolygon point r) + => (point -> point -> Ordering) + -> convexPolygon -> point findMaxWith :: forall convexPolygon point r. ConvexPolygon_ convexPolygon point r => (point -> point -> Ordering) -> convexPolygon -> point -findMaxWith point -> point -> Ordering -cmp convexPolygon -pg = convexPolygon -pgconvexPolygon -> Getting point convexPolygon point -> point +findMaxWith point -> point -> Ordering +cmp convexPolygon +pg = convexPolygon +pgconvexPolygon -> Getting point convexPolygon point -> point forall s a. s -> Getting a s a -> a ^.VertexIx convexPolygon -> IndexedGetter @@ -994,20 +994,20 @@ VertexIx polygon -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt (Int -> Int -> Int -worker Int +worker Int 0 Int -n) +n) where - n :: Int -n = convexPolygon -> Int + n :: Int +n = convexPolygon -> Int forall graph. HasVertices' graph => graph -> Int numVertices convexPolygon -pg - Int -a icmp :: Int -> Int -> Ordering -`icmp` Int -b = (convexPolygon -pgconvexPolygon -> Getting point convexPolygon point -> point +pg + Int +a icmp :: Int -> Int -> Ordering +`icmp` Int +b = (convexPolygon +pgconvexPolygon -> Getting point convexPolygon point -> point forall s a. s -> Getting a s a -> a ^.VertexIx convexPolygon -> IndexedGetter @@ -1018,9 +1018,9 @@ -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt Int VertexIx convexPolygon -a) point -> point -> Ordering -`cmp` (convexPolygon -pgconvexPolygon -> Getting point convexPolygon point -> point +a) point -> point -> Ordering +`cmp` (convexPolygon +pgconvexPolygon -> Getting point convexPolygon point -> point forall s a. s -> Getting a s a -> a ^.VertexIx convexPolygon -> IndexedGetter @@ -1031,34 +1031,34 @@ -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt Int VertexIx convexPolygon -b) - worker :: Int -> Int -> Int -worker Int -a Int -b +b) + worker :: Int -> Int -> Int +worker Int +a Int +b | Int -> Bool -localMaximum Int -c = Int -c +localMaximum Int +c = Int +c | Int -aInt -> Int -> Int +aInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1Int -> Int -> Bool forall a. Eq a => a -> a -> Bool ==Int -b = Int -b +b = Int +b | Bool otherwise = case (Int -> Bool -isUpwards Int -a, Int -> Bool -isUpwards Int -c, Int -c Int -> Int -> Ordering -`icmp` Int -a Ordering -> Ordering -> Bool +isUpwards Int +a, Int -> Bool +isUpwards Int +c, Int +c Int -> Int -> Ordering +`icmp` Int +a Ordering -> Ordering -> Bool forall a. Eq a => a -> a -> Bool /= Ordering LT) of @@ -1066,60 +1066,60 @@ True, Bool False, Bool _) -> Int -> Int -> Int -worker Int -a Int -c -- A is up, C is down, pick [a,c] +worker Int +a Int +c -- A is up, C is down, pick [a,c] (Bool True, Bool True, Bool True) -> Int -> Int -> Int -worker Int -c Int -b -- A is up, C is up, C is GTE A, pick [c,b] +worker Int +c Int +b -- A is up, C is up, C is GTE A, pick [c,b] (Bool True, Bool True, Bool False) -> Int -> Int -> Int -worker Int -a Int -c -- A is up, C is LT A, pick [a,c] +worker Int +a Int +c -- A is up, C is LT A, pick [a,c] (Bool False, Bool True, Bool _) -> Int -> Int -> Int -worker Int -c Int -b -- A is down, C is up, pick [c,b] +worker Int +c Int +b -- A is down, C is up, pick [c,b] (Bool False, Bool False, Bool False) -> Int -> Int -> Int -worker Int -c Int -b -- A is down, C is down, C is LT A, pick [c,b] +worker Int +c Int +b -- A is down, C is down, C is LT A, pick [c,b] (Bool False, Bool _, Bool True) -> Int -> Int -> Int -worker Int -a Int -c -- A is down, C is GTE A, pick [a,c] +worker Int +a Int +c -- A is down, C is GTE A, pick [a,c] where - c :: Int -c = (Int -aInt -> Int -> Int + c :: Int +c = (Int +aInt -> Int -> Int forall a. Num a => a -> a -> a +Int -b) Int -> Int -> Int +b) Int -> Int -> Int forall a. Integral a => a -> a -> a `div` Int 2 - localMaximum :: Int -> Bool -localMaximum Int -idx = Int -idx Int -> Int -> Ordering -`icmp` (Int -cInt -> Int -> Int + localMaximum :: Int -> Bool +localMaximum Int +idx = Int +idx Int -> Int -> Ordering +`icmp` (Int +cInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) Ordering -> Ordering -> Bool @@ -1127,21 +1127,21 @@ == Ordering GT Bool -> Bool -> Bool && Int -idx Int -> Int -> Ordering -`icmp` (Int -cInt -> Int -> Int +idx Int -> Int -> Ordering +`icmp` (Int +cInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) Ordering -> Ordering -> Bool forall a. Eq a => a -> a -> Bool == Ordering GT - isUpwards :: Int -> Bool -isUpwards Int -idx = Int -idx Int -> Int -> Ordering -`icmp` (Int -idxInt -> Int -> Int + isUpwards :: Int -> Bool +isUpwards Int +idx = Int +idx Int -> Int -> Ordering +`icmp` (Int +idxInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1) Ordering -> Ordering -> Bool @@ -1163,10 +1163,10 @@ -- convex polygon. -- -- \( O(\log n) \) -inConvex :: ( ConvexPolygon_ convexPolygon point r - , Point_ queryPoint 2 r, Num r, Ord r) - => queryPoint -> convexPolygon - -> PointLocationResultWith (VertexIx convexPolygon) +inConvex :: ( ConvexPolygon_ convexPolygon point r + , Point_ queryPoint 2 r, Num r, Ord r) + => queryPoint -> convexPolygon + -> PointLocationResultWith (VertexIx convexPolygon) inConvex :: forall convexPolygon point r queryPoint. (ConvexPolygon_ convexPolygon point r, Point_ queryPoint 2 r, Num r, Ord r) => @@ -1181,71 +1181,71 @@ Point_ point d r => Lens' point (Point d r) Lens' queryPoint (Point 2 r) -asPoint -> Point 2 r -q) convexPolygon -poly +asPoint -> Point 2 r +q) convexPolygon +poly | Point 2 r -q Point 2 r -> ClosedLineSegment (Point 2 r) -> Bool +q Point 2 r -> ClosedLineSegment (Point 2 r) -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` ClosedLineSegment (Point 2 r) -leftEdge = Int -> PointLocationResultWith Int +leftEdge = Int -> PointLocationResultWith Int forall edge. edge -> PointLocationResultWith edge OnBoundaryEdge Int -n +n | Point 2 r -q Point 2 r -> ClosedLineSegment (Point 2 r) -> Bool +q Point 2 r -> ClosedLineSegment (Point 2 r) -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` ClosedLineSegment (Point 2 r) -rightEdge = Int -> PointLocationResultWith Int +rightEdge = Int -> PointLocationResultWith Int forall edge. edge -> PointLocationResultWith edge OnBoundaryEdge Int 0 | Bool otherwise = Int -> Int -> PointLocationResultWith Int -worker Int +worker Int 1 Int -n +n where - n :: Int -n = convexPolygon -> Int + n :: Int +n = convexPolygon -> Int forall graph. HasVertices' graph => graph -> Int numVertices convexPolygon -poly Int -> Int -> Int +poly Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1 - point0 :: Point 2 r -point0 = Int -> Point 2 r -point Int + point0 :: Point 2 r +point0 = Int -> Point 2 r +point Int 0 - leftEdge :: ClosedLineSegment (Point 2 r) -leftEdge = Point 2 r -> Point 2 r -> ClosedLineSegment (Point 2 r) + leftEdge :: ClosedLineSegment (Point 2 r) +leftEdge = Point 2 r -> Point 2 r -> ClosedLineSegment (Point 2 r) forall point. point -> point -> ClosedLineSegment point ClosedLineSegment Point 2 r -point0 (Int -> Point 2 r -point Int -n) - rightEdge :: ClosedLineSegment (Point 2 r) -rightEdge = Point 2 r -> Point 2 r -> ClosedLineSegment (Point 2 r) +point0 (Int -> Point 2 r +point Int +n) + rightEdge :: ClosedLineSegment (Point 2 r) +rightEdge = Point 2 r -> Point 2 r -> ClosedLineSegment (Point 2 r) forall point. point -> point -> ClosedLineSegment point ClosedLineSegment Point 2 r -point0 (Int -> Point 2 r -point Int +point0 (Int -> Point 2 r +point Int 1) - worker :: Int -> Int -> PointLocationResultWith Int -worker Int -a Int -b + worker :: Int -> Int -> PointLocationResultWith Int +worker Int +a Int +b | Int -aInt -> Int -> Int +aInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1 Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int -b = +b = if Point 2 r -q Point 2 r -> ClosedLineSegment (Point 2 r) -> Bool +q Point 2 r -> ClosedLineSegment (Point 2 r) -> Bool forall lineSegment (d :: Nat) r point. (HasOnSegment lineSegment d, Ord r, Point_ point d r, r ~ NumType lineSegment, d ~ Dimension lineSegment) => @@ -1258,26 +1258,26 @@ `onSegment` Point 2 r -> Point 2 r -> ClosedLineSegment (Point 2 r) forall point. point -> point -> ClosedLineSegment point ClosedLineSegment (Int -> Point 2 r -point Int -a) (Int -> Point 2 r -point Int -b) +point Int +a) (Int -> Point 2 r +point Int +b) then Int -> PointLocationResultWith Int forall edge. edge -> PointLocationResultWith edge OnBoundaryEdge Int -a +a else if Point 2 r -q Point 2 r -> Triangle (Point 2 r) -> Bool +q Point 2 r -> Triangle (Point 2 r) -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` Point 2 r -> Point 2 r -> Point 2 r -> Triangle (Point 2 r) forall point. point -> point -> point -> Triangle point Triangle Point 2 r -point0 (Int -> Point 2 r -point Int -a) (Int -> Point 2 r -point Int -b) +point0 (Int -> Point 2 r +point Int +a) (Int -> Point 2 r +point Int +b) then PointLocationResultWith Int forall edge. PointLocationResultWith edge StrictlyInside @@ -1290,35 +1290,35 @@ Ord r) => point -> point' -> point'' -> CCW ccw Point 2 r -point0 (Int -> Point 2 r -point Int -c) Point 2 r -q CCW -> CCW -> Bool +point0 (Int -> Point 2 r +point Int +c) Point 2 r +q CCW -> CCW -> Bool forall a. Eq a => a -> a -> Bool == CCW CCW = Int -> Int -> PointLocationResultWith Int -worker Int -c Int -b +worker Int +c Int +b | Bool otherwise = Int -> Int -> PointLocationResultWith Int -worker Int -a Int -c - where c :: Int -c = (Int -aInt -> Int -> Int +worker Int +a Int +c + where c :: Int +c = (Int +aInt -> Int -> Int forall a. Num a => a -> a -> a +Int -b) Int -> Int -> Int +b) Int -> Int -> Int forall a. Integral a => a -> a -> a `div` Int 2 - point :: Int -> Point 2 r -point Int -x = convexPolygon -polyconvexPolygon + point :: Int -> Point 2 r +point Int +x = convexPolygon +polyconvexPolygon -> Getting (Point 2 r) convexPolygon (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.VertexIx convexPolygon @@ -1330,7 +1330,7 @@ -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt Int VertexIx convexPolygon -x((point -> Const (Point 2 r) point) +x((point -> Const (Point 2 r) point) -> convexPolygon -> Const (Point 2 r) convexPolygon) -> ((Point 2 r -> Const (Point 2 r) (Point 2 r)) -> point -> Const (Point 2 r) point) @@ -1344,14 +1344,14 @@ Lens' point (Point 2 r) asPoint -instance ConvexPolygon_ (ConvexPolygonF f point) point r - => HasInPolygon (ConvexPolygonF f point) point r where - inPolygon :: forall queryPoint. +instance ConvexPolygon_ (ConvexPolygonF f point) point r + => HasInPolygon (ConvexPolygonF f point) point r where + inPolygon :: forall queryPoint. (Num r, Ord r, Point_ queryPoint 2 r) => queryPoint -> ConvexPolygonF f point -> PointLocationResultWith (VertexIx (ConvexPolygonF f point)) -inPolygon = queryPoint +inPolygon = queryPoint -> ConvexPolygonF f point -> PointLocationResultWith (VertexIx (ConvexPolygonF f point)) forall convexPolygon point r queryPoint. diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.MinkowskiSum.html b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.MinkowskiSum.html index dcb07b4e4..497a59bef 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.MinkowskiSum.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.MinkowskiSum.html @@ -35,19 +35,19 @@ -- te oriin first. -- -- running time: \(O(n+m)\). -minkowskiSum :: ( Ord r, Num r - , ConvexPolygon_ convexPolygon point r - , ConvexPolygon_ convexPolygon' point' r +minkowskiSum :: ( Ord r, Num r + , ConvexPolygon_ convexPolygon point r + , ConvexPolygon_ convexPolygon' point' r ) - => convexPolygon -> convexPolygon' - -> ConvexPolygon (point :+ point') + => convexPolygon -> convexPolygon' + -> ConvexPolygon (point :+ point') minkowskiSum :: forall r convexPolygon point convexPolygon' point'. (Ord r, Num r, ConvexPolygon_ convexPolygon point r, ConvexPolygon_ convexPolygon' point' r) => convexPolygon -> convexPolygon' -> ConvexPolygon (point :+ point') -minkowskiSum convexPolygon -p convexPolygon' -q = NonEmpty (point :+ point') -> ConvexPolygon (point :+ point') +minkowskiSum convexPolygon +p convexPolygon' +q = NonEmpty (point :+ point') -> ConvexPolygon (point :+ point') forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => f point -> simplePolygon @@ -71,23 +71,23 @@ Dimension point ~ 2, Num (NumType point), Ord (NumType point), Point_ point 2 (NumType point), Affine_ point 2 (NumType point)) => NonEmpty point -> NonEmpty point -> [point :+ point] -merge' (convexPolygon -> NonEmpty (Vertex convexPolygon) +merge' (convexPolygon -> NonEmpty (Vertex convexPolygon) forall {s}. (Dimension (Vertex s) ~ 2, NumType (Vertex s) ~ NumType s, Polygon_ s (Vertex s) (NumType s), Ord (NumType s)) => s -> NonEmpty (Vertex s) -theVertices convexPolygon -p) (convexPolygon' -> NonEmpty (Vertex convexPolygon') +theVertices convexPolygon +p) (convexPolygon' -> NonEmpty (Vertex convexPolygon') forall {s}. (Dimension (Vertex s) ~ 2, NumType (Vertex s) ~ NumType s, Polygon_ s (Vertex s) (NumType s), Ord (NumType s)) => s -> NonEmpty (Vertex s) -theVertices convexPolygon' -q) +theVertices convexPolygon' +q) where - theVertices :: s -> NonEmpty (Vertex s) -theVertices s -p' = case Getting (NonEmptyDList (Vertex s)) s (Vertex s) + theVertices :: s -> NonEmpty (Vertex s) +theVertices s +p' = case Getting (NonEmptyDList (Vertex s)) s (Vertex s) -> s -> NonEmpty (Vertex s) forall a s. Getting (NonEmptyDList a) s a -> s -> NonEmpty a toNonEmptyOf (VertexIx s -> IndexedTraversal1' (VertexIx s) s (Vertex s) @@ -103,29 +103,29 @@ (Polygon_ polygon point r, Ord r) => polygon -> VertexIx polygon bottomMost s -p') s -p' of - Vertex s -v :| [Vertex s] -xs -> Vertex s -vVertex s -> [Vertex s] -> NonEmpty (Vertex s) +p') s +p' of + Vertex s +v :| [Vertex s] +xs -> Vertex s +vVertex s -> [Vertex s] -> NonEmpty (Vertex s) forall a. a -> [a] -> NonEmpty a :| ([Vertex s] -xs[Vertex s] -> [Vertex s] -> [Vertex s] +xs[Vertex s] -> [Vertex s] -> [Vertex s] forall a. [a] -> [a] -> [a] ++[Vertex s -v]) +v]) - core -v .+. :: core -> extra -> core :+ extra -.+. extra -w = core -v core -> Vector (Dimension extra) (NumType extra) -> core + core +v .+. :: core -> extra -> core :+ extra +.+. extra +w = core +v core -> Vector (Dimension extra) (NumType extra) -> core forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> Vector d r -> point .+^ (extra -wextra +wextra -> Getting (Vector (Dimension extra) (NumType extra)) extra @@ -152,14 +152,14 @@ vector) core -> extra -> core :+ extra forall core extra. core -> extra -> core :+ extra :+ extra -w +w - cmpAngle :: point -> point -> point -> point -> Ordering -cmpAngle point -v point -v' point -w point -w' = + cmpAngle :: point -> point -> point -> point -> Ordering +cmpAngle point +v point +v' point +w point +w' = Point 2 (NumType point) -> PointF (Vector (Dimension point) (NumType point)) -> PointF (Vector (Dimension point) (NumType point)) @@ -169,8 +169,8 @@ center -> point -> point -> Ordering ccwCmpAround (point -> Point 2 (NumType point) forall point r. (Point_ point 2 r, Num r) => point -> Point 2 r -origin' point -v') (Vector (Dimension point) (NumType point) +origin' point +v') (Vector (Dimension point) (NumType point) -> PointF (Vector (Dimension point) (NumType point)) forall v. v -> PointF v Point (Vector (Dimension point) (NumType point) @@ -179,12 +179,12 @@ -> PointF (Vector (Dimension point) (NumType point)) forall a b. (a -> b) -> a -> b $ point -v' point -> point -> Vector (Dimension point) (NumType point) +v' point -> point -> Vector (Dimension point) (NumType point) forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. point -v) (Vector (Dimension point) (NumType point) +v) (Vector (Dimension point) (NumType point) -> PointF (Vector (Dimension point) (NumType point)) forall v. v -> PointF v Point (Vector (Dimension point) (NumType point) @@ -193,88 +193,88 @@ -> PointF (Vector (Dimension point) (NumType point)) forall a b. (a -> b) -> a -> b $ point -w' point -> point -> Vector (Dimension point) (NumType point) +w' point -> point -> Vector (Dimension point) (NumType point) forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. point -w) +w) -- hack to satisfy GHC 9.8; shouldn't be necessary with 9.10 and on ; just use origin as is - origin' :: (Point_ point 2 r, Num r) => point -> Point 2 r - origin' :: forall point r. (Point_ point 2 r, Num r) => point -> Point 2 r -origin' point + origin' :: (Point_ point 2 r, Num r) => point -> Point 2 r + origin' :: forall point r. (Point_ point 2 r, Num r) => point -> Point 2 r +origin' point _ = Point 2 r forall point (d :: Nat) r. (Num r, ConstructablePoint_ point d r) => point origin - merge' :: NonEmpty point -> NonEmpty point -> [point :+ point] -merge' vs0 :: NonEmpty point -vs0@(point -v:|[point] -vs1) ws0 :: NonEmpty point -ws0@(point -w:|[point] -ws1) = [point] -> [point] -> [point :+ point] -go [point] -vs1 [point] -ws1 + merge' :: NonEmpty point -> NonEmpty point -> [point :+ point] +merge' vs0 :: NonEmpty point +vs0@(point +v:|[point] +vs1) ws0 :: NonEmpty point +ws0@(point +w:|[point] +ws1) = [point] -> [point] -> [point :+ point] +go [point] +vs1 [point] +ws1 where - go :: [point] -> [point] -> [point :+ point] -go [] [] = [] - go [] (point -w':[point] -ws) = point -v point -> point -> point :+ point + go :: [point] -> [point] -> [point :+ point] +go [] [] = [] + go [] (point +w':[point] +ws) = point +v point -> point -> point :+ point forall {extra} {core}. (Dimension extra ~ Dimension core, NumType extra ~ NumType core, Affine_ core (Dimension core) (NumType core), Num (NumType core), HasVector extra extra) => core -> extra -> core :+ extra -.+. point -w (point :+ point) -> [point :+ point] -> [point :+ point] +.+. point +w (point :+ point) -> [point :+ point] -> [point :+ point] forall a. a -> [a] -> [a] : NonEmpty point -> NonEmpty point -> [point :+ point] -merge' NonEmpty point -vs0 (point -w'point -> [point] -> NonEmpty point +merge' NonEmpty point +vs0 (point +w'point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :|[point] -ws) - go (point -v':[point] -vs) [] = point -v point -> point -> point :+ point +ws) + go (point +v':[point] +vs) [] = point +v point -> point -> point :+ point forall {extra} {core}. (Dimension extra ~ Dimension core, NumType extra ~ NumType core, Affine_ core (Dimension core) (NumType core), Num (NumType core), HasVector extra extra) => core -> extra -> core :+ extra -.+. point -w (point :+ point) -> [point :+ point] -> [point :+ point] +.+. point +w (point :+ point) -> [point :+ point] -> [point :+ point] forall a. a -> [a] -> [a] : NonEmpty point -> NonEmpty point -> [point :+ point] -merge' (point -v'point -> [point] -> NonEmpty point +merge' (point +v'point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :|[point] -vs) NonEmpty point -ws0 - go (point -v':[point] -vs) (point -w':[point] -ws) = point -v point -> point -> point :+ point +vs) NonEmpty point +ws0 + go (point +v':[point] +vs) (point +w':[point] +ws) = point +v point -> point -> point :+ point forall {extra} {core}. (Dimension extra ~ Dimension core, NumType extra ~ NumType core, Affine_ core (Dimension core) (NumType core), Num (NumType core), HasVector extra extra) => core -> extra -> core :+ extra -.+. point -w (point :+ point) -> [point :+ point] -> [point :+ point] +.+. point +w (point :+ point) -> [point :+ point] -> [point :+ point] forall a. a -> [a] -> [a] : case point -> point -> point -> point -> Ordering forall {point} {point}. @@ -283,40 +283,40 @@ Point_ point 2 (NumType point), Num (NumType point), Affine_ point 2 (NumType point)) => point -> point -> point -> point -> Ordering -cmpAngle point -v point -v' point -w point -w' of +cmpAngle point +v point +v' point +w point +w' of Ordering LT -> NonEmpty point -> NonEmpty point -> [point :+ point] -merge' (point -v'point -> [point] -> NonEmpty point +merge' (point +v'point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :|[point] -vs) NonEmpty point -ws0 +vs) NonEmpty point +ws0 Ordering GT -> NonEmpty point -> NonEmpty point -> [point :+ point] -merge' NonEmpty point -vs0 (point -w'point -> [point] -> NonEmpty point +merge' NonEmpty point +vs0 (point +w'point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :|[point] -ws) +ws) Ordering EQ -> NonEmpty point -> NonEmpty point -> [point :+ point] -merge' (point -v'point -> [point] -> NonEmpty point +merge' (point +v'point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :|[point] -vs) (point -w'point -> [point] -> NonEmpty point +vs) (point +w'point -> [point] -> NonEmpty point forall a. a -> [a] -> NonEmpty a :|[point] -ws) +ws) -bottomMost :: (Polygon_ polygon point r, Ord r) => polygon -> VertexIx polygon +bottomMost :: (Polygon_ polygon point r, Ord r) => polygon -> VertexIx polygon bottomMost :: forall polygon point r. (Polygon_ polygon point r, Ord r) => polygon -> VertexIx polygon @@ -348,7 +348,7 @@ (TypeError ...), Ord (NumType b), Point_ b (Dimension b) (NumType b)) => b -> b -> Ordering -cmp (Indexed +cmp (Indexed (VertexIx polygon) point (Const (First (VertexIx polygon, point)) point) @@ -375,10 +375,10 @@ p (i, s) (f (j, t)) -> Indexed i s (f t) withIndex) where - cmp :: b -> b -> Ordering -cmp b -p b -q = (b -> NumType b) -> b -> b -> Ordering + cmp :: b -> b -> Ordering +cmp b +p b +q = (b -> NumType b) -> b -> b -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing (b -> Getting (NumType b) b (NumType b) -> NumType b forall s a. s -> Getting a s a -> a @@ -388,8 +388,8 @@ IndexedLens' Int point r IndexedLens' Int b (NumType b) yCoord) b -p b -q Ordering -> Ordering -> Ordering +p b +q Ordering -> Ordering -> Ordering forall a. Semigroup a => a -> a -> a <> (b -> NumType b) -> b -> b -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering @@ -401,8 +401,8 @@ IndexedLens' Int point r IndexedLens' Int b (NumType b) xCoord) b -p b -q +p b +q -- newtype UnsafeExtra extra = UnsafeExtra extra diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Random.html b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Random.html index 003a5610a..f7dd6dba7 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Random.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Random.html @@ -60,18 +60,18 @@ -- And the sum of [-3, 4, -1] = -3+4-1 = 0. -- O(n log n) -randomBetween :: (MonadState g m, RandomGen g) - => Int -> Int -> m (VU.Vector Int) +randomBetween :: (MonadState g m, RandomGen g) + => Int -> Int -> m (VU.Vector Int) randomBetween :: forall g (m :: * -> *). (MonadState g m, RandomGen g) => Int -> Int -> m (Vector Int) -randomBetween Int -n Int -vMax | Int -vMax Int -> Int -> Bool +randomBetween Int +n Int +vMax | Int +vMax Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int -nInt -> Int -> Int +nInt -> Int -> Int forall a. Num a => a -> a -> a +Int 1 = Vector Int -> m (Vector Int) @@ -82,80 +82,80 @@ $ Int -> Int -> Vector Int forall a. Unbox a => Int -> a -> Vector a VU.replicate Int -vMax Int +vMax Int 1 -randomBetween Int -n Int -vMax = Int -> IntSet -> m (Vector Int) -worker (Int -nInt -> Int -> Int +randomBetween Int +n Int +vMax = Int -> IntSet -> m (Vector Int) +worker (Int +nInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) IntSet IS.empty where - gen :: Int -> [Int] -> [Int] -gen Int -from' [] = [Int -vMaxInt -> Int -> Int + gen :: Int -> [Int] -> [Int] +gen Int +from' [] = [Int +vMaxInt -> Int -> Int forall a. Num a => a -> a -> a -Int -from'] - gen Int -from' (Int -x:[Int] -xs) = (Int -xInt -> Int -> Int +from'] + gen Int +from' (Int +x:[Int] +xs) = (Int +xInt -> Int -> Int forall a. Num a => a -> a -> a -Int -from') Int -> [Int] -> [Int] +from') Int -> [Int] -> [Int] forall a. a -> [a] -> [a] : Int -> [Int] -> [Int] -gen Int -x [Int] -xs - worker :: Int -> IntSet -> m (Vector Int) -worker Int -0 IntSet -seen = Vector Int -> m (Vector Int) +gen Int +x [Int] +xs + worker :: Int -> IntSet -> m (Vector Int) +worker Int +0 IntSet +seen = Vector Int -> m (Vector Int) forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure ([Int] -> Vector Int forall a. Unbox a => [a] -> Vector a VU.fromList (Int -> [Int] -> [Int] -gen Int +gen Int 0 ([Int] -> [Int]) -> [Int] -> [Int] forall a b. (a -> b) -> a -> b $ IntSet -> [Int] IS.elems IntSet -seen)) - worker Int -i IntSet -seen = do - v <- (Int, Int) -> StateGenM g -> m Int +seen)) + worker Int +i IntSet +seen = do + v <- (Int, Int) -> StateGenM g -> m Int forall a g (m :: * -> *). (UniformRange a, StatefulGen g m) => (a, a) -> g -> m a forall g (m :: * -> *). StatefulGen g m => (Int, Int) -> g -> m Int uniformRM (Int 1, Int -vMaxInt -> Int -> Int +vMaxInt -> Int -> Int forall a. Num a => a -> a -> a -Int 1) StateGenM g forall g. StateGenM g StateGenM - if IS.member v seen - then worker i seen - else worker (i-1) (IS.insert v seen) + if IS.member v seen + then worker i seen + else worker (i-1) (IS.insert v seen) -randomBetweenZero :: (MonadState g m, RandomGen g) => Int -> Int -> m (VU.Vector Int) +randomBetweenZero :: (MonadState g m, RandomGen g) => Int -> Int -> m (VU.Vector Int) randomBetweenZero :: forall g (m :: * -> *). (MonadState g m, RandomGen g) => Int -> Int -> m (Vector Int) -randomBetweenZero Int -n Int -vMax = (Int -> Int -> Int) -> Vector Int -> Vector Int -> Vector Int +randomBetweenZero Int +n Int +vMax = (Int -> Int -> Int) -> Vector Int -> Vector Int -> Vector Int forall a b c. (Unbox a, Unbox b, Unbox c) => (a -> b -> c) -> Vector a -> Vector b -> Vector c @@ -167,8 +167,8 @@ (MonadState g m, RandomGen g) => Int -> Int -> m (Vector Int) randomBetween Int -n Int -vMax m (Vector Int -> Vector Int) -> m (Vector Int) -> m (Vector Int) +n Int +vMax m (Vector Int -> Vector Int) -> m (Vector Int) -> m (Vector Int) forall a b. m (a -> b) -> m a -> m b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Int -> Int -> m (Vector Int) @@ -176,16 +176,16 @@ (MonadState g m, RandomGen g) => Int -> Int -> m (Vector Int) randomBetween Int -n Int -vMax +n Int +vMax -randomEdges :: (MonadState g m, RandomGen g) => Int -> Int -> m [Point 2 Int] +randomEdges :: (MonadState g m, RandomGen g) => Int -> Int -> m [Point 2 Int] randomEdges :: forall g (m :: * -> *). (MonadState g m, RandomGen g) => Int -> Int -> m [Point 2 Int] -randomEdges Int -n Int -vMax = do +randomEdges Int +n Int +vMax = do (Int -> Int -> Point 2 Int) -> [Int] -> [Int] -> [Point 2 Int] forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] zipWith Int -> Int -> Point 2 Int @@ -204,8 +204,8 @@ (MonadState g m, RandomGen g) => Int -> Int -> m (Vector Int) randomBetweenZero Int -n Int -vMax) +n Int +vMax) m ([Int] -> [Point 2 Int]) -> m [Int] -> m [Point 2 Int] forall a b. m (a -> b) -> m a -> m b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b @@ -219,21 +219,21 @@ (MonadState g m, RandomGen g) => Int -> Int -> m (Vector Int) randomBetweenZero Int -n Int -vMax) +n Int +vMax) -- | Generate a random ConvexPolygon with @N@ vertices and a granularity of @vMax@. -- -- \( O(n \log n) \) -randomConvex :: (MonadState g m, RandomGen g) - => Int -> Int -> m (ConvexPolygon (Point 2 Rational)) +randomConvex :: (MonadState g m, RandomGen g) + => Int -> Int -> m (ConvexPolygon (Point 2 Rational)) randomConvex :: forall g (m :: * -> *). (MonadState g m, RandomGen g) => Int -> Int -> m (ConvexPolygon (Point 2 Rational)) -randomConvex Int -n Int -_vMax | Int -n Int -> Int -> Bool +randomConvex Int +n Int +_vMax | Int +n Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int 3 = @@ -241,10 +241,10 @@ forall a. HasCallStack => [Char] -> a error [Char] "HGeometry.Polygon.Convex.randomConvex: At least 3 edges are required." -randomConvex Int -n Int -vMax = do - (v:|vs) <- [Point 2 Int] -> NonEmpty (Point 2 Int) +randomConvex Int +n Int +vMax = do + (v:|vs) <- [Point 2 Int] -> NonEmpty (Point 2 Int) forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList ([Point 2 Int] -> NonEmpty (Point 2 Int)) -> ([Point 2 Int] -> [Point 2 Int]) @@ -267,9 +267,9 @@ (MonadState g m, RandomGen g) => Int -> Int -> m [Point 2 Int] randomEdges Int -n Int -vMax - let theVertices = ASetter +n Int +vMax + let theVertices = ASetter (Point 2 Int) (Point 2 Rational) Int (NumType (Point 2 Rational)) -> (Int -> NumType (Point 2 Rational)) -> Point 2 Int @@ -294,7 +294,7 @@ / Int -> NumType (Point 2 Rational) forall a b. (Real a, Fractional b) => a -> b realToFrac Int -vMax) (NumType (Point 2 Rational) -> NumType (Point 2 Rational)) +vMax) (NumType (Point 2 Rational) -> NumType (Point 2 Rational)) -> (Int -> NumType (Point 2 Rational)) -> Int -> NumType (Point 2 Rational) @@ -310,15 +310,15 @@ forall (f :: * -> *) b a. Foldable f => (b -> a -> b) -> b -> f a -> NonEmpty b -NonEmpty.scanl (\Point 2 Int -p Point 2 Int -u -> Point 2 Int -p Point 2 Int -> Vector 2 Int -> Point 2 Int +NonEmpty.scanl (\Point 2 Int +p Point 2 Int +u -> Point 2 Int +p Point 2 Int -> Vector 2 Int -> Point 2 Int forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> Vector d r -> point .+^ (Point 2 Int -uPoint 2 Int +uPoint 2 Int -> Getting (Vector 2 Int) (Point 2 Int) (Vector 2 Int) -> Vector 2 Int forall s a. s -> Getting a s a -> a @@ -333,9 +333,9 @@ Lens point point' (Vector d r) (Vector d s) Lens (Point 2 Int) (Point 2 Int) (Vector 2 Int) (Vector 2 Int) vector)) Point 2 Int -v [Point 2 Int] -vs - pRational = NonEmpty (Point 2 Rational) -> ConvexPolygon (Point 2 Rational) +v [Point 2 Int] +vs + pRational = NonEmpty (Point 2 Rational) -> ConvexPolygon (Point 2 Rational) forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => f point -> simplePolygon @@ -343,7 +343,7 @@ Foldable1 f => f (Point 2 Rational) -> ConvexPolygon (Point 2 Rational) uncheckedFromCCWPoints NonEmpty (Point 2 Rational) -theVertices - Point c = centroid pRational - pure $ pRational&outerBoundary %~ (.-^ c) +theVertices + Point c = centroid pRational + pure $ pRational&outerBoundary %~ (.-^ c) \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Tangents.html b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Tangents.html index e1e621cfb..57b9ef394 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Tangents.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Convex.Tangents.html @@ -37,14 +37,14 @@ -- s.t. the polygon lies completely to the right of the line from q to v. -- -- running time: \(O(\log n)\). -leftTangent :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r) - => convexPolygon -> point -> point +leftTangent :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r) + => convexPolygon -> point -> point leftTangent :: forall r convexPolygon point. (Ord r, Num r, ConvexPolygon_ convexPolygon point r) => convexPolygon -> point -> point -leftTangent convexPolygon -poly point -q = (point -> point -> Ordering) -> convexPolygon -> point +leftTangent convexPolygon +poly point +q = (point -> point -> Ordering) -> convexPolygon -> point forall convexPolygon point r. ConvexPolygon_ convexPolygon point r => (point -> point -> Ordering) -> convexPolygon -> point @@ -53,22 +53,22 @@ (Num r, Ord r, Point_ point 2 r) => point -> point -> point -> Ordering tangentCmp point -q) convexPolygon -poly +q) convexPolygon +poly -- | Given a convex polygon poly, and a point outside the polygon, find the -- right tangent of q and the polygon, i.e. the vertex v of the convex polygon -- s.t. the polygon lies completely to the left of the line from q to v. -- -- running time: \(O(\log n)\). -rightTangent :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r) - => convexPolygon -> point -> point +rightTangent :: (Ord r, Num r, ConvexPolygon_ convexPolygon point r) + => convexPolygon -> point -> point rightTangent :: forall r convexPolygon point. (Ord r, Num r, ConvexPolygon_ convexPolygon point r) => convexPolygon -> point -> point -rightTangent convexPolygon -poly point -q = (point -> point -> Ordering) -> convexPolygon -> point +rightTangent convexPolygon +poly point +q = (point -> point -> Ordering) -> convexPolygon -> point forall convexPolygon point r. ConvexPolygon_ convexPolygon point r => (point -> point -> Ordering) -> convexPolygon -> point @@ -82,27 +82,27 @@ (Num r, Ord r, Point_ point 2 r) => point -> point -> point -> Ordering tangentCmp point -q) convexPolygon -poly +q) convexPolygon +poly -tangentCmp :: (Num r, Ord r, Point_ point 2 r) - => point -> point -> point -> Ordering +tangentCmp :: (Num r, Ord r, Point_ point 2 r) + => point -> point -> point -> Ordering tangentCmp :: forall r point. (Num r, Ord r, Point_ point 2 r) => point -> point -> point -> Ordering -tangentCmp point -o point -p point -q = case point -> point -> point -> CCW +tangentCmp point +o point +p point +q = case point -> point -> point -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw point -o point -p point -q of +o point +p point +q of CCW CCW -> Ordering LT -- q is left of the line from o to p @@ -124,26 +124,26 @@ -- - The vertices of the polygons are given in clockwise order -- -- Running time: O(n+m), where n and m are the sizes of the two polygons respectively -lowerTangent :: ( Num r, Ord r - , ConvexPolygon_ convexPolygon point r, Point_ point 2 r +lowerTangent :: ( Num r, Ord r + , ConvexPolygon_ convexPolygon point r, Point_ point 2 r ) - => convexPolygon - -> convexPolygon - -> ClosedLineSegment point + => convexPolygon + -> convexPolygon + -> ClosedLineSegment point lowerTangent :: forall r convexPolygon point. (Num r, Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) => convexPolygon -> convexPolygon -> ClosedLineSegment point -lowerTangent convexPolygon -lp convexPolygon -rp = point -> point -> ClosedLineSegment point +lowerTangent convexPolygon +lp convexPolygon +rp = point -> point -> ClosedLineSegment point forall point. point -> point -> ClosedLineSegment point ClosedLineSegment point -l point -r +l point +r where - lh :: NonEmpty point -lh = Getting (NonEmptyDList point) convexPolygon point + lh :: NonEmpty point +lh = Getting (NonEmptyDList point) convexPolygon point -> convexPolygon -> NonEmpty point forall a s. Getting (NonEmptyDList a) s a -> s -> NonEmpty a toNonEmptyOf (VertexIx convexPolygon @@ -158,10 +158,10 @@ (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) => convexPolygon -> Int rightMostIdx convexPolygon -lp)) convexPolygon -lp - rh :: NonEmpty point -rh = Getting (NonEmptyDList point) convexPolygon point +lp)) convexPolygon +lp + rh :: NonEmpty point +rh = Getting (NonEmptyDList point) convexPolygon point -> convexPolygon -> NonEmpty point forall a s. Getting (NonEmptyDList a) s a -> s -> NonEmpty a toNonEmptyOf (VertexIx convexPolygon @@ -176,23 +176,23 @@ (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) => convexPolygon -> Int leftMostIdx convexPolygon -rp)) convexPolygon -rp - (Vector2 (point -l :+ [point] -_) (point -r :+ [point] +rp)) convexPolygon +rp + (Vector2 (point +l :+ [point] +_) (point +r :+ [point] _)) = NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) forall point r (f :: * -> *). (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point]) lowerTangent' NonEmpty point -lh NonEmpty point -rh +lh NonEmpty point +rh -- | Index of the rightmost vertex. Returns the topmost such vertex if there are multiple -rightMostIdx :: (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) - => convexPolygon -> Int +rightMostIdx :: (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) + => convexPolygon -> Int rightMostIdx :: forall r convexPolygon point. (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) => convexPolygon -> Int @@ -247,15 +247,15 @@ comparePtsXY -- | compare on x and y coordinates -comparePtsXY :: (Ord r, Point_ point 2 r) => (i, point) -> (i,point) -> Ordering +comparePtsXY :: (Ord r, Point_ point 2 r) => (i, point) -> (i,point) -> Ordering comparePtsXY :: forall r point i. (Ord r, Point_ point 2 r) => (i, point) -> (i, point) -> Ordering comparePtsXY (i -_,point -p) (i -_,point -q) = (point -> r) -> point -> point -> Ordering +_,point +p) (i +_,point +q) = (point -> r) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing (point -> Getting r point r -> r forall s a. s -> Getting a s a -> a @@ -265,8 +265,8 @@ IndexedLens' Int point r IndexedLens' Int point r xCoord) point -p point -q Ordering -> Ordering -> Ordering +p point +q Ordering -> Ordering -> Ordering forall a. Semigroup a => a -> a -> a <> (point -> r) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering @@ -278,12 +278,12 @@ IndexedLens' Int point r IndexedLens' Int point r yCoord) point -p point -q +p point +q -- | Index of the leftmost vertex, returns the bottommost if there are multiple. -leftMostIdx :: (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) - => convexPolygon -> Int +leftMostIdx :: (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) + => convexPolygon -> Int leftMostIdx :: forall r convexPolygon point. (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) => convexPolygon -> Int @@ -338,13 +338,13 @@ comparePtsXY -- | get the maximum of the elements the lens points to using the given comparison function -maximum1ByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> a +maximum1ByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> a maximum1ByOf :: forall a s. Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> a -maximum1ByOf Getting (Endo (Endo (Maybe a))) s a -l a -> a -> Ordering -cmp = a -> Maybe a -> a +maximum1ByOf Getting (Endo (Endo (Maybe a))) s a +l a -> a -> Ordering +cmp = a -> Maybe a -> a forall a. a -> Maybe a -> a fromMaybe ([Char] -> a forall a. HasCallStack => [Char] -> a @@ -357,17 +357,17 @@ Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> Maybe a maximumByOf Getting (Endo (Endo (Maybe a))) s a -l a -> a -> Ordering -cmp +l a -> a -> Ordering +cmp -- | get the minimum of the elements the lens points to using the given comparison function -minimum1ByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> a +minimum1ByOf :: Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> a minimum1ByOf :: forall a s. Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> a -minimum1ByOf Getting (Endo (Endo (Maybe a))) s a -l a -> a -> Ordering -cmp = a -> Maybe a -> a +minimum1ByOf Getting (Endo (Endo (Maybe a))) s a +l a -> a -> Ordering +cmp = a -> Maybe a -> a forall a. a -> Maybe a -> a fromMaybe ([Char] -> a forall a. HasCallStack => [Char] -> a @@ -380,8 +380,8 @@ Getting (Endo (Endo (Maybe a))) s a -> (a -> a -> Ordering) -> s -> Maybe a minimumByOf Getting (Endo (Endo (Maybe a))) s a -l a -> a -> Ordering -cmp +l a -> a -> Ordering +cmp -- | Compute the lower tangent of the two convex chains lp and rp -- @@ -397,62 +397,62 @@ -- -- Running time: \(O(n+m)\), where n and m are the sizes of the two chains -- respectively -lowerTangent' :: forall point r f. (Ord r, Num r, Foldable1 f, Point_ point 2 r) - => f point -> f point -> Vector 2 (point :+ [point]) +lowerTangent' :: forall point r f. (Ord r, Num r, Foldable1 f, Point_ point 2 r) + => f point -> f point -> Vector 2 (point :+ [point]) lowerTangent' :: forall point r (f :: * -> *). (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point]) -lowerTangent' f point -l0 f point -r0 = NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) +lowerTangent' f point +l0 f point +r0 = NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) forall {core}. (Dimension core ~ 2, Point_ core 2 (NumType core), Num (NumType core), Ord (NumType core)) => NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) -go (f point -> NonEmpty point +go (f point -> NonEmpty point forall a. f a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty f point -l0) (f point -> NonEmpty point +l0) (f point -> NonEmpty point forall a. f a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty f point -r0) +r0) where - ne :: [a] -> NonEmpty a -ne = [a] -> NonEmpty a + ne :: [a] -> NonEmpty a +ne = [a] -> NonEmpty a forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList - isRight' :: [point''] -> point -> point' -> Bool -isRight' [] point + isRight' :: [point''] -> point -> point' -> Bool +isRight' [] point _ point' _ = Bool False - isRight' (point'' -x:[point''] -_) point -l point' -r = point -> point' -> point'' -> CCW + isRight' (point'' +x:[point''] +_) point +l point' +r = point -> point' -> point'' -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw point -l point' -r point'' -x CCW -> CCW -> Bool +l point' +r point'' +x CCW -> CCW -> Bool forall a. Eq a => a -> a -> Bool /= CCW CCW - go :: NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) -go lh :: NonEmpty core -lh@(core -l:|[core] -ls) rh :: NonEmpty core -rh@(core -r:|[core] -rs) | [core] -> core -> core -> Bool + go :: NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) +go lh :: NonEmpty core +lh@(core +l:|[core] +ls) rh :: NonEmpty core +rh@(core +r:|[core] +rs) | [core] -> core -> core -> Bool forall {point''} {point'} {point}. (Dimension point'' ~ 2, Dimension point' ~ 2, Dimension point ~ 2, NumType point' ~ NumType point, NumType point'' ~ NumType point, @@ -460,15 +460,15 @@ Point_ point'' 2 (NumType point), Num (NumType point), Ord (NumType point)) => [point''] -> point -> point' -> Bool -isRight' [core] -rs core -l core -r = NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) -go NonEmpty core -lh ([core] -> NonEmpty core +isRight' [core] +rs core +l core +r = NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) +go NonEmpty core +lh ([core] -> NonEmpty core forall {a}. [a] -> NonEmpty a -ne [core] -rs) +ne [core] +rs) | [core] -> core -> core -> Bool forall {point''} {point'} {point}. (Dimension point'' ~ 2, Dimension point' ~ 2, Dimension point ~ 2, @@ -477,27 +477,27 @@ Point_ point'' 2 (NumType point), Num (NumType point), Ord (NumType point)) => [point''] -> point -> point' -> Bool -isRight' [core] -ls core -l core -r = NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) -go ([core] -> NonEmpty core +isRight' [core] +ls core +l core +r = NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) +go ([core] -> NonEmpty core forall {a}. [a] -> NonEmpty a -ne [core] -ls) NonEmpty core -rh +ne [core] +ls) NonEmpty core +rh | Bool otherwise = (core :+ [core]) -> (core :+ [core]) -> Vector 2 (core :+ [core]) forall r. r -> r -> Vector 2 r Vector2 (core -l core -> [core] -> core :+ [core] +l core -> [core] -> core :+ [core] forall core extra. core -> extra -> core :+ extra :+ [core] -ls) (core -r core -> [core] -> core :+ [core] +ls) (core +r core -> [core] -> core :+ [core] forall core extra. core -> extra -> core :+ extra :+ [core] -rs) +rs) @@ -519,25 +519,25 @@ -- - The vertices of the polygons are given in clockwise order -- -- Running time: \( O(n+m) \), where n and m are the sizes of the two polygons respectively -upperTangent :: forall convexPolygon point r. - ( Num r, Ord r - , ConvexPolygon_ convexPolygon point r) - => convexPolygon - -> convexPolygon - -> ClosedLineSegment point +upperTangent :: forall convexPolygon point r. + ( Num r, Ord r + , ConvexPolygon_ convexPolygon point r) + => convexPolygon + -> convexPolygon + -> ClosedLineSegment point upperTangent :: forall convexPolygon point r. (Num r, Ord r, ConvexPolygon_ convexPolygon point r) => convexPolygon -> convexPolygon -> ClosedLineSegment point -upperTangent convexPolygon -lp convexPolygon -rp = point -> point -> ClosedLineSegment point +upperTangent convexPolygon +lp convexPolygon +rp = point -> point -> ClosedLineSegment point forall point. point -> point -> ClosedLineSegment point ClosedLineSegment point -l point -r +l point +r where - lh :: NonEmpty point -lh = Getting (NonEmptyDList point) convexPolygon point + lh :: NonEmpty point +lh = Getting (NonEmptyDList point) convexPolygon point -> convexPolygon -> NonEmpty point forall a s. Getting (NonEmptyDList a) s a -> s -> NonEmpty a toNonEmptyOf (VertexIx convexPolygon @@ -552,10 +552,10 @@ (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) => convexPolygon -> Int rightMostIdx convexPolygon -lp)) convexPolygon -lp - rh :: NonEmpty point -rh = Getting (NonEmptyDList point) convexPolygon point +lp)) convexPolygon +lp + rh :: NonEmpty point +rh = Getting (NonEmptyDList point) convexPolygon point -> convexPolygon -> NonEmpty point forall a s. Getting (NonEmptyDList a) s a -> s -> NonEmpty a toNonEmptyOf (VertexIx convexPolygon @@ -570,19 +570,19 @@ (Ord r, ConvexPolygon_ convexPolygon point r, Point_ point 2 r) => convexPolygon -> Int leftMostIdx convexPolygon -rp)) convexPolygon -rp - (Vector2 (point -l :+ [point] -_) (point -r :+ [point] +rp)) convexPolygon +rp + (Vector2 (point +l :+ [point] +_) (point +r :+ [point] _)) = NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) forall r (f :: * -> *) point. (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point]) upperTangent' NonEmpty point -lh NonEmpty point -rh +lh NonEmpty point +rh -- | Compute the upper tangent of the two convex chains lp and rp -- @@ -598,62 +598,62 @@ -- -- Running time: \(O(n+m)\), where n and m are the sizes of the two chains -- respectively -upperTangent' :: (Ord r, Num r, Foldable1 f, Point_ point 2 r) - => f point -> f point -> Vector 2 (point :+ [point]) +upperTangent' :: (Ord r, Num r, Foldable1 f, Point_ point 2 r) + => f point -> f point -> Vector 2 (point :+ [point]) upperTangent' :: forall r (f :: * -> *) point. (Ord r, Num r, Foldable1 f, Point_ point 2 r) => f point -> f point -> Vector 2 (point :+ [point]) -upperTangent' f point -l0 f point -r0 = NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) +upperTangent' f point +l0 f point +r0 = NonEmpty point -> NonEmpty point -> Vector 2 (point :+ [point]) forall {core}. (Dimension core ~ 2, Point_ core 2 (NumType core), Num (NumType core), Ord (NumType core)) => NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) -go (f point -> NonEmpty point +go (f point -> NonEmpty point forall a. f a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty f point -l0) (f point -> NonEmpty point +l0) (f point -> NonEmpty point forall a. f a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty f point -r0) +r0) where - ne :: [a] -> NonEmpty a -ne = [a] -> NonEmpty a + ne :: [a] -> NonEmpty a +ne = [a] -> NonEmpty a forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList - isLeft' :: [point''] -> point -> point' -> Bool -isLeft' [] point + isLeft' :: [point''] -> point -> point' -> Bool +isLeft' [] point _ point' _ = Bool False - isLeft' (point'' -x:[point''] -_) point -l point' -r = point -> point' -> point'' -> CCW + isLeft' (point'' +x:[point''] +_) point +l point' +r = point -> point' -> point'' -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw point -l point' -r point'' -x CCW -> CCW -> Bool +l point' +r point'' +x CCW -> CCW -> Bool forall a. Eq a => a -> a -> Bool /= CCW CW - go :: NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) -go lh :: NonEmpty core -lh@(core -l:|[core] -ls) rh :: NonEmpty core -rh@(core -r:|[core] -rs) | [core] -> core -> core -> Bool + go :: NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) +go lh :: NonEmpty core +lh@(core +l:|[core] +ls) rh :: NonEmpty core +rh@(core +r:|[core] +rs) | [core] -> core -> core -> Bool forall {point''} {point'} {point}. (Dimension point'' ~ 2, Dimension point' ~ 2, Dimension point ~ 2, NumType point' ~ NumType point, NumType point'' ~ NumType point, @@ -661,15 +661,15 @@ Point_ point'' 2 (NumType point), Num (NumType point), Ord (NumType point)) => [point''] -> point -> point' -> Bool -isLeft' [core] -rs core -l core -r = NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) -go NonEmpty core -lh ([core] -> NonEmpty core +isLeft' [core] +rs core +l core +r = NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) +go NonEmpty core +lh ([core] -> NonEmpty core forall {a}. [a] -> NonEmpty a -ne [core] -rs) +ne [core] +rs) | [core] -> core -> core -> Bool forall {point''} {point'} {point}. (Dimension point'' ~ 2, Dimension point' ~ 2, Dimension point ~ 2, @@ -678,25 +678,25 @@ Point_ point'' 2 (NumType point), Num (NumType point), Ord (NumType point)) => [point''] -> point -> point' -> Bool -isLeft' [core] -ls core -l core -r = NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) -go ([core] -> NonEmpty core +isLeft' [core] +ls core +l core +r = NonEmpty core -> NonEmpty core -> Vector 2 (core :+ [core]) +go ([core] -> NonEmpty core forall {a}. [a] -> NonEmpty a -ne [core] -ls) NonEmpty core -rh +ne [core] +ls) NonEmpty core +rh | Bool otherwise = (core :+ [core]) -> (core :+ [core]) -> Vector 2 (core :+ [core]) forall r. r -> r -> Vector 2 r Vector2 (core -l core -> [core] -> core :+ [core] +l core -> [core] -> core :+ [core] forall core extra. core -> extra -> core :+ extra :+ [core] -ls) (core -r core -> [core] -> core :+ [core] +ls) (core +r core -> [core] -> core :+ [core] forall core extra. core -> extra -> core :+ extra :+ [core] -rs) +rs) \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Monotone.html b/haddocks/hgeometry/src/HGeometry.Polygon.Monotone.html index 26ae385dc..2597da31e 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Monotone.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Monotone.html @@ -46,20 +46,20 @@ -- | A type representing montone polygons type MonotonePolygon :: Type -> Type -type MonotonePolygon point = MonotonePolygonF (SimplePolygon point) +type MonotonePolygon point = MonotonePolygonF (SimplePolygon point) -- | Monotone polygons. A polygon is monotone in direction d if any -- line perpendicular to direction d intersects the polygon in a -- single interval. -- -data MonotonePolygonF simplePolygon = +data MonotonePolygonF simplePolygon = MonotonePolygon { forall simplePolygon. MonotonePolygonF simplePolygon -> Vector 2 (NumType simplePolygon) -monotoneDirection :: Vector 2 (NumType simplePolygon) +monotoneDirection :: Vector 2 (NumType simplePolygon) -- ^ the direction in which we are monotone , forall simplePolygon. MonotonePolygonF simplePolygon -> simplePolygon -toSimplePolygon :: simplePolygon +toSimplePolygon :: simplePolygon -- ^ Convert to a simple polygon, i.e. forget the polygon is monotone } -- deriving (NFData, Eq) @@ -68,8 +68,8 @@ -- direction v, creates a Monotone polygon out of it. All of this is unchecked. -- -- running time: O(1) -uncheckedMontonePolygon :: ( SimplePolygon_ simplePolygon point r - ) => Vector 2 r -> simplePolygon -> MonotonePolygonF simplePolygon +uncheckedMontonePolygon :: ( SimplePolygon_ simplePolygon point r + ) => Vector 2 r -> simplePolygon -> MonotonePolygonF simplePolygon uncheckedMontonePolygon :: forall simplePolygon point r. SimplePolygon_ simplePolygon point r => Vector 2 r -> simplePolygon -> MonotonePolygonF simplePolygon @@ -82,8 +82,8 @@ MonotonePolygon -type instance Dimension (MonotonePolygonF simplePolygon) = 2 -type instance NumType (MonotonePolygonF simplePolygon) = NumType simplePolygon +type instance Dimension (MonotonePolygonF simplePolygon) = 2 +type instance NumType (MonotonePolygonF simplePolygon) = NumType simplePolygon -- | Try to establish that the given simple polygon is monotone with @@ -91,25 +91,25 @@ -- -- -- \( O(n \log n) \) -asMonotonePolygon :: (SimplePolygon_ simplePolygon point r, Num r, Ord r +asMonotonePolygon :: (SimplePolygon_ simplePolygon point r, Num r, Ord r ) - => Vector 2 r - -> simplePolygon - -> Maybe (MonotonePolygonF simplePolygon) + => Vector 2 r + -> simplePolygon + -> Maybe (MonotonePolygonF simplePolygon) asMonotonePolygon :: forall simplePolygon point r. (SimplePolygon_ simplePolygon point r, Num r, Ord r) => Vector 2 r -> simplePolygon -> Maybe (MonotonePolygonF simplePolygon) -asMonotonePolygon Vector 2 r -v simplePolygon -pg +asMonotonePolygon Vector 2 r +v simplePolygon +pg | Vector 2 r -> simplePolygon -> Bool forall simplePolygon point r. (SimplePolygon_ simplePolygon point r, Num r, Ord r) => Vector 2 r -> simplePolygon -> Bool isMonotone Vector 2 r -v simplePolygon -pg = MonotonePolygonF simplePolygon +v simplePolygon +pg = MonotonePolygonF simplePolygon -> Maybe (MonotonePolygonF simplePolygon) forall a. a -> Maybe a Just (MonotonePolygonF simplePolygon @@ -124,8 +124,8 @@ -> simplePolygon -> MonotonePolygonF simplePolygon MonotonePolygon Vector 2 r Vector 2 (NumType simplePolygon) -v simplePolygon -pg +v simplePolygon +pg | Bool otherwise = Maybe (MonotonePolygonF simplePolygon) forall a. Maybe a @@ -136,20 +136,20 @@ -- cannot have more than two intersections. -- -- \( O(n \log n) \) -isMonotone :: ( SimplePolygon_ simplePolygon point r - , Num r, Ord r +isMonotone :: ( SimplePolygon_ simplePolygon point r + , Num r, Ord r ) - => Vector 2 r -> simplePolygon -> Bool + => Vector 2 r -> simplePolygon -> Bool isMonotone :: forall simplePolygon point r. (SimplePolygon_ simplePolygon point r, Num r, Ord r) => Vector 2 r -> simplePolygon -> Bool -isMonotone Vector 2 r -direction simplePolygon -pg = (point -> Bool) -> [point] -> Bool +isMonotone Vector 2 r +direction simplePolygon +pg = (point -> Bool) -> [point] -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all point -> Bool -isMonotoneAt (simplePolygon -pgsimplePolygon +isMonotoneAt (simplePolygon +pgsimplePolygon -> Getting (Endo [point]) simplePolygon point -> [point] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..Getting (Endo [point]) simplePolygon point @@ -171,9 +171,9 @@ -- line starting at the vertex and going out in the given direction -- intersects with the edges of the polygon no more than 2 times. where - isMonotoneAt :: point -> Bool -isMonotoneAt point -pt = + isMonotoneAt :: point -> Bool +isMonotoneAt point +pt = [Integer] -> Integer forall a. Num a => [a] -> a forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a @@ -181,9 +181,9 @@ -> [ClosedLineSegment point] -> [Integer] forall a b. (a -> b) -> [a] -> [b] map (point -> ClosedLineSegment point -> Integer -intersectionsThrough point -pt) (simplePolygon -pgsimplePolygon +intersectionsThrough point +pt) (simplePolygon +pgsimplePolygon -> Getting (Endo [ClosedLineSegment point]) simplePolygon @@ -210,26 +210,26 @@ <= Integer 2 - intersectionsThrough :: point -> ClosedLineSegment point -> Integer -intersectionsThrough point -pt ClosedLineSegment point -edge + intersectionsThrough :: point -> ClosedLineSegment point -> Integer +intersectionsThrough point +pt ClosedLineSegment point +edge | LinePV 2 r -line LinePV 2 r -> ClosedLineSegment point -> Bool +line LinePV 2 r -> ClosedLineSegment point -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` ClosedLineSegment point -edge = Integer +edge = Integer 1 | Bool otherwise = Integer 0 -- note that if the line is the supporting line of the edge this counts as one intersection where - line :: LinePV 2 r -line = Point 2 r -> Vector 2 r -> LinePV 2 r + line :: LinePV 2 r +line = Point 2 r -> Vector 2 r -> LinePV 2 r forall (d :: Nat) r. Point d r -> Vector d r -> LinePV d r LinePV (point -ptpoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r +ptpoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point (Point 2 r) forall point (d :: Nat) r. @@ -238,34 +238,34 @@ Lens' point (Point 2 r) asPoint) (Vector 2 r -> Vector 2 r forall {r}. Num r => Vector 2 r -> Vector 2 r -rot90 Vector 2 r -direction) - rot90 :: Vector 2 r -> Vector 2 r -rot90 (Vector2 r -x r -y) = r -> r -> Vector 2 r +rot90 Vector 2 r +direction) + rot90 :: Vector 2 r -> Vector 2 r +rot90 (Vector2 r +x r +y) = r -> r -> Vector 2 r forall r. r -> r -> Vector 2 r Vector2 (-r -y) r -x +y) r +x -- | Generate a random N-sided polygon that is monotone in a random direction. -- -- -- pre: n >= 3 -- -- \( O(n \log n) \) -randomMonotone :: (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) - => Int -> m (MonotonePolygon (Point 2 r)) +randomMonotone :: (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) + => Int -> m (MonotonePolygon (Point 2 r)) randomMonotone :: forall g (m :: * -> *) r. (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) => Int -> m (MonotonePolygon (Point 2 r)) -randomMonotone Int -n = Int -> Vector 2 r -> m (MonotonePolygon (Point 2 r)) +randomMonotone Int +n = Int -> Vector 2 r -> m (MonotonePolygon (Point 2 r)) forall g (m :: * -> *) r. (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) => Int -> Vector 2 r -> m (MonotonePolygon (Point 2 r)) randomMonotoneDirected Int -n (Vector 2 r -> m (MonotonePolygon (Point 2 r))) +n (Vector 2 r -> m (MonotonePolygon (Point 2 r))) -> m (Vector 2 r) -> m (MonotonePolygon (Point 2 r)) forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< m (Vector 2 r) @@ -296,29 +296,29 @@ -- pre: n >= 3 -- -- \( O(n \log n) \) -randomMonotoneDirected :: (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) - => Int -> Vector 2 r - -> m (MonotonePolygon (Point 2 r)) +randomMonotoneDirected :: (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) + => Int -> Vector 2 r + -> m (MonotonePolygon (Point 2 r)) randomMonotoneDirected :: forall g (m :: * -> *) r. (MonadState g m, RandomGen g, Uniform r, Ord r, Num r) => Int -> Vector 2 r -> m (MonotonePolygon (Point 2 r)) -randomMonotoneDirected Int -n Vector 2 r -direction = do - p <- StateGenM g -> m (Point 2 r) +randomMonotoneDirected Int +n Vector 2 r +direction = do + p <- StateGenM g -> m (Point 2 r) forall a g (m :: * -> *). (Uniform a, StatefulGen g m) => g -> m a forall g (m :: * -> *). StatefulGen g m => g -> m (Point 2 r) uniformM StateGenM g forall g. StateGenM g StateGenM - points <- replicateM (n-1) (uniformM StateGenM) - case monotoneFrom direction $ p :| points of - Just MonotonePolygon (Point 2 r) -pg -> MonotonePolygon (Point 2 r) -> m (MonotonePolygon (Point 2 r)) + points <- replicateM (n-1) (uniformM StateGenM) + case monotoneFrom direction $ p :| points of + Just MonotonePolygon (Point 2 r) +pg -> MonotonePolygon (Point 2 r) -> m (MonotonePolygon (Point 2 r)) forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure MonotonePolygon (Point 2 r) -pg +pg Maybe (MonotonePolygon (Point 2 r)) Nothing -> [Char] -> m (MonotonePolygon (Point 2 r)) forall a. HasCallStack => [Char] -> a @@ -331,29 +331,29 @@ -- pre: at least 3 points are given -- -- \( O(n \log n) \) -monotoneFrom :: (Ord r, Num r, Foldable1 f, Point_ point 2 r, Eq point) - => Vector 2 r -> f point -> Maybe (MonotonePolygon point) +monotoneFrom :: (Ord r, Num r, Foldable1 f, Point_ point 2 r, Eq point) + => Vector 2 r -> f point -> Maybe (MonotonePolygon point) monotoneFrom :: forall r (f :: * -> *) point. (Ord r, Num r, Foldable1 f, Point_ point 2 r, Eq point) => Vector 2 r -> f point -> Maybe (MonotonePolygon point) -monotoneFrom Vector 2 r -direction f point -pts = Vector 2 (NumType (SimplePolygon point)) +monotoneFrom Vector 2 r +direction f point +pts = Vector 2 (NumType (SimplePolygon point)) -> SimplePolygon point -> MonotonePolygonF (SimplePolygon point) forall simplePolygon. Vector 2 (NumType simplePolygon) -> simplePolygon -> MonotonePolygonF simplePolygon MonotonePolygon Vector 2 r Vector 2 (NumType (SimplePolygon point)) -direction (SimplePolygon point -> MonotonePolygonF (SimplePolygon point)) +direction (SimplePolygon point -> MonotonePolygonF (SimplePolygon point)) -> Maybe (SimplePolygon point) -> Maybe (MonotonePolygonF (SimplePolygon point)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Maybe (SimplePolygon point) -thePolygon +thePolygon where - thePolygon :: Maybe (SimplePolygon point) -thePolygon = [point] -> Maybe (SimplePolygon point) + thePolygon :: Maybe (SimplePolygon point) +thePolygon = [point] -> Maybe (SimplePolygon point) forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable f, ConstructableSimplePolygon simplePolygon point r) => @@ -363,19 +363,19 @@ ConstructableSimplePolygon (SimplePolygon point) point r) => f point -> Maybe (SimplePolygon point) fromPoints ([point -minP] [point] -> [point] -> [point] +minP] [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> [point] -rightHalf [point] -> [point] -> [point] +rightHalf [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> [point -maxP] [point] -> [point] -> [point] +maxP] [point] -> [point] -> [point] forall a. Semigroup a => a -> a -> a <> [point] -leftHalf) +leftHalf) - minP :: point -minP = (point -> point -> Ordering) -> f point -> point + minP :: point +minP = (point -> point -> Ordering) -> f point -> point forall (t :: * -> *) a. Foldable1 t => (a -> a -> Ordering) -> t a -> a @@ -384,10 +384,10 @@ (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering cmpInDirection Vector 2 r -direction) f point -pts - maxP :: point -maxP = (point -> point -> Ordering) -> f point -> point +direction) f point +pts + maxP :: point +maxP = (point -> point -> Ordering) -> f point -> point forall (t :: * -> *) a. Foldable1 t => (a -> a -> Ordering) -> t a -> a @@ -396,44 +396,44 @@ (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering cmpInDirection Vector 2 r -direction) f point -pts +direction) f point +pts -- 4 - pointsWithoutExtremes :: [point] -pointsWithoutExtremes = (point -> Bool) -> NonEmpty point -> [point] + pointsWithoutExtremes :: [point] +pointsWithoutExtremes = (point -> Bool) -> NonEmpty point -> [point] forall a. (a -> Bool) -> NonEmpty a -> [a] -NonEmpty.filter (\point -p -> point -p point -> point -> Bool +NonEmpty.filter (\point +p -> point +p point -> point -> Bool forall a. Eq a => a -> a -> Bool /= point -minP Bool -> Bool -> Bool +minP Bool -> Bool -> Bool && point -p point -> point -> Bool +p point -> point -> Bool forall a. Eq a => a -> a -> Bool /= point -maxP) (NonEmpty point -> [point]) -> NonEmpty point -> [point] +maxP) (NonEmpty point -> [point]) -> NonEmpty point -> [point] forall a b. (a -> b) -> a -> b $ f point -> NonEmpty point forall a. f a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty f point -pts +pts -- 5, 6 - ([point] -leftHalfUnsorted,[point] -rightHalfUnsorted) = (point -> Bool) -> [point] -> ([point], [point]) + ([point] +leftHalfUnsorted,[point] +rightHalfUnsorted) = (point -> Bool) -> [point] -> ([point], [point]) forall a. (a -> Bool) -> [a] -> ([a], [a]) List.partition (point -> point -> point -> Bool forall point r. (Point_ point 2 r, Ord r, Num r) => point -> point -> point -> Bool toTheLeft point -minP point -maxP) [point] -pointsWithoutExtremes - leftHalf :: [point] -leftHalf = (point -> point -> Ordering) -> [point] -> [point] +minP point +maxP) [point] +pointsWithoutExtremes + leftHalf :: [point] +leftHalf = (point -> point -> Ordering) -> [point] -> [point] forall a. (a -> a -> Ordering) -> [a] -> [a] List.sortBy ((point -> point -> Ordering) -> point -> point -> Ordering forall a b c. (a -> b -> c) -> b -> a -> c @@ -445,58 +445,58 @@ (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering cmpInDirection Vector 2 r -direction) [point] -leftHalfUnsorted - rightHalf :: [point] -rightHalf = (point -> point -> Ordering) -> [point] -> [point] +direction) [point] +leftHalfUnsorted + rightHalf :: [point] +rightHalf = (point -> point -> Ordering) -> [point] -> [point] forall a. (a -> a -> Ordering) -> [a] -> [a] List.sortBy (Vector 2 r -> point -> point -> Ordering forall r point. (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> point -> point -> Ordering cmpInDirection Vector 2 r -direction) [point] -rightHalfUnsorted +direction) [point] +rightHalfUnsorted ------------------------------------------------------------------------------------------------- -- helper functions -- for partitioning points -toTheLeft :: (Point_ point 2 r, Ord r, Num r) => point -> point -> point -> Bool +toTheLeft :: (Point_ point 2 r, Ord r, Num r) => point -> point -> point -> Bool toTheLeft :: forall point r. (Point_ point 2 r, Ord r, Num r) => point -> point -> point -> Bool -toTheLeft point -minP point -maxP point -x = point -> point -> point -> CCW +toTheLeft point +minP point +maxP point +x = point -> point -> point -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw point -minP point -maxP point -x CCW -> CCW -> Bool +minP point +maxP point +x CCW -> CCW -> Bool forall a. Eq a => a -> a -> Bool == CCW CCW -- | \( O(1) \) -- Create a random 2D vector which has a non-zero magnitude. -randomNonZeroVector :: (MonadState g m, RandomGen g, Uniform r, Eq r, Num r) - => m (Vector 2 r) +randomNonZeroVector :: (MonadState g m, RandomGen g, Uniform r, Eq r, Num r) + => m (Vector 2 r) randomNonZeroVector :: forall g (m :: * -> *) r. (MonadState g m, RandomGen g, Uniform r, Eq r, Num r) => m (Vector 2 r) randomNonZeroVector = do - v <- StateGenM g -> m (Vector 2 r) + v <- StateGenM g -> m (Vector 2 r) forall a g (m :: * -> *). (Uniform a, StatefulGen g m) => g -> m a forall g (m :: * -> *). StatefulGen g m => g -> m (Vector 2 r) uniformM StateGenM g forall g. StateGenM g StateGenM - if (quadrance v==0) + if (quadrance v==0) then randomNonZeroVector - else pure v + else pure v \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Class.html b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Class.html index 16a8fa789..454b41400 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Class.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Class.html @@ -28,10 +28,10 @@ -- | A class representing simple polygons; i.e. polygons without holes -- (and without self intersections in the boundary.) -class ( Polygon_ simplePolygon point r - , VertexIx simplePolygon ~ Int - , Point_ point 2 r - ) => SimplePolygon_ simplePolygon point r where +class ( Polygon_ simplePolygon point r + , VertexIx simplePolygon ~ Int + , Point_ point 2 r + ) => SimplePolygon_ simplePolygon point r where -- | Given the vertices of the polygon, in CCW order, constructs the -- polygon. The vertices are numbered in the order they are given. @@ -40,11 +40,11 @@ -- - at least 3 vertices, not all colinear -- - no repeated vertices -- - no self-inttersections - uncheckedFromCCWPoints :: Foldable1 f => f point -> simplePolygon + uncheckedFromCCWPoints :: Foldable1 f => f point -> simplePolygon -- | Constraints that allow us to construct a simple polygon - type ConstructableSimplePolygon simplePolygon point r :: Constraint - type ConstructableSimplePolygon simplePolygon point r = (Eq r, Num r) + type ConstructableSimplePolygon simplePolygon point r :: Constraint + type ConstructableSimplePolygon simplePolygon point r = (Eq r, Num r) -- | Given the vertices of the polygon, constructs the polygon. This -- function will make sure the polygon is a valid simple polygon, @@ -52,25 +52,25 @@ -- repeated vertices etc. -- -- In particular, it will drop repeated vertices. - fromPoints :: ( Foldable f - , ConstructableSimplePolygon simplePolygon point r + fromPoints :: ( Foldable f + , ConstructableSimplePolygon simplePolygon point r ) - => f point -> Maybe simplePolygon + => f point -> Maybe simplePolygon -- | Compute the centroid of a simple polygon. -- -- running time: \(O(n)\) - centroid :: (Fractional r, ConstructablePoint_ point' 2 r) => simplePolygon -> point' - centroid simplePolygon -poly = Vector 2 r -> point' + centroid :: (Fractional r, ConstructablePoint_ point' 2 r) => simplePolygon -> point' + centroid simplePolygon +poly = Vector 2 r -> point' forall point (d :: Nat) r. ConstructablePoint_ point d r => Vector d r -> point fromVector (Vector 2 r -> point') -> Vector 2 r -> point' forall a b. (a -> b) -> a -> b $ [Vector 2 r] -> Vector 2 r -sum' [Vector 2 r] -xs Vector 2 r -> r -> Vector 2 r +sum' [Vector 2 r] +xs Vector 2 r -> r -> Vector 2 r forall vector (d :: Nat) r. (Vector_ vector d r, Fractional r) => vector -> r -> vector @@ -83,11 +83,11 @@ Vertex simplePolygon ~ point) => simplePolygon -> r signedArea2X simplePolygon -poly) +poly) where - xs :: [Vector 2 r] -xs = [ (point -ppoint -> Getting (Vector 2 r) point (Vector 2 r) -> Vector 2 r + xs :: [Vector 2 r] +xs = [ (point +ppoint -> Getting (Vector 2 r) point (Vector 2 r) -> Vector 2 r forall s a. s -> Getting a s a -> a ^.Getting (Vector 2 r) point (Vector 2 r) forall (d :: Nat) r s. @@ -104,7 +104,7 @@ (Num r, Additive_ vector d r) => vector -> vector -> vector ^+^ point -qpoint -> Getting (Vector 2 r) point (Vector 2 r) -> Vector 2 r +qpoint -> Getting (Vector 2 r) point (Vector 2 r) -> Vector 2 r forall s a. s -> Getting a s a -> a ^.Getting (Vector 2 r) point (Vector 2 r) forall (d :: Nat) r s. @@ -121,7 +121,7 @@ (Num r, Vector_ vector d r) => vector -> r -> vector ^* (point -ppoint -> Getting r point r -> r +ppoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -131,7 +131,7 @@ xCoord r -> r -> r forall a. Num a => a -> a -> a * point -qpoint -> Getting r point r -> r +qpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -141,7 +141,7 @@ yCoord r -> r -> r forall a. Num a => a -> a -> a - point -qpoint -> Getting r point r -> r +qpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -151,7 +151,7 @@ xCoord r -> r -> r forall a. Num a => a -> a -> a * point -ppoint -> Getting r point r -> r +ppoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -159,10 +159,10 @@ IndexedLens' Int point r IndexedLens' Int point r yCoord) - | (point -p,point -q) <- simplePolygon -poly simplePolygon + | (point +p,point +q) <- simplePolygon +poly simplePolygon -> Getting (Endo [(point, point)]) simplePolygon (point, point) -> [(point, point)] forall s a. s -> Getting (Endo [a]) s a -> [a] @@ -183,8 +183,8 @@ simplePolygon (Vertex simplePolygon, Vertex simplePolygon) outerBoundaryEdges ] - sum' :: [Vector 2 r] -> Vector 2 r -sum' = (Vector 2 r -> Vector 2 r -> Vector 2 r) + sum' :: [Vector 2 r] -> Vector 2 r +sum' = (Vector 2 r -> Vector 2 r -> Vector 2 r) -> Vector 2 r -> [Vector 2 r] -> Vector 2 r forall b a. (b -> a -> b) -> b -> [a] -> b forall (t :: * -> *) b a. @@ -198,11 +198,11 @@ forall r vector (d :: Nat). (Num r, Additive_ vector d r) => vector zero -instance ( SimplePolygon_ simplePolygon point r - , Default extra +instance ( SimplePolygon_ simplePolygon point r + , Default extra ) - => SimplePolygon_ (simplePolygon :+ extra) point r where - uncheckedFromCCWPoints :: forall (f :: * -> *). + => SimplePolygon_ (simplePolygon :+ extra) point r where + uncheckedFromCCWPoints :: forall (f :: * -> *). Foldable1 f => f point -> simplePolygon :+ extra uncheckedFromCCWPoints = (simplePolygon -> extra -> simplePolygon :+ extra @@ -218,9 +218,9 @@ f point -> simplePolygon forall (f :: * -> *). Foldable1 f => f point -> simplePolygon uncheckedFromCCWPoints - type ConstructableSimplePolygon (simplePolygon :+ extra) point r = - (ConstructableSimplePolygon simplePolygon point r, Default extra) - fromPoints :: forall (f :: * -> *). + type ConstructableSimplePolygon (simplePolygon :+ extra) point r = + (ConstructableSimplePolygon simplePolygon point r, Default extra) + fromPoints :: forall (f :: * -> *). (Foldable f, ConstructableSimplePolygon (simplePolygon :+ extra) point r) => f point -> Maybe (simplePolygon :+ extra) diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Implementation.html b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Implementation.html index fe551ba6e..263bc0915 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Implementation.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Implementation.html @@ -43,19 +43,19 @@ -- since any valid simplePolygon should be in CCW order! -- -- running time: \( O(n) \) -isCounterClockwise :: (Num r, Eq r, SimplePolygon_ simplePolygon point r) - => simplePolygon -> Bool +isCounterClockwise :: (Num r, Eq r, SimplePolygon_ simplePolygon point r) + => simplePolygon -> Bool isCounterClockwise :: forall r simplePolygon point. (Num r, Eq r, SimplePolygon_ simplePolygon point r) => simplePolygon -> Bool -isCounterClockwise = (\r -x -> r -x r -> r -> Bool +isCounterClockwise = (\r +x -> r +x r -> r -> Bool forall a. Eq a => a -> a -> Bool == r -> r forall a. Num a => a -> a abs r -x) (r -> Bool) -> (simplePolygon -> r) -> simplePolygon -> Bool +x) (r -> Bool) -> (simplePolygon -> r) -> simplePolygon -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . simplePolygon -> r forall r simplePolygon point. @@ -72,20 +72,20 @@ -- since any valid simplePolygon should be in CCW order! -- -- running time: \( O(n) \) -toCounterClockwiseOrder :: (Num r, Eq r, SimplePolygon_ simplePolygon point r) - => simplePolygon -> simplePolygon +toCounterClockwiseOrder :: (Num r, Eq r, SimplePolygon_ simplePolygon point r) + => simplePolygon -> simplePolygon toCounterClockwiseOrder :: forall r simplePolygon point. (Num r, Eq r, SimplePolygon_ simplePolygon point r) => simplePolygon -> simplePolygon -toCounterClockwiseOrder simplePolygon -pg +toCounterClockwiseOrder simplePolygon +pg | simplePolygon -> Bool forall r simplePolygon point. (Num r, Eq r, SimplePolygon_ simplePolygon point r) => simplePolygon -> Bool isCounterClockwise simplePolygon -pg = simplePolygon -pg +pg = simplePolygon +pg | Bool otherwise = NonEmpty point -> simplePolygon forall simplePolygon point r (f :: * -> *). @@ -120,35 +120,35 @@ outerBoundary (simplePolygon -> simplePolygon) -> simplePolygon -> simplePolygon forall a b. (a -> b) -> a -> b $ simplePolygon -pg +pg -------------------------------------------------------------------------------- -- * Show -- | helper implementation for show -showsPrecSimplePolygon :: ( SimplePolygon_ simplePolygon point r - , Show point +showsPrecSimplePolygon :: ( SimplePolygon_ simplePolygon point r + , Show point ) => String -- ^ Polygon type name -> Int - -> simplePolygon -> ShowS + -> simplePolygon -> ShowS showsPrecSimplePolygon :: forall simplePolygon point r. (SimplePolygon_ simplePolygon point r, Show point) => String -> Int -> simplePolygon -> ShowS -showsPrecSimplePolygon String -name Int -k simplePolygon -pg = Bool -> ShowS -> ShowS +showsPrecSimplePolygon String +name Int +k simplePolygon +pg = Bool -> ShowS -> ShowS showParen (Int -k Int -> Int -> Bool +k Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int -app_prec) (ShowS -> ShowS) -> ShowS -> ShowS +app_prec) (ShowS -> ShowS) -> ShowS -> ShowS forall a b. (a -> b) -> a -> b $ String -> ShowS showString String -name ShowS -> ShowS -> ShowS +name ShowS -> ShowS -> ShowS forall b c a. (b -> c) -> (a -> b) -> a -> c . Char -> ShowS showChar Char @@ -159,7 +159,7 @@ forall a. Show a => Int -> a -> ShowS showsPrec Int 11 (simplePolygon -pgsimplePolygon +pgsimplePolygon -> Getting (Endo [point]) simplePolygon point -> [point] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..Getting (Endo [point]) simplePolygon point @@ -173,8 +173,8 @@ (VertexIx simplePolygon) simplePolygon (Vertex simplePolygon) outerBoundary) where - app_prec :: Int -app_prec = Int + app_prec :: Int +app_prec = Int 10 @@ -182,72 +182,72 @@ -- * Read -- | default implementation for readsPrec -readsPrecSimplePolygon :: forall simplePolygon point r. - ( Read point - , SimplePolygon_ simplePolygon point r +readsPrecSimplePolygon :: forall simplePolygon point r. + ( Read point + , SimplePolygon_ simplePolygon point r ) => String -- ^ constructor name - -> Int -> ReadS simplePolygon + -> Int -> ReadS simplePolygon readsPrecSimplePolygon :: forall simplePolygon point r. (Read point, SimplePolygon_ simplePolygon point r) => String -> Int -> ReadS simplePolygon -readsPrecSimplePolygon String -name Int -d = Bool -> ReadS simplePolygon -> ReadS simplePolygon +readsPrecSimplePolygon String +name Int +d = Bool -> ReadS simplePolygon -> ReadS simplePolygon forall a. Bool -> ReadS a -> ReadS a readParen (Int -d Int -> Int -> Bool +d Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int -app_prec) (ReadS simplePolygon -> ReadS simplePolygon) +app_prec) (ReadS simplePolygon -> ReadS simplePolygon) -> ReadS simplePolygon -> ReadS simplePolygon forall a b. (a -> b) -> a -> b -$ \String -r -> +$ \String +r -> [ (forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => f point -> simplePolygon -uncheckedFromCCWPoints @simplePolygon @point @r (NonEmpty point -> simplePolygon) +uncheckedFromCCWPoints @simplePolygon @point @r (NonEmpty point -> simplePolygon) -> NonEmpty point -> simplePolygon forall a b. (a -> b) -> a -> b $ [point] -> NonEmpty point forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList [point] -vs, String -t) - | (String -name', String -s) <- ReadS String +vs, String +t) + | (String +name', String +s) <- ReadS String lex String -r +r , String -name String -> String -> Bool +name String -> String -> Bool forall a. Eq a => a -> a -> Bool == String -name' - , ([point] -vs, String -t) <- ReadS [point] +name' + , ([point] +vs, String +t) <- ReadS [point] forall a. Read a => ReadS a reads String -s +s ] - where app_prec :: Int -app_prec = Int + where app_prec :: Int +app_prec = Int 10 -------------------------------------------------------------------------------- -- * Aeson -toJSONSimplePolgyon :: ( ToJSON point - , SimplePolygon_ simplePolygon point r - ) => simplePolygon -> Value +toJSONSimplePolgyon :: ( ToJSON point + , SimplePolygon_ simplePolygon point r + ) => simplePolygon -> Value toJSONSimplePolgyon :: forall point simplePolygon r. (ToJSON point, SimplePolygon_ simplePolygon point r) => simplePolygon -> Value -toJSONSimplePolgyon simplePolygon -pg = [Pair] -> Value +toJSONSimplePolgyon simplePolygon +pg = [Pair] -> Value object [ Key "tag" Key -> String -> Pair forall v. ToJSON v => Key -> v -> Pair @@ -259,7 +259,7 @@ forall v. ToJSON v => Key -> v -> Pair forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv Aeson..= (simplePolygon -pgsimplePolygon +pgsimplePolygon -> Getting (Endo [point]) simplePolygon point -> [point] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..Getting (Endo [point]) simplePolygon point @@ -275,10 +275,10 @@ ] -- instance (FromJSON r, Eq r, Num r, FromJSON p) => FromJSON (Polygon Simple p r) where -parseJSONSimplePolygon :: forall simplePolygon point r. - ( FromJSON point - , SimplePolygon_ simplePolygon point r - ) => Value -> Parser simplePolygon +parseJSONSimplePolygon :: forall simplePolygon point r. + ( FromJSON point + , SimplePolygon_ simplePolygon point r + ) => Value -> Parser simplePolygon parseJSONSimplePolygon :: forall simplePolygon point r. (FromJSON point, SimplePolygon_ simplePolygon point r) => Value -> Parser simplePolygon @@ -293,9 +293,9 @@ -> Value -> Parser simplePolygon forall a b. (a -> b) -> a -> b -$ \Object -o -> Object -o Object -> Key -> Parser String +$ \Object +o -> Object +o Object -> Key -> Parser String forall a. FromJSON a => Object -> Key -> Parser a .: Key "tag" Parser String @@ -305,8 +305,8 @@ >>= \case String "SimplePolygon" -> Object -> Parser simplePolygon -pSimple Object -o +pSimple Object +o (String _ :: String) -> String -> Parser simplePolygon forall a. String -> Parser a @@ -314,12 +314,12 @@ fail String "Not a SimplePolygon" where - pSimple :: Object -> Parser simplePolygon -pSimple Object -o = forall simplePolygon point r (f :: * -> *). + pSimple :: Object -> Parser simplePolygon +pSimple Object +o = forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => f point -> simplePolygon -uncheckedFromCCWPoints @simplePolygon @point @r (NonEmpty point -> simplePolygon) +uncheckedFromCCWPoints @simplePolygon @point @r (NonEmpty point -> simplePolygon) -> ([point] -> NonEmpty point) -> [point] -> simplePolygon forall b c a. (b -> c) -> (a -> b) -> a -> c . [point] -> NonEmpty point @@ -329,7 +329,7 @@ -> Parser [point] -> Parser simplePolygon forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object -o Object -> Key -> Parser [point] +o Object -> Key -> Parser [point] forall a. FromJSON a => Object -> Key -> Parser a .: Key "vertices" diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.InPolygon.html b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.InPolygon.html index a712cfe49..8aff1514d 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.InPolygon.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.InPolygon.html @@ -45,9 +45,9 @@ -- simpleTriangle = uncheckedFromCCWPoints . NonEmpty.fromList $ [ Point2 0 0, Point2 2 0, Point2 1 1] -- test = Point2 1 1 `inPolygon` simplePoly -data AboveCount seg = OnEdge !seg +data AboveCount seg = OnEdge !seg | NumStrictlyAbove {-# UNPACK #-} !Int - deriving (Int -> AboveCount seg -> ShowS + deriving (Int -> AboveCount seg -> ShowS [AboveCount seg] -> ShowS AboveCount seg -> String (Int -> AboveCount seg -> ShowS) @@ -65,7 +65,7 @@ show :: AboveCount seg -> String $cshowList :: forall seg. Show seg => [AboveCount seg] -> ShowS showList :: [AboveCount seg] -> ShowS -Show,AboveCount seg -> AboveCount seg -> Bool +Show,AboveCount seg -> AboveCount seg -> Bool (AboveCount seg -> AboveCount seg -> Bool) -> (AboveCount seg -> AboveCount seg -> Bool) -> Eq (AboveCount seg) @@ -77,50 +77,50 @@ /= :: AboveCount seg -> AboveCount seg -> Bool Eq) -instance Semigroup (AboveCount seg) where - l :: AboveCount seg -l@(OnEdge seg -_) <> :: AboveCount seg -> AboveCount seg -> AboveCount seg +instance Semigroup (AboveCount seg) where + l :: AboveCount seg +l@(OnEdge seg +_) <> :: AboveCount seg -> AboveCount seg -> AboveCount seg <> AboveCount seg _ = AboveCount seg -l -- ^ prefers the first segment +l -- ^ prefers the first segment AboveCount seg -_ <> r :: AboveCount seg -r@(OnEdge seg +_ <> r :: AboveCount seg +r@(OnEdge seg _) = AboveCount seg -r -- ^ already found a boundary - (NumStrictlyAbove Int -l) <> (NumStrictlyAbove Int -r) = Int -> AboveCount seg +r -- ^ already found a boundary + (NumStrictlyAbove Int +l) <> (NumStrictlyAbove Int +r) = Int -> AboveCount seg forall seg. Int -> AboveCount seg NumStrictlyAbove (Int -lInt -> Int -> Int +lInt -> Int -> Int forall a. Num a => a -> a -> a +Int -r) +r) -instance Monoid (AboveCount seg) where - mempty :: AboveCount seg +instance Monoid (AboveCount seg) where + mempty :: AboveCount seg mempty = Int -> AboveCount seg forall seg. Int -> AboveCount seg NumStrictlyAbove Int 0 -- | Types that implement a point-in-polygon test. -class HasInPolygon polygon point r | polygon -> point, point -> r where +class HasInPolygon polygon point r | polygon -> point, point -> r where -- | Check if a point lies inside a polygon, on the boundary, or outside of the -- polygon. If the point lies on the boundary we also return an edge e containing the -- point (identified by the vertex v so that e follows v in the CCW order along the -- boundary). No guarantees are given about which edge is returned if the query point -- lies on multiple edges (i.e. when it coincides with a vertex.) - inPolygon :: ( Num r, Ord r, Point_ queryPoint 2 r) - => queryPoint -> polygon -> PointLocationResultWith (VertexIx polygon) - default inPolygon :: ( Num r, Ord r, Point_ point 2 r, Point_ queryPoint 2 r - , SimplePolygon_ polygon point r + inPolygon :: ( Num r, Ord r, Point_ queryPoint 2 r) + => queryPoint -> polygon -> PointLocationResultWith (VertexIx polygon) + default inPolygon :: ( Num r, Ord r, Point_ point 2 r, Point_ queryPoint 2 r + , SimplePolygon_ polygon point r ) - => queryPoint -> polygon - -> PointLocationResultWith (VertexIx polygon) - inPolygon = queryPoint -> polygon -> PointLocationResultWith (VertexIx polygon) + => queryPoint -> polygon + -> PointLocationResultWith (VertexIx polygon) + inPolygon = queryPoint -> polygon -> PointLocationResultWith (VertexIx polygon) forall queryPoint simplePolygon point r. (Num r, Ord r, Point_ point 2 r, Point_ queryPoint 2 r, SimplePolygon_ simplePolygon point r) => @@ -156,21 +156,21 @@ -- OnBoundaryEdge 1 -- >>> Point2 20 5 `inPolygon` simplePoly -- StrictlyOutside -inSimplePolygon :: forall queryPoint simplePolygon point r. - ( Num r, Ord r, Point_ point 2 r, Point_ queryPoint 2 r - , SimplePolygon_ simplePolygon point r +inSimplePolygon :: forall queryPoint simplePolygon point r. + ( Num r, Ord r, Point_ point 2 r, Point_ queryPoint 2 r + , SimplePolygon_ simplePolygon point r ) - => queryPoint -> simplePolygon - -> PointLocationResultWith (VertexIx simplePolygon) -queryPoint -q inSimplePolygon :: forall queryPoint simplePolygon point r. + => queryPoint -> simplePolygon + -> PointLocationResultWith (VertexIx simplePolygon) +queryPoint +q inSimplePolygon :: forall queryPoint simplePolygon point r. (Num r, Ord r, Point_ point 2 r, Point_ queryPoint 2 r, SimplePolygon_ simplePolygon point r) => queryPoint -> simplePolygon -> PointLocationResultWith (VertexIx simplePolygon) -`inSimplePolygon` simplePolygon -pg = case IndexedGetting +`inSimplePolygon` simplePolygon +pg = case IndexedGetting (Int, Int) (AboveCount Int) simplePolygon (point, point) -> ((Int, Int) -> (point, point) -> AboveCount Int) -> simplePolygon @@ -195,18 +195,18 @@ simplePolygon (Vertex simplePolygon, Vertex simplePolygon) outerBoundaryEdges (Int, Int) -> (point, point) -> AboveCount Int -countAbove simplePolygon -pg of - OnEdge Int -s -> Int -> PointLocationResultWith Int +countAbove simplePolygon +pg of + OnEdge Int +s -> Int -> PointLocationResultWith Int forall edge. edge -> PointLocationResultWith edge OnBoundaryEdge Int -s - NumStrictlyAbove Int -m | Int -> Bool +s + NumStrictlyAbove Int +m | Int -> Bool forall a. Integral a => a -> Bool odd Int -m -> PointLocationResultWith Int +m -> PointLocationResultWith Int PointLocationResultWith (VertexIx simplePolygon) forall edge. PointLocationResultWith edge StrictlyInside @@ -222,13 +222,13 @@ -- (e.g. the <=> does not hold in that case). If we discover q lies -- on an edge e, we actually report that. where - countAbove :: (Int, Int) -> (point, point) -> AboveCount Int -countAbove (Int -i,Int -_) (point -u,point -v) = case (point -upoint -> Getting r point r -> r + countAbove :: (Int, Int) -> (point, point) -> AboveCount Int +countAbove (Int +i,Int +_) (point +u,point +v) = case (point +upoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -238,7 +238,7 @@ xCoord) r -> r -> Ordering forall a. Ord a => a -> a -> Ordering `compare` (point -vpoint -> Getting r point r -> r +vpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -248,48 +248,48 @@ xCoord) of Ordering EQ | point -> point -> Bool -onVerticalEdge point -u point -v -> Int -> AboveCount Int +onVerticalEdge point +u point +v -> Int -> AboveCount Int forall seg. seg -> AboveCount seg OnEdge Int -i +i | Bool otherwise -> AboveCount Int forall a. Monoid a => a mempty Ordering LT -> Int -> AnEndPoint point -> AnEndPoint point -> AboveCount Int -countAbove' Int -i (point -> AnEndPoint point +countAbove' Int +i (point -> AnEndPoint point forall r. r -> AnEndPoint r AnClosedE point -u) (point -> AnEndPoint point +u) (point -> AnEndPoint point forall r. r -> AnEndPoint r AnOpenE point -v) +v) Ordering GT -> Int -> AnEndPoint point -> AnEndPoint point -> AboveCount Int -countAbove' Int -i (point -> AnEndPoint point +countAbove' Int +i (point -> AnEndPoint point forall r. r -> AnEndPoint r AnOpenE point -v) (point -> AnEndPoint point +v) (point -> AnEndPoint point forall r. r -> AnEndPoint r AnClosedE point -u) +u) -- count the edge if q - countAbove' :: Int -> AnEndPoint point -> AnEndPoint point -> AboveCount Int -countAbove' Int -i AnEndPoint point -l AnEndPoint point -r + countAbove' :: Int -> AnEndPoint point -> AnEndPoint point -> AboveCount Int +countAbove' Int +i AnEndPoint point +l AnEndPoint point +r | (r -> Point 1 r forall r. r -> Point 1 r Point1 (r -> Point 1 r) -> r -> Point 1 r forall a b. (a -> b) -> a -> b $ queryPoint -qqueryPoint -> Getting r queryPoint r -> r +qqueryPoint -> Getting r queryPoint r -> r forall s a. s -> Getting a s a -> a ^.Getting r queryPoint r forall (d :: Nat) point r. @@ -311,15 +311,15 @@ forall {k} (endPoint :: k -> *) (r :: k). endPoint r -> endPoint r -> Interval endPoint r Interval AnEndPoint point -l AnEndPoint point -r) +l AnEndPoint point +r) = case Point 2 r -> Point 2 r -> Point 2 r -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw (AnEndPoint point -lAnEndPoint point +lAnEndPoint point -> Getting (Point 2 r) (AnEndPoint point) (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -348,7 +348,7 @@ Lens' point (Point d r) Lens' point (Point 2 r) asPoint) (queryPoint -qqueryPoint +qqueryPoint -> Getting (Point 2 r) queryPoint (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) queryPoint (Point 2 r) @@ -357,7 +357,7 @@ Lens' point (Point d r) Lens' queryPoint (Point 2 r) asPoint) (AnEndPoint point -rAnEndPoint point +rAnEndPoint point -> Getting (Point 2 r) (AnEndPoint point) (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) @@ -395,7 +395,7 @@ CoLinear -> Int -> AboveCount Int forall seg. seg -> AboveCount seg OnEdge Int -i +i CCW CCW -> AboveCount Int forall a. Monoid a => a @@ -409,15 +409,15 @@ -- test if q lies on the vertical edge defined by u and v - onVerticalEdge :: point -> point -> Bool -onVerticalEdge point -u point -v = let yr :: ClosedInterval r -yr = forall interval r. + onVerticalEdge :: point -> point -> Bool +onVerticalEdge point +u point +v = let yr :: ClosedInterval r +yr = forall interval r. (ConstructableClosedInterval_ interval r, Ord r) => r -> r -> interval -buildClosedInterval @(ClosedInterval r) (point -upoint -> Getting r point r -> r +buildClosedInterval @(ClosedInterval r) (point +upoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -425,7 +425,7 @@ IndexedLens' Int point r IndexedLens' Int point r yCoord) (point -vpoint -> Getting r point r -> r +vpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -434,7 +434,7 @@ IndexedLens' Int point r yCoord) in queryPoint -qqueryPoint -> Getting r queryPoint r -> r +qqueryPoint -> Getting r queryPoint r -> r forall s a. s -> Getting a s a -> a ^.Getting r queryPoint r forall (d :: Nat) point r. @@ -444,7 +444,7 @@ xCoord r -> r -> Bool forall a. Eq a => a -> a -> Bool == point -upoint -> Getting r point r -> r +upoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -457,7 +457,7 @@ Point1 (r -> Point 1 r) -> r -> Point 1 r forall a b. (a -> b) -> a -> b $ queryPoint -qqueryPoint -> Getting r queryPoint r -> r +qqueryPoint -> Getting r queryPoint r -> r forall s a. s -> Getting a s a -> a ^.Getting r queryPoint r forall (d :: Nat) point r. @@ -467,7 +467,7 @@ yCoord) Point 1 r -> ClosedInterval r -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` ClosedInterval r -yr +yr diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Sample.html b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Sample.html index 6b554f1c8..45aeabf54 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Sample.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Sample.html @@ -35,9 +35,9 @@ -------------------------------------------------------------------------------- -- | A data structure that can be used to efficiently sample values of type v. -data Sampler w v = Sampler !w -- ^ the total weight - (Map.Map w v) - deriving (Int -> Sampler w v -> ShowS +data Sampler w v = Sampler !w -- ^ the total weight + (Map.Map w v) + deriving (Int -> Sampler w v -> ShowS [Sampler w v] -> ShowS Sampler w v -> String (Int -> Sampler w v -> ShowS) @@ -55,7 +55,7 @@ show :: Sampler w v -> String $cshowList :: forall w v. (Show w, Show v) => [Sampler w v] -> ShowS showList :: [Sampler w v] -> ShowS -Show,ReadPrec [Sampler w v] +Show,ReadPrec [Sampler w v] ReadPrec (Sampler w v) Int -> ReadS (Sampler w v) ReadS [Sampler w v] @@ -79,7 +79,7 @@ readPrec :: ReadPrec (Sampler w v) $creadListPrec :: forall w v. (Ord w, Read w, Read v) => ReadPrec [Sampler w v] readListPrec :: ReadPrec [Sampler w v] -Read,Sampler w v -> Sampler w v -> Bool +Read,Sampler w v -> Sampler w v -> Bool (Sampler w v -> Sampler w v -> Bool) -> (Sampler w v -> Sampler w v -> Bool) -> Eq (Sampler w v) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -88,7 +88,7 @@ == :: Sampler w v -> Sampler w v -> Bool $c/= :: forall w v. (Eq w, Eq v) => Sampler w v -> Sampler w v -> Bool /= :: Sampler w v -> Sampler w v -> Bool -Eq,(forall a b. (a -> b) -> Sampler w a -> Sampler w b) +Eq,(forall a b. (a -> b) -> Sampler w a -> Sampler w b) -> (forall a b. a -> Sampler w b -> Sampler w a) -> Functor (Sampler w) forall a b. a -> Sampler w b -> Sampler w a @@ -102,7 +102,7 @@ fmap :: forall a b. (a -> b) -> Sampler w a -> Sampler w b $c<$ :: forall w a b. a -> Sampler w b -> Sampler w a <$ :: forall a b. a -> Sampler w b -> Sampler w a -Functor,(forall m. Monoid m => Sampler w m -> m) +Functor,(forall m. Monoid m => Sampler w m -> m) -> (forall m a. Monoid m => (a -> m) -> Sampler w a -> m) -> (forall m a. Monoid m => (a -> m) -> Sampler w a -> m) -> (forall a b. (a -> b -> b) -> b -> Sampler w a -> b) @@ -197,17 +197,17 @@ product :: forall a. Num a => Sampler w a -> a Foldable) -instance Traversable (Sampler w) where - traverse :: forall (f :: * -> *) a b. +instance Traversable (Sampler w) where + traverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> Sampler w a -> f (Sampler w b) -traverse a -> f b -f (Sampler w -w Map w a -m) = w -> Map w b -> Sampler w b +traverse a -> f b +f (Sampler w +w Map w a +m) = w -> Map w b -> Sampler w b forall w v. w -> Map w v -> Sampler w v Sampler w -w (Map w b -> Sampler w b) -> f (Map w b) -> f (Sampler w b) +w (Map w b -> Sampler w b) -> f (Map w b) -> f (Sampler w b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (a -> f b) -> Map w a -> f (Map w b) forall (t :: * -> *) (f :: * -> *) a b. @@ -217,20 +217,20 @@ Applicative f => (a -> f b) -> Map w a -> f (Map w b) traverse a -> f b -f Map w a -m +f Map w a +m -- | Build a sampler -- -- O(n) -buildSampler :: (Foldable1 nonEmpty, Num w, Ord w) => nonEmpty (w, v) -> Sampler w v +buildSampler :: (Foldable1 nonEmpty, Num w, Ord w) => nonEmpty (w, v) -> Sampler w v buildSampler :: forall (nonEmpty :: * -> *) w v. (Foldable1 nonEmpty, Num w, Ord w) => nonEmpty (w, v) -> Sampler w v -buildSampler nonEmpty (w, v) -xs = let Weighted w -total [(w, v)] -xs' = ((w, v) -> Weighted w [(w, v)] -> Weighted w [(w, v)]) +buildSampler nonEmpty (w, v) +xs = let Weighted w +total [(w, v)] +xs' = ((w, v) -> Weighted w [(w, v)] -> Weighted w [(w, v)]) -> Weighted w [(w, v)] -> nonEmpty (w, v) -> Weighted w [(w, v)] forall a b. (a -> b -> b) -> b -> nonEmpty a -> b forall (t :: * -> *) a b. @@ -240,38 +240,38 @@ forall {a} {b}. Num a => (a, b) -> Weighted a [(a, b)] -> Weighted a [(a, b)] -f (w -> [(w, v)] -> Weighted w [(w, v)] +f (w -> [(w, v)] -> Weighted w [(w, v)] forall w v. w -> v -> Weighted w v Weighted w 0 []) nonEmpty (w, v) -xs - f :: (a, b) -> Weighted a [(a, b)] -> Weighted a [(a, b)] -f (a -w,b -x) (Weighted a -t [(a, b)] -acc) = a -> [(a, b)] -> Weighted a [(a, b)] +xs + f :: (a, b) -> Weighted a [(a, b)] -> Weighted a [(a, b)] +f (a +w,b +x) (Weighted a +t [(a, b)] +acc) = a -> [(a, b)] -> Weighted a [(a, b)] forall w v. w -> v -> Weighted w v Weighted (a -wa -> a -> a +wa -> a -> a forall a. Num a => a -> a -> a +a -t) ((a -t,b -x)(a, b) -> [(a, b)] -> [(a, b)] +t) ((a +t,b +x)(a, b) -> [(a, b)] -> [(a, b)] forall a. a -> [a] -> [a] :[(a, b)] -acc) +acc) in w -> Map w v -> Sampler w v forall w v. w -> Map w v -> Sampler w v Sampler w -total ([(w, v)] -> Map w v +total ([(w, v)] -> Map w v forall k a. Eq k => [(k, a)] -> Map k a Map.fromDescList [(w, v)] -xs') +xs') -- | Helper data type -data Weighted w v = Weighted !w v deriving (Int -> Weighted w v -> ShowS +data Weighted w v = Weighted !w v deriving (Int -> Weighted w v -> ShowS [Weighted w v] -> ShowS Weighted w v -> String (Int -> Weighted w v -> ShowS) @@ -294,19 +294,19 @@ -- | Sample a value from the sampler -- -- \(O(\log n)\) -sample :: (StatefulGen g m, Ord w, Num w, UniformRange w) - => Sampler w v -> g -> m v +sample :: (StatefulGen g m, Ord w, Num w, UniformRange w) + => Sampler w v -> g -> m v sample :: forall g (m :: * -> *) w v. (StatefulGen g m, Ord w, Num w, UniformRange w) => Sampler w v -> g -> m v -sample (Sampler w -total Map w v -m) g -g = (v -> ((w, v) -> v) -> Maybe (w, v) -> v +sample (Sampler w +total Map w v +m) g +g = (v -> ((w, v) -> v) -> Maybe (w, v) -> v forall b a. b -> (a -> b) -> Maybe a -> b maybe v forall {a}. a -err (w, v) -> v +err (w, v) -> v forall a b. (a, b) -> b snd (Maybe (w, v) -> v) -> (w -> Maybe (w, v)) -> w -> v forall b c a. (b -> c) -> (a -> b) -> a -> c @@ -315,7 +315,7 @@ flip w -> Map w v -> Maybe (w, v) forall k v. Ord k => k -> Map k v -> Maybe (k, v) Map.lookupLE Map w v -m) (w -> v) -> m w -> m v +m) (w -> v) -> m w -> m v forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (w, w) -> g -> m w forall a g (m :: * -> *). @@ -324,10 +324,10 @@ forall g (m :: * -> *). StatefulGen g m => (w, w) -> g -> m w uniformRM (w 0, w -total) g -g - where err :: a -err = String -> a +total) g +g + where err :: a +err = String -> a forall a. HasCallStack => String -> a error String "sample: absurd." @@ -340,8 +340,8 @@ -- with probability proportional to its area. -- -- \(O(N\log N\), where \(N\) is the total size of all polygons. -triangleSampler :: (SimplePolygon_ polygon point r, Num r, Ord r, Foldable1 nonEmpty) - => nonEmpty polygon -> Sampler r (Triangle point) +triangleSampler :: (SimplePolygon_ polygon point r, Num r, Ord r, Foldable1 nonEmpty) + => nonEmpty polygon -> Sampler r (Triangle point) triangleSampler :: forall polygon point r (nonEmpty :: * -> *). (SimplePolygon_ polygon point r, Num r, Ord r, Foldable1 nonEmpty) => @@ -359,14 +359,14 @@ -> NonEmpty (Triangle point) -> NonEmpty (r, Triangle point) forall a b. (a -> b) -> NonEmpty a -> NonEmpty b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Triangle point -tri -> (Triangle point -> r +fmap (\Triangle point +tri -> (Triangle point -> r forall r point triangle. (Num r, Point_ point 2 r, Triangle_ triangle point) => triangle -> r triangleSignedArea2X Triangle point -tri, Triangle point -tri)) +tri, Triangle point +tri)) (NonEmpty (Triangle point) -> NonEmpty (r, Triangle point)) -> (nonEmpty polygon -> NonEmpty (Triangle point)) -> nonEmpty polygon @@ -385,21 +385,21 @@ toTriangles -- | Sample a point -samplePoint :: (Point_ point 2 r, StatefulGen g m, Real r, Ord r, UniformRange r) - => Sampler r (Triangle point) -> g -> m (Point 2 Double) +samplePoint :: (Point_ point 2 r, StatefulGen g m, Real r, Ord r, UniformRange r) + => Sampler r (Triangle point) -> g -> m (Point 2 Double) samplePoint :: forall point r g (m :: * -> *). (Point_ point 2 r, StatefulGen g m, Real r, Ord r, UniformRange r) => Sampler r (Triangle point) -> g -> m (Point 2 Double) -samplePoint Sampler r (Triangle point) -sampler g -g = Sampler r (Triangle point) -> g -> m (Triangle point) +samplePoint Sampler r (Triangle point) +sampler g +g = Sampler r (Triangle point) -> g -> m (Triangle point) forall g (m :: * -> *) w v. (StatefulGen g m, Ord w, Num w, UniformRange w) => Sampler w v -> g -> m v sample Sampler r (Triangle point) -sampler g -g m (Triangle point) +sampler g +g m (Triangle point) -> (Triangle point -> m (Point 2 Double)) -> m (Point 2 Double) forall a b. m a -> (a -> m b) -> m b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b @@ -411,23 +411,23 @@ (Point_ point 2 r, Real r, StatefulGen g m) => Triangle point -> g -> m (Point 2 Double) sampleTriangle g -g +g -- | Unfiormly samples a point from a set of polygons. You may want to build a -- pointSampler if the goal is to sample multiple points. -- -- \(O(N\log N\), where \(N\) is the total size of all polygons. -samplePolygons :: ( SimplePolygon_ polygon point r, StatefulGen g m - , Foldable1 nonEmpty, Real r, Ord r, UniformRange r +samplePolygons :: ( SimplePolygon_ polygon point r, StatefulGen g m + , Foldable1 nonEmpty, Real r, Ord r, UniformRange r ) - => nonEmpty polygon -> g -> m (Point 2 Double) + => nonEmpty polygon -> g -> m (Point 2 Double) samplePolygons :: forall polygon point r g (m :: * -> *) (nonEmpty :: * -> *). (SimplePolygon_ polygon point r, StatefulGen g m, Foldable1 nonEmpty, Real r, Ord r, UniformRange r) => nonEmpty polygon -> g -> m (Point 2 Double) -samplePolygons nonEmpty polygon -pgs g -g = (Sampler r (Triangle point) -> g -> m (Point 2 Double)) +samplePolygons nonEmpty polygon +pgs g +g = (Sampler r (Triangle point) -> g -> m (Point 2 Double)) -> g -> Sampler r (Triangle point) -> m (Point 2 Double) forall a b c. (a -> b -> c) -> b -> a -> c flip Sampler r (Triangle point) -> g -> m (Point 2 Double) @@ -436,7 +436,7 @@ UniformRange r) => Sampler r (Triangle point) -> g -> m (Point 2 Double) samplePoint g -g (Sampler r (Triangle point) -> m (Point 2 Double)) +g (Sampler r (Triangle point) -> m (Point 2 Double)) -> Sampler r (Triangle point) -> m (Point 2 Double) forall a b. (a -> b) -> a -> b $ nonEmpty polygon -> Sampler r (Triangle point) @@ -445,20 +445,20 @@ Foldable1 nonEmpty) => nonEmpty polygon -> Sampler r (Triangle point) triangleSampler nonEmpty polygon -pgs +pgs -- | Uniformly samples a point in a polygon. -- -- \(O(n\log n )\) -samplePolygon :: ( SimplePolygon_ polygon point r, Ord r, Real r, UniformRange r - , StatefulGen g m) - => polygon -> g -> m (Point 2 Double) +samplePolygon :: ( SimplePolygon_ polygon point r, Ord r, Real r, UniformRange r + , StatefulGen g m) + => polygon -> g -> m (Point 2 Double) samplePolygon :: forall polygon point r g (m :: * -> *). (SimplePolygon_ polygon point r, Ord r, Real r, UniformRange r, StatefulGen g m) => polygon -> g -> m (Point 2 Double) -samplePolygon polygon -p = NonEmpty polygon -> g -> m (Point 2 Double) +samplePolygon polygon +p = NonEmpty polygon -> g -> m (Point 2 Double) forall polygon point r g (m :: * -> *) (nonEmpty :: * -> *). (SimplePolygon_ polygon point r, StatefulGen g m, Foldable1 nonEmpty, Real r, Ord r, UniformRange r) => @@ -467,14 +467,14 @@ -> NonEmpty polygon -> g -> m (Point 2 Double) forall a b. (a -> b) -> a -> b $ polygon -p polygon -> [polygon] -> NonEmpty polygon +p polygon -> [polygon] -> NonEmpty polygon forall a. a -> [a] -> NonEmpty a NonEmpty.:| [] -- | Uniformly samples a triangle in \(O(1)\) time. -sampleTriangle :: ( Point_ point 2 r, Real r - , StatefulGen g m) - => Triangle point -> g -> m (Point 2 Double) +sampleTriangle :: ( Point_ point 2 r, Real r + , StatefulGen g m) + => Triangle point -> g -> m (Point 2 Double) sampleTriangle :: forall point r g (m :: * -> *). (Point_ point 2 r, Real r, StatefulGen g m) => Triangle point -> g -> m (Point 2 Double) @@ -486,13 +486,13 @@ forall point r. (Point_ point 2 r, Real r) => point -> Point 2 Double -doubleP -> Triangle Point 2 Double -v1 Point 2 Double -v2 Point 2 Double -v3) g -g = +doubleP -> Triangle Point 2 Double +v1 Point 2 Double +v2 Point 2 Double +v3) g +g = Double -> Double -> Point 2 Double -f (Double -> Double -> Point 2 Double) +f (Double -> Double -> Point 2 Double) -> m Double -> m (Double -> Point 2 Double) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> (Double, Double) -> g -> m Double @@ -505,7 +505,7 @@ uniformRM (Double 0, Double 1) g -g m (Double -> Point 2 Double) -> m Double -> m (Point 2 Double) +g m (Double -> Point 2 Double) -> m Double -> m (Point 2 Double) forall a b. m (a -> b) -> m a -> m b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (Double, Double) -> g -> m Double @@ -518,75 +518,75 @@ uniformRM (Double 0, Double 1) g -g +g where - f :: Double -> Double -> Point 2 Double - f :: Double -> Double -> Point 2 Double -f Double -a' Double -b' = let (Double -a, Double -b) = if Double -a' Double -> Double -> Double + f :: Double -> Double -> Point 2 Double + f :: Double -> Double -> Point 2 Double +f Double +a' Double +b' = let (Double +a, Double +b) = if Double +a' Double -> Double -> Double forall a. Num a => a -> a -> a + Double -b' Double -> Double -> Bool +b' Double -> Double -> Bool forall a. Ord a => a -> a -> Bool > Double 1 then (Double 1 Double -> Double -> Double forall a. Num a => a -> a -> a - Double -a', Double +a', Double 1 Double -> Double -> Double forall a. Num a => a -> a -> a - Double -b') else (Double -a', Double -b') - u :: Vector 2 Double -u = Point 2 Double -v2 Point 2 Double -> Point 2 Double -> Vector 2 Double +b') else (Double +a', Double +b') + u :: Vector 2 Double +u = Point 2 Double +v2 Point 2 Double -> Point 2 Double -> Vector 2 Double forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. Point 2 Double -v1 - v :: Vector 2 Double -v = Point 2 Double -v3 Point 2 Double -> Point 2 Double -> Vector 2 Double +v1 + v :: Vector 2 Double +v = Point 2 Double +v3 Point 2 Double -> Point 2 Double -> Vector 2 Double forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. Point 2 Double -v1 +v1 in Point 2 Double -v1 Point 2 Double -> Vector 2 Double -> Point 2 Double +v1 Point 2 Double -> Vector 2 Double -> Point 2 Double forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> Vector d r -> point .+^ (Double -aDouble -> Vector 2 Double -> Vector 2 Double +aDouble -> Vector 2 Double -> Vector 2 Double forall r vector (d :: Nat). (Num r, Vector_ vector d r) => r -> vector -> vector *^Vector 2 Double -u) Point 2 Double -> Vector 2 Double -> Point 2 Double +u) Point 2 Double -> Vector 2 Double -> Point 2 Double forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> Vector d r -> point .+^ (Double -bDouble -> Vector 2 Double -> Vector 2 Double +bDouble -> Vector 2 Double -> Vector 2 Double forall r vector (d :: Nat). (Num r, Vector_ vector d r) => r -> vector -> vector *^Vector 2 Double -v) +v) -- the idea is based on -- https://blogs.sas.com/content/iml/2020/10/19/random-points-in-triangle.html -- | Convert to a point with double coordiantes -doubleP :: (Point_ point 2 r, Real r) => point -> Point 2 Double +doubleP :: (Point_ point 2 r, Real r) => point -> Point 2 Double doubleP :: forall point r. (Point_ point 2 r, Real r) => point -> Point 2 Double @@ -620,8 +620,8 @@ asPoint -- | Triangulates a polygon \(O(n \log n)\). -toTriangles :: (SimplePolygon_ polygon point r, Num r, Ord r) - => polygon -> NonEmpty.NonEmpty (Triangle point) +toTriangles :: (SimplePolygon_ polygon point r, Num r, Ord r) + => polygon -> NonEmpty.NonEmpty (Triangle point) toTriangles :: forall polygon point r. (SimplePolygon_ polygon point r, Num r, Ord r) => polygon -> NonEmpty (Triangle point) diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Type.html b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Type.html index 92bcd7d38..64375420d 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Type.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.Type.html @@ -45,8 +45,8 @@ -------------------------------------------------------------------------------- -- | Simple polygons just store their vertices in CCCW order -newtype SimplePolygonF f point = MkSimplePolygon (f point) - deriving stock ((forall x. +newtype SimplePolygonF f point = MkSimplePolygon (f point) + deriving stock ((forall x. SimplePolygonF f point -> Rep (SimplePolygonF f point) x) -> (forall x. Rep (SimplePolygonF f point) x -> SimplePolygonF f point) @@ -66,7 +66,7 @@ Rep (SimplePolygonF f point) x -> SimplePolygonF f point to :: forall x. Rep (SimplePolygonF f point) x -> SimplePolygonF f point Generic) - deriving newtype (SimplePolygonF f point -> () + deriving newtype (SimplePolygonF f point -> () (SimplePolygonF f point -> ()) -> NFData (SimplePolygonF f point) forall a. (a -> ()) -> NFData a forall k (f :: k -> *) (point :: k). @@ -76,7 +76,7 @@ NFData (f point) => SimplePolygonF f point -> () rnf :: SimplePolygonF f point -> () -NFData,(forall a b. (a -> b) -> SimplePolygonF f a -> SimplePolygonF f b) +NFData,(forall a b. (a -> b) -> SimplePolygonF f a -> SimplePolygonF f b) -> (forall a b. a -> SimplePolygonF f b -> SimplePolygonF f a) -> Functor (SimplePolygonF f) forall a b. a -> SimplePolygonF f b -> SimplePolygonF f a @@ -98,7 +98,7 @@ Functor f => a -> SimplePolygonF f b -> SimplePolygonF f a <$ :: forall a b. a -> SimplePolygonF f b -> SimplePolygonF f a -Functor,(forall m. Monoid m => SimplePolygonF f m -> m) +Functor,(forall m. Monoid m => SimplePolygonF f m -> m) -> (forall m a. Monoid m => (a -> m) -> SimplePolygonF f a -> m) -> (forall m a. Monoid m => (a -> m) -> SimplePolygonF f a -> m) -> (forall a b. (a -> b -> b) -> b -> SimplePolygonF f a -> b) @@ -235,7 +235,7 @@ (Foldable f, Num a) => SimplePolygonF f a -> a product :: forall a. Num a => SimplePolygonF f a -> a -Foldable,Foldable (SimplePolygonF f) +Foldable,Foldable (SimplePolygonF f) Foldable (SimplePolygonF f) => (forall m. Semigroup m => SimplePolygonF f m -> m) -> (forall m a. Semigroup m => (a -> m) -> SimplePolygonF f a -> m) @@ -340,7 +340,7 @@ Foldable1 f => (a -> b) -> (a -> b -> b) -> SimplePolygonF f a -> b foldrMap1' :: forall a b. (a -> b) -> (a -> b -> b) -> SimplePolygonF f a -> b -Foldable1,SimplePolygonF f point -> SimplePolygonF f point -> Bool +Foldable1,SimplePolygonF f point -> SimplePolygonF f point -> Bool (SimplePolygonF f point -> SimplePolygonF f point -> Bool) -> (SimplePolygonF f point -> SimplePolygonF f point -> Bool) -> Eq (SimplePolygonF f point) @@ -356,7 +356,7 @@ Eq (f point) => SimplePolygonF f point -> SimplePolygonF f point -> Bool /= :: SimplePolygonF f point -> SimplePolygonF f point -> Bool -Eq,Eq (SimplePolygonF f point) +Eq,Eq (SimplePolygonF f point) Eq (SimplePolygonF f point) => (SimplePolygonF f point -> SimplePolygonF f point -> Ordering) -> (SimplePolygonF f point -> SimplePolygonF f point -> Bool) @@ -427,7 +427,7 @@ -> SimplePolygonF f point -> SimplePolygonF f point min :: SimplePolygonF f point -> SimplePolygonF f point -> SimplePolygonF f point -Ord,(forall a. Eq a => Eq (SimplePolygonF f a)) => +Ord,(forall a. Eq a => Eq (SimplePolygonF f a)) => (forall a b. (a -> b -> Bool) -> SimplePolygonF f a -> SimplePolygonF f b -> Bool) @@ -451,7 +451,7 @@ liftEq :: forall a b. (a -> b -> Bool) -> SimplePolygonF f a -> SimplePolygonF f b -> Bool -Eq1,Eq1 (SimplePolygonF f) +Eq1,Eq1 (SimplePolygonF f) (Eq1 (SimplePolygonF f), forall a. Ord a => Ord (SimplePolygonF f a)) => (forall a b. @@ -485,8 +485,8 @@ -- | By default we store simple polygons as non-empty circular vectors. type SimplePolygon = SimplePolygonF (Cyclic NonEmptyVector) -type instance Dimension (SimplePolygonF f point) = 2 -type instance NumType (SimplePolygonF f point) = NumType point +type instance Dimension (SimplePolygonF f point) = 2 +type instance NumType (SimplePolygonF f point) = NumType point -- TODO: should we use allow cyclic shifts? -- deriving instance Eq (f point) => Eq (SimplePolygonF f point) @@ -494,8 +494,8 @@ -- | Access the container -_SimplePolygonF :: Iso (SimplePolygonF f point) (SimplePolygonF f' point') - (f point) (f' point' ) +_SimplePolygonF :: Iso (SimplePolygonF f point) (SimplePolygonF f' point') + (f point) (f' point' ) _SimplePolygonF :: forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => @@ -509,20 +509,20 @@ (f point) (f' point') forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b -iso (\(MkSimplePolygon f point -vs) -> f point -vs) f' point' -> SimplePolygonF f' point' +iso (\(MkSimplePolygon f point +vs) -> f point +vs) f' point' -> SimplePolygonF f' point' forall {k} (f :: k -> *) (point :: k). f point -> SimplePolygonF f point MkSimplePolygon -instance Traversable f => Traversable (SimplePolygonF f) where - traverse :: forall (f :: * -> *) a b. +instance Traversable f => Traversable (SimplePolygonF f) where + traverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> SimplePolygonF f a -> f (SimplePolygonF f b) -traverse a -> f b -f (MkSimplePolygon f a -vs) = f b -> SimplePolygonF f b +traverse a -> f b +f (MkSimplePolygon f a +vs) = f b -> SimplePolygonF f b forall {k} (f :: k -> *) (point :: k). f point -> SimplePolygonF f point MkSimplePolygon (f b -> SimplePolygonF f b) -> f (f b) -> f (SimplePolygonF f b) @@ -535,15 +535,15 @@ Applicative f => (a -> f b) -> f a -> f (f b) traverse a -> f b -f f a -vs -instance Traversable1 f => Traversable1 (SimplePolygonF f) where - traverse1 :: forall (f :: * -> *) a b. +f f a +vs +instance Traversable1 f => Traversable1 (SimplePolygonF f) where + traverse1 :: forall (f :: * -> *) a b. Apply f => (a -> f b) -> SimplePolygonF f a -> f (SimplePolygonF f b) -traverse1 a -> f b -f (MkSimplePolygon f a -vs) = f b -> SimplePolygonF f b +traverse1 a -> f b +f (MkSimplePolygon f a +vs) = f b -> SimplePolygonF f b forall {k} (f :: k -> *) (point :: k). f point -> SimplePolygonF f point MkSimplePolygon (f b -> SimplePolygonF f b) -> f (f b) -> f (SimplePolygonF f b) @@ -554,20 +554,20 @@ (a -> f b) -> t a -> f (t b) forall (f :: * -> *) a b. Apply f => (a -> f b) -> f a -> f (f b) traverse1 a -> f b -f f a -vs +f f a +vs -instance (ShiftedEq (f point), ElemCyclic (f point) ~ point - ) => ShiftedEq (SimplePolygonF f point) where - type ElemCyclic (SimplePolygonF f point) = point - isShiftOf :: Eq (ElemCyclic (SimplePolygonF f point)) => +instance (ShiftedEq (f point), ElemCyclic (f point) ~ point + ) => ShiftedEq (SimplePolygonF f point) where + type ElemCyclic (SimplePolygonF f point) = point + isShiftOf :: Eq (ElemCyclic (SimplePolygonF f point)) => SimplePolygonF f point -> SimplePolygonF f point -> Bool -isShiftOf SimplePolygonF f point -p SimplePolygonF f point -q = f point -> f point -> Bool +isShiftOf SimplePolygonF f point +p SimplePolygonF f point +q = f point -> f point -> Bool forall t. (ShiftedEq t, Eq (ElemCyclic t)) => t -> t -> Bool isShiftOf (SimplePolygonF f point -pSimplePolygonF f point +pSimplePolygonF f point -> Getting (f point) (SimplePolygonF f point) (f point) -> f point forall s a. s -> Getting a s a -> a ^.Getting (f point) (SimplePolygonF f point) (f point) @@ -577,7 +577,7 @@ p (f point) (f (f' point')) -> p (SimplePolygonF f point) (f (SimplePolygonF f' point')) _SimplePolygonF) (SimplePolygonF f point -qSimplePolygonF f point +qSimplePolygonF f point -> Getting (f point) (SimplePolygonF f point) (f point) -> f point forall s a. s -> Getting a s a -> a ^.Getting (f point) (SimplePolygonF f point) (f point) @@ -588,10 +588,10 @@ -> p (SimplePolygonF f point) (f (SimplePolygonF f' point')) _SimplePolygonF) -instance (Foldable f, ToJSON point) => ToJSON (SimplePolygonF f point) where - toJSON :: SimplePolygonF f point -> Value -toJSON SimplePolygonF f point -pg = [Pair] -> Value +instance (Foldable f, ToJSON point) => ToJSON (SimplePolygonF f point) where + toJSON :: SimplePolygonF f point -> Value +toJSON SimplePolygonF f point +pg = [Pair] -> Value object [ Key "tag" Key -> String -> Pair forall v. ToJSON v => Key -> v -> Pair @@ -606,11 +606,11 @@ forall a. SimplePolygonF f a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] F.toList SimplePolygonF f point -pg +pg ] -instance (HasFromFoldable1 f, FromJSON point) => FromJSON (SimplePolygonF f point) where - parseJSON :: Value -> Parser (SimplePolygonF f point) -parseJSON = String +instance (HasFromFoldable1 f, FromJSON point) => FromJSON (SimplePolygonF f point) where + parseJSON :: Value -> Parser (SimplePolygonF f point) +parseJSON = String -> (Object -> Parser (SimplePolygonF f point)) -> Value -> Parser (SimplePolygonF f point) @@ -622,27 +622,27 @@ -> Value -> Parser (SimplePolygonF f point) forall a b. (a -> b) -> a -> b -$ \Object -o -> do +$ \Object +o -> do ("SimplePolygon" :: String) <- Object -o Object -> Key -> Parser String +o Object -> Key -> Parser String forall a. FromJSON a => Object -> Key -> Parser a .: Key "tag" - MkSimplePolygon . F.fromNonEmpty @f @point <$> o .: "vertices" + MkSimplePolygon . F.fromNonEmpty @f @point <$> o .: "vertices" -- | shortcut for all default properties of f we need to store the vertices. -type VertexContainer f point = ( IxValue (f point) ~ point - , Index (f point) ~ Int - , TraversableWithIndex Int f - , Traversable1 f - , Ixed (f point) - , HasDirectedTraversals f +type VertexContainer f point = ( IxValue (f point) ~ point + , Index (f point) ~ Int + , TraversableWithIndex Int f + , Traversable1 f + , Ixed (f point) + , HasDirectedTraversals f ) -instance ( VertexContainer f point - ) => HasPoints (SimplePolygonF f point) (SimplePolygonF f point') point point' where - allPoints :: forall (d :: Nat) r r'. +instance ( VertexContainer f point + ) => HasPoints (SimplePolygonF f point) (SimplePolygonF f point') point point' where + allPoints :: forall (d :: Nat) r r'. (Point_ point d r, Point_ point' d r', NumType (SimplePolygonF f point) ~ r, NumType (SimplePolygonF f point') ~ r', @@ -650,7 +650,7 @@ Dimension (SimplePolygonF f point') ~ d) => Traversal1 (SimplePolygonF f point) (SimplePolygonF f point') point point' -allPoints = (f point -> f (f point')) +allPoints = (f point -> f (f point')) -> SimplePolygonF f point -> f (SimplePolygonF f point') forall {k} {k} (f :: k -> *) (point :: k) (f' :: k -> *) (point' :: k) (p :: * -> * -> *) (f :: * -> *). @@ -671,14 +671,14 @@ IndexedTraversal1 Int (f point) (f point') point point' traversed1 -instance ( VertexContainer f point - , Point_ point 2 r - ) => IsBoxable (SimplePolygonF f point) +instance ( VertexContainer f point + , Point_ point 2 r + ) => IsBoxable (SimplePolygonF f point) -------------------------------------------------------------------------------- -- | Get the underlying cyclic vector. -toCyclic :: SimplePolygonF (Cyclic v) point -> Cyclic v point +toCyclic :: SimplePolygonF (Cyclic v) point -> Cyclic v point toCyclic :: forall {k} (v :: k -> *) (point :: k). SimplePolygonF (Cyclic v) point -> Cyclic v point toCyclic = Getting diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.html b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.html index 13cfdb3ef..bc02be276 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Simple.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Simple.html @@ -47,15 +47,15 @@ -------------------------------------------------------------------------------- -instance ( VertexContainer f point - ) => HasVertices (SimplePolygonF f point) (SimplePolygonF f point') where - vertices :: IndexedTraversal1 +instance ( VertexContainer f point + ) => HasVertices (SimplePolygonF f point) (SimplePolygonF f point') where + vertices :: IndexedTraversal1 (VertexIx (SimplePolygonF f point)) (SimplePolygonF f point) (SimplePolygonF f point') (Vertex (SimplePolygonF f point)) (Vertex (SimplePolygonF f point')) -vertices = (f point -> f (f point')) +vertices = (f point -> f (f point')) -> SimplePolygonF f point -> f (SimplePolygonF f point') forall {k1} {k2} (f1 :: k1 -> *) (point :: k1) (f' :: k2 -> *) (point' :: k2) (p :: * -> * -> *) (f2 :: * -> *). @@ -76,17 +76,17 @@ IndexedTraversal1 Int (f point) (f point') point point' traversed1 -instance ( VertexContainer f point - ) => HasVertices' (SimplePolygonF f point) where - type Vertex (SimplePolygonF f point) = point - type VertexIx (SimplePolygonF f point) = Int - vertexAt :: VertexIx (SimplePolygonF f point) +instance ( VertexContainer f point + ) => HasVertices' (SimplePolygonF f point) where + type Vertex (SimplePolygonF f point) = point + type VertexIx (SimplePolygonF f point) = Int + vertexAt :: VertexIx (SimplePolygonF f point) -> IndexedTraversal' (VertexIx (SimplePolygonF f point)) (SimplePolygonF f point) (Vertex (SimplePolygonF f point)) -vertexAt VertexIx (SimplePolygonF f point) -i = (f point -> f (f point)) +vertexAt VertexIx (SimplePolygonF f point) +i = (f point -> f (f point)) -> SimplePolygonF f point -> f (SimplePolygonF f point) forall {k1} {k2} (f1 :: k1 -> *) (point :: k1) (f' :: k2 -> *) (point' :: k2) (p :: * -> * -> *) (f2 :: * -> *). @@ -108,9 +108,9 @@ Index m -> IndexedTraversal' (Index m) m (IxValue m) iix VertexIx (SimplePolygonF f point) Index (f point) -i - numVertices :: SimplePolygonF f point -> Int -numVertices = f point -> Int +i + numVertices :: SimplePolygonF f point -> Int +numVertices = f point -> Int forall a. f a -> Int forall (t :: * -> *) a. Foldable t => t a -> Int F.length (f point -> Int) @@ -153,13 +153,13 @@ -- edgeAt (which would modify both vertices), and edges, which would modify only one vertex. -- that is a bit too weird. -instance ( VertexContainer f point - ) => HasOuterBoundary (SimplePolygonF f point) where - outerBoundary :: IndexedTraversal1' +instance ( VertexContainer f point + ) => HasOuterBoundary (SimplePolygonF f point) where + outerBoundary :: IndexedTraversal1' (VertexIx (SimplePolygonF f point)) (SimplePolygonF f point) (Vertex (SimplePolygonF f point)) -outerBoundary = (f point -> f (f point)) +outerBoundary = (f point -> f (f point)) -> SimplePolygonF f point -> f (SimplePolygonF f point) forall {k1} {k2} (f1 :: k1 -> *) (point :: k1) (f' :: k2 -> *) (point' :: k2) (p :: * -> * -> *) (f2 :: * -> *). @@ -179,13 +179,13 @@ IndexedTraversal1 Int (f a) (f b) a b IndexedTraversal1 Int (f point) (f point) point point traversed1 - outerBoundaryVertexAt :: VertexIx (SimplePolygonF f point) + outerBoundaryVertexAt :: VertexIx (SimplePolygonF f point) -> IndexedGetter (VertexIx (SimplePolygonF f point)) (SimplePolygonF f point) (Vertex (SimplePolygonF f point)) -outerBoundaryVertexAt VertexIx (SimplePolygonF f point) -i = Traversing +outerBoundaryVertexAt VertexIx (SimplePolygonF f point) +i = Traversing p f (SimplePolygonF f point) (SimplePolygonF f point) point point -> Over p f (SimplePolygonF f point) (SimplePolygonF f point) point point @@ -202,15 +202,15 @@ VertexIx graph -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt VertexIx (SimplePolygonF f point) -i) +i) - ccwOuterBoundaryFrom :: VertexIx (SimplePolygonF f point) + ccwOuterBoundaryFrom :: VertexIx (SimplePolygonF f point) -> IndexedTraversal1' (VertexIx (SimplePolygonF f point)) (SimplePolygonF f point) (Vertex (SimplePolygonF f point)) -ccwOuterBoundaryFrom VertexIx (SimplePolygonF f point) -i = (f point -> f (f point)) +ccwOuterBoundaryFrom VertexIx (SimplePolygonF f point) +i = (f point -> f (f point)) -> SimplePolygonF f point -> f (SimplePolygonF f point) forall {k1} {k2} (f1 :: k1 -> *) (point :: k1) (f' :: k2 -> *) (point' :: k2) (p :: * -> * -> *) (f2 :: * -> *). @@ -232,14 +232,14 @@ Index (v a) -> IndexedTraversal1' (Index (v a)) (v a) a traverseRightFrom VertexIx (SimplePolygonF f point) Index (f point) -i - cwOuterBoundaryFrom :: VertexIx (SimplePolygonF f point) +i + cwOuterBoundaryFrom :: VertexIx (SimplePolygonF f point) -> IndexedTraversal1' (VertexIx (SimplePolygonF f point)) (SimplePolygonF f point) (Vertex (SimplePolygonF f point)) -cwOuterBoundaryFrom VertexIx (SimplePolygonF f point) -i = (f point -> f (f point)) +cwOuterBoundaryFrom VertexIx (SimplePolygonF f point) +i = (f point -> f (f point)) -> SimplePolygonF f point -> f (SimplePolygonF f point) forall {k1} {k2} (f1 :: k1 -> *) (point :: k1) (f' :: k2 -> *) (point' :: k2) (p :: * -> * -> *) (f2 :: * -> *). @@ -261,41 +261,41 @@ Index (v a) -> IndexedTraversal1' (Index (v a)) (v a) a traverseLeftFrom VertexIx (SimplePolygonF f point) Index (f point) -i +i -instance HasHoles (SimplePolygonF f point) +instance HasHoles (SimplePolygonF f point) -instance ( Point_ point 2 r - , HasFromFoldable1 f - , VertexContainer f point - ) => Polygon_ (SimplePolygonF f point) point r where +instance ( Point_ point 2 r + , HasFromFoldable1 f + , VertexContainer f point + ) => Polygon_ (SimplePolygonF f point) point r where - ccwPredecessorOf :: VertexIx (SimplePolygonF f point) + ccwPredecessorOf :: VertexIx (SimplePolygonF f point) -> IndexedLens' (VertexIx (SimplePolygonF f point)) (SimplePolygonF f point) (Vertex (SimplePolygonF f point)) -ccwPredecessorOf VertexIx (SimplePolygonF f point) -u = \p (Vertex (SimplePolygonF f point)) +ccwPredecessorOf VertexIx (SimplePolygonF f point) +u = \p (Vertex (SimplePolygonF f point)) (f (Vertex (SimplePolygonF f point))) -pvFv SimplePolygonF f point -pg -> let n :: Int -n = SimplePolygonF f point -> Int +pvFv SimplePolygonF f point +pg -> let n :: Int +n = SimplePolygonF f point -> Int forall graph. HasVertices' graph => graph -> Int numVertices SimplePolygonF f point -pg - p :: Int -p = (Int -> Int +pg + p :: Int +p = (Int -> Int forall a. Enum a => a -> a pred Int VertexIx (SimplePolygonF f point) -u) Int -> Int -> Int +u) Int -> Int -> Int forall a. Integral a => a -> a -> a `mod` Int -n - l :: Over +n + l :: Over p f (SimplePolygonF f point) (SimplePolygonF f point) point point -l = Traversing +l = Traversing p f (SimplePolygonF f point) (SimplePolygonF f point) point point -> Over p f (SimplePolygonF f point) (SimplePolygonF f point) point point @@ -322,41 +322,41 @@ -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt Int VertexIx (SimplePolygonF f point) -p +p in Over p f (SimplePolygonF f point) (SimplePolygonF f point) point point -l p point (f point) +l p point (f point) p (Vertex (SimplePolygonF f point)) (f (Vertex (SimplePolygonF f point))) -pvFv SimplePolygonF f point -pg +pvFv SimplePolygonF f point +pg -- make sure to wrap the index to make sure we report the right index. - ccwSuccessorOf :: VertexIx (SimplePolygonF f point) + ccwSuccessorOf :: VertexIx (SimplePolygonF f point) -> IndexedLens' (VertexIx (SimplePolygonF f point)) (SimplePolygonF f point) (Vertex (SimplePolygonF f point)) -ccwSuccessorOf VertexIx (SimplePolygonF f point) -u = \p (Vertex (SimplePolygonF f point)) +ccwSuccessorOf VertexIx (SimplePolygonF f point) +u = \p (Vertex (SimplePolygonF f point)) (f (Vertex (SimplePolygonF f point))) -pvFv SimplePolygonF f point -pg -> let n :: Int -n = SimplePolygonF f point -> Int +pvFv SimplePolygonF f point +pg -> let n :: Int +n = SimplePolygonF f point -> Int forall graph. HasVertices' graph => graph -> Int numVertices SimplePolygonF f point -pg - s :: Int -s = (Int -> Int +pg + s :: Int +s = (Int -> Int forall a. Enum a => a -> a succ Int VertexIx (SimplePolygonF f point) -u) Int -> Int -> Int +u) Int -> Int -> Int forall a. Integral a => a -> a -> a `mod` Int -n - l :: Over +n + l :: Over p f (SimplePolygonF f point) (SimplePolygonF f point) point point -l = Traversing +l = Traversing p f (SimplePolygonF f point) (SimplePolygonF f point) point point -> Over p f (SimplePolygonF f point) (SimplePolygonF f point) point point @@ -383,23 +383,23 @@ -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt Int VertexIx (SimplePolygonF f point) -s +s in Over p f (SimplePolygonF f point) (SimplePolygonF f point) point point -l p point (f point) +l p point (f point) p (Vertex (SimplePolygonF f point)) (f (Vertex (SimplePolygonF f point))) -pvFv SimplePolygonF f point -pg +pvFv SimplePolygonF f point +pg -instance ( Point_ point 2 r - , VertexContainer f point - , HasFromFoldable1 f - ) => SimplePolygon_ (SimplePolygonF f point) point r where - uncheckedFromCCWPoints :: forall (f :: * -> *). +instance ( Point_ point 2 r + , VertexContainer f point + , HasFromFoldable1 f + ) => SimplePolygon_ (SimplePolygonF f point) point r where + uncheckedFromCCWPoints :: forall (f :: * -> *). Foldable1 f => f point -> SimplePolygonF f point -uncheckedFromCCWPoints = f point -> SimplePolygonF f point +uncheckedFromCCWPoints = f point -> SimplePolygonF f point forall {k} (f :: k -> *) (point :: k). f point -> SimplePolygonF f point MkSimplePolygon (f point -> SimplePolygonF f point) @@ -412,12 +412,12 @@ forall (g :: * -> *) a. Foldable1 g => g a -> f a fromFoldable1 - fromPoints :: forall (f :: * -> *). + fromPoints :: forall (f :: * -> *). (Foldable f, ConstructableSimplePolygon (SimplePolygonF f point) point r) => f point -> Maybe (SimplePolygonF f point) -fromPoints f point -rawPts = do pts@(_:|_:_:_) <- NonEmpty point -> NonEmpty point +fromPoints f point +rawPts = do pts@(_:|_:_:_) <- NonEmpty point -> NonEmpty point forall point r. (Point_ point 2 r, Eq r) => NonEmpty point -> NonEmpty point @@ -426,10 +426,10 @@ forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> f point -> Maybe (NonEmpty point) forall {a}. f a -> Maybe (NonEmpty a) -toNonEmpty' f point -rawPts +toNonEmpty' f point +rawPts -- note that the pattern match makes sure there are at least 3 pts - let pg = NonEmpty point -> SimplePolygonF f point + let pg = NonEmpty point -> SimplePolygonF f point forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => f point -> simplePolygon @@ -437,15 +437,15 @@ Foldable1 f => f point -> SimplePolygonF f point uncheckedFromCCWPoints NonEmpty point -pts - area' = SimplePolygonF f point -> r +pts + area' = SimplePolygonF f point -> r forall r simplePolygon point. (Num r, HasOuterBoundary simplePolygon, Point_ point 2 r, Vertex simplePolygon ~ point) => simplePolygon -> r signedArea2X SimplePolygonF f point -pg - pg' = NonEmpty point -> SimplePolygonF f point +pg + pg' = NonEmpty point -> SimplePolygonF f point forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => f point -> simplePolygon @@ -458,32 +458,32 @@ $ NonEmpty point -> NonEmpty point forall a. NonEmpty a -> NonEmpty a NonEmpty.reverse NonEmpty point -pts - case area' of +pts + case area' of r 0 -> Maybe (SimplePolygonF f point) forall a. Maybe a Nothing -- the points are all colinear r _ | r -area' r -> r -> Bool +area' r -> r -> Bool forall a. Eq a => a -> a -> Bool == r -> r forall a. Num a => a -> a abs r -area' -> SimplePolygonF f point -> Maybe (SimplePolygonF f point) +area' -> SimplePolygonF f point -> Maybe (SimplePolygonF f point) forall a. a -> Maybe a Just SimplePolygonF f point -pg -- the points are given in CCW order +pg -- the points are given in CCW order | Bool otherwise -> SimplePolygonF f point -> Maybe (SimplePolygonF f point) forall a. a -> Maybe a Just SimplePolygonF f point -pg' +pg' -- pts were in CW order, so we reversed them. where - toNonEmpty' :: f a -> Maybe (NonEmpty a) -toNonEmpty' = [a] -> Maybe (NonEmpty a) + toNonEmpty' :: f a -> Maybe (NonEmpty a) +toNonEmpty' = [a] -> Maybe (NonEmpty a) forall a. [a] -> Maybe (NonEmpty a) NonEmpty.nonEmpty ([a] -> Maybe (NonEmpty a)) -> (f a -> [a]) -> f a -> Maybe (NonEmpty a) @@ -506,8 +506,8 @@ -- | Makes sure there are no repeated vertices. -- -- note that we treat f as a cyclic sequence -removeRepeated :: (Point_ point 2 r, Eq r) - => NonEmpty point -> NonEmpty point +removeRepeated :: (Point_ point 2 r, Eq r) + => NonEmpty point -> NonEmpty point removeRepeated :: forall point r. (Point_ point 2 r, Eq r) => NonEmpty point -> NonEmpty point @@ -518,7 +518,7 @@ Point_ s (Dimension s) (NumType s), Point_ s (Dimension s) (NumType s)) => (s, NonEmpty s) -> NonEmpty s -checkFirst +checkFirst ((point, NonEmpty point) -> NonEmpty point) -> (NonEmpty point -> (point, NonEmpty point)) -> NonEmpty point @@ -533,23 +533,23 @@ forall (t :: * -> *) a b. Foldable1 t => (a -> b) -> (a -> b -> b) -> t a -> b -foldrMap1 (\(point -l :| [point] +foldrMap1 (\(point +l :| [point] _) -> (point -l, point -> NonEmpty point +l, point -> NonEmpty point forall a. a -> NonEmpty a NonEmpty.singleton point -l)) - (\(point -x :| [point] -_) (point -l,NonEmpty point -acc) -> (point -l, point -x point -> NonEmpty point -> NonEmpty point +l)) + (\(point +x :| [point] +_) (point +l,NonEmpty point +acc) -> (point +l, point +x point -> NonEmpty point -> NonEmpty point forall a. a -> NonEmpty a -> NonEmpty a NonEmpty.<| NonEmpty point -acc)) +acc)) (NonEmpty (NonEmpty point) -> (point, NonEmpty point)) -> (NonEmpty point -> NonEmpty (NonEmpty point)) -> NonEmpty point @@ -567,22 +567,22 @@ asPoint) where -- make sure that the first and last element are also distinct - checkFirst :: (s, NonEmpty s) -> NonEmpty s -checkFirst (s -last', acc :: NonEmpty s -acc@(s -first' :| [s] -rest')) = case [s] -> Maybe (NonEmpty s) + checkFirst :: (s, NonEmpty s) -> NonEmpty s +checkFirst (s +last', acc :: NonEmpty s +acc@(s +first' :| [s] +rest')) = case [s] -> Maybe (NonEmpty s) forall a. [a] -> Maybe (NonEmpty a) NonEmpty.nonEmpty [s] -rest' of +rest' of Maybe (NonEmpty s) Nothing -> NonEmpty s -acc +acc -- Apparently there is only one element, (first' == last') - Just NonEmpty s -rest | (s -first's + Just NonEmpty s +rest | (s +first's -> Getting (Point (Dimension s) (NumType s)) s @@ -601,7 +601,7 @@ -> Point (Dimension s) (NumType s) -> Bool forall a. Eq a => a -> a -> Bool == (s -last's +last's -> Getting (Point (Dimension s) (NumType s)) s @@ -617,30 +617,30 @@ Lens' point (Point d r) Lens' s (Point (Dimension s) (NumType s)) asPoint) -> NonEmpty s -rest +rest -- in this case the first elem of rest is distinct from first' (due to -- the groupwith), and and thus distinct from the last of the rest | Bool otherwise -> NonEmpty s -acc +acc -instance ( Show point - , SimplePolygon_ (SimplePolygonF f point) point r - ) => Show (SimplePolygonF f point) where - showsPrec :: Int -> SimplePolygonF f point -> ShowS -showsPrec = String -> Int -> SimplePolygonF f point -> ShowS +instance ( Show point + , SimplePolygon_ (SimplePolygonF f point) point r + ) => Show (SimplePolygonF f point) where + showsPrec :: Int -> SimplePolygonF f point -> ShowS +showsPrec = String -> Int -> SimplePolygonF f point -> ShowS forall simplePolygon point r. (SimplePolygon_ simplePolygon point r, Show point) => String -> Int -> simplePolygon -> ShowS showsPrecSimplePolygon String "SimplePolygon" -instance ( Read point - , SimplePolygon_ (SimplePolygonF f point) point r - ) => Read (SimplePolygonF f point) where - readsPrec :: Int -> ReadS (SimplePolygonF f point) -readsPrec = String -> Int -> ReadS (SimplePolygonF f point) +instance ( Read point + , SimplePolygon_ (SimplePolygonF f point) point r + ) => Read (SimplePolygonF f point) where + readsPrec :: Int -> ReadS (SimplePolygonF f point) +readsPrec = String -> Int -> ReadS (SimplePolygonF f point) forall simplePolygon point r. (Read point, SimplePolygon_ simplePolygon point r) => String -> Int -> ReadS simplePolygon @@ -687,17 +687,17 @@ -------------------------------------------------------------------------------- -instance SimplePolygon_ (SimplePolygonF f point) point r - => HasInPolygon (SimplePolygonF f point) point r +instance SimplePolygon_ (SimplePolygonF f point) point r + => HasInPolygon (SimplePolygonF f point) point r -instance ( SimplePolygon_ (SimplePolygonF f point) point r - , Num r, Ord r - ) => HasIntersectionWith (Point 2 r) (SimplePolygonF f point) where - Point 2 r -q intersects :: Point 2 r -> SimplePolygonF f point -> Bool -`intersects` SimplePolygonF f point -pg = Point 2 r -q Point 2 r +instance ( SimplePolygon_ (SimplePolygonF f point) point r + , Num r, Ord r + ) => HasIntersectionWith (Point 2 r) (SimplePolygonF f point) where + Point 2 r +q intersects :: Point 2 r -> SimplePolygonF f point -> Bool +`intersects` SimplePolygonF f point +pg = Point 2 r +q Point 2 r -> SimplePolygonF f point -> PointLocationResultWith (VertexIx (SimplePolygonF f point)) forall queryPoint simplePolygon point r. @@ -707,30 +707,30 @@ -> simplePolygon -> PointLocationResultWith (VertexIx simplePolygon) `inSimplePolygon` SimplePolygonF f point -pg PointLocationResultWith Int -> PointLocationResultWith Int -> Bool +pg PointLocationResultWith Int -> PointLocationResultWith Int -> Bool forall a. Eq a => a -> a -> Bool /= PointLocationResultWith Int forall edge. PointLocationResultWith edge StrictlyOutside -type instance Intersection (Point 2 r) (SimplePolygonF f point) = Maybe (Point 2 r) +type instance Intersection (Point 2 r) (SimplePolygonF f point) = Maybe (Point 2 r) -instance ( SimplePolygon_ (SimplePolygonF f point) point r - , Num r, Ord r - ) => IsIntersectableWith (Point 2 r) (SimplePolygonF f point) where - Point 2 r -q intersect :: Point 2 r +instance ( SimplePolygon_ (SimplePolygonF f point) point r + , Num r, Ord r + ) => IsIntersectableWith (Point 2 r) (SimplePolygonF f point) where + Point 2 r +q intersect :: Point 2 r -> SimplePolygonF f point -> Intersection (Point 2 r) (SimplePolygonF f point) -`intersect` SimplePolygonF f point -pg | Point 2 r -q Point 2 r -> SimplePolygonF f point -> Bool +`intersect` SimplePolygonF f point +pg | Point 2 r +q Point 2 r -> SimplePolygonF f point -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` SimplePolygonF f point -pg = Point 2 r -> Maybe (Point 2 r) +pg = Point 2 r -> Maybe (Point 2 r) forall a. a -> Maybe a Just Point 2 r -q +q | Bool otherwise = Maybe (Point 2 r) Intersection (Point 2 r) (SimplePolygonF f point) @@ -738,25 +738,25 @@ Nothing -- this implementation is a bit silly but ok -instance ( VertexContainer f point - , DefaultTransformByConstraints (SimplePolygonF f point) 2 r - , Point_ point 2 r - , IsTransformable point - , HasFromFoldable1 f, Eq r - ) => IsTransformable (SimplePolygonF f point) where - transformBy :: Transformation +instance ( VertexContainer f point + , DefaultTransformByConstraints (SimplePolygonF f point) 2 r + , Point_ point 2 r + , IsTransformable point + , HasFromFoldable1 f, Eq r + ) => IsTransformable (SimplePolygonF f point) where + transformBy :: Transformation (Dimension (SimplePolygonF f point)) (NumType (SimplePolygonF f point)) -> SimplePolygonF f point -> SimplePolygonF f point -transformBy Transformation +transformBy Transformation (Dimension (SimplePolygonF f point)) (NumType (SimplePolygonF f point)) -t = SimplePolygonF f point +t = SimplePolygonF f point -> Maybe (SimplePolygonF f point) -> SimplePolygonF f point forall a. a -> Maybe a -> a fromMaybe SimplePolygonF f point forall {a}. a -err (Maybe (SimplePolygonF f point) -> SimplePolygonF f point) +err (Maybe (SimplePolygonF f point) -> SimplePolygonF f point) -> (SimplePolygonF f point -> Maybe (SimplePolygonF f point)) -> SimplePolygonF f point -> SimplePolygonF f point @@ -786,7 +786,7 @@ Transformation (Dimension (SimplePolygonF f point)) (NumType (SimplePolygonF f point)) -t) (f point -> f point) +t) (f point -> f point) -> (SimplePolygonF f point -> f point) -> SimplePolygonF f point -> f point @@ -802,8 +802,8 @@ -> p (SimplePolygonF f1 point) (f2 (SimplePolygonF f' point')) _SimplePolygonF where - err :: a -err = String -> a + err :: a +err = String -> a forall a. HasCallStack => String -> a error String "SimplePolygonF; transformBy: no longer a simple polygon!" @@ -814,17 +814,17 @@ -------------------------------------------------------------------------------- -- | verify that some sequence of points has no self intersecting edges. -hasNoSelfIntersections :: forall f point r. - (Foldable1 f, Functor f, Point_ point 2 r, Ord r, Real r) - => f point -> Bool +hasNoSelfIntersections :: forall f point r. + (Foldable1 f, Functor f, Point_ point 2 r, Ord r, Real r) + => f point -> Bool hasNoSelfIntersections :: forall (f :: * -> *) point r. (Foldable1 f, Functor f, Point_ point 2 r, Ord r, Real r) => f point -> Bool -hasNoSelfIntersections f point -vs = let vs' :: f (PointF (Vector 2 Rational)) -vs' = (\point -p -> (point -ppoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r +hasNoSelfIntersections f point +vs = let vs' :: f (PointF (Vector 2 Rational)) +vs' = (\point +p -> (point +ppoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point (Point 2 r) forall point (d :: Nat) r. @@ -859,10 +859,10 @@ -> f point -> f (PointF (Vector 2 Rational)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> f point -vs - pg :: SimplePolygon (Point 2 Rational) - pg :: SimplePolygon (PointF (Vector 2 Rational)) -pg = f (PointF (Vector 2 Rational)) +vs + pg :: SimplePolygon (Point 2 Rational) + pg :: SimplePolygon (PointF (Vector 2 Rational)) +pg = f (PointF (Vector 2 Rational)) -> SimplePolygon (PointF (Vector 2 Rational)) forall simplePolygon point r (f :: * -> *). (SimplePolygon_ simplePolygon point r, Foldable1 f) => @@ -872,7 +872,7 @@ f (PointF (Vector 2 Rational)) -> SimplePolygon (PointF (Vector 2 Rational)) uncheckedFromCCWPoints f (PointF (Vector 2 Rational)) -vs' +vs' in Map (PointF (Vector 2 Rational)) (Associated (ClosedLineSegment (PointF (Vector 2 Rational)))) @@ -907,7 +907,7 @@ (Associated (ClosedLineSegment (PointF (Vector 2 Rational)))) forall a b. (a -> b) -> a -> b $ SimplePolygon (PointF (Vector 2 Rational)) -pgSimplePolygon (PointF (Vector 2 Rational)) +pgSimplePolygon (PointF (Vector 2 Rational)) -> Getting (Endo [ClosedLineSegment (PointF (Vector 2 Rational))]) (SimplePolygon (PointF (Vector 2 Rational))) diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.MakeMonotone.html b/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.MakeMonotone.html index b095df61d..5f6e2e704 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.MakeMonotone.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.MakeMonotone.html @@ -38,15 +38,15 @@ -- into y-monotone subpolygons. -- -- running time: \(O(n\log n)\) -makeMonotone :: forall s polygon point r. - (SimplePolygon_ polygon point r, Ord r, Num r) - => polygon - -> CPlaneGraph s point PolygonEdgeType PolygonFaceData +makeMonotone :: forall s polygon point r. + (SimplePolygon_ polygon point r, Ord r, Num r) + => polygon + -> CPlaneGraph s point PolygonEdgeType PolygonFaceData makeMonotone :: forall {k} (s :: k) polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData -makeMonotone polygon -pg = polygon +makeMonotone polygon +pg = polygon -> [Diagonal polygon] -> CPlaneGraph s point PolygonEdgeType PolygonFaceData forall {k} (s :: k) polygon point r (f :: * -> *). @@ -56,29 +56,29 @@ -> f (Diagonal polygon) -> CPlaneGraph s point PolygonEdgeType PolygonFaceData constructGraph polygon -pg (polygon -> [Diagonal polygon] +pg (polygon -> [Diagonal polygon] forall polygon point r. (Polygon_ polygon point r, Point_ point 2 r, Ord r, Num r, Ord (VertexIx polygon)) => polygon -> [Diagonal polygon] computeDiagonals polygon -pg) +pg) -- | Given a polygon, find a set of non-intersecting diagonals that partition -- the polygon into y-monotone pieces. -- -- running time: \(O(n\log n)\) -computeDiagonals :: ( Polygon_ polygon point r, Point_ point 2 r - , Ord r, Num r, Ord (VertexIx polygon) +computeDiagonals :: ( Polygon_ polygon point r, Point_ point 2 r + , Ord r, Num r, Ord (VertexIx polygon) ) - => polygon -> [Diagonal polygon] + => polygon -> [Diagonal polygon] computeDiagonals :: forall polygon point r. (Polygon_ polygon point r, Point_ point 2 r, Ord r, Num r, Ord (VertexIx polygon)) => polygon -> [Diagonal polygon] -computeDiagonals polygon -pg = +computeDiagonals polygon +pg = (StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) @@ -134,7 +134,7 @@ -> Event polygon -> (StatusSruct polygon, [Diagonal polygon]) handle polygon -pg) (Set (ClosedLineSegment point :+ VertexIx polygon) +pg) (Set (ClosedLineSegment point :+ VertexIx polygon) -> Map (VertexIx polygon) (VertexIx polygon) -> StatusStructure (VertexIx polygon) @@ -147,11 +147,11 @@ Set.empty Map (VertexIx polygon) (VertexIx polygon) forall k a. Map k a Map.empty, []) Vector (Event' (VertexIx polygon) point) -events +events -- sweep line algorithm to compute the diagonals where - events :: Vector (Event' (VertexIx polygon) point) -events = (Event' (VertexIx polygon) point + events :: Vector (Event' (VertexIx polygon) point) +events = (Event' (VertexIx polygon) point -> Event' (VertexIx polygon) point -> Ordering) -> Vector (Event' (VertexIx polygon) point) -> Vector (Event' (VertexIx polygon) point) @@ -211,9 +211,9 @@ polygon (Vertex polygon) (Vertex polygon) -vertices (\VertexIx polygon -i point -v -> Event' (VertexIx polygon) point +vertices (\VertexIx polygon +i point +v -> Event' (VertexIx polygon) point -> Builder (Event' (VertexIx polygon) point) forall element. element -> Builder element Builder.singleton (Event' (VertexIx polygon) point @@ -222,15 +222,15 @@ -> Builder (Event' (VertexIx polygon) point) forall a b. (a -> b) -> a -> b $ VertexIx polygon -> point -> Event' (VertexIx polygon) point -toEvent VertexIx polygon -i point -v) polygon -pg +toEvent VertexIx polygon +i point +v) polygon +pg -- Transform the vertex into an Event - toEvent :: VertexIx polygon -> point -> Event' (VertexIx polygon) point -toEvent VertexIx polygon -i point -v = VertexType + toEvent :: VertexIx polygon -> point -> Event' (VertexIx polygon) point +toEvent VertexIx polygon +i point +v = VertexType -> VertexIx polygon -> point -> VertexIx polygon @@ -243,12 +243,12 @@ (Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) => polygon -> VertexIx polygon -> point -> VertexType classify polygon -pg VertexIx polygon -i point -v) VertexIx polygon -i point -v (polygon -pgpolygon +pg VertexIx polygon +i point +v) VertexIx polygon +i point +v (polygon +pgpolygon -> Getting (VertexIx polygon) polygon (VertexIx polygon) -> VertexIx polygon forall s a. s -> Getting a s a -> a @@ -259,7 +259,7 @@ VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwPredecessorOf VertexIx polygon -i(Indexed (VertexIx polygon) point (Const (VertexIx polygon) point) +i(Indexed (VertexIx polygon) point (Const (VertexIx polygon) point) -> polygon -> Const (VertexIx polygon) polygon) -> ((VertexIx polygon -> Const (VertexIx polygon) (VertexIx polygon)) @@ -298,7 +298,7 @@ (VertexIx polygon) _1) (polygon -pgpolygon +pgpolygon -> Getting (VertexIx polygon) polygon (VertexIx polygon) -> VertexIx polygon forall s a. s -> Getting a s a -> a @@ -309,7 +309,7 @@ VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwSuccessorOf VertexIx polygon -i(Indexed (VertexIx polygon) point (Const (VertexIx polygon) point) +i(Indexed (VertexIx polygon) point (Const (VertexIx polygon) point) -> polygon -> Const (VertexIx polygon) polygon) -> ((VertexIx polygon -> Const (VertexIx polygon) (VertexIx polygon)) @@ -349,17 +349,17 @@ _1) -- | Assigns a vertex type to the given vertex -classify :: ( Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) - => polygon -> VertexIx polygon -> point -> VertexType +classify :: ( Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) + => polygon -> VertexIx polygon -> point -> VertexType classify :: forall polygon point r. (Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) => polygon -> VertexIx polygon -> point -> VertexType -classify polygon -pg VertexIx polygon -i point -c = let p :: point -p = polygon -pgpolygon -> Getting point polygon point -> point +classify polygon +pg VertexIx polygon +i point +c = let p :: point +p = polygon +pgpolygon -> Getting point polygon point -> point forall s a. s -> Getting a s a -> a ^.VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) @@ -368,10 +368,10 @@ VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwPredecessorOf VertexIx polygon -i - n :: point -n = polygon -pgpolygon -> Getting point polygon point -> point +i + n :: point +n = polygon +pgpolygon -> Getting point polygon point -> point forall s a. s -> Getting a s a -> a ^.VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) @@ -380,23 +380,23 @@ VertexIx polygon -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwSuccessorOf VertexIx polygon -i +i in case (point -p point -> point -> Ordering +p point -> point -> Ordering forall point r. (Point_ point 2 r, Ord r) => point -> point -> Ordering `cmpSweep` point -c, point -n point -> point -> Ordering +c, point +n point -> point -> Ordering forall point r. (Point_ point 2 r, Ord r) => point -> point -> Ordering `cmpSweep` point -c, point -> point -> Bool -largeInteriorAngle point -p point -n) of +c, point -> point -> Bool +largeInteriorAngle point +p point +n) of (Ordering LT, Ordering LT, Bool @@ -422,18 +422,18 @@ Regular where -- is the angle larger than > 180 degrees - largeInteriorAngle :: point -> point -> Bool -largeInteriorAngle point -p point -n = case point -> point -> point -> CCW + largeInteriorAngle :: point -> point -> Bool +largeInteriorAngle point +p point +n = case point -> point -> point -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw point -p point -c point -n of +p point +c point +n of CCW CCW -> Bool False @@ -448,13 +448,13 @@ -- | comparison used to order the events w.r.t the sweep line: -- p < q = p.y < q.y || p.y == q.y && p.x > q.y -cmpSweep :: (Point_ point 2 r, Ord r) => point -> point -> Ordering -point -p cmpSweep :: forall point r. +cmpSweep :: (Point_ point 2 r, Ord r) => point -> point -> Ordering +point +p cmpSweep :: forall point r. (Point_ point 2 r, Ord r) => point -> point -> Ordering -`cmpSweep` point -q = (point -> r) -> point -> point -> Ordering +`cmpSweep` point +q = (point -> r) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing (point -> Getting r point r -> r forall s a. s -> Getting a s a -> a @@ -464,8 +464,8 @@ IndexedLens' Int point r IndexedLens' Int point r yCoord) point -p point -q Ordering -> Ordering -> Ordering +p point +q Ordering -> Ordering -> Ordering forall a. Semigroup a => a -> a -> a <> (point -> Down r) -> point -> point -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering @@ -481,18 +481,18 @@ IndexedLens' Int point r IndexedLens' Int point r xCoord)) point -p point -q +p point +q -- | Handle an event -handle :: forall polygon point r. ( Polygon_ polygon point r - , Point_ point 2 r, Num r, Ord r - , Ord (VertexIx polygon) +handle :: forall polygon point r. ( Polygon_ polygon point r + , Point_ point 2 r, Num r, Ord r + , Ord (VertexIx polygon) ) - => polygon - -> (StatusSruct polygon, [Diagonal polygon]) -> Event polygon - -> (StatusSruct polygon, [Diagonal polygon]) + => polygon + -> (StatusSruct polygon, [Diagonal polygon]) -> Event polygon + -> (StatusSruct polygon, [Diagonal polygon]) handle :: forall polygon point r. (Polygon_ polygon point r, Point_ point 2 r, Num r, Ord r, Ord (VertexIx polygon)) => @@ -500,56 +500,56 @@ -> (StatusSruct polygon, [Diagonal polygon]) -> Event polygon -> (StatusSruct polygon, [Diagonal polygon]) -handle polygon -pg (StatusSruct polygon -status, [Diagonal polygon] -diags) (Event VertexType -et VertexIx polygon -i Vertex polygon -v VertexIx polygon -p VertexIx polygon -s) = case VertexType -et of +handle polygon +pg (StatusSruct polygon +status, [Diagonal polygon] +diags) (Event VertexType +et VertexIx polygon +i Vertex polygon +v VertexIx polygon +p VertexIx polygon +s) = case VertexType +et of VertexType Start -> (point -> Edge' polygon -> VertexIx polygon -> StatusSruct polygon -> StatusSruct polygon -insertAt point +insertAt point Vertex polygon -v ClosedLineSegment point :+ VertexIx polygon +v ClosedLineSegment point :+ VertexIx polygon Edge' polygon -nextEdge VertexIx polygon -i StatusSruct polygon -status, [Diagonal polygon] -diags) +nextEdge VertexIx polygon +i StatusSruct polygon +status, [Diagonal polygon] +diags) VertexType End -> (point -> Edge' polygon -> StatusSruct polygon -> StatusSruct polygon -deleteAt point +deleteAt point Vertex polygon -v ClosedLineSegment point :+ VertexIx polygon +v ClosedLineSegment point :+ VertexIx polygon Edge' polygon -prevEdge StatusSruct polygon -status, VertexIx polygon +prevEdge StatusSruct polygon +status, VertexIx polygon -> StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) -> Maybe (Diagonal polygon) -diagFromHelper VertexIx polygon -p StatusStructure +diagFromHelper VertexIx polygon +p StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) StatusSruct polygon -status Maybe (Diagonal polygon) +status Maybe (Diagonal polygon) -> [Diagonal polygon] -> [Diagonal polygon] forall a. Maybe a -> [a] -> [a] <? [Diagonal polygon] -diags) +diags) VertexType Split -> ( (point @@ -557,13 +557,13 @@ -> VertexIx polygon -> StatusSruct polygon -> StatusSruct polygon -insertAt point +insertAt point Vertex polygon -v ClosedLineSegment point :+ VertexIx polygon +v ClosedLineSegment point :+ VertexIx polygon Edge' polygon -nextEdge VertexIx polygon -i StatusSruct polygon -status)StatusStructure +nextEdge VertexIx polygon +i StatusSruct polygon +status)StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) @@ -624,23 +624,23 @@ -> Map (VertexIx polygon) (VertexIx polygon) forall k a. Ord k => k -> a -> Map k a -> Map k a Map.insert VertexIx polygon -j VertexIx polygon -i +j VertexIx polygon +i , Diagonal polygon -diag Diagonal polygon -> [Diagonal polygon] -> [Diagonal polygon] +diag Diagonal polygon -> [Diagonal polygon] -> [Diagonal polygon] forall a. a -> [a] -> [a] : [Diagonal polygon] -diags) +diags) VertexType Merge -> ( (point -> Edge' polygon -> StatusSruct polygon -> StatusSruct polygon -deleteAt point +deleteAt point Vertex polygon -v ClosedLineSegment point :+ VertexIx polygon +v ClosedLineSegment point :+ VertexIx polygon Edge' polygon -prevEdge StatusSruct polygon -status)StatusStructure +prevEdge StatusSruct polygon +status)StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) @@ -701,21 +701,21 @@ -> Map (VertexIx polygon) (VertexIx polygon) forall k a. Ord k => k -> a -> Map k a -> Map k a Map.insert VertexIx polygon -j VertexIx polygon -i +j VertexIx polygon +i , VertexIx polygon -> StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) -> Maybe (Diagonal polygon) -diagFromHelper VertexIx polygon -j StatusStructure +diagFromHelper VertexIx polygon +j StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) StatusSruct polygon -status Maybe (Diagonal polygon) +status Maybe (Diagonal polygon) -> [Diagonal polygon] -> [Diagonal polygon] forall a. Maybe a -> [a] -> [a] <? VertexIx polygon @@ -724,66 +724,66 @@ (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) -> Maybe (Diagonal polygon) -diagFromHelper VertexIx polygon -p StatusStructure +diagFromHelper VertexIx polygon +p StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) StatusSruct polygon -status Maybe (Diagonal polygon) +status Maybe (Diagonal polygon) -> [Diagonal polygon] -> [Diagonal polygon] forall a. Maybe a -> [a] -> [a] <? [Diagonal polygon] -diags) +diags) VertexType Regular | Bool -isLeftVertex -> ( point +isLeftVertex -> ( point -> Edge' polygon -> VertexIx polygon -> StatusSruct polygon -> StatusSruct polygon -insertAt point +insertAt point Vertex polygon -v ClosedLineSegment point :+ VertexIx polygon +v ClosedLineSegment point :+ VertexIx polygon Edge' polygon -nextEdge VertexIx polygon -i (StatusSruct polygon -> StatusSruct polygon) +nextEdge VertexIx polygon +i (StatusSruct polygon -> StatusSruct polygon) -> StatusSruct polygon -> StatusSruct polygon forall a b. (a -> b) -> a -> b $ point -> Edge' polygon -> StatusSruct polygon -> StatusSruct polygon -deleteAt point +deleteAt point Vertex polygon -v ClosedLineSegment point :+ VertexIx polygon +v ClosedLineSegment point :+ VertexIx polygon Edge' polygon -prevEdge StatusSruct polygon -status +prevEdge StatusSruct polygon +status , VertexIx polygon -> StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) -> Maybe (Diagonal polygon) -diagFromHelper VertexIx polygon -p StatusStructure +diagFromHelper VertexIx polygon +p StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) StatusSruct polygon -status Maybe (Diagonal polygon) +status Maybe (Diagonal polygon) -> [Diagonal polygon] -> [Diagonal polygon] forall a. Maybe a -> [a] -> [a] <? [Diagonal polygon] -diags ) +diags ) | Bool otherwise -> ( StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) StatusSruct polygon -statusStatusStructure +statusStatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) @@ -844,31 +844,31 @@ -> Map (VertexIx polygon) (VertexIx polygon) forall k a. Ord k => k -> a -> Map k a -> Map k a Map.insert VertexIx polygon -j VertexIx polygon -i, VertexIx polygon +j VertexIx polygon +i, VertexIx polygon -> StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) -> Maybe (Diagonal polygon) -diagFromHelper VertexIx polygon -j StatusStructure +diagFromHelper VertexIx polygon +j StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) StatusSruct polygon -status Maybe (Diagonal polygon) +status Maybe (Diagonal polygon) -> [Diagonal polygon] -> [Diagonal polygon] forall a. Maybe a -> [a] -> [a] <? [Diagonal polygon] -diags) +diags) where -- edges incident to v = v_i - prevEdge :: ClosedLineSegment point :+ VertexIx polygon -prevEdge = point -> point -> ClosedLineSegment point + prevEdge :: ClosedLineSegment point :+ VertexIx polygon +prevEdge = point -> point -> ClosedLineSegment point forall point. point -> point -> ClosedLineSegment point ClosedLineSegment (polygon -pgpolygon -> Getting (Endo point) polygon point -> point +pgpolygon -> Getting (Endo point) polygon point -> point forall s a. HasCallStack => s -> Getting (Endo a) s a -> a ^?!VertexIx polygon -> IndexedTraversal' (VertexIx polygon) polygon (Vertex polygon) @@ -877,20 +877,20 @@ VertexIx graph -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt VertexIx polygon -p) point +p) point Vertex polygon -v ClosedLineSegment point +v ClosedLineSegment point -> VertexIx polygon -> ClosedLineSegment point :+ VertexIx polygon forall core extra. core -> extra -> core :+ extra :+ VertexIx polygon -p - nextEdge :: ClosedLineSegment point :+ VertexIx polygon -nextEdge = point -> point -> ClosedLineSegment point +p + nextEdge :: ClosedLineSegment point :+ VertexIx polygon +nextEdge = point -> point -> ClosedLineSegment point forall point. point -> point -> ClosedLineSegment point ClosedLineSegment point Vertex polygon -v (polygon -pgpolygon -> Getting (Endo point) polygon point -> point +v (polygon +pgpolygon -> Getting (Endo point) polygon point -> point forall s a. HasCallStack => s -> Getting (Endo a) s a -> a ^?!VertexIx polygon -> IndexedTraversal' (VertexIx polygon) polygon (Vertex polygon) @@ -899,24 +899,24 @@ VertexIx graph -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt VertexIx polygon -s) ClosedLineSegment point +s) ClosedLineSegment point -> VertexIx polygon -> ClosedLineSegment point :+ VertexIx polygon forall core extra. core -> extra -> core :+ extra :+ VertexIx polygon -i +i -- j is the EdgeId of the edge directly left of v (j may not exist when v is a start, -- end, or left-regular vertex; we use it only when we know it exists.) - j :: VertexIx polygon -j = case point -> StatusSruct polygon -> Maybe (Edge' polygon) -lookupLT point + j :: VertexIx polygon +j = case point -> StatusSruct polygon -> Maybe (Edge' polygon) +lookupLT point Vertex polygon -v StatusSruct polygon -status of - Just (ClosedLineSegment (Vertex polygon) -_leftEdge :+ VertexIx polygon -j') -> VertexIx polygon -j' +v StatusSruct polygon +status of + Just (ClosedLineSegment (Vertex polygon) +_leftEdge :+ VertexIx polygon +j') -> VertexIx polygon +j' Maybe (Edge' polygon) _ -> [Char] -> VertexIx polygon forall a. HasCallStack => [Char] -> a @@ -925,8 +925,8 @@ $ [Char] "MakeMonotone.handleSplit: absurd. no j" -- the diagonal between the current vertex v and the helper - diag :: Diagonal polygon -diag = case VertexIx polygon + diag :: Diagonal polygon +diag = case VertexIx polygon -> StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) @@ -936,18 +936,18 @@ Ord edgeId => edgeId -> StatusStructure edgeId edge vtx -> Maybe vtx helper VertexIx polygon -j StatusStructure +j StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) StatusSruct polygon -status of - Just VertexIx polygon -h -> VertexIx polygon -> VertexIx polygon -> Diagonal polygon +status of + Just VertexIx polygon +h -> VertexIx polygon -> VertexIx polygon -> Diagonal polygon forall r. r -> r -> Vector 2 r Vector2 VertexIx polygon -i VertexIx polygon -h +i VertexIx polygon +h Maybe (VertexIx polygon) _ -> [Char] -> Diagonal polygon forall a. HasCallStack => [Char] -> a @@ -956,18 +956,18 @@ -- figure out what the helper of edgeIx is, and if its a merge vertex connect it to -- the current vertex v - diagFromHelper :: VertexIx polygon + diagFromHelper :: VertexIx polygon -> StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) -> Maybe (Diagonal polygon) -diagFromHelper VertexIx polygon -edgeIx StatusStructure +diagFromHelper VertexIx polygon +edgeIx StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) -status' = case VertexIx polygon +status' = case VertexIx polygon -> StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) @@ -977,15 +977,15 @@ Ord edgeId => edgeId -> StatusStructure edgeId edge vtx -> Maybe vtx helper VertexIx polygon -edgeIx StatusStructure +edgeIx StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) -status' of - Just VertexIx polygon -h | VertexIx polygon -> Bool -isMerge VertexIx polygon -h -> Diagonal polygon -> Maybe (Diagonal polygon) +status' of + Just VertexIx polygon +h | VertexIx polygon -> Bool +isMerge VertexIx polygon +h -> Diagonal polygon -> Maybe (Diagonal polygon) forall a. a -> Maybe a Just (Diagonal polygon -> Maybe (Diagonal polygon)) -> Diagonal polygon -> Maybe (Diagonal polygon) @@ -993,23 +993,23 @@ $ VertexIx polygon -> VertexIx polygon -> Diagonal polygon forall r. r -> r -> Vector 2 r Vector2 VertexIx polygon -i VertexIx polygon -h +i VertexIx polygon +h Maybe (VertexIx polygon) _ -> Maybe (Diagonal polygon) forall a. Maybe a Nothing where - isMerge :: VertexIx polygon -> Bool -isMerge VertexIx polygon -h = polygon -> VertexIx polygon -> point -> VertexType + isMerge :: VertexIx polygon -> Bool +isMerge VertexIx polygon +h = polygon -> VertexIx polygon -> point -> VertexType forall polygon point r. (Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) => polygon -> VertexIx polygon -> point -> VertexType classify polygon -pg VertexIx polygon -h (polygon -pgpolygon -> Getting (Endo point) polygon point -> point +pg VertexIx polygon +h (polygon +pgpolygon -> Getting (Endo point) polygon point -> point forall s a. HasCallStack => s -> Getting (Endo a) s a -> a ^?!VertexIx polygon -> IndexedTraversal' (VertexIx polygon) polygon (Vertex polygon) @@ -1018,15 +1018,15 @@ VertexIx graph -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt VertexIx polygon -h) VertexType -> VertexType -> Bool +h) VertexType -> VertexType -> Bool forall a. Eq a => a -> a -> Bool == VertexType Merge -- | returns True if v the interior of the polygon is to the right of v - isLeftVertex :: Bool -isLeftVertex = case (polygon -pgpolygon -> Getting (Endo point) polygon point -> point + isLeftVertex :: Bool +isLeftVertex = case (polygon +pgpolygon -> Getting (Endo point) polygon point -> point forall s a. HasCallStack => s -> Getting (Endo a) s a -> a ^?!VertexIx polygon -> IndexedTraversal' (VertexIx polygon) polygon (Vertex polygon) @@ -1035,13 +1035,13 @@ VertexIx graph -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt VertexIx polygon -p) point -> point -> Ordering +p) point -> point -> Ordering forall point r. (Point_ point 2 r, Ord r) => point -> point -> Ordering `cmpSweep` point Vertex polygon -v of +v of Ordering GT -> Bool True @@ -1051,25 +1051,25 @@ -- given a vertex that determines the time, and an edge and its helper, insert it -- into the status structure - insertAt :: point - -> Edge' polygon - -> VertexIx polygon -- ^ the helper of the edge - -> StatusSruct polygon -> StatusSruct polygon - insertAt :: point + insertAt :: point + -> Edge' polygon + -> VertexIx polygon -- ^ the helper of the edge + -> StatusSruct polygon -> StatusSruct polygon + insertAt :: point -> Edge' polygon -> VertexIx polygon -> StatusSruct polygon -> StatusSruct polygon -insertAt point -u Edge' polygon -seg VertexIx polygon -h StatusSruct polygon -status' = StatusStructure +insertAt point +u Edge' polygon +seg VertexIx polygon +h StatusSruct polygon +status' = StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) StatusSruct polygon -status'StatusStructure +status'StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) @@ -1147,7 +1147,7 @@ -> Ordering forall a b. (a -> b) -> a -> b $ point -upoint -> Getting r point r -> r +upoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -1156,7 +1156,7 @@ IndexedLens' Int point r yCoord) ClosedLineSegment point :+ VertexIx polygon Edge' polygon -seg +seg StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) @@ -1219,7 +1219,7 @@ forall k a. Ord k => k -> a -> Map k a -> Map k a Map.insert (ClosedLineSegment point :+ VertexIx polygon Edge' polygon -seg(ClosedLineSegment point :+ VertexIx polygon) +seg(ClosedLineSegment point :+ VertexIx polygon) -> Getting (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) @@ -1234,16 +1234,16 @@ Functor f => (extra -> f extra') -> (core :+ extra) -> f (core :+ extra') extra) VertexIx polygon -h +h -- given a vertex that determines the dtime, and an edge. Delete the edge from the status -- structure. - deleteAt :: point -> Edge' polygon -> StatusSruct polygon -> StatusSruct polygon - deleteAt :: point + deleteAt :: point -> Edge' polygon -> StatusSruct polygon -> StatusSruct polygon + deleteAt :: point -> Edge' polygon -> StatusSruct polygon -> StatusSruct polygon -deleteAt point -u Edge' polygon -seg = ASetter +deleteAt point +u Edge' polygon +seg = ASetter (StatusSruct polygon) (StatusSruct polygon) (Set (ClosedLineSegment point :+ VertexIx polygon)) @@ -1305,7 +1305,7 @@ -> Ordering forall a b. (a -> b) -> a -> b $ point -upoint -> Getting r point r -> r +upoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -1314,15 +1314,15 @@ IndexedLens' Int point r yCoord) ClosedLineSegment point :+ VertexIx polygon Edge' polygon -seg +seg -- Look up the edge directly to the left of the query point q. - lookupLT :: point -> StatusSruct polygon -> Maybe (Edge' polygon) - lookupLT :: point -> StatusSruct polygon -> Maybe (Edge' polygon) -lookupLT point -q StatusSruct polygon -s' = let (Set (ClosedLineSegment point :+ VertexIx polygon) -l,Set (ClosedLineSegment point :+ VertexIx polygon) + lookupLT :: point -> StatusSruct polygon -> Maybe (Edge' polygon) + lookupLT :: point -> StatusSruct polygon -> Maybe (Edge' polygon) +lookupLT point +q StatusSruct polygon +s' = let (Set (ClosedLineSegment point :+ VertexIx polygon) +l,Set (ClosedLineSegment point :+ VertexIx polygon) _,Set (ClosedLineSegment point :+ VertexIx polygon) _) = ((ClosedLineSegment point :+ VertexIx polygon) -> Ordering) -> Set (ClosedLineSegment point :+ VertexIx polygon) @@ -1336,12 +1336,12 @@ Point_ point' 2 r, Ord r, Num r) => point -> lineSegment -> Ordering cmpX point -q) (StatusStructure +q) (StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) StatusSruct polygon -s'StatusStructure +s'StatusStructure (VertexIx polygon) (ClosedLineSegment point :+ VertexIx polygon) (VertexIx polygon) @@ -1371,28 +1371,28 @@ -> Maybe (ClosedLineSegment point :+ VertexIx polygon) forall a. Set a -> Maybe a Set.lookupMax Set (ClosedLineSegment point :+ VertexIx polygon) -l +l -- | compare the point and the segment horizontally. I.e. returs LT if the segment lies -- left of the point, EQ if the point is on the segment, and GT if the segment lies right -- of the point. -cmpX :: ( Point_ point 2 r, LineSegment_ lineSegment point' - , Point_ point' 2 r, Ord r, Num r - ) => point -> lineSegment -> Ordering +cmpX :: ( Point_ point 2 r, LineSegment_ lineSegment point' + , Point_ point' 2 r, Ord r, Num r + ) => point -> lineSegment -> Ordering cmpX :: forall point r lineSegment point'. (Point_ point 2 r, LineSegment_ lineSegment point', Point_ point' 2 r, Ord r, Num r) => point -> lineSegment -> Ordering -cmpX point -q (lineSegment -> lineSegment +cmpX point +q (lineSegment -> lineSegment forall lineSegment point (d :: Nat) r. (LineSegment_ lineSegment point, Point_ point d r, 1 <= d, Ord r) => lineSegment -> lineSegment -orientLR -> lineSegment -seg) +orientLR -> lineSegment +seg) | lineSegment -seglineSegment -> Getting r lineSegment r -> r +seglineSegment -> Getting r lineSegment r -> r forall s a. s -> Getting a s a -> a ^.(point' -> Const r point') -> lineSegment -> Const r lineSegment forall seg p. HasStart seg p => Lens' seg p @@ -1409,7 +1409,7 @@ yCoord r -> r -> Bool forall a. Ord a => a -> a -> Bool <= lineSegment -seglineSegment -> Getting r lineSegment r -> r +seglineSegment -> Getting r lineSegment r -> r forall s a. s -> Getting a s a -> a ^.(point' -> Const r point') -> lineSegment -> Const r lineSegment forall seg p. HasEnd seg p => Lens' seg p @@ -1424,25 +1424,25 @@ IndexedLens' Int point r IndexedLens' Int point' r yCoord = Ordering -> Ordering -> Ordering -f Ordering +f Ordering GT Ordering LT | Bool otherwise = Ordering -> Ordering -> Ordering -f Ordering +f Ordering LT Ordering GT where - f :: Ordering -> Ordering -> Ordering -f Ordering -lt Ordering -gt = case Point 2 r -> Point 2 r -> Point 2 r -> CCW + f :: Ordering -> Ordering -> Ordering +f Ordering +lt Ordering +gt = case Point 2 r -> Point 2 r -> Point 2 r -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw (lineSegment -seglineSegment +seglineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point' -> Const (Point 2 r) point') @@ -1462,7 +1462,7 @@ Lens' point (Point d r) Lens' point' (Point 2 r) asPoint) (point -qpoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r +qpoint -> Getting (Point 2 r) point (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.Getting (Point 2 r) point (Point 2 r) forall point (d :: Nat) r. @@ -1470,7 +1470,7 @@ Lens' point (Point d r) Lens' point (Point 2 r) asPoint) (lineSegment -seglineSegment +seglineSegment -> Getting (Point 2 r) lineSegment (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point' -> Const (Point 2 r) point') @@ -1492,32 +1492,32 @@ asPoint) of CCW CW -> Ordering -lt +lt CCW CoLinear -> Ordering EQ CCW CCW -> Ordering -gt +gt -------------------------------------------------------------------------------- -- * An Event; essentially just a vertex. -- | Events during the sweepline algorithm ; the vertices -type Event polygon = Event' (VertexIx polygon) (Vertex polygon) -data Event' idx point = +type Event polygon = Event' (VertexIx polygon) (Vertex polygon) +data Event' idx point = Event { forall idx point. Event' idx point -> VertexType _eventType :: {-# UNPACK #-}!VertexType , forall idx point. Event' idx point -> idx -_vtxId :: !idx +_vtxId :: !idx , forall idx point. Event' idx point -> point -eventPoint :: !point +eventPoint :: !point , forall idx point. Event' idx point -> idx -_predecessorVtx :: !idx +_predecessorVtx :: !idx , forall idx point. Event' idx point -> idx -_successorVtx :: !idx - } deriving (Int -> Event' idx point -> ShowS +_successorVtx :: !idx + } deriving (Int -> Event' idx point -> ShowS [Event' idx point] -> ShowS Event' idx point -> [Char] (Int -> Event' idx point -> ShowS) @@ -1547,7 +1547,7 @@ (Show point, Show idx) => [Event' idx point] -> ShowS showList :: [Event' idx point] -> ShowS -Show,Event' idx point -> Event' idx point -> Bool +Show,Event' idx point -> Event' idx point -> Bool (Event' idx point -> Event' idx point -> Bool) -> (Event' idx point -> Event' idx point -> Bool) -> Eq (Event' idx point) @@ -1566,47 +1566,47 @@ Eq) -- | how to compare events -compareEvent :: (Point_ point 2 r, Ord r) => Event' i point -> Event' i point -> Ordering +compareEvent :: (Point_ point 2 r, Ord r) => Event' i point -> Event' i point -> Ordering compareEvent :: forall point r i. (Point_ point 2 r, Ord r) => Event' i point -> Event' i point -> Ordering -compareEvent Event' i point -p Event' i point -q = Event' i point -> point +compareEvent Event' i point +p Event' i point +q = Event' i point -> point forall idx point. Event' idx point -> point eventPoint Event' i point -q point -> point -> Ordering +q point -> point -> Ordering forall point r. (Point_ point 2 r, Ord r) => point -> point -> Ordering `cmpSweep` Event' i point -> point forall idx point. Event' idx point -> point eventPoint Event' i point -p +p -- note that the order of p and q has switched. -------------------------------------------------------------------------------- -- * The Status Structure -- | edges are identified using their first vertex -type Edge' polygon = ClosedLineSegment (Vertex polygon) :+ VertexIx polygon +type Edge' polygon = ClosedLineSegment (Vertex polygon) :+ VertexIx polygon -- | The status structure during the sweep -type StatusSruct polygon = StatusStructure (VertexIx polygon) - (Edge' polygon) - (VertexIx polygon) +type StatusSruct polygon = StatusStructure (VertexIx polygon) + (Edge' polygon) + (VertexIx polygon) -- | The status structure consists of a BST of edges intersected by the sweep line (in -- left to right order), and, for each edge currently intersected by the sweep line its -- helper vertex. -data StatusStructure edgeId edge vtx = +data StatusStructure edgeId edge vtx = StatusStructure { forall edgeId edge vtx. StatusStructure edgeId edge vtx -> Set edge -_tree :: Set.Set edge -- ^ the BST with edges ordered along sweep +_tree :: Set.Set edge -- ^ the BST with edges ordered along sweep , forall edgeId edge vtx. StatusStructure edgeId edge vtx -> Map edgeId vtx -_helpers :: Map.Map edgeId vtx -- ^ for each edge its helper - } deriving (Int -> StatusStructure edgeId edge vtx -> ShowS +_helpers :: Map.Map edgeId vtx -- ^ for each edge its helper + } deriving (Int -> StatusStructure edgeId edge vtx -> ShowS [StatusStructure edgeId edge vtx] -> ShowS StatusStructure edgeId edge vtx -> [Char] (Int -> StatusStructure edgeId edge vtx -> ShowS) @@ -1636,7 +1636,7 @@ (Show edge, Show edgeId, Show vtx) => [StatusStructure edgeId edge vtx] -> ShowS showList :: [StatusStructure edgeId edge vtx] -> ShowS -Show,StatusStructure edgeId edge vtx +Show,StatusStructure edgeId edge vtx -> StatusStructure edgeId edge vtx -> Bool (StatusStructure edgeId edge vtx -> StatusStructure edgeId edge vtx -> Bool) @@ -1662,7 +1662,7 @@ -> StatusStructure edgeId edge vtx -> Bool Eq) -tree :: Lens' (StatusStructure edgeId edge vtx) (Set.Set edge) +tree :: Lens' (StatusStructure edgeId edge vtx) (Set.Set edge) tree :: forall edgeId edge vtx (f :: * -> *). Functor f => (Set edge -> f (Set edge)) @@ -1679,12 +1679,12 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens StatusStructure edgeId edge vtx -> Set edge forall edgeId edge vtx. StatusStructure edgeId edge vtx -> Set edge -_tree (\StatusStructure edgeId edge vtx -ss Set edge -t -> StatusStructure edgeId edge vtx -ss { _tree = t }) +_tree (\StatusStructure edgeId edge vtx +ss Set edge +t -> StatusStructure edgeId edge vtx +ss { _tree = t }) -helpers :: Lens' (StatusStructure edgeId edge vtx) (Map.Map edgeId vtx) +helpers :: Lens' (StatusStructure edgeId edge vtx) (Map.Map edgeId vtx) helpers :: forall edgeId edge vtx (f :: * -> *). Functor f => (Map edgeId vtx -> f (Map edgeId vtx)) @@ -1702,20 +1702,20 @@ lens StatusStructure edgeId edge vtx -> Map edgeId vtx forall edgeId edge vtx. StatusStructure edgeId edge vtx -> Map edgeId vtx -_helpers (\StatusStructure edgeId edge vtx -ss Map edgeId vtx -h -> StatusStructure edgeId edge vtx -ss { _helpers = h }) +_helpers (\StatusStructure edgeId edge vtx +ss Map edgeId vtx +h -> StatusStructure edgeId edge vtx +ss { _helpers = h }) -- | Get the helper of the given edge -helper :: Ord edgeId => edgeId -> StatusStructure edgeId edge vtx -> Maybe vtx +helper :: Ord edgeId => edgeId -> StatusStructure edgeId edge vtx -> Maybe vtx helper :: forall edgeId edge vtx. Ord edgeId => edgeId -> StatusStructure edgeId edge vtx -> Maybe vtx -helper edgeId -i StatusStructure edgeId edge vtx -status = StatusStructure edgeId edge vtx -statusStatusStructure edgeId edge vtx +helper edgeId +i StatusStructure edgeId edge vtx +status = StatusStructure edgeId edge vtx +statusStatusStructure edgeId edge vtx -> Getting (Maybe vtx) (StatusStructure edgeId edge vtx) (Maybe vtx) -> Maybe vtx @@ -1741,12 +1741,12 @@ forall m. At m => Index m -> Lens' m (Maybe (IxValue m)) at edgeId Index (Map edgeId vtx) -i +i -------------------------------------------------------------------------------- -- | The various vertex types -data VertexType = Start | Merge | Split | End | Regular deriving (Int -> VertexType -> ShowS +data VertexType = Start | Merge | Split | End | Regular deriving (Int -> VertexType -> ShowS [VertexType] -> ShowS VertexType -> [Char] (Int -> VertexType -> ShowS) @@ -1761,7 +1761,7 @@ show :: VertexType -> [Char] $cshowList :: [VertexType] -> ShowS showList :: [VertexType] -> ShowS -Show,ReadPrec [VertexType] +Show,ReadPrec [VertexType] ReadPrec VertexType Int -> ReadS VertexType ReadS [VertexType] @@ -1781,7 +1781,7 @@ readPrec :: ReadPrec VertexType $creadListPrec :: ReadPrec [VertexType] readListPrec :: ReadPrec [VertexType] -Read,VertexType -> VertexType -> Bool +Read,VertexType -> VertexType -> Bool (VertexType -> VertexType -> Bool) -> (VertexType -> VertexType -> Bool) -> Eq VertexType forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -1792,27 +1792,27 @@ Eq) -- | Classify all vertices of the polygon; i.e. compute their vertex types. -classifyVertices :: ( Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) - => polygon -> [(VertexIx polygon, VertexType)] +classifyVertices :: ( Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) + => polygon -> [(VertexIx polygon, VertexType)] classifyVertices :: forall polygon point r. (Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) => polygon -> [(VertexIx polygon, VertexType)] -classifyVertices polygon -pg = (\(VertexIx polygon -i,point -v) -> (VertexIx polygon -i, polygon -> VertexIx polygon -> point -> VertexType +classifyVertices polygon +pg = (\(VertexIx polygon +i,point +v) -> (VertexIx polygon +i, polygon -> VertexIx polygon -> point -> VertexType forall polygon point r. (Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) => polygon -> VertexIx polygon -> point -> VertexType classify polygon -pg VertexIx polygon -i point -v)) ((VertexIx polygon, point) -> (VertexIx polygon, VertexType)) +pg VertexIx polygon +i point +v)) ((VertexIx polygon, point) -> (VertexIx polygon, VertexType)) -> [(VertexIx polygon, point)] -> [(VertexIx polygon, VertexType)] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> polygon -pgpolygon +pgpolygon -> IndexedGetting (VertexIx polygon) (Endo [(VertexIx polygon, point)]) polygon point -> [(VertexIx polygon, point)] @@ -1841,17 +1841,17 @@ infixr 5 <? -- | Cons the item onto the list (if the item actually exists) -(<?) :: Maybe a -> [a] -> [a] +(<?) :: Maybe a -> [a] -> [a] Maybe a Nothing <? :: forall a. Maybe a -> [a] -> [a] -<? [a] -xs = [a] -xs -(Just a -x) <? [a] -xs = a -xa -> [a] -> [a] +<? [a] +xs = [a] +xs +(Just a +x) <? [a] +xs = a +xa -> [a] -> [a] forall a. a -> [a] -> [a] :[a] -xs +xs \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.TriangulateMonotone.html b/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.TriangulateMonotone.html index fc9318d97..615cb8b07 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.TriangulateMonotone.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.TriangulateMonotone.html @@ -46,7 +46,7 @@ -- no more than twice. type YMonotonePolygon_ = SimplePolygon_ -data LR = L | R deriving (Int -> LR -> ShowS +data LR = L | R deriving (Int -> LR -> ShowS [LR] -> ShowS LR -> String (Int -> LR -> ShowS) @@ -59,7 +59,7 @@ show :: LR -> String $cshowList :: [LR] -> ShowS showList :: [LR] -> ShowS -Show,LR -> LR -> Bool +Show,LR -> LR -> Bool (LR -> LR -> Bool) -> (LR -> LR -> Bool) -> Eq LR forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: LR -> LR -> Bool @@ -71,17 +71,17 @@ -- | Triangulates a polygon of \(n\) vertices -- -- running time: \(O(n \log n)\) -triangulate :: forall s yMonotonePolygon point r. - (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r +triangulate :: forall s yMonotonePolygon point r. + (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r ) - => yMonotonePolygon - -> CPlaneGraph s point PolygonEdgeType PolygonFaceData + => yMonotonePolygon + -> CPlaneGraph s point PolygonEdgeType PolygonFaceData triangulate :: forall {k} (s :: k) yMonotonePolygon point r. (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r) => yMonotonePolygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData -triangulate yMonotonePolygon -pg = yMonotonePolygon +triangulate yMonotonePolygon +pg = yMonotonePolygon -> [Diagonal yMonotonePolygon] -> CPlaneGraph s point PolygonEdgeType PolygonFaceData forall {k} (s :: k) polygon point r (f :: * -> *). @@ -91,12 +91,12 @@ -> f (Diagonal polygon) -> CPlaneGraph s point PolygonEdgeType PolygonFaceData constructGraph yMonotonePolygon -pg (yMonotonePolygon -> [Diagonal yMonotonePolygon] +pg (yMonotonePolygon -> [Diagonal yMonotonePolygon] forall yMonotonePolygon point r. (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r) => yMonotonePolygon -> [Diagonal yMonotonePolygon] computeDiagonals yMonotonePolygon -pg) +pg) -- TODO: Find a way to construct the graph in O(n) time. -- | Given a y-monotone polygon in counter clockwise order computes the diagonals @@ -105,22 +105,22 @@ -- pre: the input polygon is y-monotone and has \(n \geq 3\) vertices -- -- running time: \(O(n)\) -computeDiagonals :: (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r) - => yMonotonePolygon -> [Diagonal yMonotonePolygon] +computeDiagonals :: (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r) + => yMonotonePolygon -> [Diagonal yMonotonePolygon] computeDiagonals :: forall yMonotonePolygon point r. (YMonotonePolygon_ yMonotonePolygon point r, Ord r, Num r) => yMonotonePolygon -> [Diagonal yMonotonePolygon] -computeDiagonals yMonotonePolygon -pg = case [point :+ (Int, LR)] +computeDiagonals yMonotonePolygon +pg = case [point :+ (Int, LR)] -> Maybe ([point :+ (Int, LR)], point :+ (Int, LR)) forall s a. Snoc s s a a => s -> Maybe (s, a) unsnoc [point :+ (Int, LR)] -vs of - Just (point :+ (Int, LR) -u:point :+ (Int, LR) -v:[point :+ (Int, LR)] -vs',point :+ (Int, LR) -w) -> (point :+ (Int, LR)) +vs of + Just (point :+ (Int, LR) +u:point :+ (Int, LR) +v:[point :+ (Int, LR)] +vs',point :+ (Int, LR) +w) -> (point :+ (Int, LR)) -> (point :+ (Int, LR)) -> [point :+ (Int, LR)] -> (point :+ (Int, LR)) @@ -133,11 +133,11 @@ -> t (P i point (NumType point)) -> P i point (NumType point) -> [Vector 2 i] -go point :+ (Int, LR) -u point :+ (Int, LR) -v [point :+ (Int, LR)] -vs' point :+ (Int, LR) -w +go point :+ (Int, LR) +u point :+ (Int, LR) +v [point :+ (Int, LR)] +vs' point :+ (Int, LR) +w Maybe ([point :+ (Int, LR)], point :+ (Int, LR)) _ -> String -> [Vector 2 Int] forall a. HasCallStack => String -> a @@ -146,8 +146,8 @@ where -- split the polygon into two chains of vertices (with the vertices in decreasing order) -- tag them with left and right, and merge the resulting list into one big decreasing list - vs :: [point :+ (Int, LR)] -vs = ([point :+ (Int, LR)] + vs :: [point :+ (Int, LR)] +vs = ([point :+ (Int, LR)] -> [point :+ (Int, LR)] -> [point :+ (Int, LR)]) -> ([point :+ (Int, LR)], [point :+ (Int, LR)]) -> [point :+ (Int, LR)] @@ -169,14 +169,14 @@ $ ((point :+ (Int, LR)) -> (Down (NumType point), NumType point)) -> (point :+ (Int, LR)) -> (point :+ (Int, LR)) -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering -comparing (\((Point2_ NumType point -x NumType point -y) :+ (Int, LR) +comparing (\((Point2_ NumType point +x NumType point +y) :+ (Int, LR) _) -> (NumType point -> Down (NumType point) forall a. a -> Down a Down NumType point -y, NumType point -x))) +y, NumType point +x))) (([point :+ (Int, LR)], [point :+ (Int, LR)]) -> [point :+ (Int, LR)]) -> ([point :+ (Int, LR)], [point :+ (Int, LR)]) @@ -191,28 +191,28 @@ -> ([point :+ (VertexIx yMonotonePolygon, LR)], [point :+ (VertexIx yMonotonePolygon, LR)]) splitPolygon yMonotonePolygon -pg +pg -- run the stack computation that actually triangulates the polygon. - go :: P i point (NumType point) + go :: P i point (NumType point) -> P i point (NumType point) -> t (P i point (NumType point)) -> P i point (NumType point) -> [Vector 2 i] -go P i point (NumType point) -u P i point (NumType point) -v t (P i point (NumType point)) -vs' P i point (NumType point) -w = [Vector 2 i] -diags'' [Vector 2 i] -> [Vector 2 i] -> [Vector 2 i] +go P i point (NumType point) +u P i point (NumType point) +v t (P i point (NumType point)) +vs' P i point (NumType point) +w = [Vector 2 i] +diags'' [Vector 2 i] -> [Vector 2 i] -> [Vector 2 i] forall a. Semigroup a => a -> a -> a <> [Vector 2 i] -diags' +diags' where SP (P i point (NumType point) -_:|[P i point (NumType point)] -stack') [Vector 2 i] -diags' = (SP (Stack (P i point (NumType point))) [Vector 2 i] +_:|[P i point (NumType point)] +stack') [Vector 2 i] +diags' = (SP (Stack (P i point (NumType point))) [Vector 2 i] -> P i point (NumType point) -> SP (Stack (P i point (NumType point))) [Vector 2 i]) -> SP (Stack (P i point (NumType point))) [Vector 2 i] @@ -222,13 +222,13 @@ forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b -List.foldl' (\(SP Stack (P i point (NumType point)) -stack [Vector 2 i] -acc) P i point (NumType point) -v' -> ([Vector 2 i] -> [Vector 2 i] -> [Vector 2 i] +List.foldl' (\(SP Stack (P i point (NumType point)) +stack [Vector 2 i] +acc) P i point (NumType point) +v' -> ([Vector 2 i] -> [Vector 2 i] -> [Vector 2 i] forall a. Semigroup a => a -> a -> a <> [Vector 2 i] -acc) ([Vector 2 i] -> [Vector 2 i]) +acc) ([Vector 2 i] -> [Vector 2 i]) -> SP (Stack (P i point (NumType point))) [Vector 2 i] -> SP (Stack (P i point (NumType point))) [Vector 2 i] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -240,22 +240,22 @@ P i point r -> Stack (P i point r) -> SP (Stack (P i point r)) [Vector 2 i] process P i point (NumType point) -v' Stack (P i point (NumType point)) -stack) +v' Stack (P i point (NumType point)) +stack) (Stack (P i point (NumType point)) -> [Vector 2 i] -> SP (Stack (P i point (NumType point))) [Vector 2 i] forall a b. a -> b -> SP a b SP (P i point (NumType point) -v P i point (NumType point) +v P i point (NumType point) -> [P i point (NumType point)] -> Stack (P i point (NumType point)) forall a. a -> [a] -> NonEmpty a :| [P i point (NumType point) -u]) []) t (P i point (NumType point)) -vs' +u]) []) t (P i point (NumType point)) +vs' -- add vertices from the last guy w to all 'middle' guys of the final stack - diags'' :: [Vector 2 i] -diags'' = (P i point (NumType point) -> Vector 2 i) + diags'' :: [Vector 2 i] +diags'' = (P i point (NumType point) -> Vector 2 i) -> [P i point (NumType point)] -> [Vector 2 i] forall a b. (a -> b) -> [a] -> [b] map (P i point (NumType point) @@ -263,18 +263,18 @@ forall {k} i point (r :: k). P i point r -> P i point r -> Vector 2 i seg P i point (NumType point) -w) ([P i point (NumType point)] -> [Vector 2 i]) +w) ([P i point (NumType point)] -> [Vector 2 i]) -> [P i point (NumType point)] -> [Vector 2 i] forall a b. (a -> b) -> a -> b $ [P i point (NumType point)] -> [P i point (NumType point)] forall a. HasCallStack => [a] -> [a] init [P i point (NumType point)] -stack' +stack' -type P i point r = point :+ (i,LR) +type P i point r = point :+ (i,LR) -- | Get the chain of a particular point -chainOf :: P i point r -> LR +chainOf :: P i point r -> LR chainOf :: forall {k} i point (r :: k). P i point r -> LR chainOf = Getting LR (point :+ (i, LR)) LR -> (point :+ (i, LR)) -> LR forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a @@ -294,21 +294,21 @@ _2) -- | Produce a diagional -seg :: P i point r -> P i point r -> Vector 2 i +seg :: P i point r -> P i point r -> Vector 2 i seg :: forall {k} i point (r :: k). P i point r -> P i point r -> Vector 2 i -seg P i point r -u P i point r -v = i -> i -> Vector 2 i +seg P i point r +u P i point r +v = i -> i -> Vector 2 i forall r. r -> r -> Vector 2 r Vector2 (P i point r -> i -toVtx P i point r -u) (P i point r -> i -toVtx P i point r -v) +toVtx P i point r +u) (P i point r -> i +toVtx P i point r +v) where - toVtx :: P i point r -> i -toVtx = Getting i (P i point r) i -> P i point r -> i + toVtx :: P i point r -> i +toVtx = Getting i (P i point r) i -> P i point r -> i forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a view (((i, LR) -> Const i (i, LR)) -> P i point r -> Const i (P i point r) @@ -325,44 +325,44 @@ Lens (i, LR) (i, LR) i i _1) -type Stack a = NonEmpty a +type Stack a = NonEmpty a -- | The real triangulation procedure -process :: (Point_ point 2 r, Ord r, Num r) - => P i point r - -> Stack (P i point r) - -> SP (Stack (P i point r)) [Vector 2 i] +process :: (Point_ point 2 r, Ord r, Num r) + => P i point r + -> Stack (P i point r) + -> SP (Stack (P i point r)) [Vector 2 i] process :: forall point r i. (Point_ point 2 r, Ord r, Num r) => P i point r -> Stack (P i point r) -> SP (Stack (P i point r)) [Vector 2 i] -process P i point r -v stack :: Stack (P i point r) -stack@(P i point r -u:|[P i point r] -ws) +process P i point r +v stack :: Stack (P i point r) +stack@(P i point r +u:|[P i point r] +ws) | P i point r -> LR forall {k} i point (r :: k). P i point r -> LR chainOf P i point r -v LR -> LR -> Bool +v LR -> LR -> Bool forall a. Eq a => a -> a -> Bool /= P i point r -> LR forall {k} i point (r :: k). P i point r -> LR chainOf P i point r -u = Stack (P i point r) +u = Stack (P i point r) -> [Vector 2 i] -> SP (Stack (P i point r)) [Vector 2 i] forall a b. a -> b -> SP a b SP (P i point r -vP i point r -> [P i point r] -> Stack (P i point r) +vP i point r -> [P i point r] -> Stack (P i point r) forall a. a -> [a] -> NonEmpty a :|[P i point r -u]) ((P i point r -> Vector 2 i) -> [P i point r] -> [Vector 2 i] +u]) ((P i point r -> Vector 2 i) -> [P i point r] -> [Vector 2 i] forall a b. (a -> b) -> [a] -> [b] map (P i point r -> P i point r -> Vector 2 i forall {k} i point (r :: k). P i point r -> P i point r -> Vector 2 i seg P i point r -v) ([P i point r] -> [Vector 2 i]) +v) ([P i point r] -> [Vector 2 i]) -> (Stack (P i point r) -> [P i point r]) -> Stack (P i point r) -> [Vector 2 i] @@ -373,30 +373,30 @@ -> Stack (P i point r) -> [Vector 2 i] forall a b. (a -> b) -> a -> b $ Stack (P i point r) -stack) +stack) | Bool otherwise = Stack (P i point r) -> [Vector 2 i] -> SP (Stack (P i point r)) [Vector 2 i] forall a b. a -> b -> SP a b SP (P i point r -vP i point r -> [P i point r] -> Stack (P i point r) +vP i point r -> [P i point r] -> Stack (P i point r) forall a. a -> [a] -> NonEmpty a :|P i point r -wP i point r -> [P i point r] -> [P i point r] +wP i point r -> [P i point r] -> [P i point r] forall a. a -> [a] -> [a] :[P i point r] -rest) ((P i point r -> Vector 2 i) -> [P i point r] -> [Vector 2 i] +rest) ((P i point r -> Vector 2 i) -> [P i point r] -> [Vector 2 i] forall a b. (a -> b) -> [a] -> [b] map (P i point r -> P i point r -> Vector 2 i forall {k} i point (r :: k). P i point r -> P i point r -> Vector 2 i seg P i point r -v) [P i point r] -popped) +v) [P i point r] +popped) where - ([P i point r] -popped,[P i point r] -rest) = ASetter + ([P i point r] +popped,[P i point r] +rest) = ASetter ([(P i point r, P i point r)], [(P i point r, P i point r)]) ([P i point r], [P i point r]) [(P i point r, P i point r)] @@ -439,60 +439,60 @@ (Point_ point 2 r, Ord r, Num r) => P i point r -> (P i point r, P i point r) -> Bool isInside P i point r -v) +v) ([(P i point r, P i point r)] -> ([P i point r], [P i point r])) -> [(P i point r, P i point r)] -> ([P i point r], [P i point r]) forall a b. (a -> b) -> a -> b $ [P i point r] -> [P i point r] -> [(P i point r, P i point r)] forall a b. [a] -> [b] -> [(a, b)] zip [P i point r] -ws (Stack (P i point r) -> [P i point r] +ws (Stack (P i point r) -> [P i point r] forall a. NonEmpty a -> [a] NonEmpty.toList Stack (P i point r) -stack) - w :: P i point r -w = Stack (P i point r) -> P i point r +stack) + w :: P i point r +w = Stack (P i point r) -> P i point r forall a. NonEmpty a -> a NonEmpty.last (Stack (P i point r) -> P i point r) -> Stack (P i point r) -> P i point r forall a b. (a -> b) -> a -> b $ P i point r -uP i point r -> [P i point r] -> Stack (P i point r) +uP i point r -> [P i point r] -> Stack (P i point r) forall a. a -> [a] -> NonEmpty a :|[P i point r] -popped +popped -- | test if m does not block the line segment from v to u -isInside :: (Point_ point 2 r, Ord r, Num r) - => P i point r - -> (P i point r, P i point r) -> Bool +isInside :: (Point_ point 2 r, Ord r, Num r) + => P i point r + -> (P i point r, P i point r) -> Bool isInside :: forall point r i. (Point_ point 2 r, Ord r, Num r) => P i point r -> (P i point r, P i point r) -> Bool -isInside P i point r -v (P i point r -u, P i point r -m) = case point -> point -> point -> CCW +isInside P i point r +v (P i point r +u, P i point r +m) = case point -> point -> point -> CCW forall point r point' point''. (Point_ point 2 r, Point_ point' 2 r, Point_ point'' 2 r, Num r, Ord r) => point -> point' -> point'' -> CCW ccw (P i point r -vP i point r -> Getting point (P i point r) point -> point +vP i point r -> Getting point (P i point r) point -> point forall s a. s -> Getting a s a -> a ^.Getting point (P i point r) point forall core extra core' (f :: * -> *). Functor f => (core -> f core') -> (core :+ extra) -> f (core' :+ extra) core) (P i point r -mP i point r -> Getting point (P i point r) point -> point +mP i point r -> Getting point (P i point r) point -> point forall s a. s -> Getting a s a -> a ^.Getting point (P i point r) point forall core extra core' (f :: * -> *). Functor f => (core -> f core') -> (core :+ extra) -> f (core' :+ extra) core) (P i point r -uP i point r -> Getting point (P i point r) point -> point +uP i point r -> Getting point (P i point r) point -> point forall s a. s -> Getting a s a -> a ^.Getting point (P i point r) point forall core extra core' (f :: * -> *). @@ -506,7 +506,7 @@ CCW -> P i point r -> LR forall {k} i point (r :: k). P i point r -> LR chainOf P i point r -v LR -> LR -> Bool +v LR -> LR -> Bool forall a. Eq a => a -> a -> Bool == LR R @@ -514,7 +514,7 @@ CW -> P i point r -> LR forall {k} i point (r :: k). P i point r -> LR chainOf P i point r -v LR -> LR -> Bool +v LR -> LR -> Bool forall a. Eq a => a -> a -> Bool == LR L @@ -526,18 +526,18 @@ -- if there are multiple point with the minimum yCoord we pick the leftmost one. -- -- running time: \(O(n)\) -splitPolygon :: (YMonotonePolygon_ yMonotonePolygon point r, Ord r) - => yMonotonePolygon - -> ( [point :+ (VertexIx yMonotonePolygon, LR)] - , [point :+ (VertexIx yMonotonePolygon, LR)] +splitPolygon :: (YMonotonePolygon_ yMonotonePolygon point r, Ord r) + => yMonotonePolygon + -> ( [point :+ (VertexIx yMonotonePolygon, LR)] + , [point :+ (VertexIx yMonotonePolygon, LR)] ) splitPolygon :: forall yMonotonePolygon point r. (YMonotonePolygon_ yMonotonePolygon point r, Ord r) => yMonotonePolygon -> ([point :+ (VertexIx yMonotonePolygon, LR)], [point :+ (VertexIx yMonotonePolygon, LR)]) -splitPolygon yMonotonePolygon -pg = ([(Int, point)] -> [point :+ (Int, LR)]) +splitPolygon yMonotonePolygon +pg = ([(Int, point)] -> [point :+ (Int, LR)]) -> ([(Int, point)] -> [point :+ (Int, LR)]) -> ([(Int, point)], [(Int, point)]) -> ([point :+ (Int, LR)], [point :+ (Int, LR)]) @@ -547,10 +547,10 @@ (a -> b) -> (c -> d) -> p a c -> p b d bimap (LR -> [(Int, point)] -> [point :+ (Int, LR)] forall {b} {a} {core}. b -> [(a, core)] -> [core :+ (a, b)] -f LR +f LR L) (LR -> [(Int, point)] -> [point :+ (Int, LR)] forall {b} {a} {core}. b -> [(a, core)] -> [core :+ (a, b)] -f LR +f LR R ([(Int, point)] -> [point :+ (Int, LR)]) -> ([(Int, point)] -> [(Int, point)]) -> [(Int, point)] @@ -573,7 +573,7 @@ NonEmpty.break ((Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int -vMinY) (Int -> Bool) -> ((Int, point) -> Int) -> (Int, point) -> Bool +vMinY) (Int -> Bool) -> ((Int, point) -> Int) -> (Int, point) -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . (Int, point) -> Int forall a b. (a, b) -> a @@ -601,26 +601,26 @@ -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) ccwOuterBoundaryFrom Int VertexIx yMonotonePolygon -vMaxY) yMonotonePolygon -pg +vMaxY) yMonotonePolygon +pg -- rotates the list to the vtx with max ycoord, producing a -- non-empty list of elements, which we break at the point with -- minimum y,x coordinate. where - f :: b -> [(a, core)] -> [core :+ (a, b)] -f b -x = ((a, core) -> core :+ (a, b)) -> [(a, core)] -> [core :+ (a, b)] + f :: b -> [(a, core)] -> [core :+ (a, b)] +f b +x = ((a, core) -> core :+ (a, b)) -> [(a, core)] -> [core :+ (a, b)] forall a b. (a -> b) -> [a] -> [b] -map (\(a -i,core -p) -> core -p core -> (a, b) -> core :+ (a, b) +map (\(a +i,core +p) -> core +p core -> (a, b) -> core :+ (a, b) forall core extra. core -> extra -> core :+ extra :+ (a -i,b -x)) - vMaxY :: Int -vMaxY = Getting (First Int) yMonotonePolygon Int -> yMonotonePolygon -> Int +i,b +x)) + vMaxY :: Int +vMaxY = Getting (First Int) yMonotonePolygon Int -> yMonotonePolygon -> Int forall a s. Getting (First a) s a -> s -> a first1Of ((Vertex yMonotonePolygon -> Vertex yMonotonePolygon -> Ordering) -> IndexedFold1 @@ -642,7 +642,7 @@ (TypeError ...), Ord (NumType b), Point_ b (Dimension b) (NumType b)) => b -> b -> Ordering -incYincX(Indexed Int point (Const (First Int) point) +incYincX(Indexed Int point (Const (First Int) point) -> yMonotonePolygon -> Const (First Int) yMonotonePolygon) -> ((Int -> Const (First Int) Int) -> Indexed Int point (Const (First Int) point)) @@ -665,9 +665,9 @@ forall s t a b. Field1 s t a b => Lens s t a b Lens (Int, point) (Int, point) Int Int _1) yMonotonePolygon -pg - vMinY :: Int -vMinY = Getting (First Int) yMonotonePolygon Int -> yMonotonePolygon -> Int +pg + vMinY :: Int +vMinY = Getting (First Int) yMonotonePolygon Int -> yMonotonePolygon -> Int forall a s. Getting (First a) s a -> s -> a first1Of ((Vertex yMonotonePolygon -> Vertex yMonotonePolygon -> Ordering) -> IndexedFold1 @@ -689,7 +689,7 @@ (TypeError ...), Ord (NumType b), Point_ b (Dimension b) (NumType b)) => b -> b -> Ordering -incYincX(Indexed Int point (Const (First Int) point) +incYincX(Indexed Int point (Const (First Int) point) -> yMonotonePolygon -> Const (First Int) yMonotonePolygon) -> ((Int -> Const (First Int) Int) -> Indexed Int point (Const (First Int) point)) @@ -712,12 +712,12 @@ forall s t a b. Field1 s t a b => Lens s t a b Lens (Int, point) (Int, point) Int Int _1) yMonotonePolygon -pg +pg - incYincX :: b -> b -> Ordering -incYincX b -p b -q = (b -> NumType b) -> b -> b -> Ordering + incYincX :: b -> b -> Ordering +incYincX b +p b +q = (b -> NumType b) -> b -> b -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering comparing (b -> Getting (NumType b) b (NumType b) -> NumType b forall s a. s -> Getting a s a -> a @@ -727,8 +727,8 @@ IndexedLens' Int point r IndexedLens' Int b (NumType b) yCoord) b -p b -q Ordering -> Ordering -> Ordering +p b +q Ordering -> Ordering -> Ordering forall a. Semigroup a => a -> a -> a <> (b -> NumType b) -> b -> b -> Ordering forall a b. Ord a => (b -> a) -> b -> b -> Ordering @@ -740,8 +740,8 @@ IndexedLens' Int point r IndexedLens' Int b (NumType b) xCoord) b -p b -q +p b +q -- Just vs' = CV.findRotateTo (\v -> v^.core == vMaxY) -- $ pg^.outerBoundaryVector diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.Types.html b/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.Types.html index 3bbd23223..11cac952f 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.Types.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.Types.html @@ -26,7 +26,7 @@ -- | After triangulation, edges are either from the original polygon or a new diagonal. data PolygonEdgeType = Original | Diagonal - deriving (Int -> PolygonEdgeType -> ShowS + deriving (Int -> PolygonEdgeType -> ShowS [PolygonEdgeType] -> ShowS PolygonEdgeType -> String (Int -> PolygonEdgeType -> ShowS) @@ -41,7 +41,7 @@ show :: PolygonEdgeType -> String $cshowList :: [PolygonEdgeType] -> ShowS showList :: [PolygonEdgeType] -> ShowS -Show,ReadPrec [PolygonEdgeType] +Show,ReadPrec [PolygonEdgeType] ReadPrec PolygonEdgeType Int -> ReadS PolygonEdgeType ReadS [PolygonEdgeType] @@ -61,7 +61,7 @@ readPrec :: ReadPrec PolygonEdgeType $creadListPrec :: ReadPrec [PolygonEdgeType] readListPrec :: ReadPrec [PolygonEdgeType] -Read,PolygonEdgeType -> PolygonEdgeType -> Bool +Read,PolygonEdgeType -> PolygonEdgeType -> Bool (PolygonEdgeType -> PolygonEdgeType -> Bool) -> (PolygonEdgeType -> PolygonEdgeType -> Bool) -> Eq PolygonEdgeType @@ -74,7 +74,7 @@ -- | Data type that expresses whether or not we are inside or outside the -- polygon. -data PolygonFaceData = Inside | Outside deriving (Int -> PolygonFaceData -> ShowS +data PolygonFaceData = Inside | Outside deriving (Int -> PolygonFaceData -> ShowS [PolygonFaceData] -> ShowS PolygonFaceData -> String (Int -> PolygonFaceData -> ShowS) @@ -89,7 +89,7 @@ show :: PolygonFaceData -> String $cshowList :: [PolygonFaceData] -> ShowS showList :: [PolygonFaceData] -> ShowS -Show,ReadPrec [PolygonFaceData] +Show,ReadPrec [PolygonFaceData] ReadPrec PolygonFaceData Int -> ReadS PolygonFaceData ReadS [PolygonFaceData] @@ -109,7 +109,7 @@ readPrec :: ReadPrec PolygonFaceData $creadListPrec :: ReadPrec [PolygonFaceData] readListPrec :: ReadPrec [PolygonFaceData] -Read,PolygonFaceData -> PolygonFaceData -> Bool +Read,PolygonFaceData -> PolygonFaceData -> Bool (PolygonFaceData -> PolygonFaceData -> Bool) -> (PolygonFaceData -> PolygonFaceData -> Bool) -> Eq PolygonFaceData @@ -120,7 +120,7 @@ /= :: PolygonFaceData -> PolygonFaceData -> Bool Eq) -type Diagonal polygon = Vector 2 (VertexIx polygon) +type Diagonal polygon = Vector 2 (VertexIx polygon) {- @@ -217,23 +217,23 @@ -- -- -- running time: \(O(n\log n)\) -constructGraph :: forall s polygon point r f. - ( SimplePolygon_ polygon point r, Point_ point 2 r - , Foldable f, Ord r, Num r +constructGraph :: forall s polygon point r f. + ( SimplePolygon_ polygon point r, Point_ point 2 r + , Foldable f, Ord r, Num r ) - => polygon - -> f (Diagonal polygon) - -> CPlaneGraph s point PolygonEdgeType PolygonFaceData + => polygon + -> f (Diagonal polygon) + -> CPlaneGraph s point PolygonEdgeType PolygonFaceData constructGraph :: forall {k} (s :: k) polygon point r (f :: * -> *). (SimplePolygon_ polygon point r, Point_ point 2 r, Foldable f, Ord r, Num r) => polygon -> f (Diagonal polygon) -> CPlaneGraph s point PolygonEdgeType PolygonFaceData -constructGraph polygon -pg f (Diagonal polygon) -diags = CPlaneGraph s point PolygonEdgeType () -grCPlaneGraph s point PolygonEdgeType () +constructGraph polygon +pg f (Diagonal polygon) +diags = CPlaneGraph s point PolygonEdgeType () +grCPlaneGraph s point PolygonEdgeType () -> (CPlaneGraph s point PolygonEdgeType () -> CPlaneGraph s point PolygonEdgeType PolygonFaceData) -> CPlaneGraph s point PolygonEdgeType PolygonFaceData @@ -267,12 +267,12 @@ forall i s t a b. AnIndexedSetter i s t a b -> (i -> a -> b) -> s -> t %@~ FaceId s -> () -> PolygonFaceData -computeFaceLabel +computeFaceLabel -- constructGraph pg diags = gr&faces %@~ computeFaceLabel where -- | Note that we use fromAdjacencyLists - gr :: CPlaneGraph s point PolygonEdgeType () -gr = NonEmpty + gr :: CPlaneGraph s point PolygonEdgeType () +gr = NonEmpty (VertexIdIn 'Primal s, point, NonEmpty (VertexIdIn 'Primal s, PolygonEdgeType)) -> CPlaneGraph s point PolygonEdgeType () @@ -292,12 +292,12 @@ fromAdjacencyLists NonEmpty (VertexIdIn 'Primal s, point, NonEmpty (VertexIdIn 'Primal s, PolygonEdgeType)) -adjLists :: CPlaneGraph s point PolygonEdgeType () +adjLists :: CPlaneGraph s point PolygonEdgeType () - adjLists :: NonEmpty + adjLists :: NonEmpty (VertexIdIn 'Primal s, point, NonEmpty (VertexIdIn 'Primal s, PolygonEdgeType)) -adjLists = ((Int, (Int, Int)) +adjLists = ((Int, (Int, Int)) -> (point, (point, point)) -> (VertexIdIn 'Primal s, point, NonEmpty (VertexIdIn 'Primal s, PolygonEdgeType))) @@ -313,7 +313,7 @@ -> (point, (point, point)) -> (VertexIdIn 'Primal s, point, NonEmpty (VertexIdIn 'Primal s, PolygonEdgeType)) -collectDiags (((Int, (Int, Int)), (point, (point, point))) +collectDiags (((Int, (Int, Int)), (point, (point, point))) -> (VertexIdIn 'Primal s, point, NonEmpty (VertexIdIn 'Primal s, PolygonEdgeType))) -> NonEmpty ((Int, (Int, Int)), (point, (point, point))) @@ -355,50 +355,50 @@ polygon (Vertex polygon, (Vertex polygon, Vertex polygon)) outerBoundaryWithNeighbours polygon -pg +pg - collectDiags :: (VertexIx polygon, (VertexIx polygon, VertexIx polygon)) - -> (point, (point, point)) - -> ( VertexIdIn Primal s - , point, NonEmpty (VertexIdIn Primal s,PolygonEdgeType) + collectDiags :: (VertexIx polygon, (VertexIx polygon, VertexIx polygon)) + -> (point, (point, point)) + -> ( VertexIdIn Primal s + , point, NonEmpty (VertexIdIn Primal s,PolygonEdgeType) ) - collectDiags :: (VertexIx polygon, (VertexIx polygon, VertexIx polygon)) + collectDiags :: (VertexIx polygon, (VertexIx polygon, VertexIx polygon)) -> (point, (point, point)) -> (VertexIdIn 'Primal s, point, NonEmpty (VertexIdIn 'Primal s, PolygonEdgeType)) -collectDiags (VertexIx polygon -u, (VertexIx polygon -v,VertexIx polygon -w)) (point -p,(point, point) +collectDiags (VertexIx polygon +u, (VertexIx polygon +v,VertexIx polygon +w)) (point +p,(point, point) _) = (Int, point, NonEmpty (Int, PolygonEdgeType)) -> (VertexIdIn 'Primal s, point, NonEmpty (VertexIdIn 'Primal s, PolygonEdgeType)) forall a b. Coercible a b => a -> b coerce (Int VertexIx polygon -u,point -p, (Int +u,point +p, (Int VertexIx polygon -v, PolygonEdgeType +v, PolygonEdgeType Original) (Int, PolygonEdgeType) -> [(Int, PolygonEdgeType)] -> NonEmpty (Int, PolygonEdgeType) forall a. a -> [a] -> NonEmpty a :| (Int VertexIx polygon -w, PolygonEdgeType +w, PolygonEdgeType Original) (Int, PolygonEdgeType) -> [(Int, PolygonEdgeType)] -> [(Int, PolygonEdgeType)] forall a. a -> [a] -> [a] : Int -> [(Int, PolygonEdgeType)] -diagonalsOf Int +diagonalsOf Int VertexIx polygon -u) +u) -- get the diagonals incident to vertex u - diagonalsOf :: Int -> [(Int, PolygonEdgeType)] -diagonalsOf Int -u = [(Int, PolygonEdgeType)] + diagonalsOf :: Int -> [(Int, PolygonEdgeType)] +diagonalsOf Int +u = [(Int, PolygonEdgeType)] -> Maybe [(Int, PolygonEdgeType)] -> [(Int, PolygonEdgeType)] forall a. a -> Maybe a -> a fromMaybe [] (Maybe [(Int, PolygonEdgeType)] -> [(Int, PolygonEdgeType)]) @@ -409,13 +409,13 @@ -> Maybe [(Int, PolygonEdgeType)] forall k a. Ord k => k -> Map k a -> Maybe a Map.lookup Int -u Map Int [(Int, PolygonEdgeType)] +u Map Int [(Int, PolygonEdgeType)] Map (VertexIx polygon) [(VertexIx polygon, PolygonEdgeType)] -diags' +diags' -- associate every diagonal with its endpoints - diags' :: Map.Map (VertexIx polygon) [(VertexIx polygon, PolygonEdgeType)] - diags' :: Map (VertexIx polygon) [(VertexIx polygon, PolygonEdgeType)] -diags' = (Vector 2 Int + diags' :: Map.Map (VertexIx polygon) [(VertexIx polygon, PolygonEdgeType)] + diags' :: Map (VertexIx polygon) [(VertexIx polygon, PolygonEdgeType)] +diags' = (Vector 2 Int -> Map Int [(Int, PolygonEdgeType)] -> Map Int [(Int, PolygonEdgeType)]) -> Map Int [(Int, PolygonEdgeType)] @@ -425,9 +425,9 @@ forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b -foldr (\(Vector2 Int -u Int -v) -> ([(Int, PolygonEdgeType)] +foldr (\(Vector2 Int +u Int +v) -> ([(Int, PolygonEdgeType)] -> [(Int, PolygonEdgeType)] -> [(Int, PolygonEdgeType)]) -> Int -> [(Int, PolygonEdgeType)] @@ -438,8 +438,8 @@ -> [(Int, PolygonEdgeType)] -> [(Int, PolygonEdgeType)] forall a. Semigroup a => a -> a -> a (<>) Int -u [(Int -v, PolygonEdgeType +u [(Int +v, PolygonEdgeType Diagonal)] (Map Int [(Int, PolygonEdgeType)] -> Map Int [(Int, PolygonEdgeType)]) @@ -459,33 +459,33 @@ -> [(Int, PolygonEdgeType)] -> [(Int, PolygonEdgeType)] forall a. Semigroup a => a -> a -> a (<>) Int -v [(Int -u, PolygonEdgeType +v [(Int +u, PolygonEdgeType Diagonal)] ) Map Int [(Int, PolygonEdgeType)] forall k a. Map k a Map.empty f (Vector 2 Int) f (Diagonal polygon) -diags +diags - theOuterFaceId :: FaceIx (CPlaneGraph s point PolygonEdgeType ()) -theOuterFaceId = CPlaneGraph s point PolygonEdgeType () + theOuterFaceId :: FaceIx (CPlaneGraph s point PolygonEdgeType ()) +theOuterFaceId = CPlaneGraph s point PolygonEdgeType () -> FaceIx (CPlaneGraph s point PolygonEdgeType ()) forall planeGraph vertex. PlaneGraph_ planeGraph vertex => planeGraph -> FaceIx planeGraph outerFaceId CPlaneGraph s point PolygonEdgeType () -gr - computeFaceLabel :: FaceId s -> () -> PolygonFaceData -computeFaceLabel FaceId s -fi () +gr + computeFaceLabel :: FaceId s -> () -> PolygonFaceData +computeFaceLabel FaceId s +fi () _ | FaceId s -fi FaceId s -> FaceId s -> Bool +fi FaceId s -> FaceId s -> Bool forall a. Eq a => a -> a -> Bool == FaceId s FaceIx (CPlaneGraph s point PolygonEdgeType ()) -theOuterFaceId = PolygonFaceData +theOuterFaceId = PolygonFaceData Outside | Bool otherwise = PolygonFaceData diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.html b/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.html index 7bb29d87c..5a04341d6 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Triangulation.html @@ -31,15 +31,15 @@ -- | Triangulates a polygon of \(n\) vertices -- -- running time: \(O(n \log n)\) -triangulate :: forall s polygon point r. - (SimplePolygon_ polygon point r, Ord r, Num r) - => polygon - -> CPlaneGraph s point PolygonEdgeType PolygonFaceData +triangulate :: forall s polygon point r. + (SimplePolygon_ polygon point r, Ord r, Num r) + => polygon + -> CPlaneGraph s point PolygonEdgeType PolygonFaceData triangulate :: forall {k} (s :: k) polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData -triangulate polygon -pg = polygon +triangulate polygon +pg = polygon -> [Diagonal polygon] -> CPlaneGraph s point PolygonEdgeType PolygonFaceData forall {k} (s :: k) polygon point r (f :: * -> *). @@ -49,56 +49,56 @@ -> f (Diagonal polygon) -> CPlaneGraph s point PolygonEdgeType PolygonFaceData constructGraph polygon -pg (polygon -> [Diagonal polygon] +pg (polygon -> [Diagonal polygon] forall polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> [Diagonal polygon] computeDiagonals polygon -pg) +pg) -- | Computes a set of diagaonals that together triangulate the input polygon -- of \(n\) vertices. -- -- running time: \(O(n \log n)\) -computeDiagonals :: forall polygon point r. - (SimplePolygon_ polygon point r, Ord r, Num r) - => polygon -> [Diagonal polygon] +computeDiagonals :: forall polygon point r. + (SimplePolygon_ polygon point r, Ord r, Num r) + => polygon -> [Diagonal polygon] computeDiagonals :: forall polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> [Diagonal polygon] -computeDiagonals polygon -pg = [Vector 2 Int] +computeDiagonals polygon +pg = [Vector 2 Int] [Diagonal polygon] -monotoneDiags [Vector 2 Int] -> [Vector 2 Int] -> [Vector 2 Int] +monotoneDiags [Vector 2 Int] -> [Vector 2 Int] -> [Vector 2 Int] forall a. Semigroup a => a -> a -> a <> [Vector 2 Int] [Diagonal polygon] -extraDiags +extraDiags where - monotoneSubdiv :: CPlaneGraph () point PolygonEdgeType PolygonFaceData - monotoneSubdiv :: CPlaneGraph () point PolygonEdgeType PolygonFaceData -monotoneSubdiv = forall {k} (s :: k) polygon point r. + monotoneSubdiv :: CPlaneGraph () point PolygonEdgeType PolygonFaceData + monotoneSubdiv :: CPlaneGraph () point PolygonEdgeType PolygonFaceData +monotoneSubdiv = forall {k} (s :: k) polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData forall s polygon point r. (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> CPlaneGraph s point PolygonEdgeType PolygonFaceData MM.makeMonotone @() polygon -pg +pg -- use some arbitrary proxy type -- get the existing diagonals - monotoneDiags :: [Diagonal polygon] - monotoneDiags :: [Diagonal polygon] -monotoneDiags = ((DartId (), PolygonEdgeType) -> Vector 2 Int) + monotoneDiags :: [Diagonal polygon] + monotoneDiags :: [Diagonal polygon] +monotoneDiags = ((DartId (), PolygonEdgeType) -> Vector 2 Int) -> [(DartId (), PolygonEdgeType)] -> [Vector 2 Int] forall a b. (a -> b) -> [a] -> [b] -map (\(DartId () -d,PolygonEdgeType -_) -> let (VertexId () -u,VertexId () -v) = CPlaneGraph () point PolygonEdgeType PolygonFaceData -monotoneSubdiv CPlaneGraph () point PolygonEdgeType PolygonFaceData +map (\(DartId () +d,PolygonEdgeType +_) -> let (VertexId () +u,VertexId () +v) = CPlaneGraph () point PolygonEdgeType PolygonFaceData +monotoneSubdiv CPlaneGraph () point PolygonEdgeType PolygonFaceData -> Getting (VertexId (), VertexId ()) (CPlaneGraph () point PolygonEdgeType PolygonFaceData) @@ -119,7 +119,7 @@ (VertexIx graph, VertexIx graph) graph (Vertex graph, Vertex graph) endPointsOf DartIx (CPlaneGraph () point PolygonEdgeType PolygonFaceData) DartId () -d(Indexed +d(Indexed (VertexId (), VertexId ()) (point, point) (Const (VertexId (), VertexId ()) (point, point)) @@ -156,8 +156,8 @@ $ VertexId () -> VertexId () -> Vector 2 (VertexId ()) forall r. r -> r -> Vector 2 r Vector2 VertexId () -u VertexId () -v +u VertexId () +v ) ([(DartId (), PolygonEdgeType)] -> [Diagonal polygon]) -> ([(DartId (), PolygonEdgeType)] @@ -183,7 +183,7 @@ -> [(DartId (), PolygonEdgeType)] -> [Diagonal polygon] forall a b. (a -> b) -> a -> b $ CPlaneGraph () point PolygonEdgeType PolygonFaceData -monotoneSubdiv CPlaneGraph () point PolygonEdgeType PolygonFaceData +monotoneSubdiv CPlaneGraph () point PolygonEdgeType PolygonFaceData -> Getting (Endo [(DartId (), PolygonEdgeType)]) (CPlaneGraph () point PolygonEdgeType PolygonFaceData) @@ -251,16 +251,16 @@ withIndex -- and compute the diagonals in each interior y-monotone polygon - extraDiags :: [Diagonal polygon] - extraDiags :: [Diagonal polygon] -extraDiags = ((FaceId (), PolygonFaceData) -> [Diagonal polygon]) + extraDiags :: [Diagonal polygon] + extraDiags :: [Diagonal polygon] +extraDiags = ((FaceId (), PolygonFaceData) -> [Diagonal polygon]) -> [(FaceId (), PolygonFaceData)] -> [Diagonal polygon] forall m a. Monoid m => (a -> m) -> [a] -> m forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap (FaceId () -> [Vector 2 Int] -collectDiags (FaceId () -> [Vector 2 Int]) +collectDiags (FaceId () -> [Vector 2 Int]) -> ((FaceId (), PolygonFaceData) -> FaceId ()) -> (FaceId (), PolygonFaceData) -> [Vector 2 Int] @@ -289,7 +289,7 @@ -> [(FaceId (), PolygonFaceData)] -> [(FaceId (), PolygonFaceData)] forall a b. (a -> b) -> a -> b $ CPlaneGraph () point PolygonEdgeType PolygonFaceData -monotoneSubdivCPlaneGraph () point PolygonEdgeType PolygonFaceData +monotoneSubdivCPlaneGraph () point PolygonEdgeType PolygonFaceData -> Getting (Endo [(FaceId (), PolygonFaceData)]) (CPlaneGraph () point PolygonEdgeType PolygonFaceData) @@ -354,11 +354,11 @@ withIndex -- collectDiags :: FaceIx planeGraph -> [Diagonal polygon] - collectDiags :: FaceId () -> [Vector 2 Int] -collectDiags FaceId () -i = let yMonotonePoly :: SimplePolygon (point :+ VertexId ()) -yMonotonePoly = CPlaneGraph () point PolygonEdgeType PolygonFaceData -monotoneSubdiv CPlaneGraph () point PolygonEdgeType PolygonFaceData + collectDiags :: FaceId () -> [Vector 2 Int] +collectDiags FaceId () +i = let yMonotonePoly :: SimplePolygon (point :+ VertexId ()) +yMonotonePoly = CPlaneGraph () point PolygonEdgeType PolygonFaceData +monotoneSubdiv CPlaneGraph () point PolygonEdgeType PolygonFaceData -> Getting (Endo (SimplePolygon (point :+ VertexId ()))) (CPlaneGraph () point PolygonEdgeType PolygonFaceData) @@ -383,7 +383,7 @@ (SimplePolygon (vertex :+ VertexIx planeGraph)) interiorFacePolygonAt FaceId () FaceIx (CPlaneGraph () point PolygonEdgeType PolygonFaceData) -i +i in (Vector 2 Int -> Vector 2 Int) -> [Vector 2 Int] -> [Vector 2 Int] forall a b. (a -> b) -> [a] -> [b] map (Vector 2 (VertexId ()) -> Vector 2 Int @@ -400,7 +400,7 @@ YMonotonePolygon_ yMonotonePolygon (point :+ i) r => yMonotonePolygon -> Diagonal yMonotonePolygon -> Vector 2 i withOriginalId SimplePolygon (point :+ VertexId ()) -yMonotonePoly) ([Vector 2 Int] -> [Vector 2 Int]) +yMonotonePoly) ([Vector 2 Int] -> [Vector 2 Int]) -> [Vector 2 Int] -> [Vector 2 Int] forall a b. (a -> b) -> a -> b $ @@ -410,20 +410,20 @@ (SimplePolygon_ polygon point r, Ord r, Num r) => polygon -> [Diagonal polygon] TM.computeDiagonals SimplePolygon (point :+ VertexId ()) -yMonotonePoly +yMonotonePoly -withOriginalId :: ( TM.YMonotonePolygon_ yMonotonePolygon (point :+ i) r - ) => yMonotonePolygon -> Diagonal yMonotonePolygon -> Vector 2 i +withOriginalId :: ( TM.YMonotonePolygon_ yMonotonePolygon (point :+ i) r + ) => yMonotonePolygon -> Diagonal yMonotonePolygon -> Vector 2 i withOriginalId :: forall yMonotonePolygon point i r. YMonotonePolygon_ yMonotonePolygon (point :+ i) r => yMonotonePolygon -> Diagonal yMonotonePolygon -> Vector 2 i -withOriginalId yMonotonePolygon -yMonotonePoly = (Int -> i) -> Vector 2 Int -> Vector 2 i +withOriginalId yMonotonePolygon +yMonotonePoly = (Int -> i) -> Vector 2 Int -> Vector 2 i forall a b. (a -> b) -> Vector 2 a -> Vector 2 b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\Int -j -> yMonotonePolygon -yMonotonePolyyMonotonePolygon -> Getting (Endo i) yMonotonePolygon i -> i +fmap (\Int +j -> yMonotonePolygon +yMonotonePolyyMonotonePolygon -> Getting (Endo i) yMonotonePolygon i -> i forall s a. HasCallStack => s -> Getting (Endo a) s a -> a ^?!VertexIx yMonotonePolygon -> IndexedTraversal' @@ -436,7 +436,7 @@ -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt Int VertexIx yMonotonePolygon -j(((point :+ i) -> Const (Endo i) (point :+ i)) +j(((point :+ i) -> Const (Endo i) (point :+ i)) -> yMonotonePolygon -> Const (Endo i) yMonotonePolygon) -> ((i -> Const (Endo i) i) -> (point :+ i) -> Const (Endo i) (point :+ i)) diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.Visibility.Naive.html b/haddocks/hgeometry/src/HGeometry.Polygon.Visibility.Naive.html index d30672260..644a4c094 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.Visibility.Naive.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.Visibility.Naive.html @@ -30,17 +30,17 @@ -- | Naive algorithm to compute the visibilityGraph of a simple polygon. -- -- \(O(n^3)\) -visibilityGraph :: ( SimplePolygon_ simplePolygon point r - , HasIntersectionWith point simplePolygon - , Ord r, Num r +visibilityGraph :: ( SimplePolygon_ simplePolygon point r + , HasIntersectionWith point simplePolygon + , Ord r, Num r ) - => simplePolygon -> [Vector 2 (VertexIx simplePolygon)] + => simplePolygon -> [Vector 2 (VertexIx simplePolygon)] visibilityGraph :: forall simplePolygon point r. (SimplePolygon_ simplePolygon point r, HasIntersectionWith point simplePolygon, Ord r, Num r) => simplePolygon -> [Vector 2 (VertexIx simplePolygon)] -visibilityGraph simplePolygon -pg = simplePolygon +visibilityGraph simplePolygon +pg = simplePolygon -> [Vector 2 (point :+ VertexIx simplePolygon)] -> [Vector 2 (VertexIx simplePolygon)] forall simplePolygon point r. @@ -50,7 +50,7 @@ -> [Vector 2 (point :+ VertexIx simplePolygon)] -> [Vector 2 (VertexIx simplePolygon)] visibilityGraphWith simplePolygon -pg +pg ([Vector 2 (point :+ VertexIx simplePolygon)] -> [Vector 2 (VertexIx simplePolygon)]) -> [Vector 2 (point :+ VertexIx simplePolygon)] @@ -63,7 +63,7 @@ HasIntersectionWith (OpenLineSegment vertex) obstacleEdge) => f obstacleEdge -> g vertex -> [Vector 2 vertex] visibilityGraphWrtObstacles (simplePolygon -pgsimplePolygon +pgsimplePolygon -> Getting (Endo [ClosedLineSegment point]) simplePolygon @@ -87,7 +87,7 @@ (ClosedLineSegment point) outerBoundaryEdgeSegments) (simplePolygon -pgsimplePolygon +pgsimplePolygon -> Getting (Endo [point :+ Int]) simplePolygon (point :+ Int) -> [point :+ Int] forall s a. s -> Getting (Endo [a]) s a -> [a] @@ -126,24 +126,24 @@ -- actual polygon edges as visible). -- -- \(O(n + m)\), where m is the number of candidate edges. -visibilityGraphWith :: ( SimplePolygon_ simplePolygon point r - , HasIntersectionWith point simplePolygon - , Ord r, Num r +visibilityGraphWith :: ( SimplePolygon_ simplePolygon point r + , HasIntersectionWith point simplePolygon + , Ord r, Num r ) - => simplePolygon - -> [Vector 2 (point :+ VertexIx simplePolygon)] -- ^ candidate edges - -> [Vector 2 (VertexIx simplePolygon)] + => simplePolygon + -> [Vector 2 (point :+ VertexIx simplePolygon)] -- ^ candidate edges + -> [Vector 2 (VertexIx simplePolygon)] visibilityGraphWith :: forall simplePolygon point r. (SimplePolygon_ simplePolygon point r, HasIntersectionWith point simplePolygon, Ord r, Num r) => simplePolygon -> [Vector 2 (point :+ VertexIx simplePolygon)] -> [Vector 2 (VertexIx simplePolygon)] -visibilityGraphWith simplePolygon -pg [Vector 2 (point :+ VertexIx simplePolygon)] -candidateEdges = +visibilityGraphWith simplePolygon +pg [Vector 2 (point :+ VertexIx simplePolygon)] +candidateEdges = (simplePolygon -pgsimplePolygon +pgsimplePolygon -> Getting (Endo [Vector 2 Int]) simplePolygon (Vector 2 Int) -> [Vector 2 Int] forall s a. s -> Getting (Endo [a]) s a -> [a] @@ -219,45 +219,45 @@ -> [Vector 2 (point :+ Int)] -> [Vector 2 Int] forall a b. (a -> Maybe b) -> [a] -> [b] mapMaybe Vector 2 (point :+ Int) -> Maybe (Vector 2 Int) -liesInsidePolygon [Vector 2 (point :+ Int)] +liesInsidePolygon [Vector 2 (point :+ Int)] [Vector 2 (point :+ VertexIx simplePolygon)] -candidateEdges +candidateEdges where - liesInsidePolygon :: Vector 2 (point :+ Int) -> Maybe (Vector 2 Int) -liesInsidePolygon (Vector2 (point -u :+ Int -i) (point -v :+ Int -j)) = case Vector 2 r -> point -> point -> point -> Ordering + liesInsidePolygon :: Vector 2 (point :+ Int) -> Maybe (Vector 2 Int) +liesInsidePolygon (Vector2 (point +u :+ Int +i) (point +v :+ Int +j)) = case Vector 2 r -> point -> point -> point -> Ordering forall center r point. (Point_ center 2 r, Point_ point 2 r, Ord r, Num r) => Vector 2 r -> center -> point -> point -> Ordering cwCmpAroundWith (point -p point -> point -> Vector 2 r +p point -> point -> Vector 2 r forall point (d :: Nat) r. (Affine_ point d r, Num r) => point -> point -> Vector d r .-. point -u) point -u point -v point -s of +u) point +u point +v point +s of Ordering LT -> Vector 2 Int -> Maybe (Vector 2 Int) forall a. a -> Maybe a Just (Int -> Int -> Vector 2 Int forall r. r -> r -> Vector 2 r Vector2 Int -i Int -j) +i Int +j) Ordering _ -> Maybe (Vector 2 Int) forall a. Maybe a Nothing where - p :: point -p = simplePolygon -pgsimplePolygon -> Getting point simplePolygon point -> point + p :: point +p = simplePolygon +pgsimplePolygon -> Getting point simplePolygon point -> point forall s a. s -> Getting a s a -> a ^.VertexIx simplePolygon -> IndexedLens' @@ -268,10 +268,10 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwPredecessorOf Int VertexIx simplePolygon -i - s :: point -s = simplePolygon -pgsimplePolygon -> Getting point simplePolygon point -> point +i + s :: point +s = simplePolygon +pgsimplePolygon -> Getting point simplePolygon point -> point forall s a. s -> Getting a s a -> a ^.VertexIx simplePolygon -> IndexedLens' @@ -282,7 +282,7 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwSuccessorOf Int VertexIx simplePolygon -i +i -- we check whether v is in between the angular interval defined by the neighbours -- of u. -- note: this uses the originetation of the simple polygon boundary @@ -291,17 +291,17 @@ -- | computes the edges of the visibility graph among the points -- -- O(n^2m), where n is the number of vertices, m is the number of obstacle edges. -visibilityGraphWrtObstacles :: ( Foldable f, Foldable g - , Point_ vertex 2 r - , OpenLineSegment vertex - `HasIntersectionWith` obstacleEdge - ) => f obstacleEdge -> g vertex -> [Vector 2 vertex] +visibilityGraphWrtObstacles :: ( Foldable f, Foldable g + , Point_ vertex 2 r + , OpenLineSegment vertex + `HasIntersectionWith` obstacleEdge + ) => f obstacleEdge -> g vertex -> [Vector 2 vertex] visibilityGraphWrtObstacles :: forall (f :: * -> *) (g :: * -> *) vertex r obstacleEdge. (Foldable f, Foldable g, Point_ vertex 2 r, HasIntersectionWith (OpenLineSegment vertex) obstacleEdge) => f obstacleEdge -> g vertex -> [Vector 2 vertex] -visibilityGraphWrtObstacles f obstacleEdge -obstacles = [Two vertex] -> [Vector 2 vertex] +visibilityGraphWrtObstacles f obstacleEdge +obstacles = [Two vertex] -> [Vector 2 vertex] forall a b. Coercible a b => a -> b coerce ([Two vertex] -> [Vector 2 vertex]) -> (g vertex -> [Two vertex]) -> g vertex -> [Vector 2 vertex] @@ -309,17 +309,17 @@ . (Two vertex -> Bool) -> [Two vertex] -> [Two vertex] forall a. (a -> Bool) -> [a] -> [a] filter Two vertex -> Bool -areMutuallyVisible ([Two vertex] -> [Two vertex]) +areMutuallyVisible ([Two vertex] -> [Two vertex]) -> (g vertex -> [Two vertex]) -> g vertex -> [Two vertex] forall b c a. (b -> c) -> (a -> b) -> a -> c . g vertex -> [Two vertex] forall (f :: * -> *) a. Foldable f => f a -> [Two a] uniquePairs where - areMutuallyVisible :: Two vertex -> Bool -areMutuallyVisible (Two vertex -u vertex -v) = + areMutuallyVisible :: Two vertex -> Bool +areMutuallyVisible (Two vertex +u vertex +v) = (obstacleEdge -> Bool) -> f obstacleEdge -> Bool forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool all (Bool -> Bool @@ -330,7 +330,7 @@ intersects (vertex -> vertex -> OpenLineSegment vertex forall point. point -> point -> OpenLineSegment point OpenLineSegment vertex -u vertex -v))) f obstacleEdge -obstacles +u vertex +v))) f obstacleEdge +obstacles \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.WithHoles.html b/haddocks/hgeometry/src/HGeometry.Polygon.WithHoles.html index b7ad08af6..0b49446a6 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.WithHoles.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.WithHoles.html @@ -53,12 +53,12 @@ -------------------------------------------------------------------------------- -- | Simple data type modelling polygons with holes -data PolygonalDomainF (h :: Type -> Type) - (f :: Type -> Type) - (point :: Type) = - PolygonalDomain (SimplePolygonF f point) -- ^ the outer boundary - (h (SimplePolygonF f point)) -- ^ the holes - deriving stock ((forall x. +data PolygonalDomainF (h :: Type -> Type) + (f :: Type -> Type) + (point :: Type) = + PolygonalDomain (SimplePolygonF f point) -- ^ the outer boundary + (h (SimplePolygonF f point)) -- ^ the holes + deriving stock ((forall x. PolygonalDomainF h f point -> Rep (PolygonalDomainF h f point) x) -> (forall x. Rep (PolygonalDomainF h f point) x -> PolygonalDomainF h f point) @@ -83,22 +83,22 @@ Rep (PolygonalDomainF h f point) x -> PolygonalDomainF h f point Generic) -instance ( NFData (SimplePolygonF f point) - , NFData (h (SimplePolygonF f point)) - ) => NFData (PolygonalDomainF h f point) +instance ( NFData (SimplePolygonF f point) + , NFData (h (SimplePolygonF f point)) + ) => NFData (PolygonalDomainF h f point) -deriving instance ( Show (SimplePolygonF f point) - , Show (h (SimplePolygonF f point)) - ) => Show (PolygonalDomainF h f point) -deriving instance ( Read (SimplePolygonF f point) - , Read (h (SimplePolygonF f point)) - ) => Read (PolygonalDomainF h f point) -deriving instance ( Eq (SimplePolygonF f point) - , Eq (h (SimplePolygonF f point)) - ) => Eq (PolygonalDomainF h f point) +deriving instance ( Show (SimplePolygonF f point) + , Show (h (SimplePolygonF f point)) + ) => Show (PolygonalDomainF h f point) +deriving instance ( Read (SimplePolygonF f point) + , Read (h (SimplePolygonF f point)) + ) => Read (PolygonalDomainF h f point) +deriving instance ( Eq (SimplePolygonF f point) + , Eq (h (SimplePolygonF f point)) + ) => Eq (PolygonalDomainF h f point) -- | The simple polygon representing the outer boundary -outerBoundaryPolygon :: Lens' (PolygonalDomainF h f point) (SimplePolygonF f point) +outerBoundaryPolygon :: Lens' (PolygonalDomainF h f point) (SimplePolygonF f point) outerBoundaryPolygon :: forall (h :: * -> *) (f :: * -> *) point (f :: * -> *). Functor f => (SimplePolygonF f point -> f (SimplePolygonF f point)) @@ -112,25 +112,25 @@ (SimplePolygonF f point) (SimplePolygonF f point) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b -lens (\(PolygonalDomain SimplePolygonF f point -outer h (SimplePolygonF f point) +lens (\(PolygonalDomain SimplePolygonF f point +outer h (SimplePolygonF f point) _) -> SimplePolygonF f point -outer) +outer) (\(PolygonalDomain SimplePolygonF f point -_ h (SimplePolygonF f point) -hs) SimplePolygonF f point -outer -> SimplePolygonF f point +_ h (SimplePolygonF f point) +hs) SimplePolygonF f point +outer -> SimplePolygonF f point -> h (SimplePolygonF f point) -> PolygonalDomainF h f point forall (h :: * -> *) (f :: * -> *) point. SimplePolygonF f point -> h (SimplePolygonF f point) -> PolygonalDomainF h f point PolygonalDomain SimplePolygonF f point -outer h (SimplePolygonF f point) -hs) +outer h (SimplePolygonF f point) +hs) -- | Lens to access the holes -theHoles :: Lens (PolygonalDomainF h f point) (PolygonalDomainF h' f point) - (h (SimplePolygonF f point)) (h' (SimplePolygonF f point)) +theHoles :: Lens (PolygonalDomainF h f point) (PolygonalDomainF h' f point) + (h (SimplePolygonF f point)) (h' (SimplePolygonF f point)) theHoles :: forall (h :: * -> *) (f :: * -> *) point (h' :: * -> *) (f :: * -> *). Functor f => @@ -146,34 +146,34 @@ (h' (SimplePolygonF f point)) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens (\(PolygonalDomain SimplePolygonF f point -_ h (SimplePolygonF f point) -hs) -> h (SimplePolygonF f point) -hs) - (\(PolygonalDomain SimplePolygonF f point -outer h (SimplePolygonF f point) -_) h' (SimplePolygonF f point) -hs -> SimplePolygonF f point +_ h (SimplePolygonF f point) +hs) -> h (SimplePolygonF f point) +hs) + (\(PolygonalDomain SimplePolygonF f point +outer h (SimplePolygonF f point) +_) h' (SimplePolygonF f point) +hs -> SimplePolygonF f point -> h' (SimplePolygonF f point) -> PolygonalDomainF h' f point forall (h :: * -> *) (f :: * -> *) point. SimplePolygonF f point -> h (SimplePolygonF f point) -> PolygonalDomainF h f point PolygonalDomain SimplePolygonF f point -outer h' (SimplePolygonF f point) -hs) +outer h' (SimplePolygonF f point) +hs) -- | Polygonal domain implemented using Vectors -type PolygonalDomain point = PolygonalDomainF Vector (Cyclic NonEmptyVector) point +type PolygonalDomain point = PolygonalDomainF Vector (Cyclic NonEmptyVector) point -type instance Dimension (PolygonalDomainF h f point) = 2 -type instance NumType (PolygonalDomainF h f point) = NumType point +type instance Dimension (PolygonalDomainF h f point) = 2 +type instance NumType (PolygonalDomainF h f point) = NumType point -instance (Functor h, Functor f) => Functor (PolygonalDomainF h f) where - fmap :: forall a b. +instance (Functor h, Functor f) => Functor (PolygonalDomainF h f) where + fmap :: forall a b. (a -> b) -> PolygonalDomainF h f a -> PolygonalDomainF h f b -fmap a -> b -f (PolygonalDomain SimplePolygonF f a -outer h (SimplePolygonF f a) -hs) = +fmap a -> b +f (PolygonalDomain SimplePolygonF f a +outer h (SimplePolygonF f a) +hs) = SimplePolygonF f b -> h (SimplePolygonF f b) -> PolygonalDomainF h f b forall (h :: * -> *) (f :: * -> *) point. @@ -183,8 +183,8 @@ forall a b. (a -> b) -> SimplePolygonF f a -> SimplePolygonF f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap a -> b -f SimplePolygonF f a -outer) ((SimplePolygonF f a -> SimplePolygonF f b) +f SimplePolygonF f a +outer) ((SimplePolygonF f a -> SimplePolygonF f b) -> h (SimplePolygonF f a) -> h (SimplePolygonF f b) forall a b. (a -> b) -> h a -> h b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -192,22 +192,22 @@ forall a b. (a -> b) -> SimplePolygonF f a -> SimplePolygonF f b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap a -> b -f) h (SimplePolygonF f a) -hs) +f) h (SimplePolygonF f a) +hs) -instance (Foldable h, Foldable f) => Foldable (PolygonalDomainF h f) where - foldMap :: forall m a. Monoid m => (a -> m) -> PolygonalDomainF h f a -> m -foldMap a -> m -f (PolygonalDomain SimplePolygonF f a -outer h (SimplePolygonF f a) -hs) = (a -> m) -> SimplePolygonF f a -> m +instance (Foldable h, Foldable f) => Foldable (PolygonalDomainF h f) where + foldMap :: forall m a. Monoid m => (a -> m) -> PolygonalDomainF h f a -> m +foldMap a -> m +f (PolygonalDomain SimplePolygonF f a +outer h (SimplePolygonF f a) +hs) = (a -> m) -> SimplePolygonF f a -> m forall m a. Monoid m => (a -> m) -> SimplePolygonF f a -> m forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap a -> m -f SimplePolygonF f a -outer m -> m -> m +f SimplePolygonF f a +outer m -> m -> m forall a. Semigroup a => a -> a -> a <> (SimplePolygonF f a -> m) -> h (SimplePolygonF f a) -> m forall m a. Monoid m => (a -> m) -> h a -> m @@ -220,17 +220,17 @@ (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap a -> m -f) h (SimplePolygonF f a) -hs +f) h (SimplePolygonF f a) +hs -instance (Traversable h, Traversable f) => Traversable (PolygonalDomainF h f) where - traverse :: forall (f :: * -> *) a b. +instance (Traversable h, Traversable f) => Traversable (PolygonalDomainF h f) where + traverse :: forall (f :: * -> *) a b. Applicative f => (a -> f b) -> PolygonalDomainF h f a -> f (PolygonalDomainF h f b) -traverse a -> f b -f (PolygonalDomain SimplePolygonF f a -outer h (SimplePolygonF f a) -hs) = +traverse a -> f b +f (PolygonalDomain SimplePolygonF f a +outer h (SimplePolygonF f a) +hs) = SimplePolygonF f b -> h (SimplePolygonF f b) -> PolygonalDomainF h f b forall (h :: * -> *) (f :: * -> *) point. @@ -249,8 +249,8 @@ Applicative f => (a -> f b) -> SimplePolygonF f a -> f (SimplePolygonF f b) traverse a -> f b -f SimplePolygonF f a -outer f (h (SimplePolygonF f b) -> PolygonalDomainF h f b) +f SimplePolygonF f a +outer f (h (SimplePolygonF f b) -> PolygonalDomainF h f b) -> f (h (SimplePolygonF f b)) -> f (PolygonalDomainF h f b) forall a b. f (a -> b) -> f a -> f b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b @@ -270,25 +270,25 @@ Applicative f => (a -> f b) -> SimplePolygonF f a -> f (SimplePolygonF f b) traverse a -> f b -f) h (SimplePolygonF f a) -hs +f) h (SimplePolygonF f a) +hs -instance (Foldable h, Foldable1 f) => Foldable1 (PolygonalDomainF h f) where - foldMap1 :: forall m a. Semigroup m => (a -> m) -> PolygonalDomainF h f a -> m -foldMap1 a -> m -f (PolygonalDomain SimplePolygonF f a -outer h (SimplePolygonF f a) -hs) = +instance (Foldable h, Foldable1 f) => Foldable1 (PolygonalDomainF h f) where + foldMap1 :: forall m a. Semigroup m => (a -> m) -> PolygonalDomainF h f a -> m +foldMap1 a -> m +f (PolygonalDomain SimplePolygonF f a +outer h (SimplePolygonF f a) +hs) = (a -> m) -> SimplePolygonF f a -> m forall m a. Semigroup m => (a -> m) -> SimplePolygonF f a -> m forall (t :: * -> *) m a. (Foldable1 t, Semigroup m) => (a -> m) -> t a -> m foldMap1 a -> m -f SimplePolygonF f a -outer m -> Maybe m -> m +f SimplePolygonF f a +outer m -> Maybe m -> m forall {b}. Semigroup b => b -> Maybe b -> b -`combine` (SimplePolygonF f a -> Maybe m) +`combine` (SimplePolygonF f a -> Maybe m) -> h (SimplePolygonF f a) -> Maybe m forall m a. Monoid m => (a -> m) -> h a -> m forall (t :: * -> *) m a. @@ -305,27 +305,27 @@ (Foldable1 t, Semigroup m) => (a -> m) -> t a -> m foldMap1 a -> m -f) h (SimplePolygonF f a) -hs +f) h (SimplePolygonF f a) +hs where - combine :: b -> Maybe b -> b -combine b -x0 = b -> (b -> b) -> Maybe b -> b + combine :: b -> Maybe b -> b +combine b +x0 = b -> (b -> b) -> Maybe b -> b forall b a. b -> (a -> b) -> Maybe a -> b maybe b -x0 (b -x0 b -> b -> b +x0 (b +x0 b -> b -> b forall a. Semigroup a => a -> a -> a <>) -instance (Traversable h, Traversable1 f) => Traversable1 (PolygonalDomainF h f) where - traverse1 :: forall (f :: * -> *) a b. +instance (Traversable h, Traversable1 f) => Traversable1 (PolygonalDomainF h f) where + traverse1 :: forall (f :: * -> *) a b. Apply f => (a -> f b) -> PolygonalDomainF h f a -> f (PolygonalDomainF h f b) -traverse1 a -> f b -f (PolygonalDomain SimplePolygonF f a -outer h (SimplePolygonF f a) -hs) = +traverse1 a -> f b +f (PolygonalDomain SimplePolygonF f a +outer h (SimplePolygonF f a) +hs) = SimplePolygonF f b -> h (SimplePolygonF f b) -> PolygonalDomainF h f b forall (h :: * -> *) (f :: * -> *) point. @@ -344,8 +344,8 @@ Apply f => (a -> f b) -> SimplePolygonF f a -> f (SimplePolygonF f b) traverse1 a -> f b -f SimplePolygonF f a -outer f (h (SimplePolygonF f b) -> PolygonalDomainF h f b) +f SimplePolygonF f a +outer f (h (SimplePolygonF f b) -> PolygonalDomainF h f b) -> MaybeApply f (h (SimplePolygonF f b)) -> f (PolygonalDomainF h f b) forall (f :: * -> *) a b. @@ -364,13 +364,13 @@ Apply f => (a -> f b) -> SimplePolygonF f a -> f (SimplePolygonF f b) traverse1 a -> f b -f) h (SimplePolygonF f a) -hs +f) h (SimplePolygonF f a) +hs -instance ( VertexContainer f point, Traversable h - ) => HasPoints (PolygonalDomainF h f point) - (PolygonalDomainF h f point') point point' where - allPoints :: forall (d :: Nat) r r'. +instance ( VertexContainer f point, Traversable h + ) => HasPoints (PolygonalDomainF h f point) + (PolygonalDomainF h f point') point point' where + allPoints :: forall (d :: Nat) r r'. (Point_ point d r, Point_ point' d r', NumType (PolygonalDomainF h f point) ~ r, NumType (PolygonalDomainF h f point') ~ r', @@ -381,7 +381,7 @@ (PolygonalDomainF h f point') point point' -allPoints = (point -> f point') +allPoints = (point -> f point') -> PolygonalDomainF h f point -> f (PolygonalDomainF h f point') forall (f :: * -> *) a b. Traversable1 f => @@ -394,19 +394,19 @@ point' traversed1 -instance ( VertexContainer f point, Traversable h - , DefaultTransformByConstraints (PolygonalDomainF h f point) 2 r - , Point_ point 2 r - ) => IsTransformable (PolygonalDomainF h f point) +instance ( VertexContainer f point, Traversable h + , DefaultTransformByConstraints (PolygonalDomainF h f point) 2 r + , Point_ point 2 r + ) => IsTransformable (PolygonalDomainF h f point) -instance ( VertexContainer f point - , Point_ point 2 r - ) => IsBoxable (PolygonalDomainF h f point) where - boundingBox :: forall (d :: Nat) r. +instance ( VertexContainer f point + , Point_ point 2 r + ) => IsBoxable (PolygonalDomainF h f point) where + boundingBox :: forall (d :: Nat) r. (d ~ Dimension (PolygonalDomainF h f point), r ~ NumType (PolygonalDomainF h f point), Ord r) => PolygonalDomainF h f point -> Box (Point d r) -boundingBox = SimplePolygonF f point -> Box (Point d r) +boundingBox = SimplePolygonF f point -> Box (Point d r) forall (d :: Nat) r. (d ~ Dimension (SimplePolygonF f point), r ~ NumType (SimplePolygonF f point), Ord r) => @@ -436,15 +436,15 @@ outerBoundaryPolygon -instance ( HoleContainer h f point, VertexContainer f point - ) => HasVertices (PolygonalDomainF h f point) (PolygonalDomainF h f point') where - vertices :: IndexedTraversal1 +instance ( HoleContainer h f point, VertexContainer f point + ) => HasVertices (PolygonalDomainF h f point) (PolygonalDomainF h f point') where + vertices :: IndexedTraversal1 (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (PolygonalDomainF h f point') (Vertex (PolygonalDomainF h f point)) (Vertex (PolygonalDomainF h f point')) -vertices = ((p ~ (->)) => +vertices = ((p ~ (->)) => (point -> f point') -> PolygonalDomainF h f point -> f (PolygonalDomainF h f point')) -> (p point (f point') @@ -478,7 +478,7 @@ Traversable1 f, Ixed (f a), HasDirectedTraversals f) => (VtxIx -> a -> f b) -> PolygonalDomainF h f a -> f (PolygonalDomainF h f b) -itraverse1 ((VtxIx -> point -> f point') +itraverse1 ((VtxIx -> point -> f point') -> PolygonalDomainF h f point -> f (PolygonalDomainF h f point')) -> (p point (f point') -> VtxIx -> point -> f point') -> p point (f point') @@ -492,12 +492,12 @@ p a b -> i -> a -> b indexed) where - itraverse1 :: (VtxIx -> a -> f b) + itraverse1 :: (VtxIx -> a -> f b) -> PolygonalDomainF h f a -> f (PolygonalDomainF h f b) -itraverse1 VtxIx -> a -> f b -f (PolygonalDomain SimplePolygonF f a -outer h (SimplePolygonF f a) -hs) = +itraverse1 VtxIx -> a -> f b +f (PolygonalDomain SimplePolygonF f a +outer h (SimplePolygonF f a) +hs) = SimplePolygonF f b -> h (SimplePolygonF f b) -> PolygonalDomainF h f b forall (h :: * -> *) (f :: * -> *) point. @@ -540,8 +540,8 @@ (Vertex (SimplePolygonF f a)) (Vertex (SimplePolygonF f b)) vertices) VtxIx -> a -> f b -f SimplePolygonF f a -outer +f SimplePolygonF f a +outer f (h (SimplePolygonF f b) -> PolygonalDomainF h f b) -> MaybeApply f (h (SimplePolygonF f b)) -> f (PolygonalDomainF h f b) @@ -617,8 +617,8 @@ (Vertex (SimplePolygonF f a)) (Vertex (SimplePolygonF f b)) vertices) - (\VtxIx -i -> Either (f b) b -> MaybeApply f b + (\VtxIx +i -> Either (f b) b -> MaybeApply f b forall (f :: * -> *) a. Either (f a) a -> MaybeApply f a MaybeApply (Either (f b) b -> MaybeApply f b) -> (a -> Either (f b) b) -> a -> MaybeApply f b @@ -628,30 +628,30 @@ Left (f b -> Either (f b) b) -> (a -> f b) -> a -> Either (f b) b forall b c a. (b -> c) -> (a -> b) -> a -> c . VtxIx -> a -> f b -f VtxIx -i) +f VtxIx +i) h (SimplePolygonF f a) -hs +hs -- | Containers that stores holes must satisfy the following constraints: -type HoleContainer h f point = - ( TraversableWithIndex Int h - , Index (h (SimplePolygonF f point)) ~ Int - , IxValue (h (SimplePolygonF f point)) ~ SimplePolygonF f point - , Ixed (h (SimplePolygonF f point)) - , VertexContainer f point +type HoleContainer h f point = + ( TraversableWithIndex Int h + , Index (h (SimplePolygonF f point)) ~ Int + , IxValue (h (SimplePolygonF f point)) ~ SimplePolygonF f point + , Ixed (h (SimplePolygonF f point)) + , VertexContainer f point ) -instance ( HoleContainer h f point - ) => HasHoles (PolygonalDomainF h f point) where - type HoleIx (PolygonalDomainF h f point) = Int - type HoleF (PolygonalDomainF h f point) = f +instance ( HoleContainer h f point + ) => HasHoles (PolygonalDomainF h f point) where + type HoleIx (PolygonalDomainF h f point) = Int + type HoleF (PolygonalDomainF h f point) = f - holes :: IndexedTraversal' + holes :: IndexedTraversal' (HoleIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Hole (PolygonalDomainF h f point)) -holes = (h (SimplePolygonF f point) -> f (h (SimplePolygonF f point))) +holes = (h (SimplePolygonF f point) -> f (h (SimplePolygonF f point))) -> PolygonalDomainF h f point -> f (PolygonalDomainF h f point) forall (h :: * -> *) (f :: * -> *) point (h' :: * -> *) (f :: * -> *). @@ -678,13 +678,13 @@ (SimplePolygonF f point) (SimplePolygonF f point) itraversed - holeAt :: HoleIx (PolygonalDomainF h f point) + holeAt :: HoleIx (PolygonalDomainF h f point) -> IndexedTraversal' (HoleIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Hole (PolygonalDomainF h f point)) -holeAt HoleIx (PolygonalDomainF h f point) -i = (h (SimplePolygonF f point) -> f (h (SimplePolygonF f point))) +holeAt HoleIx (PolygonalDomainF h f point) +i = (h (SimplePolygonF f point) -> f (h (SimplePolygonF f point))) -> PolygonalDomainF h f point -> f (PolygonalDomainF h f point) forall (h :: * -> *) (f :: * -> *) point (h' :: * -> *) (f :: * -> *). @@ -709,12 +709,12 @@ Index m -> IndexedTraversal' (Index m) m (IxValue m) iix Index (h (SimplePolygonF f point)) HoleIx (PolygonalDomainF h f point) -i +i -- | The indices we use to identify vertices data VtxIx = Outer {-#UNPACK#-}!Int | Inner {-#UNPACK#-}!Int {-#UNPACK#-}!Int - deriving (Int -> VtxIx -> ShowS + deriving (Int -> VtxIx -> ShowS [VtxIx] -> ShowS VtxIx -> String (Int -> VtxIx -> ShowS) @@ -727,7 +727,7 @@ show :: VtxIx -> String $cshowList :: [VtxIx] -> ShowS showList :: [VtxIx] -> ShowS -Show,ReadPrec [VtxIx] +Show,ReadPrec [VtxIx] ReadPrec VtxIx Int -> ReadS VtxIx ReadS [VtxIx] @@ -747,14 +747,14 @@ readPrec :: ReadPrec VtxIx $creadListPrec :: ReadPrec [VtxIx] readListPrec :: ReadPrec [VtxIx] -Read,VtxIx -> VtxIx -> Bool +Read,VtxIx -> VtxIx -> Bool (VtxIx -> VtxIx -> Bool) -> (VtxIx -> VtxIx -> Bool) -> Eq VtxIx forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: VtxIx -> VtxIx -> Bool == :: VtxIx -> VtxIx -> Bool $c/= :: VtxIx -> VtxIx -> Bool /= :: VtxIx -> VtxIx -> Bool -Eq,Eq VtxIx +Eq,Eq VtxIx Eq VtxIx => (VtxIx -> VtxIx -> Ordering) -> (VtxIx -> VtxIx -> Bool) @@ -801,18 +801,18 @@ uncurry Int -> Int -> VtxIx Inner -instance HoleContainer h f point => HasVertices' (PolygonalDomainF h f point) where - type Vertex (PolygonalDomainF h f point) = point - type VertexIx (PolygonalDomainF h f point) = VtxIx +instance HoleContainer h f point => HasVertices' (PolygonalDomainF h f point) where + type Vertex (PolygonalDomainF h f point) = point + type VertexIx (PolygonalDomainF h f point) = VtxIx - vertexAt :: VertexIx (PolygonalDomainF h f point) + vertexAt :: VertexIx (PolygonalDomainF h f point) -> IndexedTraversal' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) -vertexAt = \case - Outer Int -j -> (Int -> VtxIx) +vertexAt = \case + Outer Int +j -> (Int -> VtxIx) -> (Indexed Int (Vertex (PolygonalDomainF h f point)) @@ -870,10 +870,10 @@ -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt Int VertexIx (SimplePolygonF f point) -j - Inner Int -i Int -j -> ((Int, Int) -> VtxIx) +j + Inner Int +i Int +j -> ((Int, Int) -> VtxIx) -> (Indexed (Int, Int) (Vertex (PolygonalDomainF h f point)) @@ -917,7 +917,7 @@ -> IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) holeAt Int HoleIx (PolygonalDomainF h f point) -i (Indexed Int (SimplePolygonF f point) (f (SimplePolygonF f point)) +i (Indexed Int (SimplePolygonF f point) (f (SimplePolygonF f point)) -> PolygonalDomainF h f point -> f (PolygonalDomainF h f point)) -> (Indexed Int point (f point) -> SimplePolygonF f point -> f (SimplePolygonF f point)) @@ -938,14 +938,14 @@ -> IndexedTraversal' (VertexIx graph) graph (Vertex graph) vertexAt Int VertexIx (SimplePolygonF f point) -j +j - numVertices :: PolygonalDomainF h f point -> Int -numVertices PolygonalDomainF h f point -pg = SimplePolygonF f point -> Int + numVertices :: PolygonalDomainF h f point -> Int +numVertices PolygonalDomainF h f point +pg = SimplePolygonF f point -> Int forall graph. HasVertices' graph => graph -> Int numVertices (PolygonalDomainF h f point -pgPolygonalDomainF h f point +pgPolygonalDomainF h f point -> Getting (SimplePolygonF f point) (PolygonalDomainF h f point) @@ -999,15 +999,15 @@ to SimplePolygonF f point -> Int forall graph. HasVertices' graph => graph -> Int numVertices) PolygonalDomainF h f point -pg +pg -instance ( HoleContainer h f point - ) => HasOuterBoundary (PolygonalDomainF h f point) where - outerBoundary :: IndexedTraversal1' +instance ( HoleContainer h f point + ) => HasOuterBoundary (PolygonalDomainF h f point) where + outerBoundary :: IndexedTraversal1' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) -outerBoundary = (Int -> VtxIx) +outerBoundary = (Int -> VtxIx) -> (Indexed Int (Vertex (PolygonalDomainF h f point)) @@ -1069,14 +1069,14 @@ (SimplePolygonF f point) (Vertex (SimplePolygonF f point)) outerBoundary - ccwOuterBoundaryFrom :: VertexIx (PolygonalDomainF h f point) + ccwOuterBoundaryFrom :: VertexIx (PolygonalDomainF h f point) -> IndexedTraversal1' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) -ccwOuterBoundaryFrom = \case - Outer Int -u -> (Int -> VtxIx) +ccwOuterBoundaryFrom = \case + Outer Int +u -> (Int -> VtxIx) -> (Indexed Int (Vertex (PolygonalDomainF h f point)) @@ -1134,9 +1134,9 @@ -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) ccwOuterBoundaryFrom Int VertexIx (SimplePolygonF f point) -u - VertexIx (PolygonalDomainF h f point) -u -> String +u + VertexIx (PolygonalDomainF h f point) +u -> String -> VtxIx -> p point (f point) -> PolygonalDomainF h f point @@ -1145,16 +1145,16 @@ error' String "ccwOuterBoundaryFrom" VertexIx (PolygonalDomainF h f point) VtxIx -u +u - cwOuterBoundaryFrom :: VertexIx (PolygonalDomainF h f point) + cwOuterBoundaryFrom :: VertexIx (PolygonalDomainF h f point) -> IndexedTraversal1' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) -cwOuterBoundaryFrom = \case - Outer Int -u -> (Int -> VtxIx) +cwOuterBoundaryFrom = \case + Outer Int +u -> (Int -> VtxIx) -> (Indexed Int (Vertex (PolygonalDomainF h f point)) @@ -1212,9 +1212,9 @@ -> IndexedTraversal1' (VertexIx polygon) polygon (Vertex polygon) cwOuterBoundaryFrom Int VertexIx (SimplePolygonF f point) -u - VertexIx (PolygonalDomainF h f point) -u -> String +u + VertexIx (PolygonalDomainF h f point) +u -> String -> VtxIx -> p point (f point) -> PolygonalDomainF h f point @@ -1223,16 +1223,16 @@ error' String "cwOuterBoundaryFrom" VertexIx (PolygonalDomainF h f point) VtxIx -u +u - outerBoundaryVertexAt :: VertexIx (PolygonalDomainF h f point) + outerBoundaryVertexAt :: VertexIx (PolygonalDomainF h f point) -> IndexedGetter (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) -outerBoundaryVertexAt = \case - Outer Int -u -> (Int -> VtxIx) +outerBoundaryVertexAt = \case + Outer Int +u -> (Int -> VtxIx) -> (Indexed Int (Vertex (PolygonalDomainF h f point)) @@ -1290,9 +1290,9 @@ -> IndexedGetter (VertexIx polygon) polygon (Vertex polygon) outerBoundaryVertexAt Int VertexIx (SimplePolygonF f point) -u - VertexIx (PolygonalDomainF h f point) -u -> String +u + VertexIx (PolygonalDomainF h f point) +u -> String -> VtxIx -> p point (f point) -> PolygonalDomainF h f point @@ -1301,15 +1301,15 @@ error' String "outerBoundaryVertexAt" VertexIx (PolygonalDomainF h f point) VtxIx -u +u - outerBoundaryEdges :: IndexedFold1 + outerBoundaryEdges :: IndexedFold1 (VertexIx (PolygonalDomainF h f point), VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point), Vertex (PolygonalDomainF h f point)) -outerBoundaryEdges = ((Int, Int) -> (VtxIx, VtxIx)) +outerBoundaryEdges = ((Int, Int) -> (VtxIx, VtxIx)) -> (Indexed (Int, Int) (Vertex (PolygonalDomainF h f point), @@ -1388,16 +1388,16 @@ (SimplePolygonF f point) (Vertex (SimplePolygonF f point), Vertex (SimplePolygonF f point)) outerBoundaryEdges - outerBoundaryEdgeAt :: VertexIx (PolygonalDomainF h f point) + outerBoundaryEdgeAt :: VertexIx (PolygonalDomainF h f point) -> IndexedGetter (VertexIx (PolygonalDomainF h f point), VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point), Vertex (PolygonalDomainF h f point)) -outerBoundaryEdgeAt = \case - Outer Int -u -> ((Int, Int) -> (VtxIx, VtxIx)) +outerBoundaryEdgeAt = \case + Outer Int +u -> ((Int, Int) -> (VtxIx, VtxIx)) -> (Indexed (Int, Int) (Vertex (PolygonalDomainF h f point), @@ -1471,9 +1471,9 @@ (Vertex polygon, Vertex polygon) outerBoundaryEdgeAt Int VertexIx (SimplePolygonF f point) -u - VertexIx (PolygonalDomainF h f point) -u -> String +u + VertexIx (PolygonalDomainF h f point) +u -> String -> VtxIx -> p (point, point) (f (point, point)) -> PolygonalDomainF h f point @@ -1482,19 +1482,19 @@ error' String "outerBoundaryVertexAt" VertexIx (PolygonalDomainF h f point) VtxIx -u +u -- | Helper to produce a more useful error message -error' :: String -> VtxIx -> a +error' :: String -> VtxIx -> a error' :: forall a. String -> VtxIx -> a -error' String -s VtxIx -u = String -> a +error' String +s VtxIx +u = String -> a forall a. HasCallStack => String -> a error (String -> a) -> String -> a forall a b. (a -> b) -> a -> b $ String -s String -> ShowS +s String -> ShowS forall a. Semigroup a => a -> a -> a <> String ", vertex " String -> ShowS @@ -1502,7 +1502,7 @@ <> VtxIx -> String forall a. Show a => a -> String show VtxIx -u String -> ShowS +u String -> ShowS forall a. Semigroup a => a -> a -> a <> String " not on outer boundary" @@ -1510,27 +1510,27 @@ -- | remap an edge on the outer boundary mapEdge :: (Int,Int) -> (VtxIx,VtxIx) mapEdge :: (Int, Int) -> (VtxIx, VtxIx) -mapEdge (Int -u,Int -v) = (Int -> VtxIx +mapEdge (Int +u,Int +v) = (Int -> VtxIx Outer Int -u, Int -> VtxIx +u, Int -> VtxIx Outer Int -v) +v) -instance ( Point_ point 2 r - , HasFromFoldable1 f - , HoleContainer h f point - ) => Polygon_ (PolygonalDomainF h f point) point r where - extremes :: (Num r, Ord r, Point_ point 2 r) => +instance ( Point_ point 2 r + , HasFromFoldable1 f + , HoleContainer h f point + ) => Polygon_ (PolygonalDomainF h f point) point r where + extremes :: (Num r, Ord r, Point_ point 2 r) => Vector 2 r -> PolygonalDomainF h f point -> (point, point) -extremes Vector 2 r -u = Vector 2 r -> SimplePolygonF f point -> (point, point) +extremes Vector 2 r +u = Vector 2 r -> SimplePolygonF f point -> (point, point) forall polygon point r. (Polygon_ polygon point r, Num r, Ord r, Point_ point 2 r) => Vector 2 r -> polygon -> (point, point) extremes Vector 2 r -u (SimplePolygonF f point -> (point, point)) +u (SimplePolygonF f point -> (point, point)) -> (PolygonalDomainF h f point -> SimplePolygonF f point) -> PolygonalDomainF h f point -> (point, point) @@ -1550,14 +1550,14 @@ (SimplePolygonF f point -> f (SimplePolygonF f point)) -> PolygonalDomainF h f point -> f (PolygonalDomainF h f point) outerBoundaryPolygon - ccwPredecessorOf :: VertexIx (PolygonalDomainF h f point) + ccwPredecessorOf :: VertexIx (PolygonalDomainF h f point) -> IndexedLens' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) -ccwPredecessorOf = \case - Outer Int -u -> (Int -> VtxIx) +ccwPredecessorOf = \case + Outer Int +u -> (Int -> VtxIx) -> (Indexed Int (Vertex (PolygonalDomainF h f point)) @@ -1615,10 +1615,10 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwPredecessorOf Int VertexIx (SimplePolygonF f point) -u - Inner Int -i Int -j -> (Int -> VtxIx) +u + Inner Int +i Int +j -> (Int -> VtxIx) -> (Indexed Int (Vertex (PolygonalDomainF h f point)) @@ -1633,7 +1633,7 @@ (i -> j) -> (Indexed i a b -> r) -> p a b -> r reindexed (Int -> Int -> VtxIx Inner Int -i) ((Indexed +i) ((Indexed Int (Vertex (PolygonalDomainF h f point)) (f (Vertex (PolygonalDomainF h f point))) @@ -1676,7 +1676,7 @@ -> IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) holeAt Int HoleIx (PolygonalDomainF h f point) -i) ((SimplePolygonF f point -> f (SimplePolygonF f point)) +i) ((SimplePolygonF f point -> f (SimplePolygonF f point)) -> PolygonalDomainF h f point -> f (PolygonalDomainF h f point)) -> (Indexed Int point (f point) -> SimplePolygonF f point -> f (SimplePolygonF f point)) @@ -1695,15 +1695,15 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwPredecessorOf Int VertexIx (SimplePolygonF f point) -j - ccwSuccessorOf :: VertexIx (PolygonalDomainF h f point) +j + ccwSuccessorOf :: VertexIx (PolygonalDomainF h f point) -> IndexedLens' (VertexIx (PolygonalDomainF h f point)) (PolygonalDomainF h f point) (Vertex (PolygonalDomainF h f point)) -ccwSuccessorOf = \case - Outer Int -u -> (Int -> VtxIx) +ccwSuccessorOf = \case + Outer Int +u -> (Int -> VtxIx) -> (Indexed Int (Vertex (PolygonalDomainF h f point)) @@ -1761,10 +1761,10 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwSuccessorOf Int VertexIx (SimplePolygonF f point) -u - Inner Int -i Int -j -> (Int -> VtxIx) +u + Inner Int +i Int +j -> (Int -> VtxIx) -> (Indexed Int (Vertex (PolygonalDomainF h f point)) @@ -1779,7 +1779,7 @@ (i -> j) -> (Indexed i a b -> r) -> p a b -> r reindexed (Int -> Int -> VtxIx Inner Int -i) ((Indexed +i) ((Indexed Int (Vertex (PolygonalDomainF h f point)) (f (Vertex (PolygonalDomainF h f point))) @@ -1822,7 +1822,7 @@ -> IndexedTraversal' (HoleIx polygon) polygon (Hole polygon) holeAt Int HoleIx (PolygonalDomainF h f point) -i) ((SimplePolygonF f point -> f (SimplePolygonF f point)) +i) ((SimplePolygonF f point -> f (SimplePolygonF f point)) -> PolygonalDomainF h f point -> f (PolygonalDomainF h f point)) -> (Indexed Int point (f point) -> SimplePolygonF f point -> f (SimplePolygonF f point)) @@ -1841,7 +1841,7 @@ -> IndexedLens' (VertexIx polygon) polygon (Vertex polygon) ccwSuccessorOf Int VertexIx (SimplePolygonF f point) -j +j {- @@ -1874,8 +1874,8 @@ -- | interpret a simple polygon as a Polygonal domain. -asSimplePolygon :: (HasFromFoldable h, HoleContainer h f point) - => Prism' (PolygonalDomainF h f point) (SimplePolygonF f point) +asSimplePolygon :: (HasFromFoldable h, HoleContainer h f point) + => Prism' (PolygonalDomainF h f point) (SimplePolygonF f point) asSimplePolygon :: forall (h :: * -> *) (f :: * -> *) point. (HasFromFoldable h, HoleContainer h f point) => Prism' (PolygonalDomainF h f point) (SimplePolygonF f point) @@ -1902,8 +1902,8 @@ forall a. [a] -> h a forall (f :: * -> *) a. HasFromFoldable f => [a] -> f a fromList [])) - (\PolygonalDomainF h f point -pd -> if Getting All (PolygonalDomainF h f point) (SimplePolygonF f point) + (\PolygonalDomainF h f point +pd -> if Getting All (PolygonalDomainF h f point) (SimplePolygonF f point) -> PolygonalDomainF h f point -> Bool forall s a. Getting All s a -> s -> Bool nullOf Getting All (PolygonalDomainF h f point) (SimplePolygonF f point) @@ -1919,10 +1919,10 @@ (PolygonalDomainF h f point) (Hole (PolygonalDomainF h f point)) holes PolygonalDomainF h f point -pd then SimplePolygonF f point -> Maybe (SimplePolygonF f point) +pd then SimplePolygonF f point -> Maybe (SimplePolygonF f point) forall a. a -> Maybe a Just (PolygonalDomainF h f point -pdPolygonalDomainF h f point +pdPolygonalDomainF h f point -> Getting (SimplePolygonF f point) (PolygonalDomainF h f point) diff --git a/haddocks/hgeometry/src/HGeometry.Polygon.html b/haddocks/hgeometry/src/HGeometry.Polygon.html index 3c059de6e..84a4f4dc3 100644 --- a/haddocks/hgeometry/src/HGeometry.Polygon.html +++ b/haddocks/hgeometry/src/HGeometry.Polygon.html @@ -24,13 +24,13 @@ -------------------------------------------------------------------------------- -- | Try to convert the polygon into a triangle (whose vertices are given in CCW order). -asTriangle :: Polygon_ polygon point r => polygon -> Maybe (Triangle point) +asTriangle :: Polygon_ polygon point r => polygon -> Maybe (Triangle point) asTriangle :: forall polygon point r. Polygon_ polygon point r => polygon -> Maybe (Triangle point) -asTriangle polygon -pg = case polygon -pgpolygon -> Getting (Endo [point]) polygon point -> [point] +asTriangle polygon +pg = case polygon +pgpolygon -> Getting (Endo [point]) polygon point -> [point] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..Getting (Endo [point]) polygon point (Vertex polygon -> Const (Endo [point]) (Vertex polygon)) @@ -46,10 +46,10 @@ (Vertex polygon) (Vertex polygon) vertices of - [point -u,point -v,point -w] -> Triangle point -> Maybe (Triangle point) + [point +u,point +v,point +w] -> Triangle point -> Maybe (Triangle point) forall a. a -> Maybe a Just (Triangle point -> Maybe (Triangle point)) -> Triangle point -> Maybe (Triangle point) @@ -57,9 +57,9 @@ $ point -> point -> point -> Triangle point forall point. point -> point -> point -> Triangle point Triangle point -u point -v point -w +u point +v point +w [point] _ -> Maybe (Triangle point) forall a. Maybe a @@ -68,9 +68,9 @@ -- | The area of a polygon -- -- running time: \(O(n)\) -area :: ( Polygon_ polygon point r - , SimplePolygon_ (Hole polygon) point r - , Fractional r) => polygon -> r +area :: ( Polygon_ polygon point r + , SimplePolygon_ (Hole polygon) point r + , Fractional r) => polygon -> r area :: forall polygon point r. (Polygon_ polygon point r, SimplePolygon_ (Hole polygon) point r, Fractional r) => @@ -88,23 +88,23 @@ area2X -- | Computes the double area of a polygon -area2X :: ( Polygon_ polygon point r - , Num r - , Point_ point 2 r - , SimplePolygon_ (Hole polygon) point r - ) => polygon -> r +area2X :: ( Polygon_ polygon point r + , Num r + , Point_ point 2 r + , SimplePolygon_ (Hole polygon) point r + ) => polygon -> r area2X :: forall polygon point r. (Polygon_ polygon point r, Num r, Point_ point 2 r, SimplePolygon_ (Hole polygon) point r) => polygon -> r -area2X polygon -poly = polygon -> r +area2X polygon +poly = polygon -> r forall r simplePolygon point. (Num r, HasOuterBoundary simplePolygon, Point_ point 2 r, Vertex simplePolygon ~ point) => simplePolygon -> r signedArea2X polygon -poly r -> r -> r +poly r -> r -> r forall a. Num a => a -> a -> a - Getting (Endo (Endo r)) polygon r -> polygon -> r forall a s. Num a => Getting (Endo (Endo a)) s a -> s -> a @@ -138,5 +138,5 @@ Vertex simplePolygon ~ point) => simplePolygon -> r signedArea2X) polygon -poly +poly \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.RangeTree.Base.html b/haddocks/hgeometry/src/HGeometry.RangeTree.Base.html index 545be8325..6a7aac7c1 100644 --- a/haddocks/hgeometry/src/HGeometry.RangeTree.Base.html +++ b/haddocks/hgeometry/src/HGeometry.RangeTree.Base.html @@ -38,24 +38,24 @@ -------------------------------------------------------------------------------- -- | Type Representing a generic (1D) range-tree. -newtype RangeTree f point = RangeTree (SubTree f point (NumType point)) +newtype RangeTree f point = RangeTree (SubTree f point (NumType point)) -deriving instance (Show (f point), Show (NumType point)) => Show (RangeTree f point) -deriving instance (Eq (f point), Eq (NumType point)) => Eq (RangeTree f point) +deriving instance (Show (f point), Show (NumType point)) => Show (RangeTree f point) +deriving instance (Eq (f point), Eq (NumType point)) => Eq (RangeTree f point) -- | The actual tree type -type SubTree f point r = BinLeafTree (NodeData f point r) - (LeafData f point r) +type SubTree f point r = BinLeafTree (NodeData f point r) + (LeafData f point r) -- | Data stored at a leaf -data LeafData f point r = LeafData { forall {k} (f :: k -> *) (point :: k) r. LeafData f point r -> r -_thePoint :: !r +data LeafData f point r = LeafData { forall {k} (f :: k -> *) (point :: k) r. LeafData f point r -> r +_thePoint :: !r , forall {k} (f :: k -> *) (point :: k) r. LeafData f point r -> f point -_leafCanonical :: !(f point) - } deriving (Int -> LeafData f point r -> ShowS +_leafCanonical :: !(f point) + } deriving (Int -> LeafData f point r -> ShowS [LeafData f point r] -> ShowS LeafData f point r -> String (Int -> LeafData f point r -> ShowS) @@ -85,7 +85,7 @@ (Show r, Show (f point)) => [LeafData f point r] -> ShowS showList :: [LeafData f point r] -> ShowS -Show,LeafData f point r -> LeafData f point r -> Bool +Show,LeafData f point r -> LeafData f point r -> Bool (LeafData f point r -> LeafData f point r -> Bool) -> (LeafData f point r -> LeafData f point r -> Bool) -> Eq (LeafData f point r) @@ -101,7 +101,7 @@ (Eq r, Eq (f point)) => LeafData f point r -> LeafData f point r -> Bool /= :: LeafData f point r -> LeafData f point r -> Bool -Eq,Eq (LeafData f point r) +Eq,Eq (LeafData f point r) Eq (LeafData f point r) => (LeafData f point r -> LeafData f point r -> Ordering) -> (LeafData f point r -> LeafData f point r -> Bool) @@ -164,7 +164,7 @@ (Ord r, Ord (f point)) => LeafData f point r -> LeafData f point r -> LeafData f point r min :: LeafData f point r -> LeafData f point r -> LeafData f point r -Ord,(forall a b. (a -> b) -> LeafData f point a -> LeafData f point b) +Ord,(forall a b. (a -> b) -> LeafData f point a -> LeafData f point b) -> (forall a b. a -> LeafData f point b -> LeafData f point a) -> Functor (LeafData f point) forall a b. a -> LeafData f point b -> LeafData f point a @@ -182,7 +182,7 @@ $c<$ :: forall k (f :: k -> *) (point :: k) a b. a -> LeafData f point b -> LeafData f point a <$ :: forall a b. a -> LeafData f point b -> LeafData f point a -Functor,(forall m. Monoid m => LeafData f point m -> m) +Functor,(forall m. Monoid m => LeafData f point m -> m) -> (forall m a. Monoid m => (a -> m) -> LeafData f point a -> m) -> (forall m a. Monoid m => (a -> m) -> LeafData f point a -> m) -> (forall a b. (a -> b -> b) -> b -> LeafData f point a -> b) @@ -310,7 +310,7 @@ Num a => LeafData f point a -> a product :: forall a. Num a => LeafData f point a -> a -Foldable,Functor (LeafData f point) +Foldable,Functor (LeafData f point) Foldable (LeafData f point) (Functor (LeafData f point), Foldable (LeafData f point)) => (forall (f :: * -> *) a b. @@ -390,7 +390,7 @@ Traversable) -- | Access the point stored in this leaf. -thePoint :: Lens (LeafData f point r) (LeafData f point s) r s +thePoint :: Lens (LeafData f point r) (LeafData f point s) r s thePoint :: forall {k} (f :: k -> *) (point :: k) r s (f :: * -> *). Functor f => (r -> f s) -> LeafData f point r -> f (LeafData f point s) @@ -400,14 +400,14 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens LeafData f point r -> r forall {k} (f :: k -> *) (point :: k) r. LeafData f point r -> r -_thePoint (\LeafData f point r -ld s -p -> LeafData f point r -ld { _thePoint = p}) +_thePoint (\LeafData f point r +ld s +p -> LeafData f point r +ld { _thePoint = p}) -instance HasCanonicalSubSet (LeafData f point r) (LeafData g point r) point f g where - canonicalSubSet :: Lens (LeafData f point r) (LeafData g point r) (f point) (g point) -canonicalSubSet = (LeafData f point r -> f point) +instance HasCanonicalSubSet (LeafData f point r) (LeafData g point r) point f g where + canonicalSubSet :: Lens (LeafData f point r) (LeafData g point r) (f point) (g point) +canonicalSubSet = (LeafData f point r -> f point) -> (LeafData f point r -> g point -> LeafData g point r) -> Lens (LeafData f point r) (LeafData g point r) (f point) (g point) @@ -415,23 +415,23 @@ lens LeafData f point r -> f point forall {k} (f :: k -> *) (point :: k) r. LeafData f point r -> f point -_leafCanonical (\(LeafData r -p f point -_) g point -cs -> r -> g point -> LeafData g point r +_leafCanonical (\(LeafData r +p f point +_) g point +cs -> r -> g point -> LeafData g point r forall {k} (f :: k -> *) (point :: k) r. r -> f point -> LeafData f point r LeafData r -p g point -cs) +p g point +cs) -- | The data stored at an internal node. -data NodeData f point r = NodeData { forall {k} (f :: k -> *) (point :: k) r. NodeData f point r -> r -_split :: !r +data NodeData f point r = NodeData { forall {k} (f :: k -> *) (point :: k) r. NodeData f point r -> r +_split :: !r , forall {k} (f :: k -> *) (point :: k) r. NodeData f point r -> f point -_canonicalSubSet :: !(f point) - } deriving (Int -> NodeData f point r -> ShowS +_canonicalSubSet :: !(f point) + } deriving (Int -> NodeData f point r -> ShowS [NodeData f point r] -> ShowS NodeData f point r -> String (Int -> NodeData f point r -> ShowS) @@ -461,7 +461,7 @@ (Show r, Show (f point)) => [NodeData f point r] -> ShowS showList :: [NodeData f point r] -> ShowS -Show,NodeData f point r -> NodeData f point r -> Bool +Show,NodeData f point r -> NodeData f point r -> Bool (NodeData f point r -> NodeData f point r -> Bool) -> (NodeData f point r -> NodeData f point r -> Bool) -> Eq (NodeData f point r) @@ -477,7 +477,7 @@ (Eq r, Eq (f point)) => NodeData f point r -> NodeData f point r -> Bool /= :: NodeData f point r -> NodeData f point r -> Bool -Eq,Eq (NodeData f point r) +Eq,Eq (NodeData f point r) Eq (NodeData f point r) => (NodeData f point r -> NodeData f point r -> Ordering) -> (NodeData f point r -> NodeData f point r -> Bool) @@ -540,7 +540,7 @@ (Ord r, Ord (f point)) => NodeData f point r -> NodeData f point r -> NodeData f point r min :: NodeData f point r -> NodeData f point r -> NodeData f point r -Ord,(forall a b. (a -> b) -> NodeData f point a -> NodeData f point b) +Ord,(forall a b. (a -> b) -> NodeData f point a -> NodeData f point b) -> (forall a b. a -> NodeData f point b -> NodeData f point a) -> Functor (NodeData f point) forall a b. a -> NodeData f point b -> NodeData f point a @@ -558,7 +558,7 @@ $c<$ :: forall k (f :: k -> *) (point :: k) a b. a -> NodeData f point b -> NodeData f point a <$ :: forall a b. a -> NodeData f point b -> NodeData f point a -Functor,(forall m. Monoid m => NodeData f point m -> m) +Functor,(forall m. Monoid m => NodeData f point m -> m) -> (forall m a. Monoid m => (a -> m) -> NodeData f point a -> m) -> (forall m a. Monoid m => (a -> m) -> NodeData f point a -> m) -> (forall a b. (a -> b -> b) -> b -> NodeData f point a -> b) @@ -686,7 +686,7 @@ Num a => NodeData f point a -> a product :: forall a. Num a => NodeData f point a -> a -Foldable,Functor (NodeData f point) +Foldable,Functor (NodeData f point) Foldable (NodeData f point) (Functor (NodeData f point), Foldable (NodeData f point)) => (forall (f :: * -> *) a b. @@ -766,7 +766,7 @@ Traversable) -- | Access the split value of a NodeData -split :: Lens (NodeData f point r) (NodeData f point s) r s +split :: Lens (NodeData f point r) (NodeData f point s) r s split :: forall {k} (f :: k -> *) (point :: k) r s (f :: * -> *). Functor f => (r -> f s) -> NodeData f point r -> f (NodeData f point s) @@ -776,13 +776,13 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens NodeData f point r -> r forall {k} (f :: k -> *) (point :: k) r. NodeData f point r -> r -_split (\NodeData f point r -nd s -x -> NodeData f point r -nd { _split = x }) +_split (\NodeData f point r +nd s +x -> NodeData f point r +nd { _split = x }) -instance HasCanonicalSubSet (NodeData f point r) (NodeData g point r) point f g where - canonicalSubSet :: Lens (NodeData f point r) (NodeData g point r) (f point) (g point) +instance HasCanonicalSubSet (NodeData f point r) (NodeData g point r) point f g where + canonicalSubSet :: Lens (NodeData f point r) (NodeData g point r) (f point) (g point) canonicalSubSet = (NodeData f point r -> f point) -> (NodeData f point r -> g point -> NodeData g point r) -> Lens @@ -791,25 +791,25 @@ lens NodeData f point r -> f point forall {k} (f :: k -> *) (point :: k) r. NodeData f point r -> f point -_canonicalSubSet (\(NodeData r -x f point -_) g point -cs -> r -> g point -> NodeData g point r +_canonicalSubSet (\(NodeData r +x f point +_) g point +cs -> r -> g point -> NodeData g point r forall {k} (f :: k -> *) (point :: k) r. r -> f point -> NodeData f point r NodeData r -x g point -cs) +x g point +cs) -instance HasCanonicalSubSet (SubTree f point r) (SubTree f point r) point f f where +instance HasCanonicalSubSet (SubTree f point r) (SubTree f point r) point f f where -- | Sets the node data of the root - canonicalSubSet :: Lens (SubTree f point r) (SubTree f point r) (f point) (f point) + canonicalSubSet :: Lens (SubTree f point r) (SubTree f point r) (f point) (f point) canonicalSubSet = (SubTree f point r -> f point) -> (SubTree f point r -> f point -> SubTree f point r) -> Lens (SubTree f point r) (SubTree f point r) (f point) (f point) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens SubTree f point r -> f point -get'' ((f point -> SubTree f point r -> SubTree f point r) +get'' ((f point -> SubTree f point r -> SubTree f point r) -> SubTree f point r -> f point -> SubTree f point r forall a b c. (a -> b -> c) -> b -> a -> c flip f point -> SubTree f point r -> SubTree f point r @@ -817,13 +817,13 @@ {f :: k -> *}. (HasCanonicalSubSet a a a f g, HasCanonicalSubSet a a a f g) => g a -> BinLeafTree a a -> BinLeafTree a a -set'') +set'') where - get'' :: SubTree f point r -> f point -get'' = \case - Leaf LeafData f point r -ld -> LeafData f point r -ldLeafData f point r + get'' :: SubTree f point r -> f point +get'' = \case + Leaf LeafData f point r +ld -> LeafData f point r +ldLeafData f point r -> Getting (f point) (LeafData f point r) (f point) -> f point forall s a. s -> Getting a s a -> a ^.Getting (f point) (LeafData f point r) (f point) @@ -833,10 +833,10 @@ Lens (LeafData f point r) (LeafData f point r) (f point) (f point) canonicalSubSet Node SubTree f point r -_ NodeData f point r -nd SubTree f point r +_ NodeData f point r +nd SubTree f point r _ -> NodeData f point r -ndNodeData f point r +ndNodeData f point r -> Getting (f point) (NodeData f point r) (f point) -> f point forall s a. s -> Getting a s a -> a ^.Getting (f point) (NodeData f point r) (f point) @@ -845,16 +845,16 @@ Lens s t (f a) (g a) Lens (NodeData f point r) (NodeData f point r) (f point) (f point) canonicalSubSet - set'' :: g a -> BinLeafTree a a -> BinLeafTree a a -set'' g a -cs = \case - Leaf a -ld -> a -> BinLeafTree a a + set'' :: g a -> BinLeafTree a a -> BinLeafTree a a +set'' g a +cs = \case + Leaf a +ld -> a -> BinLeafTree a a forall v a. a -> BinLeafTree v a Leaf (a -> BinLeafTree a a) -> a -> BinLeafTree a a forall a b. (a -> b) -> a -> b $ a -lda -> (a -> a) -> a +lda -> (a -> a) -> a forall a b. a -> (a -> b) -> b &(f a -> Identity (g a)) -> a -> Identity a forall {k} s t (a :: k) (f :: k -> *) (g :: k -> *). @@ -864,16 +864,16 @@ canonicalSubSet ((f a -> Identity (g a)) -> a -> Identity a) -> g a -> a -> a forall s t a b. ASetter s t a b -> b -> s -> t .~ g a -cs - Node BinLeafTree a a -l a -nd BinLeafTree a a -r -> BinLeafTree a a -> a -> BinLeafTree a a -> BinLeafTree a a +cs + Node BinLeafTree a a +l a +nd BinLeafTree a a +r -> BinLeafTree a a -> a -> BinLeafTree a a -> BinLeafTree a a forall v a. BinLeafTree v a -> v -> BinLeafTree v a -> BinLeafTree v a Node BinLeafTree a a -l (a -nda -> (a -> a) -> a +l (a +nda -> (a -> a) -> a forall a b. a -> (a -> b) -> b &(f a -> Identity (g a)) -> a -> Identity a forall {k} s t (a :: k) (f :: k -> *) (g :: k -> *). @@ -883,16 +883,16 @@ canonicalSubSet ((f a -> Identity (g a)) -> a -> Identity a) -> g a -> a -> a forall s t a b. ASetter s t a b -> b -> s -> t .~ g a -cs) BinLeafTree a a -r +cs) BinLeafTree a a +r -- | Construct a rangetree on n points. -- -- \(O(n\log n)\) -buildRangeTree :: ( Foldable1 g, Point_ point d r, Ord r, 1 <= d - , Semigroup (f point), Measured f point - ) => g point -> RangeTree f point +buildRangeTree :: ( Foldable1 g, Point_ point d r, Ord r, 1 <= d + , Semigroup (f point), Measured f point + ) => g point -> RangeTree f point buildRangeTree :: forall (g :: * -> *) point (d :: Nat) r (f :: * -> *). (Foldable1 g, Point_ point d r, Ord r, 1 <= d, Semigroup (f point), Measured f point) => @@ -952,9 +952,9 @@ -- -- The running time and space depends on the monoid used. In particlar, we use (<>) at -- every internal node. -fromAscList :: ( Foldable1 g, Functor g, Point_ point d r, 1 <= d - , Semigroup (f point), Measured f point - ) => g point -> RangeTree f point +fromAscList :: ( Foldable1 g, Functor g, Point_ point d r, 1 <= d + , Semigroup (f point), Measured f point + ) => g point -> RangeTree f point fromAscList :: forall (g :: * -> *) point (d :: Nat) r (f :: * -> *). (Foldable1 g, Functor g, Point_ point d r, 1 <= d, Semigroup (f point), Measured f point) => @@ -976,9 +976,9 @@ :| []) -- | Given the points in groups per x-coordinate, in increasing order of x-coordinate -fromGroupedAscList :: ( Foldable1 g, Foldable1 h, Point_ point d r, 1 <= d - , Semigroup (f point), Measured f point - ) => g (h point) -> RangeTree f point +fromGroupedAscList :: ( Foldable1 g, Foldable1 h, Point_ point d r, 1 <= d + , Semigroup (f point), Measured f point + ) => g (h point) -> RangeTree f point fromGroupedAscList :: forall (g :: * -> *) (h :: * -> *) point (d :: Nat) r (f :: * -> *). (Foldable1 g, Foldable1 h, Point_ point d r, 1 <= d, @@ -1032,7 +1032,7 @@ -> p -> (BinLeafTree (NodeData f point r) a, b) -> (BinLeafTree (NodeData f point r) a, b) -node' h point +node' h point -> (BinLeafTree (NodeData f point r) (LeafData f point r), r) h point -> (BinLeafTree @@ -1047,7 +1047,7 @@ t point -> (BinLeafTree v (LeafData f point (NumType point)), NumType point) -leaf' (BinLeafTree (Count (h point)) (h point) +leaf' (BinLeafTree (Count (h point)) (h point) -> (BinLeafTree (NodeData f point r) (LeafData f point r), r)) -> (g (h point) -> BinLeafTree (Count (h point)) (h point)) -> g (h point) @@ -1059,12 +1059,12 @@ f a -> BinLeafTree (Count a) a asBalancedBinLeafTree where - leaf' :: t point + leaf' :: t point -> (BinLeafTree v (LeafData f point (NumType point)), NumType point) -leaf' t point -pts = let p :: point -p = NonEmpty point -> point +leaf' t point +pts = let p :: point +p = NonEmpty point -> point forall a. NonEmpty a -> a NonEmpty.head (NonEmpty point -> point) -> NonEmpty point -> point forall a b. (a -> b) -> a -> b @@ -1072,10 +1072,10 @@ forall a. t a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty t point -pts - x :: NumType point -x = point -ppoint +pts + x :: NumType point +x = point +ppoint -> Getting (NumType point) point (NumType point) -> NumType point forall s a. s -> Getting a s a -> a ^.Getting (NumType point) point (NumType point) @@ -1084,8 +1084,8 @@ IndexedLens' Int point r IndexedLens' Int point (NumType point) xCoord - m :: f point -m = (point -> f point) -> t point -> f point + m :: f point +m = (point -> f point) -> t point -> f point forall m a. Semigroup m => (a -> m) -> t a -> m forall (t :: * -> *) m a. (Foldable1 t, Semigroup m) => @@ -1093,7 +1093,7 @@ foldMap1 point -> f point forall (f :: * -> *) a. Measured f a => a -> f a measure t point -pts +pts in (LeafData f point (NumType point) -> BinLeafTree v (LeafData f point (NumType point)) forall v a. a -> BinLeafTree v a @@ -1106,33 +1106,33 @@ forall {k} (f :: k -> *) (point :: k) r. r -> f point -> LeafData f point r LeafData NumType point -x f point -m, NumType point -x) - node' :: (BinLeafTree (NodeData f point r) a, r) +x f point +m, NumType point +x) + node' :: (BinLeafTree (NodeData f point r) a, r) -> p -> (BinLeafTree (NodeData f point r) a, b) -> (BinLeafTree (NodeData f point r) a, b) -node' (BinLeafTree (NodeData f point r) a -l,r -m) p -_ (BinLeafTree (NodeData f point r) a -r,b -m') = ( BinLeafTree (NodeData f point r) a +node' (BinLeafTree (NodeData f point r) a +l,r +m) p +_ (BinLeafTree (NodeData f point r) a +r,b +m') = ( BinLeafTree (NodeData f point r) a -> NodeData f point r -> BinLeafTree (NodeData f point r) a -> BinLeafTree (NodeData f point r) a forall v a. BinLeafTree v a -> v -> BinLeafTree v a -> BinLeafTree v a Node BinLeafTree (NodeData f point r) a -l (r -> f point -> NodeData f point r +l (r -> f point -> NodeData f point r forall {k} (f :: k -> *) (point :: k) r. r -> f point -> NodeData f point r NodeData r -m (f point -> NodeData f point r) -> f point -> NodeData f point r +m (f point -> NodeData f point r) -> f point -> NodeData f point r forall a b. (a -> b) -> a -> b $ BinLeafTree (NodeData f point r) a -lBinLeafTree (NodeData f point r) a +lBinLeafTree (NodeData f point r) a -> Getting (f point) (BinLeafTree (NodeData f point r) a) (f point) -> f point forall s a. s -> Getting a s a -> a @@ -1148,7 +1148,7 @@ canonicalSubSet f point -> f point -> f point forall a. Semigroup a => a -> a -> a <> BinLeafTree (NodeData f point r) a -rBinLeafTree (NodeData f point r) a +rBinLeafTree (NodeData f point r) a -> Getting (f point) (BinLeafTree (NodeData f point r) a) (f point) -> f point forall s a. s -> Getting a s a -> a @@ -1162,40 +1162,40 @@ (f point) (f point) canonicalSubSet) BinLeafTree (NodeData f point r) a -r +r , b -m' +m' ) -- | Report the canonical subsets of the nodes that together represent the query interval. -- -- \(O(\log n)\) -rangeQuery :: (Interval_ interval r, Point_ point d r, 1 <= d, Ord r) - => interval -> RangeTree f point -> [f point] +rangeQuery :: (Interval_ interval r, Point_ point d r, 1 <= d, Ord r) + => interval -> RangeTree f point -> [f point] rangeQuery :: forall interval r point (d :: Nat) (f :: * -> *). (Interval_ interval r, Point_ point d r, 1 <= d, Ord r) => interval -> RangeTree f point -> [f point] -rangeQuery interval -q (RangeTree SubTree f point (NumType point) -t0) = BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -findSplitNode BinLeafTree (NodeData f point r) (LeafData f point r) +rangeQuery interval +q (RangeTree SubTree f point (NumType point) +t0) = BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] +findSplitNode BinLeafTree (NodeData f point r) (LeafData f point r) SubTree f point (NumType point) -t0 +t0 where -- - findSplitNode :: BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -findSplitNode BinLeafTree (NodeData f point r) (LeafData f point r) -t = case BinLeafTree (NodeData f point r) (LeafData f point r) -t of - Leaf LeafData f point r -ld -> LeafData f point r -> [f point] -goReport LeafData f point r -ld - Node BinLeafTree (NodeData f point r) (LeafData f point r) -l NodeData f point r -nd BinLeafTree (NodeData f point r) (LeafData f point r) -r -> case (NodeData f point r -ndNodeData f point r -> Getting r (NodeData f point r) r -> r + findSplitNode :: BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] +findSplitNode BinLeafTree (NodeData f point r) (LeafData f point r) +t = case BinLeafTree (NodeData f point r) (LeafData f point r) +t of + Leaf LeafData f point r +ld -> LeafData f point r -> [f point] +goReport LeafData f point r +ld + Node BinLeafTree (NodeData f point r) (LeafData f point r) +l NodeData f point r +nd BinLeafTree (NodeData f point r) (LeafData f point r) +r -> case (NodeData f point r +ndNodeData f point r -> Getting r (NodeData f point r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (NodeData f point r) r forall {k} (f :: k -> *) (point :: k) r s (f :: * -> *). @@ -1206,30 +1206,30 @@ (Ord r, Interval_ interval r) => r -> interval -> Ordering `compareInterval` interval -q of +q of Ordering LT -> BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -findSplitNode BinLeafTree (NodeData f point r) (LeafData f point r) -r +findSplitNode BinLeafTree (NodeData f point r) (LeafData f point r) +r Ordering EQ -> BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -reportRightSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) -l [f point] -> [f point] -> [f point] +reportRightSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) +l [f point] -> [f point] -> [f point] forall a. Semigroup a => a -> a -> a <> BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -reportLeftSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) -r +reportLeftSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) +r Ordering GT -> BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -findSplitNode BinLeafTree (NodeData f point r) (LeafData f point r) -l +findSplitNode BinLeafTree (NodeData f point r) (LeafData f point r) +l -- | Report a leaf (if needed) - goReport :: LeafData f point r -> [f point] -goReport LeafData f point r -ld + goReport :: LeafData f point r -> [f point] +goReport LeafData f point r +ld | (LeafData f point r -ldLeafData f point r -> Getting r (LeafData f point r) r -> r +ldLeafData f point r -> Getting r (LeafData f point r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (LeafData f point r) r forall {k} (f :: k -> *) (point :: k) r s (f :: * -> *). @@ -1240,8 +1240,8 @@ (Ord r, Interval_ interval r) => r -> interval -> Bool `stabsInterval` interval -q = [LeafData f point r -ldLeafData f point r +q = [LeafData f point r +ldLeafData f point r -> Getting (f point) (LeafData f point r) (f point) -> f point forall s a. s -> Getting a s a -> a ^.Getting (f point) (LeafData f point r) (f point) @@ -1254,17 +1254,17 @@ otherwise = [] -- | walk the left-path reporting the right subtrees - reportRightSubtrees :: BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -reportRightSubtrees = \case - Leaf LeafData f point r -ld -> LeafData f point r -> [f point] -goReport LeafData f point r -ld - Node BinLeafTree (NodeData f point r) (LeafData f point r) -l NodeData f point r -nd BinLeafTree (NodeData f point r) (LeafData f point r) -r -> case (NodeData f point r -ndNodeData f point r -> Getting r (NodeData f point r) r -> r + reportRightSubtrees :: BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] +reportRightSubtrees = \case + Leaf LeafData f point r +ld -> LeafData f point r -> [f point] +goReport LeafData f point r +ld + Node BinLeafTree (NodeData f point r) (LeafData f point r) +l NodeData f point r +nd BinLeafTree (NodeData f point r) (LeafData f point r) +r -> case (NodeData f point r +ndNodeData f point r -> Getting r (NodeData f point r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (NodeData f point r) r forall {k} (f :: k -> *) (point :: k) r s (f :: * -> *). @@ -1275,19 +1275,19 @@ (Ord r, Interval_ interval r) => r -> interval -> Ordering `compareInterval` interval -q of +q of Ordering LT -> BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -reportRightSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) -r +reportRightSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) +r Ordering EQ -> BinLeafTree (NodeData f point r) (LeafData f point r) -> f point -reportSubTree BinLeafTree (NodeData f point r) (LeafData f point r) -r f point -> [f point] -> [f point] +reportSubTree BinLeafTree (NodeData f point r) (LeafData f point r) +r f point -> [f point] -> [f point] forall a. a -> [a] -> [a] : BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -reportRightSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) -l +reportRightSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) +l Ordering GT -> String -> [f point] forall a. HasCallStack => String -> a @@ -1295,17 +1295,17 @@ "RangeTree.rangeQuery, reportRightSubtrees absurd" -- | walk the right-path reporting left subtrees - reportLeftSubtrees :: BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -reportLeftSubtrees = \case - Leaf LeafData f point r -ld -> LeafData f point r -> [f point] -goReport LeafData f point r -ld - Node BinLeafTree (NodeData f point r) (LeafData f point r) -l NodeData f point r -nd BinLeafTree (NodeData f point r) (LeafData f point r) -r -> case (NodeData f point r -ndNodeData f point r -> Getting r (NodeData f point r) r -> r + reportLeftSubtrees :: BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] +reportLeftSubtrees = \case + Leaf LeafData f point r +ld -> LeafData f point r -> [f point] +goReport LeafData f point r +ld + Node BinLeafTree (NodeData f point r) (LeafData f point r) +l NodeData f point r +nd BinLeafTree (NodeData f point r) (LeafData f point r) +r -> case (NodeData f point r +ndNodeData f point r -> Getting r (NodeData f point r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (NodeData f point r) r forall {k} (f :: k -> *) (point :: k) r s (f :: * -> *). @@ -1316,7 +1316,7 @@ (Ord r, Interval_ interval r) => r -> interval -> Ordering `compareInterval` interval -q of +q of Ordering LT -> String -> [f point] forall a. HasCallStack => String -> a @@ -1324,23 +1324,23 @@ "RangeTree.rangeQuery, reportLeftSubtrees absurd" Ordering EQ -> BinLeafTree (NodeData f point r) (LeafData f point r) -> f point -reportSubTree BinLeafTree (NodeData f point r) (LeafData f point r) -l f point -> [f point] -> [f point] +reportSubTree BinLeafTree (NodeData f point r) (LeafData f point r) +l f point -> [f point] -> [f point] forall a. a -> [a] -> [a] : BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -reportLeftSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) -r +reportLeftSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) +r Ordering GT -> BinLeafTree (NodeData f point r) (LeafData f point r) -> [f point] -reportLeftSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) -l +reportLeftSubtrees BinLeafTree (NodeData f point r) (LeafData f point r) +l -- | report the canonical subset of the node - reportSubTree :: BinLeafTree (NodeData f point r) (LeafData f point r) -> f point -reportSubTree = \case - Leaf LeafData f point r -ld -> LeafData f point r -ldLeafData f point r + reportSubTree :: BinLeafTree (NodeData f point r) (LeafData f point r) -> f point +reportSubTree = \case + Leaf LeafData f point r +ld -> LeafData f point r +ldLeafData f point r -> Getting (f point) (LeafData f point r) (f point) -> f point forall s a. s -> Getting a s a -> a ^.Getting (f point) (LeafData f point r) (f point) @@ -1350,10 +1350,10 @@ Lens (LeafData f point r) (LeafData f point r) (f point) (f point) canonicalSubSet Node BinLeafTree (NodeData f point r) (LeafData f point r) -_ NodeData f point r -nd BinLeafTree (NodeData f point r) (LeafData f point r) +_ NodeData f point r +nd BinLeafTree (NodeData f point r) (LeafData f point r) _ -> NodeData f point r -ndNodeData f point r +ndNodeData f point r -> Getting (f point) (NodeData f point r) (f point) -> f point forall s a. s -> Getting a s a -> a ^.Getting (f point) (NodeData f point r) (f point) @@ -1368,14 +1368,14 @@ -- -- \(O(\log n + k)\), where \(k\) is somehow depends on the output size (and the monoid -- used). -query :: (Interval_ interval r, Point_ point d r, 1 <= d, Ord r, Monoid (f point)) - => interval -> RangeTree f point -> f point +query :: (Interval_ interval r, Point_ point d r, 1 <= d, Ord r, Monoid (f point)) + => interval -> RangeTree f point -> f point query :: forall interval r point (d :: Nat) (f :: * -> *). (Interval_ interval r, Point_ point d r, 1 <= d, Ord r, Monoid (f point)) => interval -> RangeTree f point -> f point -query interval -q = [f point] -> f point +query interval +q = [f point] -> f point forall a. Monoid a => [a] -> a mconcat ([f point] -> f point) -> (RangeTree f point -> [f point]) -> RangeTree f point -> f point @@ -1385,5 +1385,5 @@ (Interval_ interval r, Point_ point d r, 1 <= d, Ord r) => interval -> RangeTree f point -> [f point] rangeQuery interval -q +q \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.SegmentTree.Base.html b/haddocks/hgeometry/src/HGeometry.SegmentTree.Base.html index 524d40560..34ad705f0 100644 --- a/haddocks/hgeometry/src/HGeometry.SegmentTree.Base.html +++ b/haddocks/hgeometry/src/HGeometry.SegmentTree.Base.html @@ -42,25 +42,25 @@ -------------------------------------------------------------------------------- -- | A Segment tree -newtype SegmentTree f interval = SegmentTree (SubTree f interval) +newtype SegmentTree f interval = SegmentTree (SubTree f interval) -type instance NumType (SegmentTree f interval) = NumType interval -type instance Dimension (SegmentTree f interval) = 1 +type instance NumType (SegmentTree f interval) = NumType interval +type instance Dimension (SegmentTree f interval) = 1 -- | The actual segment tree immplementation -type SubTree f interval = BinLeafTree (NodeData f interval) - (ElementaryInterval (NumType interval) (f interval)) +type SubTree f interval = BinLeafTree (NodeData f interval) + (ElementaryInterval (NumType interval) (f interval)) -deriving stock instance ( Show (NumType interval), Show (f interval) - ) => Show (SegmentTree f interval) +deriving stock instance ( Show (NumType interval), Show (f interval) + ) => Show (SegmentTree f interval) -deriving stock instance ( Eq (NumType interval), Eq (f interval) - ) => Eq (SegmentTree f interval) +deriving stock instance ( Eq (NumType interval), Eq (f interval) + ) => Eq (SegmentTree f interval) -- | Get the interval of a subtree -interval :: Getter (SubTree f interval) (Interval AnEndPoint (NumType interval)) +interval :: Getter (SubTree f interval) (Interval AnEndPoint (NumType interval)) interval :: forall (f :: * -> *) interval (f :: * -> *). (Contravariant f, Functor f) => (Interval AnEndPoint (NumType interval) @@ -107,14 +107,14 @@ (ElementaryInterval (NumType interval) (f interval))) forall a b. (a -> b) -> a -> b $ \case - Leaf ElementaryInterval (NumType interval) (f interval) -atomic -> AnEndPoint (NumType interval) + Leaf ElementaryInterval (NumType interval) (f interval) +atomic -> AnEndPoint (NumType interval) -> AnEndPoint (NumType interval) -> Interval AnEndPoint (NumType interval) forall {k} (endPoint :: k -> *) (r :: k). endPoint r -> endPoint r -> Interval endPoint r Interval (ElementaryInterval (NumType interval) (f interval) -atomicElementaryInterval (NumType interval) (f interval) +atomicElementaryInterval (NumType interval) (f interval) -> Getting (AnEndPoint (NumType interval)) (ElementaryInterval (NumType interval) (f interval)) @@ -130,7 +130,7 @@ (ElementaryInterval (NumType interval) (f interval)) (AnEndPoint (NumType interval)) startPoint) (ElementaryInterval (NumType interval) (f interval) -atomicElementaryInterval (NumType interval) (f interval) +atomicElementaryInterval (NumType interval) (f interval) -> Getting (AnEndPoint (NumType interval)) (ElementaryInterval (NumType interval) (f interval)) @@ -149,12 +149,12 @@ Node BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -_ NodeData f interval -nd BinLeafTree +_ NodeData f interval +nd BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) _ -> NodeData f interval -ndNodeData f interval +ndNodeData f interval -> Getting (Interval AnEndPoint (NumType interval)) (NodeData f interval) @@ -182,9 +182,9 @@ -- | An Elementary interval is either a singleton closed interval, or an open interval. -data ElementaryInterval r set = EndPoint' !r !set - | ElemInterval !(OpenInterval r) !set - deriving (Int -> ElementaryInterval r set -> ShowS +data ElementaryInterval r set = EndPoint' !r !set + | ElemInterval !(OpenInterval r) !set + deriving (Int -> ElementaryInterval r set -> ShowS [ElementaryInterval r set] -> ShowS ElementaryInterval r set -> String (Int -> ElementaryInterval r set -> ShowS) @@ -214,7 +214,7 @@ (Show r, Show set) => [ElementaryInterval r set] -> ShowS showList :: [ElementaryInterval r set] -> ShowS -Show,ElementaryInterval r set -> ElementaryInterval r set -> Bool +Show,ElementaryInterval r set -> ElementaryInterval r set -> Bool (ElementaryInterval r set -> ElementaryInterval r set -> Bool) -> (ElementaryInterval r set -> ElementaryInterval r set -> Bool) -> Eq (ElementaryInterval r set) @@ -230,7 +230,7 @@ (Eq r, Eq set) => ElementaryInterval r set -> ElementaryInterval r set -> Bool /= :: ElementaryInterval r set -> ElementaryInterval r set -> Bool -Eq,Eq (ElementaryInterval r set) +Eq,Eq (ElementaryInterval r set) Eq (ElementaryInterval r set) => (ElementaryInterval r set -> ElementaryInterval r set -> Ordering) -> (ElementaryInterval r set -> ElementaryInterval r set -> Bool) @@ -299,7 +299,7 @@ -> ElementaryInterval r set -> ElementaryInterval r set min :: ElementaryInterval r set -> ElementaryInterval r set -> ElementaryInterval r set -Ord,(forall a b. +Ord,(forall a b. (a -> b) -> ElementaryInterval r a -> ElementaryInterval r b) -> (forall a b. a -> ElementaryInterval r b -> ElementaryInterval r a) @@ -319,7 +319,7 @@ (a -> b) -> ElementaryInterval r a -> ElementaryInterval r b $c<$ :: forall r a b. a -> ElementaryInterval r b -> ElementaryInterval r a <$ :: forall a b. a -> ElementaryInterval r b -> ElementaryInterval r a -Functor,(forall m. Monoid m => ElementaryInterval r m -> m) +Functor,(forall m. Monoid m => ElementaryInterval r m -> m) -> (forall m a. Monoid m => (a -> m) -> ElementaryInterval r a -> m) @@ -416,7 +416,7 @@ sum :: forall a. Num a => ElementaryInterval r a -> a $cproduct :: forall r a. Num a => ElementaryInterval r a -> a product :: forall a. Num a => ElementaryInterval r a -> a -Foldable,Functor (ElementaryInterval r) +Foldable,Functor (ElementaryInterval r) Foldable (ElementaryInterval r) (Functor (ElementaryInterval r), Foldable (ElementaryInterval r)) => @@ -496,56 +496,56 @@ ElementaryInterval r (m a) -> m (ElementaryInterval r a) Traversable) -type instance NumType (ElementaryInterval r set) = r +type instance NumType (ElementaryInterval r set) = r -instance HasStart (ElementaryInterval r set) r where - start :: Lens' (ElementaryInterval r set) r -start = (ElementaryInterval r set -> r) +instance HasStart (ElementaryInterval r set) r where + start :: Lens' (ElementaryInterval r set) r +start = (ElementaryInterval r set -> r) -> (ElementaryInterval r set -> r -> ElementaryInterval r set) -> Lens' (ElementaryInterval r set) r forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens ElementaryInterval r set -> r forall {r} {set}. ElementaryInterval r set -> r -get'' ((r -> ElementaryInterval r set -> ElementaryInterval r set) +get'' ((r -> ElementaryInterval r set -> ElementaryInterval r set) -> ElementaryInterval r set -> r -> ElementaryInterval r set forall a b c. (a -> b -> c) -> b -> a -> c flip r -> ElementaryInterval r set -> ElementaryInterval r set forall {b} {set}. b -> ElementaryInterval b set -> ElementaryInterval b set -set'') +set'') where - get'' :: ElementaryInterval r set -> r -get'' = \case - EndPoint' r -s set + get'' :: ElementaryInterval r set -> r +get'' = \case + EndPoint' r +s set _ -> r -s - ElemInterval OpenInterval r -i set +s + ElemInterval OpenInterval r +i set _ -> OpenInterval r -iOpenInterval r -> Getting r (OpenInterval r) r -> r +iOpenInterval r -> Getting r (OpenInterval r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (OpenInterval r) r forall seg p. HasStart seg p => Lens' seg p Lens' (OpenInterval r) r start - set'' :: b -> ElementaryInterval b set -> ElementaryInterval b set -set'' b -s = \case + set'' :: b -> ElementaryInterval b set -> ElementaryInterval b set +set'' b +s = \case EndPoint' b -_ set -cs -> b -> set -> ElementaryInterval b set +_ set +cs -> b -> set -> ElementaryInterval b set forall r set. r -> set -> ElementaryInterval r set EndPoint' b -s set -cs - ElemInterval OpenInterval b -i set -cs -> OpenInterval b -> set -> ElementaryInterval b set +s set +cs + ElemInterval OpenInterval b +i set +cs -> OpenInterval b -> set -> ElementaryInterval b set forall r set. OpenInterval r -> set -> ElementaryInterval r set ElemInterval (OpenInterval b -iOpenInterval b +iOpenInterval b -> (OpenInterval b -> OpenInterval b) -> OpenInterval b forall a b. a -> (a -> b) -> b &(b -> Identity b) -> OpenInterval b -> Identity (OpenInterval b) @@ -555,56 +555,56 @@ -> b -> OpenInterval b -> OpenInterval b forall s t a b. ASetter s t a b -> b -> s -> t .~ b -s) set -cs +s) set +cs -instance HasEnd (ElementaryInterval r set) r where - end :: Lens' (ElementaryInterval r set) r -end = (ElementaryInterval r set -> r) +instance HasEnd (ElementaryInterval r set) r where + end :: Lens' (ElementaryInterval r set) r +end = (ElementaryInterval r set -> r) -> (ElementaryInterval r set -> r -> ElementaryInterval r set) -> Lens' (ElementaryInterval r set) r forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens ElementaryInterval r set -> r forall {r} {set}. ElementaryInterval r set -> r -get'' ((r -> ElementaryInterval r set -> ElementaryInterval r set) +get'' ((r -> ElementaryInterval r set -> ElementaryInterval r set) -> ElementaryInterval r set -> r -> ElementaryInterval r set forall a b c. (a -> b -> c) -> b -> a -> c flip r -> ElementaryInterval r set -> ElementaryInterval r set forall {b} {set}. b -> ElementaryInterval b set -> ElementaryInterval b set -set'') +set'') where - get'' :: ElementaryInterval r set -> r -get'' = \case - EndPoint' r -s set + get'' :: ElementaryInterval r set -> r +get'' = \case + EndPoint' r +s set _ -> r -s - ElemInterval OpenInterval r -i set +s + ElemInterval OpenInterval r +i set _ -> OpenInterval r -iOpenInterval r -> Getting r (OpenInterval r) r -> r +iOpenInterval r -> Getting r (OpenInterval r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (OpenInterval r) r forall seg p. HasEnd seg p => Lens' seg p Lens' (OpenInterval r) r end - set'' :: b -> ElementaryInterval b set -> ElementaryInterval b set -set'' b -s = \case + set'' :: b -> ElementaryInterval b set -> ElementaryInterval b set +set'' b +s = \case EndPoint' b -_ set -cs -> b -> set -> ElementaryInterval b set +_ set +cs -> b -> set -> ElementaryInterval b set forall r set. r -> set -> ElementaryInterval r set EndPoint' b -s set -cs - ElemInterval OpenInterval b -i set -cs -> OpenInterval b -> set -> ElementaryInterval b set +s set +cs + ElemInterval OpenInterval b +i set +cs -> OpenInterval b -> set -> ElementaryInterval b set forall r set. OpenInterval r -> set -> ElementaryInterval r set ElemInterval (OpenInterval b -iOpenInterval b +iOpenInterval b -> (OpenInterval b -> OpenInterval b) -> OpenInterval b forall a b. a -> (a -> b) -> b &(b -> Identity b) -> OpenInterval b -> Identity (OpenInterval b) @@ -614,11 +614,11 @@ -> b -> OpenInterval b -> OpenInterval b forall s t a b. ASetter s t a b -> b -> s -> t .~ b -s) set -cs +s) set +cs -instance HasStartPoint (ElementaryInterval r set) (AnEndPoint r) where - startPoint :: Lens' (ElementaryInterval r set) (AnEndPoint r) +instance HasStartPoint (ElementaryInterval r set) (AnEndPoint r) where + startPoint :: Lens' (ElementaryInterval r set) (AnEndPoint r) startPoint = (ElementaryInterval r set -> AnEndPoint r) -> (ElementaryInterval r set -> AnEndPoint r -> ElementaryInterval r set) @@ -626,7 +626,7 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens ElementaryInterval r set -> AnEndPoint r forall {r} {set}. ElementaryInterval r set -> AnEndPoint r -get'' ((AnEndPoint r +get'' ((AnEndPoint r -> ElementaryInterval r set -> ElementaryInterval r set) -> ElementaryInterval r set -> AnEndPoint r @@ -635,31 +635,31 @@ flip AnEndPoint r -> ElementaryInterval r set -> ElementaryInterval r set forall {a}. a -set'') +set'') where - get'' :: ElementaryInterval r set -> AnEndPoint r -get'' = \case - EndPoint' r -s set + get'' :: ElementaryInterval r set -> AnEndPoint r +get'' = \case + EndPoint' r +s set _ -> r -> AnEndPoint r forall r. r -> AnEndPoint r AnClosedE r -s - ElemInterval OpenInterval r -i set +s + ElemInterval OpenInterval r +i set _ -> r -> AnEndPoint r forall r. r -> AnEndPoint r AnOpenE (r -> AnEndPoint r) -> r -> AnEndPoint r forall a b. (a -> b) -> a -> b $ OpenInterval r -iOpenInterval r -> Getting r (OpenInterval r) r -> r +iOpenInterval r -> Getting r (OpenInterval r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (OpenInterval r) r forall seg p. HasStart seg p => Lens' seg p Lens' (OpenInterval r) r start - set'' :: a -set'' = String -> a + set'' :: a +set'' = String -> a forall a. HasCallStack => String -> a error String "ElementaryInterva.startPoint set not implemented" @@ -667,8 +667,8 @@ -- EndPoint' _ cs -> EndPoint s cs -- ElemInterval i cs -> ElemInterval (i&start .~ s) cs -instance HasEndPoint (ElementaryInterval r set) (AnEndPoint r) where - endPoint :: Lens' (ElementaryInterval r set) (AnEndPoint r) +instance HasEndPoint (ElementaryInterval r set) (AnEndPoint r) where + endPoint :: Lens' (ElementaryInterval r set) (AnEndPoint r) endPoint = (ElementaryInterval r set -> AnEndPoint r) -> (ElementaryInterval r set -> AnEndPoint r -> ElementaryInterval r set) @@ -676,7 +676,7 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens ElementaryInterval r set -> AnEndPoint r forall {r} {set}. ElementaryInterval r set -> AnEndPoint r -get'' ((AnEndPoint r +get'' ((AnEndPoint r -> ElementaryInterval r set -> ElementaryInterval r set) -> ElementaryInterval r set -> AnEndPoint r @@ -685,44 +685,44 @@ flip AnEndPoint r -> ElementaryInterval r set -> ElementaryInterval r set forall {a}. a -set'') +set'') where - get'' :: ElementaryInterval r set -> AnEndPoint r -get'' = \case - EndPoint' r -s set + get'' :: ElementaryInterval r set -> AnEndPoint r +get'' = \case + EndPoint' r +s set _ -> r -> AnEndPoint r forall r. r -> AnEndPoint r AnClosedE r -s - ElemInterval OpenInterval r -i set +s + ElemInterval OpenInterval r +i set _ -> r -> AnEndPoint r forall r. r -> AnEndPoint r AnOpenE (r -> AnEndPoint r) -> r -> AnEndPoint r forall a b. (a -> b) -> a -> b $ OpenInterval r -iOpenInterval r -> Getting r (OpenInterval r) r -> r +iOpenInterval r -> Getting r (OpenInterval r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (OpenInterval r) r forall seg p. HasEnd seg p => Lens' seg p Lens' (OpenInterval r) r end - set'' :: a -set'' = String -> a + set'' :: a +set'' = String -> a forall a. HasCallStack => String -> a error String "ElementaryInterva.endPoint set not implemented" -instance HasCanonicalSubSet (ElementaryInterval r (f interval)) - (ElementaryInterval r (g interval)) interval f g where - canonicalSubSet :: Lens +instance HasCanonicalSubSet (ElementaryInterval r (f interval)) + (ElementaryInterval r (g interval)) interval f g where + canonicalSubSet :: Lens (ElementaryInterval r (f interval)) (ElementaryInterval r (g interval)) (f interval) (g interval) -canonicalSubSet = (ElementaryInterval r (f interval) -> f interval) +canonicalSubSet = (ElementaryInterval r (f interval) -> f interval) -> (ElementaryInterval r (f interval) -> g interval -> ElementaryInterval r (g interval)) -> Lens @@ -733,7 +733,7 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens ElementaryInterval r (f interval) -> f interval forall {r} {set}. ElementaryInterval r set -> set -get'' ((g interval +get'' ((g interval -> ElementaryInterval r (f interval) -> ElementaryInterval r (g interval)) -> ElementaryInterval r (f interval) @@ -745,54 +745,54 @@ -> ElementaryInterval r (g interval) forall {set} {r} {set}. set -> ElementaryInterval r set -> ElementaryInterval r set -set'') +set'') where - get'' :: ElementaryInterval r set -> set -get'' = \case + get'' :: ElementaryInterval r set -> set +get'' = \case EndPoint' r -_ set -cs -> set -cs +_ set +cs -> set +cs ElemInterval OpenInterval r -_ set -cs -> set -cs - set'' :: set -> ElementaryInterval r set -> ElementaryInterval r set -set'' set -cs = \case - EndPoint' r -x set +_ set +cs -> set +cs + set'' :: set -> ElementaryInterval r set -> ElementaryInterval r set +set'' set +cs = \case + EndPoint' r +x set _ -> r -> set -> ElementaryInterval r set forall r set. r -> set -> ElementaryInterval r set EndPoint' r -x set -cs - ElemInterval OpenInterval r -i set +x set +cs + ElemInterval OpenInterval r +i set _ -> OpenInterval r -> set -> ElementaryInterval r set forall r set. OpenInterval r -> set -> ElementaryInterval r set ElemInterval OpenInterval r -i set -cs +i set +cs -- | The data that we store at each node; essentially the interval and a canonical subset. -data NodeData f interval = +data NodeData f interval = NodeData { forall (f :: * -> *) interval. NodeData f interval -> Interval AnEndPoint (NumType interval) -_nodeInterval :: !(Interval AnEndPoint (NumType interval)) +_nodeInterval :: !(Interval AnEndPoint (NumType interval)) , forall (f :: * -> *) interval. NodeData f interval -> f interval -_canonicalSubSet :: !(f interval) +_canonicalSubSet :: !(f interval) } -deriving stock instance ( Show (NumType interval), Show (f interval) - ) => Show (NodeData f interval) +deriving stock instance ( Show (NumType interval), Show (f interval) + ) => Show (NodeData f interval) -deriving stock instance ( Eq (NumType interval), Eq (f interval) - ) => Eq (NodeData f interval) +deriving stock instance ( Eq (NumType interval), Eq (f interval) + ) => Eq (NodeData f interval) -- | Lens to access the node interval -nodeInterval :: Lens' (NodeData f interval) (Interval AnEndPoint (NumType interval)) +nodeInterval :: Lens' (NodeData f interval) (Interval AnEndPoint (NumType interval)) nodeInterval :: forall (f :: * -> *) interval (f :: * -> *). Functor f => (Interval AnEndPoint (NumType interval) @@ -810,13 +810,13 @@ lens NodeData f interval -> Interval AnEndPoint (NumType interval) forall (f :: * -> *) interval. NodeData f interval -> Interval AnEndPoint (NumType interval) -_nodeInterval (\NodeData f interval -nd Interval AnEndPoint (NumType interval) -x -> NodeData f interval -nd { _nodeInterval = x }) +_nodeInterval (\NodeData f interval +nd Interval AnEndPoint (NumType interval) +x -> NodeData f interval +nd { _nodeInterval = x }) -instance HasCanonicalSubSet (NodeData f interval) (NodeData g interval) interval f g where - canonicalSubSet :: Lens +instance HasCanonicalSubSet (NodeData f interval) (NodeData g interval) interval f g where + canonicalSubSet :: Lens (NodeData f interval) (NodeData g interval) (f interval) @@ -831,10 +831,10 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens NodeData f interval -> f interval forall (f :: * -> *) interval. NodeData f interval -> f interval -_canonicalSubSet (\NodeData f interval -nd g interval -x -> NodeData f interval -nd { _canonicalSubSet = x }) +_canonicalSubSet (\NodeData f interval +nd g interval +x -> NodeData f interval +nd { _canonicalSubSet = x }) @@ -844,17 +844,17 @@ -- | Given a set of intervals, build a segment tree -- -- \(O(n\log n)\) -buildSegmentTree :: forall f interval r g. - ( ClosedInterval_ interval r, Ord r - , Monoid (f interval), CanInsert f interval, Foldable1 g +buildSegmentTree :: forall f interval r g. + ( ClosedInterval_ interval r, Ord r + , Monoid (f interval), CanInsert f interval, Foldable1 g ) - => g interval -> SegmentTree f interval + => g interval -> SegmentTree f interval buildSegmentTree :: forall (f :: * -> *) interval r (g :: * -> *). (ClosedInterval_ interval r, Ord r, Monoid (f interval), CanInsert f interval, Foldable1 g) => g interval -> SegmentTree f interval -buildSegmentTree g interval -ints = (interval -> SegmentTree f interval -> SegmentTree f interval) +buildSegmentTree g interval +ints = (interval -> SegmentTree f interval -> SegmentTree f interval) -> SegmentTree f interval -> g interval -> SegmentTree f interval forall a b. (a -> b -> b) -> b -> g a -> b forall (t :: * -> *) a b. @@ -865,11 +865,11 @@ (ClosedInterval_ interval r, Ord r, CanInsert f interval) => interval -> SegmentTree f interval -> SegmentTree f interval insert SegmentTree f interval -t g interval -ints +t g interval +ints where - t :: SegmentTree f interval -t = NonEmptyVector r -> SegmentTree f interval + t :: SegmentTree f interval +t = NonEmptyVector r -> SegmentTree f interval forall (f :: * -> *) interval r (g :: * -> *). (ClosedInterval_ interval r, Ord r, Monoid (f interval), Foldable1 g) => @@ -902,9 +902,9 @@ forall (t :: * -> *) m a. (Foldable1 t, Semigroup m) => (a -> m) -> t a -> m -foldMap1 (\interval -i -> (interval -iinterval -> Getting r interval r -> r +foldMap1 (\interval +i -> (interval +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasStart seg p => Lens' seg p @@ -912,7 +912,7 @@ start) r -> [r] -> NonEmpty r forall a. a -> [a] -> NonEmpty a :| [interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasEnd seg p => Lens' seg p @@ -921,16 +921,16 @@ -> g interval -> SegmentTree f interval forall a b. (a -> b) -> a -> b $ g interval -ints +ints -- | Given te endpoints in ascending order, build an empty segment-tree -- -- \(O(n)\) -buildSkeleton :: forall f interval r g. - ( ClosedInterval_ interval r, Ord r - , Monoid (f interval), Foldable1 g +buildSkeleton :: forall f interval r g. + ( ClosedInterval_ interval r, Ord r + , Monoid (f interval), Foldable1 g ) - => g r -> SegmentTree f interval + => g r -> SegmentTree f interval buildSkeleton :: forall (f :: * -> *) interval r (g :: * -> *). (ClosedInterval_ interval r, Ord r, Monoid (f interval), Foldable1 g) => @@ -991,11 +991,11 @@ -> BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -node' ElementaryInterval r (f interval) +node' ElementaryInterval r (f interval) -> BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) forall {a} {v}. a -> BinLeafTree v a -leaf' +leaf' (BinLeafTree (Count (ElementaryInterval r (f interval))) (ElementaryInterval r (f interval)) @@ -1032,13 +1032,13 @@ g r -> NonEmpty (ElementaryInterval r (f interval)) toAtomicIntervals where - leaf' :: a -> BinLeafTree v a -leaf' a -elemInt = a -> BinLeafTree v a + leaf' :: a -> BinLeafTree v a +leaf' a +elemInt = a -> BinLeafTree v a forall v a. a -> BinLeafTree v a Leaf a -elemInt - node' :: BinLeafTree +elemInt + node' :: BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -> p @@ -1048,15 +1048,15 @@ -> BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -node' BinLeafTree +node' BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -l p -_ BinLeafTree +l p +_ BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -r = let int :: Interval AnEndPoint (NumType interval) -int = AnEndPoint (NumType interval) +r = let int :: Interval AnEndPoint (NumType interval) +int = AnEndPoint (NumType interval) -> AnEndPoint (NumType interval) -> Interval AnEndPoint (NumType interval) forall {k} (endPoint :: k -> *) (r :: k). @@ -1064,7 +1064,7 @@ Interval (BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -lBinLeafTree +lBinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -> Getting @@ -1132,7 +1132,7 @@ startPoint) (BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -rBinLeafTree +rBinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -> Getting @@ -1213,38 +1213,38 @@ Node BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -l (Interval AnEndPoint (NumType interval) +l (Interval AnEndPoint (NumType interval) -> f interval -> NodeData f interval forall (f :: * -> *) interval. Interval AnEndPoint (NumType interval) -> f interval -> NodeData f interval NodeData Interval AnEndPoint (NumType interval) -int f interval +int f interval forall a. Monoid a => a mempty) BinLeafTree (NodeData f interval) (ElementaryInterval (NumType interval) (f interval)) -r +r -- | Given a set of endpoints, in ascendin order, construct the atomic intervals defined -- by them. -toAtomicIntervals :: ( Foldable1 g - , Monoid (f interval) - ) => g r -> NonEmpty (ElementaryInterval r (f interval)) +toAtomicIntervals :: ( Foldable1 g + , Monoid (f interval) + ) => g r -> NonEmpty (ElementaryInterval r (f interval)) toAtomicIntervals :: forall {k} (g :: * -> *) (f :: k -> *) (interval :: k) r. (Foldable1 g, Monoid (f interval)) => g r -> NonEmpty (ElementaryInterval r (f interval)) toAtomicIntervals (g r -> NonEmpty r forall a. g a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a -toNonEmpty -> (r -x0 :| [r] -endPts)) = +toNonEmpty -> (r +x0 :| [r] +endPts)) = r -> f interval -> ElementaryInterval r (f interval) forall r set. r -> set -> ElementaryInterval r set EndPoint' r -x0 f interval +x0 f interval forall a. Monoid a => a mempty ElementaryInterval r (f interval) -> [ElementaryInterval r (f interval)] @@ -1260,28 +1260,28 @@ forall {set} {r}. Monoid set => r -> r -> [ElementaryInterval r set] -mkInterval' (r -x0 r -> [r] -> [r] +mkInterval' (r +x0 r -> [r] -> [r] forall a. a -> [a] -> [a] : [r] -endPts) [r] -endPts) +endPts) [r] +endPts) where - mkInterval' :: r -> r -> [ElementaryInterval r set] -mkInterval' r -l r -r = [OpenInterval r -> set -> ElementaryInterval r set + mkInterval' :: r -> r -> [ElementaryInterval r set] +mkInterval' r +l r +r = [OpenInterval r -> set -> ElementaryInterval r set forall r set. OpenInterval r -> set -> ElementaryInterval r set ElemInterval (r -> r -> OpenInterval r forall r. r -> r -> OpenInterval r OpenInterval r -l r -r) set +l r +r) set forall a. Monoid a => a mempty, r -> set -> ElementaryInterval r set forall r set. r -> set -> ElementaryInterval r set EndPoint' r -r set +r set forall a. Monoid a => a mempty] @@ -1290,15 +1290,15 @@ -- | Insert a segment into the segment tree, whose endpoints are already in the tree -- -- \(O(\log n)\) -insert :: ( ClosedInterval_ interval r, Ord r, CanInsert f interval +insert :: ( ClosedInterval_ interval r, Ord r, CanInsert f interval ) - => interval -> SegmentTree f interval -> SegmentTree f interval + => interval -> SegmentTree f interval -> SegmentTree f interval insert :: forall interval r (f :: * -> *). (ClosedInterval_ interval r, Ord r, CanInsert f interval) => interval -> SegmentTree f interval -> SegmentTree f interval -insert interval -i (SegmentTree SubTree f interval -t) = SubTree f interval -> SegmentTree f interval +insert interval +i (SegmentTree SubTree f interval +t) = SubTree f interval -> SegmentTree f interval forall (f :: * -> *) interval. SubTree f interval -> SegmentTree f interval SegmentTree (SubTree f interval -> SegmentTree f interval) @@ -1308,34 +1308,34 @@ (NodeData f interval) (ElementaryInterval r (f interval)) -> BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -go BinLeafTree +go BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) SubTree f interval -t +t where - ic :: ClosedInterval r -ic = r -> r -> ClosedInterval r + ic :: ClosedInterval r +ic = r -> r -> ClosedInterval r forall r. r -> r -> ClosedInterval r ClosedInterval (interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasStart seg p => Lens' seg p Lens' interval r start) (interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasEnd seg p => Lens' seg p Lens' interval r end) - go :: BinLeafTree + go :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -go (Leaf ElementaryInterval r (f interval) -atomic) = ElementaryInterval r (f interval) +go (Leaf ElementaryInterval r (f interval) +atomic) = ElementaryInterval r (f interval) -> BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) forall v a. a -> BinLeafTree v a @@ -1347,7 +1347,7 @@ (NodeData f interval) (ElementaryInterval r (f interval)) forall a b. (a -> b) -> a -> b $ ElementaryInterval r (f interval) -atomicElementaryInterval r (f interval) +atomicElementaryInterval r (f interval) -> (ElementaryInterval r (f interval) -> ElementaryInterval r (f interval)) -> ElementaryInterval r (f interval) @@ -1373,20 +1373,20 @@ %~ interval -> f interval -> f interval forall (f :: * -> *) a. CanInsert f a => a -> f a -> f a insertMeasure interval -i - go (Node BinLeafTree +i + go (Node BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l NodeData f interval -nd BinLeafTree +l NodeData f interval +nd BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r) +r) | interval -i interval -> Interval AnEndPoint r -> Bool +i interval -> Interval AnEndPoint r -> Bool forall interval r interval'. (ClosedInterval_ interval r, Interval_ interval' r, Ord r) => interval -> interval' -> Bool `covers` (NodeData f interval -ndNodeData f interval +ndNodeData f interval -> Getting (Interval AnEndPoint r) (NodeData f interval) @@ -1418,8 +1418,8 @@ BinLeafTree v a -> v -> BinLeafTree v a -> BinLeafTree v a Node BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l (NodeData f interval -ndNodeData f interval +l (NodeData f interval +ndNodeData f interval -> (NodeData f interval -> NodeData f interval) -> NodeData f interval forall a b. a -> (a -> b) -> b @@ -1442,44 +1442,44 @@ %~ interval -> f interval -> f interval forall (f :: * -> *) a. CanInsert f a => a -> f a -> f a insertMeasure interval -i) BinLeafTree +i) BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r +r | Bool -otherwise = let l' :: BinLeafTree +otherwise = let l' :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l' = if BinLeafTree +l' = if BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> NodeData f interval -> Bool -intersectsLeft BinLeafTree +intersectsLeft BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l NodeData f interval -nd then BinLeafTree +l NodeData f interval +nd then BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -go BinLeafTree +go BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l else BinLeafTree +l else BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l - r' :: BinLeafTree +l + r' :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r' = if BinLeafTree +r' = if BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> NodeData f interval -> Bool -intersectsRight BinLeafTree +intersectsRight BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r NodeData f interval -nd then BinLeafTree +r NodeData f interval +nd then BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -go BinLeafTree +go BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r else BinLeafTree +r else BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r +r in BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> NodeData f interval @@ -1491,23 +1491,23 @@ BinLeafTree v a -> v -> BinLeafTree v a -> BinLeafTree v a Node BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l' NodeData f interval -nd BinLeafTree +l' NodeData f interval +nd BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r' +r' - intersectsLeft :: BinLeafTree + intersectsLeft :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> NodeData f interval -> Bool -intersectsLeft BinLeafTree +intersectsLeft BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l NodeData f interval -_nd = ClosedInterval r -ic ClosedInterval r -> Interval AnEndPoint (NumType interval) -> Bool +l NodeData f interval +_nd = ClosedInterval r +ic ClosedInterval r -> Interval AnEndPoint (NumType interval) -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` (BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -lBinLeafTree +lBinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> Getting (Interval AnEndPoint (NumType interval)) @@ -1534,18 +1534,18 @@ -> f (Interval AnEndPoint (NumType interval))) -> SubTree f interval -> f (SubTree f interval) interval) - intersectsRight :: BinLeafTree + intersectsRight :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> NodeData f interval -> Bool -intersectsRight BinLeafTree +intersectsRight BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r NodeData f interval -_nd = ClosedInterval r -ic ClosedInterval r -> Interval AnEndPoint (NumType interval) -> Bool +r NodeData f interval +_nd = ClosedInterval r +ic ClosedInterval r -> Interval AnEndPoint (NumType interval) -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` (BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -rBinLeafTree +rBinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> Getting (Interval AnEndPoint (NumType interval)) @@ -1575,15 +1575,15 @@ -- | Test if the first interval covers the second interval. -covers :: (ClosedInterval_ interval r, Interval_ interval' r, Ord r) - => interval -> interval' -> Bool -interval -i covers :: forall interval r interval'. +covers :: (ClosedInterval_ interval r, Interval_ interval' r, Ord r) + => interval -> interval' -> Bool +interval +i covers :: forall interval r interval'. (ClosedInterval_ interval r, Interval_ interval' r, Ord r) => interval -> interval' -> Bool -`covers` interval' -j = interval -iinterval -> Getting r interval r -> r +`covers` interval' +j = interval +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasStart seg p => Lens' seg p @@ -1591,14 +1591,14 @@ start r -> r -> Bool forall a. Ord a => a -> a -> Bool <= interval' -jinterval' -> Getting r interval' r -> r +jinterval' -> Getting r interval' r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval' r forall seg p. HasStart seg p => Lens' seg p Lens' interval' r start Bool -> Bool -> Bool && interval' -jinterval' -> Getting r interval' r -> r +jinterval' -> Getting r interval' r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval' r forall seg p. HasEnd seg p => Lens' seg p @@ -1606,7 +1606,7 @@ end r -> r -> Bool forall a. Ord a => a -> a -> Bool <= interval -iinterval -> Getting r interval r -> r +iinterval -> Getting r interval r -> r forall s a. s -> Getting a s a -> a ^.Getting r interval r forall seg p. HasEnd seg p => Lens' seg p @@ -1644,49 +1644,49 @@ -- that are stabbed by q. -- -- \(O(\log n)\) -stab :: ( Ord r - , ClosedInterval_ interval r - ) => r -> SegmentTree f interval -> [f interval] +stab :: ( Ord r + , ClosedInterval_ interval r + ) => r -> SegmentTree f interval -> [f interval] stab :: forall r interval (f :: * -> *). (Ord r, ClosedInterval_ interval r) => r -> SegmentTree f interval -> [f interval] -stab r -q (SegmentTree SubTree f interval -t) = BinLeafTree +stab r +q (SegmentTree SubTree f interval +t) = BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> [f interval] -go0 BinLeafTree +go0 BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) SubTree f interval -t +t where - go0 :: BinLeafTree + go0 :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> [f interval] -go0 n :: BinLeafTree +go0 n :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -n@(Leaf ElementaryInterval r (f interval) +n@(Leaf ElementaryInterval r (f interval) _) = BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> [f interval] -go BinLeafTree +go BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -n - go0 n :: BinLeafTree +n + go0 n :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -n@(Node BinLeafTree +n@(Node BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -_ NodeData f interval -nd BinLeafTree +_ NodeData f interval +nd BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) _) | r -q r -> Interval AnEndPoint r -> Bool +q r -> Interval AnEndPoint r -> Bool forall interval r. (Ord r, Interval_ interval r) => r -> interval -> Bool `stabsInterval` (NodeData f interval -ndNodeData f interval +ndNodeData f interval -> Getting (Interval AnEndPoint r) (NodeData f interval) @@ -1710,18 +1710,18 @@ nodeInterval) = BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> [f interval] -go BinLeafTree +go BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -n +n | Bool otherwise = [] - go :: BinLeafTree + go :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> [f interval] -go (Leaf ElementaryInterval r (f interval) -atomic) = [ElementaryInterval r (f interval) -atomicElementaryInterval r (f interval) +go (Leaf ElementaryInterval r (f interval) +atomic) = [ElementaryInterval r (f interval) +atomicElementaryInterval r (f interval) -> Getting (f interval) (ElementaryInterval r (f interval)) (f interval) -> f interval @@ -1737,21 +1737,21 @@ (f interval) (f interval) canonicalSubSet] - go (Node BinLeafTree + go (Node BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l NodeData f interval -nd BinLeafTree +l NodeData f interval +nd BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r) = let ch :: BinLeafTree +r) = let ch :: BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -ch = if r -> Point 1 r +ch = if r -> Point 1 r forall r. r -> Point 1 r Point1 r -q Point 1 r -> Interval AnEndPoint r -> Bool +q Point 1 r -> Interval AnEndPoint r -> Bool forall g h. HasIntersectionWith g h => g -> h -> Bool `intersects` (BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -lBinLeafTree +lBinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> Getting (Interval AnEndPoint r) @@ -1777,11 +1777,11 @@ -> SubTree f interval -> f (SubTree f interval) interval) then BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -l else BinLeafTree +l else BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -r +r in NodeData f interval -ndNodeData f interval +ndNodeData f interval -> Getting (f interval) (NodeData f interval) (f interval) -> f interval forall s a. s -> Getting a s a -> a @@ -1799,21 +1799,21 @@ : BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -> [f interval] -go BinLeafTree +go BinLeafTree (NodeData f interval) (ElementaryInterval r (f interval)) -ch +ch -- | Query the segment tree -- -- \(O(\log n + k)\), where \(k\) is somehow depends on the output size (and the monoid -- used). -query :: (Ord r, ClosedInterval_ interval r, Monoid (f interval)) - => r -> SegmentTree f interval -> f interval +query :: (Ord r, ClosedInterval_ interval r, Monoid (f interval)) + => r -> SegmentTree f interval -> f interval query :: forall r interval (f :: * -> *). (Ord r, ClosedInterval_ interval r, Monoid (f interval)) => r -> SegmentTree f interval -> f interval -query r -q = [f interval] -> f interval +query r +q = [f interval] -> f interval forall a. Monoid a => [a] -> a mconcat ([f interval] -> f interval) -> (SegmentTree f interval -> [f interval]) @@ -1825,12 +1825,12 @@ (Ord r, ClosedInterval_ interval r) => r -> SegmentTree f interval -> [f interval] stab r -q +q -------------------------------------------------------------------------------- -- | Report te list of endpoints that the segment tree is built on in left to right order. -ascEndPoints :: SegmentTree f interval -> [NumType interval] +ascEndPoints :: SegmentTree f interval -> [NumType interval] ascEndPoints :: forall (f :: * -> *) interval. SegmentTree f interval -> [NumType interval] ascEndPoints = (ElementaryInterval (NumType interval) (f interval) @@ -1842,10 +1842,10 @@ (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap (\case - EndPoint' NumType interval -x f interval + EndPoint' NumType interval +x f interval _ -> [NumType interval -x] +x] ElementaryInterval (NumType interval) (f interval) _ -> [] ) (NonEmpty (ElementaryInterval (NumType interval) (f interval)) @@ -1864,18 +1864,18 @@ -- | Report the atomic intervals in left-to-right order -elementaryIntervals :: SegmentTree f interval - -> NonEmpty (ElementaryInterval(NumType interval) (f interval)) +elementaryIntervals :: SegmentTree f interval + -> NonEmpty (ElementaryInterval(NumType interval) (f interval)) elementaryIntervals :: forall (f :: * -> *) interval. SegmentTree f interval -> NonEmpty (ElementaryInterval (NumType interval) (f interval)) -elementaryIntervals (SegmentTree SubTree f interval -t) = SubTree f interval +elementaryIntervals (SegmentTree SubTree f interval +t) = SubTree f interval -> NonEmpty (ElementaryInterval (NumType interval) (f interval)) forall a. BinLeafTree (NodeData f interval) a -> NonEmpty a forall (t :: * -> *) a. Foldable1 t => t a -> NonEmpty a toNonEmpty SubTree f interval -t +t -------------------------------------------------------------------------------- \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.SegmentTree.CanonicalSubSet.html b/haddocks/hgeometry/src/HGeometry.SegmentTree.CanonicalSubSet.html index 61a97a229..d647740bf 100644 --- a/haddocks/hgeometry/src/HGeometry.SegmentTree.CanonicalSubSet.html +++ b/haddocks/hgeometry/src/HGeometry.SegmentTree.CanonicalSubSet.html @@ -7,8 +7,8 @@ -------------------------------------------------------------------------------- -- | Types that store canonical subsets -class HasCanonicalSubSet s t a f g | s -> f - , t -> g where +class HasCanonicalSubSet s t a f g | s -> f + , t -> g where -- | Lens to access the canonical subset of a node or leaf - canonicalSubSet :: Lens s t (f a) (g a) + canonicalSubSet :: Lens s t (f a) (g a) \ No newline at end of file diff --git a/haddocks/hgeometry/src/HGeometry.VerticalRayShooting.PersistentSweep.html b/haddocks/hgeometry/src/HGeometry.VerticalRayShooting.PersistentSweep.html index 6946bbe0f..217ffda09 100644 --- a/haddocks/hgeometry/src/HGeometry.VerticalRayShooting.PersistentSweep.html +++ b/haddocks/hgeometry/src/HGeometry.VerticalRayShooting.PersistentSweep.html @@ -38,22 +38,22 @@ -------------------------------------------------------------------------------- -- | The vertical ray shooting data structure -type VerticalRayShootingStructure lineSegment = - VerticalRayShootingStructure' (NumType lineSegment) lineSegment +type VerticalRayShootingStructure lineSegment = + VerticalRayShootingStructure' (NumType lineSegment) lineSegment -- | The implementatyion of the vertical ray shooting data structure -data VerticalRayShootingStructure' r lineSegment = +data VerticalRayShootingStructure' r lineSegment = VerticalRayShootingStructure { forall r lineSegment. VerticalRayShootingStructure' r lineSegment -> r -_leftMost :: !r +_leftMost :: !r -- ^ x-coordinate of the leftmost vertex/endpoint , forall r lineSegment. VerticalRayShootingStructure' r lineSegment -> Vector (r :+ StatusStructure lineSegment) -_sweepStruct :: V.Vector (r :+ StatusStructure lineSegment) +_sweepStruct :: V.Vector (r :+ StatusStructure lineSegment) -- ^ entry (r :+ s) means that "just" left of "r" the -- status structure is 's', i.e up to 'r' - } deriving (Int -> VerticalRayShootingStructure' r lineSegment -> ShowS + } deriving (Int -> VerticalRayShootingStructure' r lineSegment -> ShowS [VerticalRayShootingStructure' r lineSegment] -> ShowS VerticalRayShootingStructure' r lineSegment -> String (Int -> VerticalRayShootingStructure' r lineSegment -> ShowS) @@ -83,7 +83,7 @@ (Show r, Show lineSegment) => [VerticalRayShootingStructure' r lineSegment] -> ShowS showList :: [VerticalRayShootingStructure' r lineSegment] -> ShowS -Show,VerticalRayShootingStructure' r lineSegment +Show,VerticalRayShootingStructure' r lineSegment -> VerticalRayShootingStructure' r lineSegment -> Bool (VerticalRayShootingStructure' r lineSegment -> VerticalRayShootingStructure' r lineSegment -> Bool) @@ -113,49 +113,49 @@ -- | The status structure -type StatusStructure lineSegment = SS.Set lineSegment +type StatusStructure lineSegment = SS.Set lineSegment -- | Getter to access the leftmost coordinate. -leftMost :: Getter (VerticalRayShootingStructure' r lineSegment) r +leftMost :: Getter (VerticalRayShootingStructure' r lineSegment) r leftMost :: forall r lineSegment (f :: * -> *). (Contravariant f, Functor f) => (r -> f r) -> VerticalRayShootingStructure' r lineSegment -> f (VerticalRayShootingStructure' r lineSegment) -leftMost r -> f r -f (VerticalRayShootingStructure r -x Vector (r :+ StatusStructure lineSegment) +leftMost r -> f r +f (VerticalRayShootingStructure r +x Vector (r :+ StatusStructure lineSegment) _) = f r -> f (VerticalRayShootingStructure' r lineSegment) forall (f :: * -> *) a b. (Functor f, Contravariant f) => f a -> f b phantom (r -> f r -f r -x) +f r +x) {-# INLINE leftMost #-} -- | Getter to access the sweep structure -sweepStruct :: Getter (VerticalRayShootingStructure' r lineSegment) - (V.Vector (r :+ StatusStructure lineSegment)) +sweepStruct :: Getter (VerticalRayShootingStructure' r lineSegment) + (V.Vector (r :+ StatusStructure lineSegment)) sweepStruct :: forall r lineSegment (f :: * -> *). (Contravariant f, Functor f) => (Vector (r :+ StatusStructure lineSegment) -> f (Vector (r :+ StatusStructure lineSegment))) -> VerticalRayShootingStructure' r lineSegment -> f (VerticalRayShootingStructure' r lineSegment) -sweepStruct Vector (r :+ StatusStructure lineSegment) +sweepStruct Vector (r :+ StatusStructure lineSegment) -> f (Vector (r :+ StatusStructure lineSegment)) -f (VerticalRayShootingStructure r -_ Vector (r :+ StatusStructure lineSegment) -ss) = f (Vector (r :+ StatusStructure lineSegment)) +f (VerticalRayShootingStructure r +_ Vector (r :+ StatusStructure lineSegment) +ss) = f (Vector (r :+ StatusStructure lineSegment)) -> f (VerticalRayShootingStructure' r lineSegment) forall (f :: * -> *) a b. (Functor f, Contravariant f) => f a -> f b phantom (Vector (r :+ StatusStructure lineSegment) -> f (Vector (r :+ StatusStructure lineSegment)) -f Vector (r :+ StatusStructure lineSegment) -ss) +f Vector (r :+ StatusStructure lineSegment) +ss) {-# INLINE sweepStruct #-} -- more or less copied the above two implementations from the TH generated ones @@ -171,17 +171,17 @@ -- -- running time: \(O(n\log n)\). -- space: \(O(n\log n)\). -verticalRayShootingStructure :: ( LineSegment_ lineSegment point - , Point_ point 2 r - , Ord r, Fractional r, Foldable1 f) - => f lineSegment - -> VerticalRayShootingStructure lineSegment +verticalRayShootingStructure :: ( LineSegment_ lineSegment point + , Point_ point 2 r + , Ord r, Fractional r, Foldable1 f) + => f lineSegment + -> VerticalRayShootingStructure lineSegment verticalRayShootingStructure :: forall lineSegment point r (f :: * -> *). (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r, Foldable1 f) => f lineSegment -> VerticalRayShootingStructure lineSegment -verticalRayShootingStructure f lineSegment -ss = NumType point +verticalRayShootingStructure f lineSegment +ss = NumType point -> Vector (NumType point :+ StatusStructure lineSegment) -> VerticalRayShootingStructure' (NumType point) lineSegment forall r lineSegment. @@ -191,19 +191,19 @@ VerticalRayShootingStructure (Event (NumType point) lineSegment -> NumType point forall r lineSegment. Event r lineSegment -> r eventX Event (NumType point) lineSegment -e) (NonEmpty +e) (NonEmpty (Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment) -> Vector (NumType (IxValue (EndPointOf lineSegment)) :+ StatusStructure lineSegment) -sweep' NonEmpty (Event (NumType point) lineSegment) +sweep' NonEmpty (Event (NumType point) lineSegment) NonEmpty (Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment) -events) +events) where - events :: NonEmpty (Event (NumType point) lineSegment) -events@(Event (NumType point) lineSegment -e :| [Event (NumType point) lineSegment] + events :: NonEmpty (Event (NumType point) lineSegment) +events@(Event (NumType point) lineSegment +e :| [Event (NumType point) lineSegment] _) = (NonEmpty (Event (NumType point) lineSegment) -> Event (NumType point) lineSegment) -> NonEmpty (NonEmpty (Event (NumType point) lineSegment)) @@ -255,7 +255,7 @@ HasStart s p, HasEnd s p, Point_ p (Dimension p) (NumType p), Point_ p (Dimension p) (NumType p)) => s -> NonEmpty (NumType p :+ NonEmpty (Action s)) -toEvents (lineSegment -> NonEmpty (Event (NumType point) lineSegment)) +toEvents (lineSegment -> NonEmpty (Event (NumType point) lineSegment)) -> (lineSegment -> lineSegment) -> lineSegment -> NonEmpty (Event (NumType point) lineSegment) @@ -270,13 +270,13 @@ -> f lineSegment -> NonEmpty (Event (NumType point) lineSegment) forall a b. (a -> b) -> a -> b $ f lineSegment -ss - sweep' :: NonEmpty +ss + sweep' :: NonEmpty (Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment) -> Vector (NumType (IxValue (EndPointOf lineSegment)) :+ StatusStructure lineSegment) -sweep' = [NumType (IxValue (EndPointOf lineSegment)) +sweep' = [NumType (IxValue (EndPointOf lineSegment)) :+ StatusStructure lineSegment] -> Vector (NumType (IxValue (EndPointOf lineSegment)) @@ -331,13 +331,13 @@ -> NonEmpty (r :+ StatusStructure lineSegment) sweep - toEvents :: s -> NonEmpty (NumType p :+ NonEmpty (Action s)) -toEvents s -seg = [NumType p :+ NonEmpty (Action s)] + toEvents :: s -> NonEmpty (NumType p :+ NonEmpty (Action s)) +toEvents s +seg = [NumType p :+ NonEmpty (Action s)] -> NonEmpty (NumType p :+ NonEmpty (Action s)) forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList [ (s -segs -> Getting (NumType p) s (NumType p) -> NumType p +segs -> Getting (NumType p) s (NumType p) -> NumType p forall s a. s -> Getting a s a -> a ^.(p -> Const (NumType p) p) -> s -> Const (NumType p) s forall seg p. HasStart seg p => Lens' seg p @@ -359,11 +359,11 @@ :+ s -> Action s forall a. a -> Action a Insert s -seg Action s -> [Action s] -> NonEmpty (Action s) +seg Action s -> [Action s] -> NonEmpty (Action s) forall a. a -> [a] -> NonEmpty a :| [] , (s -segs -> Getting (NumType p) s (NumType p) -> NumType p +segs -> Getting (NumType p) s (NumType p) -> NumType p forall s a. s -> Getting a s a -> a ^.(p -> Const (NumType p) p) -> s -> Const (NumType p) s forall seg p. HasEnd seg p => Lens' seg p @@ -385,7 +385,7 @@ :+ s -> Action s forall a. a -> Action a Delete s -seg Action s -> [Action s] -> NonEmpty (Action s) +seg Action s -> [Action s] -> NonEmpty (Action s) forall a. a -> [a] -> NonEmpty a :| [] ] @@ -393,15 +393,15 @@ -- | Given a bunch of events happening at the same time, merge them into a single event -- where we apply all actions. -combine :: NonEmpty (Event r lineSegment) -> Event r lineSegment +combine :: NonEmpty (Event r lineSegment) -> Event r lineSegment combine :: forall r lineSegment. NonEmpty (Event r lineSegment) -> Event r lineSegment -combine es :: NonEmpty (Event r lineSegment) -es@((r -x :+ NonEmpty (Action lineSegment) +combine es :: NonEmpty (Event r lineSegment) +es@((r +x :+ NonEmpty (Action lineSegment) _) :| [Event r lineSegment] _) = r -x r -> NonEmpty (Action lineSegment) -> Event r lineSegment +x r -> NonEmpty (Action lineSegment) -> Event r lineSegment forall core extra. core -> extra -> core :+ extra :+ (Event r lineSegment -> NonEmpty (Action lineSegment)) -> NonEmpty (Event r lineSegment) -> NonEmpty (Action lineSegment) @@ -413,11 +413,11 @@ forall r lineSegment. Event r lineSegment -> NonEmpty (Action lineSegment) eventActions NonEmpty (Event r lineSegment) -es +es ---------------------------------------- -data Action a = Insert a | Delete a deriving (Int -> Action a -> ShowS +data Action a = Insert a | Delete a deriving (Int -> Action a -> ShowS [Action a] -> ShowS Action a -> String (Int -> Action a -> ShowS) @@ -433,7 +433,7 @@ show :: Action a -> String $cshowList :: forall a. Show a => [Action a] -> ShowS showList :: [Action a] -> ShowS -Show,Action a -> Action a -> Bool +Show,Action a -> Action a -> Bool (Action a -> Action a -> Bool) -> (Action a -> Action a -> Bool) -> Eq (Action a) forall a. Eq a => Action a -> Action a -> Bool @@ -445,30 +445,30 @@ Eq) {- HLINT ignore "Avoid lambda using `infix`" -} -interpret :: Action a -> (a -> a -> Ordering) -> SS.Set a -> SS.Set a +interpret :: Action a -> (a -> a -> Ordering) -> SS.Set a -> SS.Set a interpret :: forall a. Action a -> (a -> a -> Ordering) -> Set a -> Set a interpret = \case - Insert a -s -> \a -> a -> Ordering -cmp -> (a -> a -> Ordering) -> a -> Set a -> Set a + Insert a +s -> \a -> a -> Ordering +cmp -> (a -> a -> Ordering) -> a -> Set a -> Set a forall a. (a -> a -> Ordering) -> a -> Set a -> Set a SS.insertBy a -> a -> Ordering -cmp a -s - Delete a -s -> \a -> a -> Ordering -cmp -> (a -> a -> Ordering) -> a -> Set a -> Set a +cmp a +s + Delete a +s -> \a -> a -> Ordering +cmp -> (a -> a -> Ordering) -> a -> Set a -> Set a forall a. (a -> a -> Ordering) -> a -> Set a -> Set a SS.deleteAllBy a -> a -> Ordering -cmp a -s +cmp a +s -- | An event; i.e. an x coordinate together with a bunch of actions. -type Event r lineSegment = r :+ NonEmpty (Action lineSegment) +type Event r lineSegment = r :+ NonEmpty (Action lineSegment) -- | The x-coordinate at which an event happens -eventX :: Event r lineSegment -> r +eventX :: Event r lineSegment -> r eventX :: forall r lineSegment. Event r lineSegment -> r eventX = Getting r (r :+ NonEmpty (Action lineSegment)) r -> (r :+ NonEmpty (Action lineSegment)) -> r @@ -480,7 +480,7 @@ core -- | The actions at a particular event -eventActions :: Event r lineSegment -> NonEmpty (Action lineSegment) +eventActions :: Event r lineSegment -> NonEmpty (Action lineSegment) eventActions :: forall r lineSegment. Event r lineSegment -> NonEmpty (Action lineSegment) eventActions = Getting @@ -502,17 +502,17 @@ ---------------------------------------- -- | Runs the sweep building the data structure from left to right. -sweep :: ( LineSegment_ lineSegment point, Point_ point 2 r - , Ord r, Fractional r +sweep :: ( LineSegment_ lineSegment point, Point_ point 2 r + , Ord r, Fractional r ) - => NonEmpty (Event r lineSegment) -> NonEmpty (r :+ StatusStructure lineSegment) + => NonEmpty (Event r lineSegment) -> NonEmpty (r :+ StatusStructure lineSegment) sweep :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, Ord r, Fractional r) => NonEmpty (Event r lineSegment) -> NonEmpty (r :+ StatusStructure lineSegment) -sweep NonEmpty (Event r lineSegment) -es = [r :+ StatusStructure lineSegment] +sweep NonEmpty (Event r lineSegment) +es = [r :+ StatusStructure lineSegment] -> NonEmpty (r :+ StatusStructure lineSegment) forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList @@ -567,7 +567,7 @@ -> (StatusStructure lineSegment, NumType (IxValue (EndPointOf lineSegment)) :+ StatusStructure lineSegment) -h StatusStructure lineSegment +h StatusStructure lineSegment forall a. Set a SS.empty ([(Event r lineSegment, Event r lineSegment)] @@ -583,23 +583,23 @@ forall a. NonEmpty a -> [a] forall (t :: * -> *) a. Foldable t => t a -> [a] toList NonEmpty (Event r lineSegment) -es) (NonEmpty (Event r lineSegment) -> [Event r lineSegment] +es) (NonEmpty (Event r lineSegment) -> [Event r lineSegment] forall a. NonEmpty a -> [a] NonEmpty.tail NonEmpty (Event r lineSegment) -es) +es) where - h :: StatusStructure lineSegment + h :: StatusStructure lineSegment -> (Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment, Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment) -> (StatusStructure lineSegment, NumType (IxValue (EndPointOf lineSegment)) :+ StatusStructure lineSegment) -h StatusStructure lineSegment -ss (Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment, +h StatusStructure lineSegment +ss (Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment, Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment) -evts = let NumType (IxValue (EndPointOf lineSegment)) -x :+ StatusStructure lineSegment -ss' = StatusStructure lineSegment +evts = let NumType (IxValue (EndPointOf lineSegment)) +x :+ StatusStructure lineSegment +ss' = StatusStructure lineSegment -> (Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment, Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment) -> NumType (IxValue (EndPointOf lineSegment)) @@ -611,61 +611,61 @@ -> (Event r lineSegment, Event r lineSegment) -> r :+ StatusStructure lineSegment handle StatusStructure lineSegment -ss (Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment, +ss (Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment, Event (NumType (IxValue (EndPointOf lineSegment))) lineSegment) -evts in (StatusStructure lineSegment -ss',NumType (IxValue (EndPointOf lineSegment)) -x NumType (IxValue (EndPointOf lineSegment)) +evts in (StatusStructure lineSegment +ss',NumType (IxValue (EndPointOf lineSegment)) +x NumType (IxValue (EndPointOf lineSegment)) -> StatusStructure lineSegment -> NumType (IxValue (EndPointOf lineSegment)) :+ StatusStructure lineSegment forall core extra. core -> extra -> core :+ extra :+ StatusStructure lineSegment -ss') +ss') -- | Given the current status structure (for left of the next event -- 'l'), and the next two events (l,r); essentially defining the slab -- between l and r, we construct the status structure for in the slab (l,r). -- returns the right boundary and this status structure. -handle :: (Ord r, Fractional r, LineSegment_ lineSegment point, Point_ point 2 r) - => StatusStructure lineSegment - -> (Event r lineSegment, Event r lineSegment) - -> r :+ StatusStructure lineSegment +handle :: (Ord r, Fractional r, LineSegment_ lineSegment point, Point_ point 2 r) + => StatusStructure lineSegment + -> (Event r lineSegment, Event r lineSegment) + -> r :+ StatusStructure lineSegment handle :: forall r lineSegment point. (Ord r, Fractional r, LineSegment_ lineSegment point, Point_ point 2 r) => StatusStructure lineSegment -> (Event r lineSegment, Event r lineSegment) -> r :+ StatusStructure lineSegment -handle StatusStructure lineSegment -ss ( r -l :+ NonEmpty (Action lineSegment) -acts - , r -r :+ NonEmpty (Action lineSegment) -_) = let mid :: r -mid = (r -lr -> r -> r +handle StatusStructure lineSegment +ss ( r +l :+ NonEmpty (Action lineSegment) +acts + , r +r :+ NonEmpty (Action lineSegment) +_) = let mid :: r +mid = (r +lr -> r -> r forall a. Num a => a -> a -> a +r -r)r -> r -> r +r)r -> r -> r forall a. Fractional a => a -> a -> a /r 2 - runActionAt :: NumType (IxValue (EndPointOf a)) -> Action a -> Set a -> Set a -runActionAt NumType (IxValue (EndPointOf a)) -x Action a -act = Action a -> (a -> a -> Ordering) -> Set a -> Set a + runActionAt :: NumType (IxValue (EndPointOf a)) -> Action a -> Set a -> Set a +runActionAt NumType (IxValue (EndPointOf a)) +x Action a +act = Action a -> (a -> a -> Ordering) -> Set a -> Set a forall a. Action a -> (a -> a -> Ordering) -> Set a -> Set a interpret Action a -act (NumType (IxValue (EndPointOf a)) -> a -> a -> Ordering +act (NumType (IxValue (EndPointOf a)) -> a -> a -> Ordering forall r lineSegment point. (Num r, Ord r, LineSegment_ lineSegment point, Point_ point 2 r) => r -> lineSegment -> lineSegment -> Ordering ordAtX NumType (IxValue (EndPointOf a)) -x) +x) in r -r r +r r -> StatusStructure lineSegment -> r :+ StatusStructure lineSegment forall core extra. core -> extra -> core :+ extra :+ (Action lineSegment @@ -687,22 +687,22 @@ Ord (NumType a), LineSegment_ a (IxValue (EndPointOf a)), Point_ (IxValue (EndPointOf a)) 2 (NumType a)) => NumType (IxValue (EndPointOf a)) -> Action a -> Set a -> Set a -runActionAt r +runActionAt r NumType (IxValue (EndPointOf lineSegment)) -mid) StatusStructure lineSegment -ss (NonEmpty (Action lineSegment) -> NonEmpty (Action lineSegment) +mid) StatusStructure lineSegment +ss (NonEmpty (Action lineSegment) -> NonEmpty (Action lineSegment) forall a. NonEmpty (Action a) -> NonEmpty (Action a) orderActs NonEmpty (Action lineSegment) -acts) +acts) -- run deletions first -- | orders the actions to put insertions first and then all deletions -orderActs :: NonEmpty (Action a) -> NonEmpty (Action a) +orderActs :: NonEmpty (Action a) -> NonEmpty (Action a) orderActs :: forall a. NonEmpty (Action a) -> NonEmpty (Action a) -orderActs NonEmpty (Action a) -acts = let ([Action a] -dels,[Action a] -ins) = (Action a -> Bool) +orderActs NonEmpty (Action a) +acts = let ([Action a] +dels,[Action a] +ins) = (Action a -> Bool) -> NonEmpty (Action a) -> ([Action a], [Action a]) forall a. (a -> Bool) -> NonEmpty a -> ([a], [a]) NonEmpty.partition (\case @@ -713,17 +713,17 @@ _ -> Bool False ) NonEmpty (Action a) -acts +acts in [Action a] -> NonEmpty (Action a) forall a. HasCallStack => [a] -> NonEmpty a NonEmpty.fromList ([Action a] -> NonEmpty (Action a)) -> [Action a] -> NonEmpty (Action a) forall a b. (a -> b) -> a -> b $ [Action a] -ins [Action a] -> [Action a] -> [Action a] +ins [Action a] -> [Action a] -> [Action a] forall a. Semigroup a => a -> a -> a <> [Action a] -dels +dels -------------------------------------------------------------------------------- @@ -733,20 +733,20 @@ -- exists. -- -- \(O(\log n)\) -segmentAbove :: ( LineSegment_ lineSegment point, Point_ point 2 r - , Point_ queryPoint 2 r - , Ord r, Num r, HasSupportingLine lineSegment - ) => queryPoint -> VerticalRayShootingStructure lineSegment - -> Maybe lineSegment +segmentAbove :: ( LineSegment_ lineSegment point, Point_ point 2 r + , Point_ queryPoint 2 r + , Ord r, Num r, HasSupportingLine lineSegment + ) => queryPoint -> VerticalRayShootingStructure lineSegment + -> Maybe lineSegment segmentAbove :: forall lineSegment point r queryPoint. (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe lineSegment -segmentAbove queryPoint -q VerticalRayShootingStructure lineSegment -ds = queryPoint +segmentAbove queryPoint +q VerticalRayShootingStructure lineSegment +ds = queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe (StatusStructure lineSegment) forall lineSegment point r queryPoint. @@ -757,8 +757,8 @@ -> VerticalRayShootingStructure lineSegment -> Maybe (StatusStructure lineSegment) findSlab queryPoint -q VerticalRayShootingStructure lineSegment -ds Maybe (StatusStructure lineSegment) +q VerticalRayShootingStructure lineSegment +ds Maybe (StatusStructure lineSegment) -> (StatusStructure lineSegment -> Maybe lineSegment) -> Maybe lineSegment forall a b. Maybe a -> (a -> Maybe b) -> Maybe b @@ -770,25 +770,25 @@ HasSupportingLine lineSegment) => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment lookupAbove queryPoint -q +q -- | Find the segment vertically query point q, if it exists. -- -- \(O(\log n)\) -segmentAboveOrOn :: ( LineSegment_ lineSegment point, Point_ point 2 r - , Point_ queryPoint 2 r - , Ord r, Num r, HasSupportingLine lineSegment - ) => queryPoint -> VerticalRayShootingStructure lineSegment - -> Maybe lineSegment +segmentAboveOrOn :: ( LineSegment_ lineSegment point, Point_ point 2 r + , Point_ queryPoint 2 r + , Ord r, Num r, HasSupportingLine lineSegment + ) => queryPoint -> VerticalRayShootingStructure lineSegment + -> Maybe lineSegment segmentAboveOrOn :: forall lineSegment point r queryPoint. (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe lineSegment -segmentAboveOrOn queryPoint -q VerticalRayShootingStructure lineSegment -ds = queryPoint +segmentAboveOrOn queryPoint +q VerticalRayShootingStructure lineSegment +ds = queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe (StatusStructure lineSegment) forall lineSegment point r queryPoint. @@ -799,8 +799,8 @@ -> VerticalRayShootingStructure lineSegment -> Maybe (StatusStructure lineSegment) findSlab queryPoint -q VerticalRayShootingStructure lineSegment -ds Maybe (StatusStructure lineSegment) +q VerticalRayShootingStructure lineSegment +ds Maybe (StatusStructure lineSegment) -> (StatusStructure lineSegment -> Maybe lineSegment) -> Maybe lineSegment forall a b. Maybe a -> (a -> Maybe b) -> Maybe b @@ -812,19 +812,19 @@ HasSupportingLine lineSegment) => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment lookupAboveOrOn queryPoint -q +q -- | Given a query point, find the (data structure of the) slab containing the query point -- -- \(O(\log n)\) -findSlab :: ( LineSegment_ lineSegment point, Point_ point 2 r - , Point_ queryPoint 2 r - , Ord r, Num r, HasSupportingLine lineSegment +findSlab :: ( LineSegment_ lineSegment point, Point_ point 2 r + , Point_ queryPoint 2 r + , Ord r, Num r, HasSupportingLine lineSegment ) - => queryPoint -> VerticalRayShootingStructure lineSegment - -> Maybe (StatusStructure lineSegment) + => queryPoint -> VerticalRayShootingStructure lineSegment + -> Maybe (StatusStructure lineSegment) findSlab :: forall lineSegment point r queryPoint. (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, @@ -832,10 +832,10 @@ queryPoint -> VerticalRayShootingStructure lineSegment -> Maybe (StatusStructure lineSegment) -findSlab queryPoint -q VerticalRayShootingStructure lineSegment -ds | queryPoint -qqueryPoint -> Getting r queryPoint r -> r +findSlab queryPoint +q VerticalRayShootingStructure lineSegment +ds | queryPoint +qqueryPoint -> Getting r queryPoint r -> r forall s a. s -> Getting a s a -> a ^.Getting r queryPoint r forall (d :: Natural) point r. @@ -846,7 +846,7 @@ forall a. Ord a => a -> a -> Bool < VerticalRayShootingStructure' r lineSegment VerticalRayShootingStructure lineSegment -dsVerticalRayShootingStructure' r lineSegment +dsVerticalRayShootingStructure' r lineSegment -> Getting r (VerticalRayShootingStructure' r lineSegment) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (VerticalRayShootingStructure' r lineSegment) r @@ -883,9 +883,9 @@ -> Maybe (Elem (Vector (r :+ StatusStructure lineSegment))) forall v. BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Elem v) binarySearchFirstIn (queryPoint -q `leftOf `) (VerticalRayShootingStructure' r lineSegment +q `leftOf `) (VerticalRayShootingStructure' r lineSegment VerticalRayShootingStructure lineSegment -dsVerticalRayShootingStructure' r lineSegment +dsVerticalRayShootingStructure' r lineSegment -> Getting (Vector (r :+ StatusStructure lineSegment)) (VerticalRayShootingStructure' r lineSegment) @@ -904,12 +904,12 @@ -> f (VerticalRayShootingStructure' r lineSegment) sweepStruct) where - s -q' leftOf :: s -> (NumType s :+ extra) -> Bool -`leftOf` (NumType s -r :+ extra + s +q' leftOf :: s -> (NumType s :+ extra) -> Bool +`leftOf` (NumType s +r :+ extra _) = s -q's -> Getting (NumType s) s (NumType s) -> NumType s +q's -> Getting (NumType s) s (NumType s) -> NumType s forall s a. s -> Getting a s a -> a ^.Getting (NumType s) s (NumType s) forall (d :: Natural) point r. @@ -919,7 +919,7 @@ xCoord NumType s -> NumType s -> Bool forall a. Ord a => a -> a -> Bool <= NumType s -r +r -------------------------------------------------------------------------------- -- * Querying in a single slab @@ -927,18 +927,18 @@ -- | Finds the segment containing or above the query point 'q' -- -- \(O(\log n)\) -lookupAboveOrOn :: ( LineSegment_ lineSegment point, Point_ point 2 r - , Point_ queryPoint 2 r - , Ord r, Num r, HasSupportingLine lineSegment +lookupAboveOrOn :: ( LineSegment_ lineSegment point, Point_ point 2 r + , Point_ queryPoint 2 r + , Ord r, Num r, HasSupportingLine lineSegment ) - => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment + => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment lookupAboveOrOn :: forall lineSegment point r queryPoint. (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment -lookupAboveOrOn queryPoint -q = (LinePV 2 r -> Bool) +lookupAboveOrOn queryPoint +q = (LinePV 2 r -> Bool) -> StatusStructure lineSegment -> Maybe lineSegment forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, @@ -949,7 +949,7 @@ not (Bool -> Bool) -> (LinePV 2 r -> Bool) -> LinePV 2 r -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . (queryPoint -q queryPoint -> LinePV 2 r -> Bool +q queryPoint -> LinePV 2 r -> Bool forall r point. (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool @@ -958,18 +958,18 @@ -- | Finds the first segment strictly above q -- -- \(O(\log n)\) -lookupAbove :: ( LineSegment_ lineSegment point, Point_ point 2 r - , Point_ queryPoint 2 r - , Ord r, Num r, HasSupportingLine lineSegment +lookupAbove :: ( LineSegment_ lineSegment point, Point_ point 2 r + , Point_ queryPoint 2 r + , Ord r, Num r, HasSupportingLine lineSegment ) - => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment + => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment lookupAbove :: forall lineSegment point r queryPoint. (LineSegment_ lineSegment point, Point_ point 2 r, Point_ queryPoint 2 r, Ord r, Num r, HasSupportingLine lineSegment) => queryPoint -> StatusStructure lineSegment -> Maybe lineSegment -lookupAbove queryPoint -q = (LinePV 2 r -> Bool) +lookupAbove queryPoint +q = (LinePV 2 r -> Bool) -> StatusStructure lineSegment -> Maybe lineSegment forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, @@ -977,29 +977,29 @@ (LinePV 2 r -> Bool) -> StatusStructure lineSegment -> Maybe lineSegment searchInSlab (queryPoint -q queryPoint -> LinePV 2 r -> Bool +q queryPoint -> LinePV 2 r -> Bool forall r point. (Ord r, Num r, Point_ point 2 r) => point -> LinePV 2 r -> Bool `liesBelow`) -- | generic searching function -searchInSlab :: (LineSegment_ lineSegment point, Point_ point 2 r - , HasSupportingLine lineSegment, Num r) - => (LinePV 2 r -> Bool) - -> StatusStructure lineSegment -> Maybe lineSegment +searchInSlab :: (LineSegment_ lineSegment point, Point_ point 2 r + , HasSupportingLine lineSegment, Num r) + => (LinePV 2 r -> Bool) + -> StatusStructure lineSegment -> Maybe lineSegment searchInSlab :: forall lineSegment point r. (LineSegment_ lineSegment point, Point_ point 2 r, HasSupportingLine lineSegment, Num r) => (LinePV 2 r -> Bool) -> StatusStructure lineSegment -> Maybe lineSegment -searchInSlab LinePV 2 r -> Bool -p = (Elem (StatusStructure lineSegment) -> Bool) +searchInSlab LinePV 2 r -> Bool +p = (Elem (StatusStructure lineSegment) -> Bool) -> StatusStructure lineSegment -> Maybe (Elem (StatusStructure lineSegment)) forall v. BinarySearch v => (Elem v -> Bool) -> v -> Maybe (Elem v) binarySearchFirstIn (LinePV 2 r -> Bool -p (LinePV 2 r -> Bool) +p (LinePV 2 r -> Bool) -> (lineSegment -> LinePV 2 r) -> lineSegment -> Bool forall b c a. (b -> c) -> (a -> b) -> a -> c . lineSegment -> LinePV 2 r diff --git a/haddocks/hgeometry/src/HGeometry.VoronoiDiagram.ViaLowerEnvelope.html b/haddocks/hgeometry/src/HGeometry.VoronoiDiagram.ViaLowerEnvelope.html index c61ff9e04..5a1424c96 100644 --- a/haddocks/hgeometry/src/HGeometry.VoronoiDiagram.ViaLowerEnvelope.html +++ b/haddocks/hgeometry/src/HGeometry.VoronoiDiagram.ViaLowerEnvelope.html @@ -47,32 +47,32 @@ -------------------------------------------------------------------------------- -- | A Voronoi diagram -data VoronoiDiagram point = - AllColinear !(Alternating Vector.Vector (VerticalOrLineEQ (NumType point)) point) - | ConnectedVD !(VoronoiDiagram' point) +data VoronoiDiagram point = + AllColinear !(Alternating Vector.Vector (VerticalOrLineEQ (NumType point)) point) + | ConnectedVD !(VoronoiDiagram' point) -deriving instance (Show point, Show (NumType point)) => Show (VoronoiDiagram point) -deriving instance (Eq point, Eq (NumType point)) => Eq (VoronoiDiagram point) +deriving instance (Show point, Show (NumType point)) => Show (VoronoiDiagram point) +deriving instance (Eq point, Eq (NumType point)) => Eq (VoronoiDiagram point) -type instance NumType (VoronoiDiagram point) = NumType point -type instance Dimension (VoronoiDiagram point) = 2 -- Dimension point +type instance NumType (VoronoiDiagram point) = NumType point +type instance Dimension (VoronoiDiagram point) = 2 -- Dimension point -------------------------------------------------------------------------------- -- | A connected VoronoiDiagram -newtype VoronoiDiagram' point = VoronoiDiagram (MinimizationDiagram (NumType point) point) +newtype VoronoiDiagram' point = VoronoiDiagram (MinimizationDiagram (NumType point) point) -deriving instance (Show point, Show (NumType point)) => Show (VoronoiDiagram' point) -deriving instance (Eq point, Eq (NumType point)) => Eq (VoronoiDiagram' point) +deriving instance (Show point, Show (NumType point)) => Show (VoronoiDiagram' point) +deriving instance (Eq point, Eq (NumType point)) => Eq (VoronoiDiagram' point) -type instance NumType (VoronoiDiagram' point) = NumType point -type instance Dimension (VoronoiDiagram' point) = 2 -- Dimension point +type instance NumType (VoronoiDiagram' point) = NumType point +type instance Dimension (VoronoiDiagram' point) = 2 -- Dimension point -- | Iso to Access the underlying LowerEnvelope -_VoronoiDiagramLowerEnvelope :: Iso (VoronoiDiagram' point) (VoronoiDiagram' point') - (MinimizationDiagram (NumType point) point) - (MinimizationDiagram (NumType point') point') +_VoronoiDiagramLowerEnvelope :: Iso (VoronoiDiagram' point) (VoronoiDiagram' point') + (MinimizationDiagram (NumType point) point) + (MinimizationDiagram (NumType point') point') _VoronoiDiagramLowerEnvelope :: forall point point' (p :: * -> * -> *) (f :: * -> *). (Profunctor p, Functor f) => p (MinimizationDiagram (NumType point) point) @@ -90,8 +90,8 @@ coerced -- | Get, for each point, its Voronoi region -asMap :: (Point_ point 2 r, Ord point) - => VoronoiDiagram' point -> NEMap.NEMap point (Region r (Point 2 r)) +asMap :: (Point_ point 2 r, Ord point) + => VoronoiDiagram' point -> NEMap.NEMap point (Region r (Point 2 r)) asMap :: forall point r. (Point_ point 2 r, Ord point) => VoronoiDiagram' point -> NEMap point (Region r (Point 2 r)) @@ -136,10 +136,10 @@ -- O(n^4) ( we currently use the brute force implentation...) TODO: switch to something faster -- \(O(n\log n)\) -voronoiDiagram :: ( Point_ point 2 r, Functor f, Ord point - , Ord r, Fractional r, Foldable1 f - , Show point, Show r - ) => f point -> VoronoiDiagram point +voronoiDiagram :: ( Point_ point 2 r, Functor f, Ord point + , Ord r, Fractional r, Foldable1 f + , Show point, Show r + ) => f point -> VoronoiDiagram point voronoiDiagram :: forall point r (f :: * -> *). (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r) => @@ -160,22 +160,22 @@ -- | Given a function to compute a lower envelope; construct use it to construct the -- Voronoi diagram. -voronoiDiagramWith :: ( Point_ point 2 r, Functor nonEmpty, Ord point - , Ord r, Fractional r, Foldable1 nonEmpty +voronoiDiagramWith :: ( Point_ point 2 r, Functor nonEmpty, Ord point + , Ord r, Fractional r, Foldable1 nonEmpty ) - => (nonEmpty (Plane r :+ point) -> LowerEnvelope (Plane r :+ point)) + => (nonEmpty (Plane r :+ point) -> LowerEnvelope (Plane r :+ point)) - -> nonEmpty point - -> VoronoiDiagram point + -> nonEmpty point + -> VoronoiDiagram point voronoiDiagramWith :: forall point r (nonEmpty :: * -> *). (Point_ point 2 r, Functor nonEmpty, Ord point, Ord r, Fractional r, Foldable1 nonEmpty) => (nonEmpty (Plane r :+ point) -> LowerEnvelope (Plane r :+ point)) -> nonEmpty point -> VoronoiDiagram point -voronoiDiagramWith nonEmpty (Plane r :+ point) -> LowerEnvelope (Plane r :+ point) -lowerEnv nonEmpty point -pts = case nonEmpty (Plane r :+ point) -> LowerEnvelope (Plane r :+ point) -lowerEnv (nonEmpty (Plane r :+ point) -> LowerEnvelope (Plane r :+ point)) +voronoiDiagramWith nonEmpty (Plane r :+ point) -> LowerEnvelope (Plane r :+ point) +lowerEnv nonEmpty point +pts = case nonEmpty (Plane r :+ point) -> LowerEnvelope (Plane r :+ point) +lowerEnv (nonEmpty (Plane r :+ point) -> LowerEnvelope (Plane r :+ point)) -> (nonEmpty point -> nonEmpty (Plane r :+ point)) -> nonEmpty point -> LowerEnvelope (Plane r :+ point) @@ -184,23 +184,23 @@ -> nonEmpty point -> nonEmpty (Plane r :+ point) forall a b. (a -> b) -> nonEmpty a -> nonEmpty b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b -fmap (\point -p -> point -> Plane r +fmap (\point +p -> point -> Plane r forall point r. (Point_ point 2 r, Num r) => point -> Plane r pointToPlane point -p Plane r -> point -> Plane r :+ point +p Plane r -> point -> Plane r :+ point forall core extra. core -> extra -> core :+ extra :+ point -p) (nonEmpty point -> LowerEnvelope (Plane r :+ point)) +p) (nonEmpty point -> LowerEnvelope (Plane r :+ point)) -> nonEmpty point -> LowerEnvelope (Plane r :+ point) forall a b. (a -> b) -> a -> b $ nonEmpty point -pts of - ParallelStrips Alternating +pts of + ParallelStrips Alternating Vector (VerticalOrLineEQ (NumType (Plane r :+ point))) (Plane r :+ point) -strips -> Alternating Vector (VerticalOrLineEQ (NumType point)) point +strips -> Alternating Vector (VerticalOrLineEQ (NumType point)) point -> VoronoiDiagram point forall point. Alternating Vector (VerticalOrLineEQ (NumType point)) point @@ -230,9 +230,9 @@ Vector (VerticalOrLineEQ (NumType (Plane r :+ point))) (Plane r :+ point) -strips - ConnectedEnvelope MinimizationDiagram (NumType (Plane r :+ point)) (Plane r :+ point) -env -> VoronoiDiagram' point -> VoronoiDiagram point +strips + ConnectedEnvelope MinimizationDiagram (NumType (Plane r :+ point)) (Plane r :+ point) +env -> VoronoiDiagram' point -> VoronoiDiagram point forall point. VoronoiDiagram' point -> VoronoiDiagram point ConnectedVD (VoronoiDiagram' point -> VoronoiDiagram point) -> (MinimizationDiagram @@ -276,21 +276,21 @@ -> VoronoiDiagram point forall a b. (a -> b) -> a -> b $ MinimizationDiagram (NumType (Plane r :+ point)) (Plane r :+ point) -env +env -- | lifts the point to a plane; so that the lower envelope corresponds to the VD -pointToPlane :: (Point_ point 2 r, Num r) => point -> Plane r +pointToPlane :: (Point_ point 2 r, Num r) => point -> Plane r pointToPlane :: forall point r. (Point_ point 2 r, Num r) => point -> Plane r pointToPlane = Plane r -> Plane r -flipZ (Plane r -> Plane r) -> (point -> Plane r) -> point -> Plane r +flipZ (Plane r -> Plane r) -> (point -> Plane r) -> point -> Plane r forall b c a. (b -> c) -> (a -> b) -> a -> c . point -> Plane r forall point r. (Point_ point 2 r, Num r) => point -> Plane r liftPointToPlane where - flipZ :: Plane r -> Plane r -flipZ = ASetter (Plane r) (Plane r) (NumType (Plane r)) (NumType (Plane r)) + flipZ :: Plane r -> Plane r +flipZ = ASetter (Plane r) (Plane r) (NumType (Plane r)) (NumType (Plane r)) -> (NumType (Plane r) -> NumType (Plane r)) -> Plane r -> Plane r forall s t a b. ASetter s t a b -> (a -> b) -> s -> t over ((Vector (Dimension (Plane r)) (NumType (Plane r)) @@ -327,37 +327,37 @@ -- | Compute the vertices of the Voronoi diagram -voronoiVertices :: ( Point_ point 2 r, Functor f, Ord point - , Ord r, Fractional r, Foldable1 f - , Show point, Show r - , Ord point - ) => f point -> Set (Point 2 r) +voronoiVertices :: ( Point_ point 2 r, Functor f, Ord point + , Ord r, Fractional r, Foldable1 f + , Show point, Show r + , Ord point + ) => f point -> Set (Point 2 r) voronoiVertices :: forall point r (f :: * -> *). (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r, Ord point) => f point -> Set (Point 2 r) -voronoiVertices f point -pts = case f point -> VoronoiDiagram point +voronoiVertices f point +pts = case f point -> VoronoiDiagram point forall point r (f :: * -> *). (Point_ point 2 r, Functor f, Ord point, Ord r, Fractional r, Foldable1 f, Show point, Show r) => f point -> VoronoiDiagram point voronoiDiagram f point -pts of +pts of AllColinear Alternating Vector (VerticalOrLineEQ (NumType point)) point _ -> Set (Point 2 r) forall a. Monoid a => a mempty - ConnectedVD VoronoiDiagram' point -vd -> (Region r (Point 2 r) -> Set (Point 2 r)) + ConnectedVD VoronoiDiagram' point +vd -> (Region r (Point 2 r) -> Set (Point 2 r)) -> NEMap point (Region r (Point 2 r)) -> Set (Point 2 r) forall m a. Monoid m => (a -> m) -> NEMap point a -> m forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap (\case - Bounded Cyclic NonEmpty (Point 2 r) -vs -> (Point 2 r -> Set (Point 2 r)) + Bounded Cyclic NonEmpty (Point 2 r) +vs -> (Point 2 r -> Set (Point 2 r)) -> Cyclic NonEmpty (Point 2 r) -> Set (Point 2 r) forall m a. Monoid m => (a -> m) -> Cyclic NonEmpty a -> m forall (t :: * -> *) m a. @@ -366,22 +366,22 @@ foldMap Point 2 r -> Set (Point 2 r) forall a. a -> Set a Set.singleton Cyclic NonEmpty (Point 2 r) -vs +vs Unbounded Vector 2 r -_ NonEmpty (Point 2 r) -vs Vector 2 r +_ NonEmpty (Point 2 r) +vs Vector 2 r _ -> [Point 2 r] -> Set (Point 2 r) forall a. Ord a => [a] -> Set a Set.fromList (NonEmpty (Point 2 r) -> [Point 2 r] forall a. NonEmpty a -> [a] NonEmpty.toList NonEmpty (Point 2 r) -vs) +vs) ) (VoronoiDiagram' point -> NEMap point (Region r (Point 2 r)) forall point r. (Point_ point 2 r, Ord point) => VoronoiDiagram' point -> NEMap point (Region r (Point 2 r)) asMap VoronoiDiagram' point -vd) +vd) -------------------------------------------------------------------------------- diff --git a/haddocks/hgeometry/svg/src/HGeometry.Miso.Canvas.Zoom.html b/haddocks/hgeometry/svg/src/HGeometry.Miso.Canvas.Zoom.html index a2b15b3b8..498819943 100644 --- a/haddocks/hgeometry/svg/src/HGeometry.Miso.Canvas.Zoom.html +++ b/haddocks/hgeometry/svg/src/HGeometry.Miso.Canvas.Zoom.html @@ -13,7 +13,7 @@ -------------------------------------------------------------------------------- -- * Model -data ZoomDirection = ZoomIn | ZoomOut deriving (Int -> ZoomDirection -> ShowS +data ZoomDirection = ZoomIn | ZoomOut deriving (Int -> ZoomDirection -> ShowS [ZoomDirection] -> ShowS ZoomDirection -> String (Int -> ZoomDirection -> ShowS) @@ -28,7 +28,7 @@ show :: ZoomDirection -> String $cshowList :: [ZoomDirection] -> ShowS showList :: [ZoomDirection] -> ShowS -Show,ReadPrec [ZoomDirection] +Show,ReadPrec [ZoomDirection] ReadPrec ZoomDirection Int -> ReadS ZoomDirection ReadS [ZoomDirection] @@ -48,7 +48,7 @@ readPrec :: ReadPrec ZoomDirection $creadListPrec :: ReadPrec [ZoomDirection] readListPrec :: ReadPrec [ZoomDirection] -Read,ZoomDirection -> ZoomDirection -> Bool +Read,ZoomDirection -> ZoomDirection -> Bool (ZoomDirection -> ZoomDirection -> Bool) -> (ZoomDirection -> ZoomDirection -> Bool) -> Eq ZoomDirection forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -59,14 +59,14 @@ Eq) -- | Types that have a zoom-level -class HasZoomLevel canvas r | canvas -> r where +class HasZoomLevel canvas r | canvas -> r where -- | Lens to access the current zoom-level of the canvas - zoomLevel :: Lens' canvas r + zoomLevel :: Lens' canvas r -------------------------------------------------------------------------------- -- * Controller -newtype ZoomAction = ZoomAction ZoomDirection deriving (Int -> ZoomAction -> ShowS +newtype ZoomAction = ZoomAction ZoomDirection deriving (Int -> ZoomAction -> ShowS [ZoomAction] -> ShowS ZoomAction -> String (Int -> ZoomAction -> ShowS) @@ -81,7 +81,7 @@ show :: ZoomAction -> String $cshowList :: [ZoomAction] -> ShowS showList :: [ZoomAction] -> ShowS -Show,ZoomAction -> ZoomAction -> Bool +Show,ZoomAction -> ZoomAction -> Bool (ZoomAction -> ZoomAction -> Bool) -> (ZoomAction -> ZoomAction -> Bool) -> Eq ZoomAction forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a @@ -92,17 +92,17 @@ Eq) -- | Update the zoom-level -update :: ( Fractional r, Ord r - , HasZoomLevel canvas r +update :: ( Fractional r, Ord r + , HasZoomLevel canvas r ) - => canvas -> ZoomAction -> Effect action canvas + => canvas -> ZoomAction -> Effect action canvas update :: forall r canvas action. (Fractional r, Ord r, HasZoomLevel canvas r) => canvas -> ZoomAction -> Effect action canvas -update canvas -m ZoomAction -za = canvas -mcanvas -> (canvas -> Effect action canvas) -> Effect action canvas +update canvas +m ZoomAction +za = canvas +mcanvas -> (canvas -> Effect action canvas) -> Effect action canvas forall a b. a -> (a -> b) -> b &(r -> Effect action r) -> canvas -> Effect action canvas forall canvas r. HasZoomLevel canvas r => Lens' canvas r @@ -119,35 +119,35 @@ (Fractional r, Ord r) => r -> ZoomAction -> Effect action r updateZoom' ZoomAction -za +za -updateZoom' :: (Fractional r, Ord r) - => r -> ZoomAction -> Effect action r +updateZoom' :: (Fractional r, Ord r) + => r -> ZoomAction -> Effect action r updateZoom' :: forall r action. (Fractional r, Ord r) => r -> ZoomAction -> Effect action r -updateZoom' r -z = \case - ZoomAction ZoomDirection -dir -> r -> Effect action r +updateZoom' r +z = \case + ZoomAction ZoomDirection +dir -> r -> Effect action r forall model action. model -> Effect action model noEff (r -> Effect action r) -> r -> Effect action r forall a b. (a -> b) -> a -> b $ ZoomDirection -> r -> r forall r. (Fractional r, Ord r) => ZoomDirection -> r -> r applyZoom ZoomDirection -dir r -z +dir r +z -applyZoom :: forall r.(Fractional r, Ord r) => ZoomDirection -> r -> r +applyZoom :: forall r.(Fractional r, Ord r) => ZoomDirection -> r -> r applyZoom :: forall r. (Fractional r, Ord r) => ZoomDirection -> r -> r -applyZoom ZoomDirection -dir r -z = let delta :: r -delta = case ZoomDirection -dir of +applyZoom ZoomDirection +dir r +z = let delta :: r +delta = case ZoomDirection +dir of ZoomDirection ZoomIn -> r 0.1 @@ -162,15 +162,15 @@ (ClosedInterval_ interval r, Ord r) => interval -> r -> r clampTo ClosedInterval r -rng (r -z r -> r -> r +rng (r +z r -> r -> r forall a. Num a => a -> a -> a + r -delta) +delta) where - rng :: ClosedInterval r -rng = forall r. r -> r -> ClosedInterval r -ClosedInterval @r r + rng :: ClosedInterval r +rng = forall r. r -> r -> ClosedInterval r +ClosedInterval @r r 0.5 r 10 \ No newline at end of file diff --git a/haddocks/hgeometry/svg/src/HGeometry.Miso.OrphanInstances.html b/haddocks/hgeometry/svg/src/HGeometry.Miso.OrphanInstances.html index eece91670..c203dfbbb 100644 --- a/haddocks/hgeometry/svg/src/HGeometry.Miso.OrphanInstances.html +++ b/haddocks/hgeometry/svg/src/HGeometry.Miso.OrphanInstances.html @@ -28,9 +28,9 @@ -------------------------------------------------------------------------------- -instance HasResolution p => ToMisoString (Fixed p) where - toMisoString :: Fixed p -> MisoString -toMisoString = String -> MisoString +instance HasResolution p => ToMisoString (Fixed p) where + toMisoString :: Fixed p -> MisoString +toMisoString = String -> MisoString forall str. ToMisoString str => str -> MisoString toMisoString (String -> MisoString) -> (Fixed p -> String) -> Fixed p -> MisoString @@ -40,9 +40,9 @@ showFixed Bool True -instance HasResolution p => FromMisoString (Fixed p) where - fromMisoStringEither :: MisoString -> Either String (Fixed p) -fromMisoStringEither = (Double -> Fixed p) +instance HasResolution p => FromMisoString (Fixed p) where + fromMisoStringEither :: MisoString -> Either String (Fixed p) +fromMisoStringEither = (Double -> Fixed p) -> Either String Double -> Either String (Fixed p) forall a b. (a -> b) -> Either String a -> Either String b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -57,7 +57,7 @@ fromMisoStringEither @Double instance ToMisoString Rational where - toMisoString :: Rational -> MisoString + toMisoString :: Rational -> MisoString toMisoString = forall str. ToMisoString str => str -> MisoString toMisoString @Pico (Pico -> MisoString) -> (Rational -> Pico) -> Rational -> MisoString @@ -67,7 +67,7 @@ realToFrac instance FromMisoString Rational where - fromMisoStringEither :: MisoString -> Either String Rational + fromMisoStringEither :: MisoString -> Either String Rational fromMisoStringEither = (Pico -> Rational) -> Either String Pico -> Either String Rational forall a b. (a -> b) -> Either String a -> Either String b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -81,12 +81,12 @@ . forall t. FromMisoString t => MisoString -> Either String t fromMisoStringEither @Pico -instance ToMisoString r => ToMisoString (RGB r) where - toMisoString :: RGB r -> MisoString -toMisoString (RGB r -r r -g r -b) = [MisoString] -> MisoString +instance ToMisoString r => ToMisoString (RGB r) where + toMisoString :: RGB r -> MisoString +toMisoString (RGB r +r r +g r +b) = [MisoString] -> MisoString forall a. Monoid a => [a] -> a mconcat [ MisoString "rgb(" @@ -108,9 +108,9 @@ toMisoString ([r] -> MisoString) -> [r] -> MisoString forall a b. (a -> b) -> a -> b $ [r -r,r -g,r -b] +r,r +g,r +b] , MisoString ")" ] @@ -118,10 +118,10 @@ -------------------------------------------------------------------------------- -- * Dealing with attributes -instance ToMisoString (Apply f at) => ToMisoString (IA.Attr f at) where - toMisoString :: Attr f at -> MisoString -toMisoString Attr f at -att = MisoString +instance ToMisoString (Apply f at) => ToMisoString (IA.Attr f at) where + toMisoString :: Attr f at -> MisoString +toMisoString Attr f at +att = MisoString -> (Apply f at -> MisoString) -> Maybe (Apply f at) -> MisoString forall b a. b -> (a -> b) -> Maybe a -> b maybe MisoString @@ -134,10 +134,10 @@ forall u (f :: TyFun u (*) -> *) (label :: u). Attr f label -> Maybe (Apply f label) IA._getAttr Attr f at -att +att -instance FromMisoString (Apply f at) => FromMisoString (IA.Attr f at) where - fromMisoStringEither :: MisoString -> Either String (Attr f at) +instance FromMisoString (Apply f at) => FromMisoString (IA.Attr f at) where + fromMisoStringEither :: MisoString -> Either String (Attr f at) fromMisoStringEither = (Apply f at -> Attr f at) -> Either String (Apply f at) -> Either String (Attr f at) forall a b. (a -> b) -> Either String a -> Either String b @@ -154,86 +154,86 @@ forall t. FromMisoString t => MisoString -> Either String t fromMisoStringEither -instance ToMisoString r => ToMisoString (IpeValue r) where - toMisoString :: IpeValue r -> MisoString +instance ToMisoString r => ToMisoString (IpeValue r) where + toMisoString :: IpeValue r -> MisoString toMisoString = \case - Named MisoString -t -> MisoString -> MisoString + Named MisoString +t -> MisoString -> MisoString forall str. ToMisoString str => str -> MisoString toMisoString MisoString -t - Valued r -v -> r -> MisoString +t + Valued r +v -> r -> MisoString forall str. ToMisoString str => str -> MisoString toMisoString r -v +v -instance ToMisoString r => ToMisoString (IA.IpePen r) where - toMisoString :: IpePen r -> MisoString +instance ToMisoString r => ToMisoString (IA.IpePen r) where + toMisoString :: IpePen r -> MisoString toMisoString IpePen r _ = MisoString forall a. Monoid a => a mempty -instance ToMisoString r => ToMisoString (IA.IpeSize r) where - toMisoString :: IpeSize r -> MisoString +instance ToMisoString r => ToMisoString (IA.IpeSize r) where + toMisoString :: IpeSize r -> MisoString toMisoString IpeSize r _ = MisoString forall a. Monoid a => a mempty -instance ToMisoString r => ToMisoString (IA.IpeArrow r) where - toMisoString :: IpeArrow r -> MisoString +instance ToMisoString r => ToMisoString (IA.IpeArrow r) where + toMisoString :: IpeArrow r -> MisoString toMisoString IpeArrow r _ = MisoString forall a. Monoid a => a mempty -instance ToMisoString r => ToMisoString (IA.IpeDash r) where - toMisoString :: IpeDash r -> MisoString +instance ToMisoString r => ToMisoString (IA.IpeDash r) where + toMisoString :: IpeDash r -> MisoString toMisoString IpeDash r _ = MisoString forall a. Monoid a => a mempty -instance ToMisoString r => ToMisoString (Matrix 3 3 r) where - toMisoString :: Matrix 3 3 r -> MisoString +instance ToMisoString r => ToMisoString (Matrix 3 3 r) where + toMisoString :: Matrix 3 3 r -> MisoString toMisoString Matrix 3 3 r _ = MisoString forall a. Monoid a => a mempty instance ToMisoString IA.FillType where - toMisoString :: FillType -> MisoString + toMisoString :: FillType -> MisoString toMisoString FillType _ = MisoString forall a. Monoid a => a mempty instance ToMisoString IA.PinType where - toMisoString :: PinType -> MisoString + toMisoString :: PinType -> MisoString toMisoString PinType _ = MisoString forall a. Monoid a => a mempty instance ToMisoString IA.TransformationTypes where - toMisoString :: TransformationTypes -> MisoString + toMisoString :: TransformationTypes -> MisoString toMisoString TransformationTypes _ = MisoString forall a. Monoid a => a mempty -instance ToMisoString r => ToMisoString (IpeColor r) where - toMisoString :: IpeColor r -> MisoString -toMisoString (IpeColor IpeValue (RGB r) -c) = IpeValue (RGB r) -> MisoString +instance ToMisoString r => ToMisoString (IpeColor r) where + toMisoString :: IpeColor r -> MisoString +toMisoString (IpeColor IpeValue (RGB r) +c) = IpeValue (RGB r) -> MisoString forall str. ToMisoString str => str -> MisoString toMisoString IpeValue (RGB r) -c +c -instance ToMisoString r => ToMisoString (Ipe.Path r) where - toMisoString :: Path r -> MisoString +instance ToMisoString r => ToMisoString (Ipe.Path r) where + toMisoString :: Path r -> MisoString toMisoString Path r _ = MisoString forall a. Monoid a => a @@ -241,15 +241,15 @@ -- FIXME: This does not actually show the path instance ToMisoString Ipe.LayerName where - toMisoString :: LayerName -> MisoString -toMisoString (Ipe.LayerName MisoString -t) = MisoString -> MisoString + toMisoString :: LayerName -> MisoString +toMisoString (Ipe.LayerName MisoString +t) = MisoString -> MisoString forall str. ToMisoString str => str -> MisoString toMisoString MisoString -t +t instance FromMisoString Ipe.LayerName where - fromMisoStringEither :: MisoString -> Either String LayerName + fromMisoStringEither :: MisoString -> Either String LayerName fromMisoStringEither = (MisoString -> LayerName) -> Either String MisoString -> Either String LayerName forall a b. (a -> b) -> Either String a -> Either String b diff --git a/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.Canvas.html b/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.Canvas.html index 4bb1490a4..9483c75b7 100644 --- a/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.Canvas.html +++ b/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.Canvas.html @@ -31,9 +31,9 @@ -- *A Canvas -- | Svg Canvas that has a "proper" Coordinate system whose origin is in the bottom left. -data Canvas r = +data Canvas r = Canvas { forall r. Canvas r -> Viewport r -_theViewport :: !(Viewport r) +_theViewport :: !(Viewport r) -- ^ the viewport , forall r. Canvas r -> Vector 2 Int _dimensions :: !(Vector 2 Int) @@ -42,7 +42,7 @@ _mousePosition :: Maybe (Point 2 Int) -- ^ the mouse position, in raw pixel coordinates } - deriving stock (Canvas r -> Canvas r -> Bool + deriving stock (Canvas r -> Canvas r -> Bool (Canvas r -> Canvas r -> Bool) -> (Canvas r -> Canvas r -> Bool) -> Eq (Canvas r) forall r. Eq r => Canvas r -> Canvas r -> Bool @@ -51,7 +51,7 @@ == :: Canvas r -> Canvas r -> Bool $c/= :: forall r. Eq r => Canvas r -> Canvas r -> Bool /= :: Canvas r -> Canvas r -> Bool -Eq,Int -> Canvas r -> ShowS +Eq,Int -> Canvas r -> ShowS [Canvas r] -> ShowS Canvas r -> String (Int -> Canvas r -> ShowS) @@ -70,7 +70,7 @@ Show) -- | Lens to access the viewport -theViewport :: Lens (Canvas r) (Canvas s) (Viewport r) (Viewport s) +theViewport :: Lens (Canvas r) (Canvas s) (Viewport r) (Viewport s) theViewport :: forall r s (f :: * -> *). Functor f => (Viewport r -> f (Viewport s)) -> Canvas r -> f (Canvas s) @@ -80,47 +80,47 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Canvas r -> Viewport r forall r. Canvas r -> Viewport r -_theViewport (\Canvas r -c Viewport s -vp -> Canvas r -c { _theViewport = vp }) +_theViewport (\Canvas r +c Viewport s +vp -> Canvas r +c { _theViewport = vp }) -instance HasDimensions (Canvas r) (Vector 2 Int) where - dimensions :: Lens' (Canvas r) (Vector 2 Int) -dimensions = (Canvas r -> Vector 2 Int) +instance HasDimensions (Canvas r) (Vector 2 Int) where + dimensions :: Lens' (Canvas r) (Vector 2 Int) +dimensions = (Canvas r -> Vector 2 Int) -> (Canvas r -> Vector 2 Int -> Canvas r) -> Lens' (Canvas r) (Vector 2 Int) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Canvas r -> Vector 2 Int forall r. Canvas r -> Vector 2 Int -_dimensions (\Canvas r -c Vector 2 Int -d -> Canvas r -c { _dimensions = d }) +_dimensions (\Canvas r +c Vector 2 Int +d -> Canvas r +c { _dimensions = d }) {-# INLINE dimensions #-} -- | Class for types that have a mouse position -class HasMousePosition s a | s -> a where +class HasMousePosition s a | s -> a where -- | Lens to access the raw mouse position - mousePosition :: Lens' s a + mousePosition :: Lens' s a -instance HasMousePosition (Canvas r) (Maybe (Point 2 Int)) where - mousePosition :: Lens' (Canvas r) (Maybe (Point 2 Int)) +instance HasMousePosition (Canvas r) (Maybe (Point 2 Int)) where + mousePosition :: Lens' (Canvas r) (Maybe (Point 2 Int)) mousePosition = (Canvas r -> Maybe (Point 2 Int)) -> (Canvas r -> Maybe (Point 2 Int) -> Canvas r) -> Lens' (Canvas r) (Maybe (Point 2 Int)) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens Canvas r -> Maybe (Point 2 Int) forall r. Canvas r -> Maybe (Point 2 Int) -_mousePosition (\Canvas r -c Maybe (Point 2 Int) -m -> Canvas r -c { _mousePosition = m }) +_mousePosition (\Canvas r +c Maybe (Point 2 Int) +m -> Canvas r +c { _mousePosition = m }) {-# INLINE mousePosition #-} -- | Getter to access the mouse coordinates (in terms of the coordinate system as used by -- the canvas). Returns a Nothing if the mouse is not currently on/over the canvas. -mouseCoordinates :: Fractional r => Getter (Canvas r) (Maybe (Point 2 r)) +mouseCoordinates :: Fractional r => Getter (Canvas r) (Maybe (Point 2 r)) mouseCoordinates :: forall r. Fractional r => Getter (Canvas r) (Maybe (Point 2 r)) mouseCoordinates = (Canvas r -> Maybe (Point 2 r)) -> (Maybe (Point 2 r) -> f (Maybe (Point 2 r))) @@ -138,15 +138,15 @@ -> Canvas r -> f (Canvas r) forall a b. (a -> b) -> a -> b -$ \Canvas r -m -> Viewport (NumType (Point 2 r)) -> Point 2 Int -> Point 2 r +$ \Canvas r +m -> Viewport (NumType (Point 2 r)) -> Point 2 Int -> Point 2 r forall {g} {a}. (Dimension g ~ 2, Dimension a ~ 2, IsTransformable g, Fractional (NumType g), HasCoordinates a g, Integral (NumType a)) => Viewport (NumType g) -> a -> g -toWorldIn' (Canvas r -mCanvas r +toWorldIn' (Canvas r +mCanvas r -> Getting (Viewport r) (Canvas r) (Viewport r) -> Viewport r forall s a. s -> Getting a s a -> a ^.Getting (Viewport r) (Canvas r) (Viewport r) @@ -157,7 +157,7 @@ -> Maybe (Point 2 Int) -> Maybe (Point 2 r) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Canvas r -mCanvas r +mCanvas r -> Getting (Maybe (Point 2 Int)) (Canvas r) (Maybe (Point 2 Int)) -> Maybe (Point 2 Int) forall s a. s -> Getting a s a -> a @@ -166,17 +166,17 @@ Lens' (Canvas r) (Maybe (Point 2 Int)) mousePosition where - toWorldIn' :: Viewport (NumType g) -> a -> g -toWorldIn' Viewport (NumType g) -vp a -p = Viewport (NumType g) -> g -> g + toWorldIn' :: Viewport (NumType g) -> a -> g +toWorldIn' Viewport (NumType g) +vp a +p = Viewport (NumType g) -> g -> g forall g r. (IsTransformable g, NumType g ~ r, Dimension g ~ 2, Fractional r) => Viewport r -> g -> g toWorldIn Viewport (NumType g) -vp (a -pa -> (a -> g) -> g +vp (a +pa -> (a -> g) -> g forall a b. a -> (a -> b) -> b &(NumType a -> Identity (NumType g)) -> a -> Identity g forall point point'. @@ -199,17 +199,17 @@ -------------------------------------------------------------------------------- -- | Crate a blank canvas, that has the origin in the bottom-left. -blankCanvas :: (Num r) - => Int -> Int -> Canvas r +blankCanvas :: (Num r) + => Int -> Int -> Canvas r blankCanvas :: forall r. Num r => Int -> Int -> Canvas r -blankCanvas Int -w Int -h = let v :: Vector 2 Int -v = Int -> Int -> Vector 2 Int +blankCanvas Int +w Int +h = let v :: Vector 2 Int +v = Int -> Int -> Vector 2 Int forall r. r -> r -> Vector 2 r Vector2 Int -w Int -h +w Int +h in Viewport r -> Vector 2 Int -> Maybe (Point 2 Int) -> Canvas r forall r. Viewport r -> Vector 2 Int -> Maybe (Point 2 Int) -> Canvas r @@ -222,8 +222,8 @@ fromIntegral (Int -> r) -> Vector 2 Int -> Vector 2 r forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Vector 2 Int -v)) Vector 2 Int -v Maybe (Point 2 Int) +v)) Vector 2 Int +v Maybe (Point 2 Int) forall a. Maybe a Nothing @@ -237,7 +237,7 @@ | TouchStart !(Point 2 Int) | TouchMove !(Point 2 Int) | TouchEnd - deriving (Int -> InternalCanvasAction -> ShowS + deriving (Int -> InternalCanvasAction -> ShowS [InternalCanvasAction] -> ShowS InternalCanvasAction -> String (Int -> InternalCanvasAction -> ShowS) @@ -252,7 +252,7 @@ show :: InternalCanvasAction -> String $cshowList :: [InternalCanvasAction] -> ShowS showList :: [InternalCanvasAction] -> ShowS -Show,InternalCanvasAction -> InternalCanvasAction -> Bool +Show,InternalCanvasAction -> InternalCanvasAction -> Bool (InternalCanvasAction -> InternalCanvasAction -> Bool) -> (InternalCanvasAction -> InternalCanvasAction -> Bool) -> Eq InternalCanvasAction @@ -264,11 +264,11 @@ Eq) -- | Handles InternalCanvas Actions -handleInternalCanvasAction :: Canvas r -> InternalCanvasAction -> Effect action (Canvas r) +handleInternalCanvasAction :: Canvas r -> InternalCanvasAction -> Effect action (Canvas r) handleInternalCanvasAction :: forall r action. Canvas r -> InternalCanvasAction -> Effect action (Canvas r) -handleInternalCanvasAction Canvas r -canvas = Canvas r -> Effect action (Canvas r) +handleInternalCanvasAction Canvas r +canvas = Canvas r -> Effect action (Canvas r) forall model action. model -> Effect action model noEff (Canvas r -> Effect action (Canvas r)) -> (InternalCanvasAction -> Canvas r) @@ -276,9 +276,9 @@ -> Effect action (Canvas r) forall b c a. (b -> c) -> (a -> b) -> a -> c . \case - MouseEnter Point 2 Int -p -> Canvas r -canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r + MouseEnter Point 2 Int +p -> Canvas r +canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r forall a b. a -> (a -> b) -> b &(Maybe (Point 2 Int) -> Identity (Maybe (Point 2 Int))) -> Canvas r -> Identity (Canvas r) @@ -289,10 +289,10 @@ -> Point 2 Int -> Canvas r -> Canvas r forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t ?~ Point 2 Int -p - MouseMove Point 2 Int -p -> Canvas r -canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r +p + MouseMove Point 2 Int +p -> Canvas r +canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r forall a b. a -> (a -> b) -> b &(Maybe (Point 2 Int) -> Identity (Maybe (Point 2 Int))) -> Canvas r -> Identity (Canvas r) @@ -303,10 +303,10 @@ -> Point 2 Int -> Canvas r -> Canvas r forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t ?~ Point 2 Int -p +p InternalCanvasAction MouseLeave -> Canvas r -canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r +canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r forall a b. a -> (a -> b) -> b &(Maybe (Point 2 Int) -> Identity (Maybe (Point 2 Int))) -> Canvas r -> Identity (Canvas r) @@ -319,9 +319,9 @@ .~ Maybe (Point 2 Int) forall a. Maybe a Nothing - TouchStart Point 2 Int -p -> Canvas r -canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r + TouchStart Point 2 Int +p -> Canvas r +canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r forall a b. a -> (a -> b) -> b &(Maybe (Point 2 Int) -> Identity (Maybe (Point 2 Int))) -> Canvas r -> Identity (Canvas r) @@ -332,10 +332,10 @@ -> Point 2 Int -> Canvas r -> Canvas r forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t ?~ Point 2 Int -p - TouchMove Point 2 Int -p -> Canvas r -canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r +p + TouchMove Point 2 Int +p -> Canvas r +canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r forall a b. a -> (a -> b) -> b &(Maybe (Point 2 Int) -> Identity (Maybe (Point 2 Int))) -> Canvas r -> Identity (Canvas r) @@ -346,10 +346,10 @@ -> Point 2 Int -> Canvas r -> Canvas r forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t ?~ Point 2 Int -p +p InternalCanvasAction TouchEnd -> Canvas r -canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r +canvasCanvas r -> (Canvas r -> Canvas r) -> Canvas r forall a b. a -> (a -> b) -> b &(Maybe (Point 2 Int) -> Identity (Maybe (Point 2 Int))) -> Canvas r -> Identity (Canvas r) @@ -367,20 +367,20 @@ -- * The View -- | Draws the actual canvas using an svg tag -svgCanvas_ :: (RealFrac r, ToSvgCoordinate r) - => Canvas r - -> [Attribute action] -> [View action] - -> View (Either InternalCanvasAction action) +svgCanvas_ :: (RealFrac r, ToSvgCoordinate r) + => Canvas r + -> [Attribute action] -> [View action] + -> View (Either InternalCanvasAction action) svgCanvas_ :: forall r action. (RealFrac r, ToSvgCoordinate r) => Canvas r -> [Attribute action] -> [View action] -> View (Either InternalCanvasAction action) -svgCanvas_ Canvas r -canvas [Attribute action] -ats [View action] -vs = +svgCanvas_ Canvas r +canvas [Attribute action] +ats [View action] +vs = [Attribute (Either InternalCanvasAction action)] -> [View (Either InternalCanvasAction action)] -> View (Either InternalCanvasAction action) @@ -398,7 +398,7 @@ -> Int -> Attribute (Either InternalCanvasAction action) forall a b. (a -> b) -> a -> b $ Int -w +w , MisoString -> Attribute (Either InternalCanvasAction action) forall action. MisoString -> Attribute action height_ (MisoString -> Attribute (Either InternalCanvasAction action)) @@ -412,7 +412,7 @@ -> Int -> Attribute (Either InternalCanvasAction action) forall a b. (a -> b) -> a -> b $ Int -h +h , MisoString -> Attribute (Either InternalCanvasAction action) forall action. MisoString -> Attribute action pointerEvents_ MisoString @@ -434,7 +434,7 @@ -> [Attribute (Either InternalCanvasAction action)] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Attribute action] -ats)) +ats)) [ [Attribute (Either InternalCanvasAction action)] -> [View (Either InternalCanvasAction action)] -> View (Either InternalCanvasAction action) @@ -557,7 +557,7 @@ g_ [MisoString -> Attribute (Either InternalCanvasAction action) forall action. MisoString -> Attribute action transform_ MisoString -ts] ((action -> Either InternalCanvasAction action) +ts] ((action -> Either InternalCanvasAction action) -> View action -> View (Either InternalCanvasAction action) forall a b. (a -> b) -> View a -> View b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b @@ -567,7 +567,7 @@ -> [View action] -> [View (Either InternalCanvasAction action)] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [View action] -vs) +vs) ] ] -- note; we use the two nested svgs so that we can handle additional mouseMove, Enter, @@ -575,23 +575,23 @@ -- so that we can also capture the mousemove etc events in the inner svg. The rect -- is so that the inner svg is actually forced to be the full size. where - (Vector2 Int -w Int -h) = Canvas r -canvasCanvas r + (Vector2 Int +w Int +h) = Canvas r +canvasCanvas r -> Getting (Vector 2 Int) (Canvas r) (Vector 2 Int) -> Vector 2 Int forall s a. s -> Getting a s a -> a ^.Getting (Vector 2 Int) (Canvas r) (Vector 2 Int) forall s a. HasDimensions s a => Lens' s a Lens' (Canvas r) (Vector 2 Int) dimensions - ts :: MisoString -ts = Matrix 3 3 r -> MisoString + ts :: MisoString +ts = Matrix 3 3 r -> MisoString forall r. ToSvgCoordinate r => Matrix 3 3 r -> MisoString matrixToMisoString (Matrix 3 3 r -> MisoString) -> Matrix 3 3 r -> MisoString forall a b. (a -> b) -> a -> b $ Canvas r -canvasCanvas r +canvasCanvas r -> Getting (Matrix 3 3 r) (Canvas r) (Matrix 3 3 r) -> Matrix 3 3 r forall s a. s -> Getting a s a -> a ^.(Viewport r -> Const (Matrix 3 3 r) (Viewport r)) diff --git a/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.StaticCanvas.html b/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.StaticCanvas.html index 571c6d53c..c2ad5412b 100644 --- a/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.StaticCanvas.html +++ b/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.StaticCanvas.html @@ -37,15 +37,15 @@ -- *A Canvas -- | Static Canvas that has a "proper" Coordinate system whose origin is in the bottom left. -data StaticCanvas r = +data StaticCanvas r = Canvas { forall r. StaticCanvas r -> Viewport r -_theViewport :: !(Viewport r) +_theViewport :: !(Viewport r) -- ^ the viewport , forall r. StaticCanvas r -> Vector 2 Int _dimensions :: !(Vector 2 Int) -- ^ dimensions (width,height) in pixels, of the canvas } - deriving stock (StaticCanvas r -> StaticCanvas r -> Bool + deriving stock (StaticCanvas r -> StaticCanvas r -> Bool (StaticCanvas r -> StaticCanvas r -> Bool) -> (StaticCanvas r -> StaticCanvas r -> Bool) -> Eq (StaticCanvas r) @@ -58,7 +58,7 @@ Eq) -- | Lens to access the viewport of a Canvas -theViewport :: Lens (StaticCanvas r) (StaticCanvas s) (Viewport r) (Viewport s) +theViewport :: Lens (StaticCanvas r) (StaticCanvas s) (Viewport r) (Viewport s) theViewport :: forall r s (f :: * -> *). Functor f => (Viewport r -> f (Viewport s)) @@ -69,28 +69,28 @@ forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens StaticCanvas r -> Viewport r forall r. StaticCanvas r -> Viewport r -_theViewport (\StaticCanvas r -c Viewport s -vp -> StaticCanvas r -c { _theViewport = vp }) +_theViewport (\StaticCanvas r +c Viewport s +vp -> StaticCanvas r +c { _theViewport = vp }) -- | Class for types that have a 'dimensions' field -class HasDimensions s a | s -> a where +class HasDimensions s a | s -> a where -- | Lens to access the Dimensions field - dimensions :: Lens' s a + dimensions :: Lens' s a -instance HasDimensions (StaticCanvas r) (Vector 2 Int) where - dimensions :: Lens' (StaticCanvas r) (Vector 2 Int) +instance HasDimensions (StaticCanvas r) (Vector 2 Int) where + dimensions :: Lens' (StaticCanvas r) (Vector 2 Int) dimensions = (StaticCanvas r -> Vector 2 Int) -> (StaticCanvas r -> Vector 2 Int -> StaticCanvas r) -> Lens' (StaticCanvas r) (Vector 2 Int) forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b lens StaticCanvas r -> Vector 2 Int forall r. StaticCanvas r -> Vector 2 Int -_dimensions (\StaticCanvas r -c Vector 2 Int -d -> StaticCanvas r -c { _dimensions = d}) +_dimensions (\StaticCanvas r +c Vector 2 Int +d -> StaticCanvas r +c { _dimensions = d}) {-# INLINE dimensions #-} @@ -112,17 +112,17 @@ -------------------------------------------------------------------------------- -- | Create a canvas -staticCanvas :: Num r - => Int -> Int -> StaticCanvas r +staticCanvas :: Num r + => Int -> Int -> StaticCanvas r staticCanvas :: forall r. Num r => Int -> Int -> StaticCanvas r -staticCanvas Int -w Int -h = let v :: Vector 2 Int -v = Int -> Int -> Vector 2 Int +staticCanvas Int +w Int +h = let v :: Vector 2 Int +v = Int -> Int -> Vector 2 Int forall r. r -> r -> Vector 2 r Vector2 Int -w Int -h +w Int +h in Viewport r -> Vector 2 Int -> StaticCanvas r forall r. Viewport r -> Vector 2 Int -> StaticCanvas r Canvas (Vector 2 r -> Viewport r @@ -134,8 +134,8 @@ fromIntegral (Int -> r) -> Vector 2 Int -> Vector 2 r forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Vector 2 Int -v)) Vector 2 Int -v +v)) Vector 2 Int +v -------------------------------------------------------------------------------- -- * The Controller @@ -149,17 +149,17 @@ -- | Draws the actual canvas -staticCanvas_ :: (RealFrac r, ToSvgCoordinate r) - => StaticCanvas r - -> [Attribute action] -> [View action] -> View action +staticCanvas_ :: (RealFrac r, ToSvgCoordinate r) + => StaticCanvas r + -> [Attribute action] -> [View action] -> View action staticCanvas_ :: forall r action. (RealFrac r, ToSvgCoordinate r) => StaticCanvas r -> [Attribute action] -> [View action] -> View action -staticCanvas_ StaticCanvas r -canvas [Attribute action] -ats [View action] -vs = +staticCanvas_ StaticCanvas r +canvas [Attribute action] +ats [View action] +vs = [Attribute action] -> [View action] -> View action forall action. [Attribute action] -> [View action] -> View action svg_ ([ MisoString -> Attribute action @@ -172,7 +172,7 @@ ms (Int -> Attribute action) -> Int -> Attribute action forall a b. (a -> b) -> a -> b $ Int -w +w , MisoString -> Attribute action forall action. MisoString -> Attribute action height_ (MisoString -> Attribute action) @@ -183,25 +183,25 @@ ms (Int -> Attribute action) -> Int -> Attribute action forall a b. (a -> b) -> a -> b $ Int -h +h -- , viewBox_ $ outerVB ] [Attribute action] -> [Attribute action] -> [Attribute action] forall a. Semigroup a => a -> a -> a <> [Attribute action] -ats) +ats) [ [Attribute action] -> [View action] -> View action forall action. [Attribute action] -> [View action] -> View action g_ [ MisoString -> Attribute action forall action. MisoString -> Attribute action transform_ MisoString -ts ] [View action] -vs +ts ] [View action] +vs ] where - (Vector2 Int -w Int -h) = StaticCanvas r -canvasStaticCanvas r + (Vector2 Int +w Int +h) = StaticCanvas r +canvasStaticCanvas r -> Getting (Vector 2 Int) (StaticCanvas r) (Vector 2 Int) -> Vector 2 Int forall s a. s -> Getting a s a -> a @@ -209,13 +209,13 @@ forall s a. HasDimensions s a => Lens' s a Lens' (StaticCanvas r) (Vector 2 Int) dimensions - ts :: MisoString -ts = Matrix 3 3 r -> MisoString + ts :: MisoString +ts = Matrix 3 3 r -> MisoString forall r. ToSvgCoordinate r => Matrix 3 3 r -> MisoString matrixToMisoString (Matrix 3 3 r -> MisoString) -> Matrix 3 3 r -> MisoString forall a b. (a -> b) -> a -> b $ StaticCanvas r -canvasStaticCanvas r +canvasStaticCanvas r -> Getting (Matrix 3 3 r) (StaticCanvas r) (Matrix 3 3 r) -> Matrix 3 3 r forall s a. s -> Getting a s a -> a @@ -257,35 +257,35 @@ transformationMatrix -- | Renders a matrix as a MisoString -matrixToMisoString :: ToSvgCoordinate r => Matrix 3 3 r -> MisoString +matrixToMisoString :: ToSvgCoordinate r => Matrix 3 3 r -> MisoString matrixToMisoString :: forall r. ToSvgCoordinate r => Matrix 3 3 r -> MisoString -matrixToMisoString Matrix 3 3 r -m = MisoString +matrixToMisoString Matrix 3 3 r +m = MisoString "matrix(" MisoString -> MisoString -> MisoString forall a. Semigroup a => a -> a -> a <> [MisoString] -> MisoString MisoString.unwords [MisoString -a,MisoString -b,MisoString -c,MisoString -e,MisoString -d,MisoString -f] MisoString -> MisoString -> MisoString +a,MisoString +b,MisoString +c,MisoString +e,MisoString +d,MisoString +f] MisoString -> MisoString -> MisoString forall a. Semigroup a => a -> a -> a <> MisoString ")" where - (Vector3 (Vector3 MisoString -a MisoString -b MisoString -c) - (Vector3 MisoString -d MisoString -e MisoString -f) + (Vector3 (Vector3 MisoString +a MisoString +b MisoString +c) + (Vector3 MisoString +d MisoString +e MisoString +f) Vector 3 MisoString _ ) = (Matrix 3 3 r -mMatrix 3 3 r +mMatrix 3 3 r -> (Matrix 3 3 r -> Matrix 3 3 MisoString) -> Matrix 3 3 MisoString forall a b. a -> (a -> b) -> b &(r -> Identity MisoString) diff --git a/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.Writer.html b/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.Writer.html index 3751ef82c..00047a970 100644 --- a/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.Writer.html +++ b/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.Writer.html @@ -54,15 +54,15 @@ -- | Helper function to construct drawing functions. I..e it allows -- you do pre-specify a bunch of attributes that should be drawn -- (ats1) yet allow more attributes to be added by the user later. -withAts :: ([Attribute action] -> [View action] -> View action) - -> [Attribute action] -> [Attribute action] -> View action +withAts :: ([Attribute action] -> [View action] -> View action) + -> [Attribute action] -> [Attribute action] -> View action withAts :: forall action. ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> View action -withAts [Attribute action] -> [View action] -> View action -f [Attribute action] -ats1 [Attribute action] -ats2 = ([Attribute action] -> [View action] -> View action) +withAts [Attribute action] -> [View action] -> View action +f [Attribute action] +ats1 [Attribute action] +ats2 = ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> [View action] @@ -74,68 +74,68 @@ -> [View action] -> View action withAts' [Attribute action] -> [View action] -> View action -f [Attribute action] -ats1 [Attribute action] -ats2 [] +f [Attribute action] +ats1 [Attribute action] +ats2 [] -- | Helper function to construct a View. See 'withAts' for its usage. -withAts' :: ([Attribute action] -> [View action] -> View action) - -> [Attribute action] - -> [Attribute action] - -> [View action] - -> View action +withAts' :: ([Attribute action] -> [View action] -> View action) + -> [Attribute action] + -> [Attribute action] + -> [View action] + -> View action withAts' :: forall action. ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> [View action] -> View action -withAts' [Attribute action] -> [View action] -> View action -f [Attribute action] -ats1 [Attribute action] -ats2 = [Attribute action] -> [View action] -> View action -f ([Attribute action] -ats1 [Attribute action] -> [Attribute action] -> [Attribute action] +withAts' [Attribute action] -> [View action] -> View action +f [Attribute action] +ats1 [Attribute action] +ats2 = [Attribute action] -> [View action] -> View action +f ([Attribute action] +ats1 [Attribute action] -> [Attribute action] -> [Attribute action] forall a. Semigroup a => a -> a -> a <> [Attribute action] -ats2) +ats2) -------------------------------------------------------------------------------- -- * Default implementations for drawing geometric objects -- | Default implementation for drawing geometric objects -class Drawable t where +class Drawable t where {-# MINIMAL draw | drawWith #-} -- | Draws the given object with the given attributes - draw :: t -> [Attribute action] -> View action - draw t -x [Attribute action] -ats = t -> [Attribute action] -> [View action] -> View action + draw :: t -> [Attribute action] -> View action + draw t +x [Attribute action] +ats = t -> [Attribute action] -> [View action] -> View action forall action. t -> [Attribute action] -> [View action] -> View action forall t action. Drawable t => t -> [Attribute action] -> [View action] -> View action drawWith t -x [Attribute action] -ats [] +x [Attribute action] +ats [] -- | draw the given object, as well as the given "children" - drawWith :: t -> [Attribute action] -> [View action] -> View action - drawWith t -x [Attribute action] -ats [View action] -_b = t -> [Attribute action] -> View action + drawWith :: t -> [Attribute action] -> [View action] -> View action + drawWith t +x [Attribute action] +ats [View action] +_b = t -> [Attribute action] -> View action forall action. t -> [Attribute action] -> View action forall t action. Drawable t => t -> [Attribute action] -> View action draw t -x [Attribute action] -ats +x [Attribute action] +ats -instance (Drawable l, Drawable r) => Drawable (Either l r) where - draw :: forall action. Either l r -> [Attribute action] -> View action +instance (Drawable l, Drawable r) => Drawable (Either l r) where + draw :: forall action. Either l r -> [Attribute action] -> View action draw = (l -> [Attribute action] -> View action) -> (r -> [Attribute action] -> View action) -> Either l r @@ -154,16 +154,16 @@ t -> [Attribute action] -> View action draw -instance ToMisoString r => Drawable (Point 2 r) where - draw :: forall action. Point 2 r -> [Attribute action] -> View action +instance ToMisoString r => Drawable (Point 2 r) where + draw :: forall action. Point 2 r -> [Attribute action] -> View action draw = Point 2 r -> [Attribute action] -> View action forall point r action. (Point_ point 2 r, ToMisoString r) => point -> [Attribute action] -> View action dPoint -instance (Point_ point 2 r, ToMisoString r, Num r) => Drawable (Rectangle point) where - draw :: forall action. Rectangle point -> [Attribute action] -> View action +instance (Point_ point 2 r, ToMisoString r, Num r) => Drawable (Rectangle point) where + draw :: forall action. Rectangle point -> [Attribute action] -> View action draw = Rectangle point -> [Attribute action] -> View action forall rectangle point r action. (Rectangle_ rectangle point, Point_ point 2 r, ToMisoString r, @@ -171,9 +171,9 @@ rectangle -> [Attribute action] -> View action dRectangle -instance ( Point_ point 2 r, EndPoint_ (endPoint point), IxValue (endPoint point) ~ point - , ToMisoString r) => Drawable (LineSegment endPoint point) where - draw :: forall action. +instance ( Point_ point 2 r, EndPoint_ (endPoint point), IxValue (endPoint point) ~ point + , ToMisoString r) => Drawable (LineSegment endPoint point) where + draw :: forall action. LineSegment endPoint point -> [Attribute action] -> View action draw = LineSegment endPoint point -> [Attribute action] -> View action forall lineSegment point r action. @@ -182,13 +182,13 @@ lineSegment -> [Attribute action] -> View action dLineSegment -instance ( Point_ point 2 r, ToMisoString r - , Traversable1 f - , Ixed (f point), IxValue (f point) ~ point, Index (f point) ~ Int - , HasFromFoldable1 f - , TraversableWithIndex Int f - ) => Drawable (PolyLineF f point) where - draw :: forall action. +instance ( Point_ point 2 r, ToMisoString r + , Traversable1 f + , Ixed (f point), IxValue (f point) ~ point, Index (f point) ~ Int + , HasFromFoldable1 f + , TraversableWithIndex Int f + ) => Drawable (PolyLineF f point) where + draw :: forall action. PolyLineF f point -> [Attribute action] -> View action draw = PolyLineF f point -> [Attribute action] -> View action forall polyLine point r action. @@ -196,9 +196,9 @@ polyLine -> [Attribute action] -> View action dPolyLine -instance ( Point_ point 2 r, VertexContainer f point, HasFromFoldable1 f - , ToMisoString r) => Drawable (SimplePolygonF f point) where - draw :: forall action. +instance ( Point_ point 2 r, VertexContainer f point, HasFromFoldable1 f + , ToMisoString r) => Drawable (SimplePolygonF f point) where + draw :: forall action. SimplePolygonF f point -> [Attribute action] -> View action draw = SimplePolygonF f point -> [Attribute action] -> View action forall simplePolygon point r action. @@ -206,9 +206,9 @@ simplePolygon -> [Attribute action] -> View action dSimplePolygon -instance ( Point_ point 2 r, VertexContainer f point, HasFromFoldable1 f - , ToMisoString r) => Drawable (ConvexPolygonF f point) where - draw :: forall action. +instance ( Point_ point 2 r, VertexContainer f point, HasFromFoldable1 f + , ToMisoString r) => Drawable (ConvexPolygonF f point) where + draw :: forall action. ConvexPolygonF f point -> [Attribute action] -> View action draw = SimplePolygonF f point -> [Attribute action] -> View action forall simplePolygon point r action. @@ -225,16 +225,16 @@ ConvexPolygonF f point -> SimplePolygonF f point toSimplePolygon -instance (Point_ point 2 r, ToMisoString r, Floating r) => Drawable (Circle point) where - draw :: forall action. Circle point -> [Attribute action] -> View action +instance (Point_ point 2 r, ToMisoString r, Floating r) => Drawable (Circle point) where + draw :: forall action. Circle point -> [Attribute action] -> View action draw = Circle point -> [Attribute action] -> View action forall point r action. (Point_ point 2 r, ToMisoString r) => Circle point -> [Attribute action] -> View action dCircle -instance (Point_ point 2 r, ToMisoString r, Floating r) => Drawable (Disk point) where - draw :: forall action. Disk point -> [Attribute action] -> View action +instance (Point_ point 2 r, ToMisoString r, Floating r) => Drawable (Disk point) where + draw :: forall action. Disk point -> [Attribute action] -> View action draw = Disk point -> [Attribute action] -> View action forall disk point r action. (Disk_ disk point, Point_ point 2 r, ToMisoString r, Floating r) => @@ -269,12 +269,12 @@ -- * Functions to draw geometric objects -- | Draw a point -dPoint :: (Point_ point 2 r, ToMisoString r) => point -> [Attribute action] -> View action +dPoint :: (Point_ point 2 r, ToMisoString r) => point -> [Attribute action] -> View action dPoint :: forall point r action. (Point_ point 2 r, ToMisoString r) => point -> [Attribute action] -> View action -dPoint point -p = ([Attribute action] -> [View action] -> View action) +dPoint point +p = ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> View action forall action. ([Attribute action] -> [View action] -> View action) @@ -288,7 +288,7 @@ ms (r -> MisoString) -> r -> MisoString forall a b. (a -> b) -> a -> b $ point -ppoint -> Getting r point r -> r +ppoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -302,7 +302,7 @@ ms (r -> MisoString) -> r -> MisoString forall a b. (a -> b) -> a -> b $ point -ppoint -> Getting r point r -> r +ppoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -320,16 +320,16 @@ ] -- | Draw a rectangle -dRectangle :: ( Rectangle_ rectangle point, Point_ point 2 r, ToMisoString r, Num r) - => rectangle -> [Attribute action] -> View action +dRectangle :: ( Rectangle_ rectangle point, Point_ point 2 r, ToMisoString r, Num r) + => rectangle -> [Attribute action] -> View action dRectangle :: forall rectangle point r action. (Rectangle_ rectangle point, Point_ point 2 r, ToMisoString r, Num r) => rectangle -> [Attribute action] -> View action -dRectangle rectangle -b = let Point2 MisoString -x MisoString -y = ASetter (Point 2 r) (Point 2 MisoString) r MisoString +dRectangle rectangle +b = let Point2 MisoString +x MisoString +y = ASetter (Point 2 r) (Point 2 MisoString) r MisoString -> (r -> MisoString) -> Point 2 r -> Point 2 MisoString forall s t a b. ASetter s t a b -> (a -> b) -> s -> t over ASetter (Point 2 r) (Point 2 MisoString) r MisoString @@ -350,7 +350,7 @@ -> Point 2 r -> Point 2 MisoString forall a b. (a -> b) -> a -> b $ rectangle -brectangle -> Getting (Point 2 r) rectangle (Point 2 r) -> Point 2 r +brectangle -> Getting (Point 2 r) rectangle (Point 2 r) -> Point 2 r forall s a. s -> Getting a s a -> a ^.(point -> Const (Point 2 r) point) -> rectangle -> Const (Point 2 r) rectangle @@ -369,14 +369,14 @@ Lens' point (Point d r) Lens' point (Point 2 r) asPoint - Vector2 MisoString -w MisoString -h = r -> MisoString + Vector2 MisoString +w MisoString +h = r -> MisoString forall str. ToMisoString str => str -> MisoString ms (r -> MisoString) -> Vector 2 r -> Vector 2 MisoString forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> rectangle -brectangle +brectangle -> Getting (Vector 2 r) rectangle (Vector 2 r) -> Vector 2 r forall s a. s -> Getting a s a -> a ^.(rectangle -> Vector 2 r) @@ -399,28 +399,28 @@ rect_ [ MisoString -> Attribute action forall action. MisoString -> Attribute action x_ MisoString -x, MisoString -> Attribute action +x, MisoString -> Attribute action forall action. MisoString -> Attribute action y_ MisoString -y, MisoString -> Attribute action +y, MisoString -> Attribute action forall action. MisoString -> Attribute action width_ MisoString -w, MisoString -> Attribute action +w, MisoString -> Attribute action forall action. MisoString -> Attribute action height_ MisoString -h, MisoString -> Attribute action +h, MisoString -> Attribute action forall action. MisoString -> Attribute action fill_ MisoString "none"] -- | Draw a simple polygon -dSimplePolygon :: (SimplePolygon_ simplePolygon point r, ToMisoString r) - => simplePolygon -> [Attribute action] -> View action +dSimplePolygon :: (SimplePolygon_ simplePolygon point r, ToMisoString r) + => simplePolygon -> [Attribute action] -> View action dSimplePolygon :: forall simplePolygon point r action. (SimplePolygon_ simplePolygon point r, ToMisoString r) => simplePolygon -> [Attribute action] -> View action -dSimplePolygon simplePolygon -pg = ([Attribute action] -> [View action] -> View action) +dSimplePolygon simplePolygon +pg = ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> View action forall action. ([Attribute action] -> [View action] -> View action) @@ -438,7 +438,7 @@ toPointsString ([point] -> MisoString) -> [point] -> MisoString forall a b. (a -> b) -> a -> b $ simplePolygon -pgsimplePolygon +pgsimplePolygon -> Getting (Endo [point]) simplePolygon point -> [point] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..Getting (Endo [point]) simplePolygon point @@ -476,13 +476,13 @@ -- | Draw a polyline -dPolyLine :: (PolyLine_ polyLine point, Point_ point 2 r, ToMisoString r) - => polyLine -> [Attribute action] -> View action +dPolyLine :: (PolyLine_ polyLine point, Point_ point 2 r, ToMisoString r) + => polyLine -> [Attribute action] -> View action dPolyLine :: forall polyLine point r action. (PolyLine_ polyLine point, Point_ point 2 r, ToMisoString r) => polyLine -> [Attribute action] -> View action -dPolyLine polyLine -pl = ([Attribute action] -> [View action] -> View action) +dPolyLine polyLine +pl = ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> View action forall action. ([Attribute action] -> [View action] -> View action) @@ -501,7 +501,7 @@ toPointsString ([point] -> Attribute action) -> [point] -> Attribute action forall a b. (a -> b) -> a -> b $ polyLine -plpolyLine -> Getting (Endo [point]) polyLine point -> [point] +plpolyLine -> Getting (Endo [point]) polyLine point -> [point] forall s a. s -> Getting (Endo [a]) s a -> [a] ^..Getting (Endo [point]) polyLine point (Vertex polyLine -> Const (Endo [point]) (Vertex polyLine)) @@ -524,14 +524,14 @@ ] -- | Draw a line segment -dLineSegment :: ( LineSegment_ lineSegment point, Point_ point 2 r, ToMisoString r) - => lineSegment -> [Attribute action] -> View action +dLineSegment :: ( LineSegment_ lineSegment point, Point_ point 2 r, ToMisoString r) + => lineSegment -> [Attribute action] -> View action dLineSegment :: forall lineSegment point r action. (LineSegment_ lineSegment point, Point_ point 2 r, ToMisoString r) => lineSegment -> [Attribute action] -> View action -dLineSegment lineSegment -s = ([Attribute action] -> [View action] -> View action) +dLineSegment lineSegment +s = ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> View action forall action. ([Attribute action] -> [View action] -> View action) @@ -547,13 +547,13 @@ (Point_ point 2 r, ToMisoString r, Foldable f) => f point -> MisoString toPointsString [lineSegment -slineSegment -> Getting point lineSegment point -> point +slineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasStart seg p => Lens' seg p Lens' lineSegment point start, lineSegment -slineSegment -> Getting point lineSegment point -> point +slineSegment -> Getting point lineSegment point -> point forall s a. s -> Getting a s a -> a ^.Getting point lineSegment point forall seg p. HasEnd seg p => Lens' seg p @@ -561,7 +561,7 @@ end] ] -- | constructs a list of points to be used in the 'points' svg attribute. -toPointsString :: (Point_ point 2 r, ToMisoString r, Foldable f) => f point -> MisoString +toPointsString :: (Point_ point 2 r, ToMisoString r, Foldable f) => f point -> MisoString toPointsString :: forall point r (f :: * -> *). (Point_ point 2 r, ToMisoString r, Foldable f) => f point -> MisoString @@ -572,18 +572,18 @@ forall b c a. (b -> c) -> (a -> b) -> a -> c . (point -> MisoString) -> [point] -> [MisoString] forall a b. (a -> b) -> [a] -> [b] -map (\(Point2_ r -x r -y) -> [MisoString] -> MisoString +map (\(Point2_ r +x r +y) -> [MisoString] -> MisoString forall a. Monoid a => [a] -> a mconcat [r -> MisoString forall str. ToMisoString str => str -> MisoString ms r -x, MisoString +x, MisoString ",", r -> MisoString forall str. ToMisoString str => str -> MisoString ms r -y]) ([point] -> [MisoString]) +y]) ([point] -> [MisoString]) -> (f point -> [point]) -> f point -> [MisoString] forall b c a. (b -> c) -> (a -> b) -> a -> c . f point -> [point] @@ -593,14 +593,14 @@ -- | Draw a circle -dCircle :: (Point_ point 2 r, ToMisoString r) - => Circle point -> [Attribute action] -> View action +dCircle :: (Point_ point 2 r, ToMisoString r) + => Circle point -> [Attribute action] -> View action dCircle :: forall point r action. (Point_ point 2 r, ToMisoString r) => Circle point -> [Attribute action] -> View action -dCircle (Circle point -c NumType point -r) = ([Attribute action] -> [View action] -> View action) +dCircle (Circle point +c NumType point +r) = ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> View action forall action. ([Attribute action] -> [View action] -> View action) @@ -621,7 +621,7 @@ -> NumType point -> Attribute action forall a b. (a -> b) -> a -> b $ NumType point -r +r , MisoString -> Attribute action forall action. MisoString -> Attribute action ry_ (MisoString -> Attribute action) @@ -636,7 +636,7 @@ -> NumType point -> Attribute action forall a b. (a -> b) -> a -> b $ NumType point -r +r , MisoString -> Attribute action forall action. MisoString -> Attribute action cx_ (MisoString -> Attribute action) @@ -647,7 +647,7 @@ ms (r -> Attribute action) -> r -> Attribute action forall a b. (a -> b) -> a -> b $ point -cpoint -> Getting r point r -> r +cpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -665,7 +665,7 @@ ms (r -> Attribute action) -> r -> Attribute action forall a b. (a -> b) -> a -> b $ point -cpoint -> Getting r point r -> r +cpoint -> Getting r point r -> r forall s a. s -> Getting a s a -> a ^.Getting r point r forall (d :: Nat) point r. @@ -680,23 +680,23 @@ ] -- | Draw a disk -dDisk :: (Disk_ disk point, Point_ point 2 r, ToMisoString r, Floating r) - => disk -> [Attribute action] -> View action +dDisk :: (Disk_ disk point, Point_ point 2 r, ToMisoString r, Floating r) + => disk -> [Attribute action] -> View action dDisk :: forall disk point r action. (Disk_ disk point, Point_ point 2 r, ToMisoString r, Floating r) => disk -> [Attribute action] -> View action -dDisk (Disk_ point -c NumType disk -r) = Circle point -> [Attribute action] -> View action +dDisk (Disk_ point +c NumType disk +r) = Circle point -> [Attribute action] -> View action forall point r action. (Point_ point 2 r, ToMisoString r) => Circle point -> [Attribute action] -> View action dCircle (point -> NumType point -> Circle point forall point. point -> NumType point -> Circle point Circle point -c NumType disk +c NumType disk NumType point -r) +r) -- instance (ToMisoString r, Drawable v, Drawable => Drawable (PlanarSubdivision s v e f r) @@ -740,11 +740,11 @@ -------------------------------------------------------------------------------- -- * Functions to draw ipe objects -instance ToMisoString r => Drawable (Ipe.IpeObject r) where - draw :: forall action. IpeObject r -> [Attribute action] -> View action +instance ToMisoString r => Drawable (Ipe.IpeObject r) where + draw :: forall action. IpeObject r -> [Attribute action] -> View action draw = \case - Ipe.IpeGroup IpeObject' Group r -g -> (Group r + Ipe.IpeGroup IpeObject' Group r +g -> (Group r :+ Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip]) -> [Attribute action] -> View action @@ -759,9 +759,9 @@ draw Group r :+ Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Clip] IpeObject' Group r -g - Ipe.IpeImage IpeObject' Image r -i -> (Image r :+ Attributes' r CommonAttributes) +g + Ipe.IpeImage IpeObject' Image r +i -> (Image r :+ Attributes' r CommonAttributes) -> [Attribute action] -> View action forall action. (Image r :+ Attributes' r CommonAttributes) @@ -771,9 +771,9 @@ t -> [Attribute action] -> View action draw Image r :+ Attributes' r CommonAttributes IpeObject' Image r -i - Ipe.IpeTextLabel IpeObject' TextLabel r -t -> (TextLabel r :+ Attributes' r CommonAttributes) +i + Ipe.IpeTextLabel IpeObject' TextLabel r +t -> (TextLabel r :+ Attributes' r CommonAttributes) -> [Attribute action] -> View action forall action. (TextLabel r :+ Attributes' r CommonAttributes) @@ -783,9 +783,9 @@ t -> [Attribute action] -> View action draw TextLabel r :+ Attributes' r CommonAttributes IpeObject' TextLabel r -t - Ipe.IpeMiniPage IpeObject' MiniPage r -m -> (MiniPage r :+ Attributes' r CommonAttributes) +t + Ipe.IpeMiniPage IpeObject' MiniPage r +m -> (MiniPage r :+ Attributes' r CommonAttributes) -> [Attribute action] -> View action forall action. (MiniPage r :+ Attributes' r CommonAttributes) @@ -795,9 +795,9 @@ t -> [Attribute action] -> View action draw MiniPage r :+ Attributes' r CommonAttributes IpeObject' MiniPage r -m - Ipe.IpeUse IpeObject' IpeSymbol r -u -> (IpeSymbol r +m + Ipe.IpeUse IpeObject' IpeSymbol r +u -> (IpeSymbol r :+ Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen, @@ -819,9 +819,9 @@ '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Pen, 'Size] IpeObject' IpeSymbol r -u - Ipe.IpePath IpeObject' Path r -p -> (Path r +u + Ipe.IpePath IpeObject' Path r +p -> (Path r :+ Attributes' r '[ 'Layer, 'Matrix, 'Pin, 'Transformations, 'Stroke, 'Fill, 'Dash, @@ -846,26 +846,26 @@ 'Pen, 'LineCap, 'LineJoin, 'FillRule, 'Arrow, 'RArrow, 'StrokeOpacity, 'Opacity, 'Tiling, 'Gradient] IpeObject' Path r -p +p -instance ( Drawable g - , AllConstrained IpeToMisoAttr rs - , ReifyConstraint ToMisoString (IA.Attr f) rs - , RMap rs, RecordToList rs - , RecAll (IA.Attr f) rs ToMisoString - ) => Drawable (g :+ IA.Attributes f rs) where - draw :: forall action. +instance ( Drawable g + , AllConstrained IpeToMisoAttr rs + , ReifyConstraint ToMisoString (IA.Attr f) rs + , RMap rs, RecordToList rs + , RecAll (IA.Attr f) rs ToMisoString + ) => Drawable (g :+ IA.Attributes f rs) where + draw :: forall action. (g :+ Attributes f rs) -> [Attribute action] -> View action -draw (g -i :+ Attributes f rs -iAts) [Attribute action] -ats = g -> [Attribute action] -> View action +draw (g +i :+ Attributes f rs +iAts) [Attribute action] +ats = g -> [Attribute action] -> View action forall action. g -> [Attribute action] -> View action forall t action. Drawable t => t -> [Attribute action] -> View action draw g -i (Attributes f rs -> [Attribute action] +i (Attributes f rs -> [Attribute action] forall (rs :: [AttributeUniverse]) (f :: TyFun AttributeUniverse (*) -> *) action. (AllConstrained IpeToMisoAttr rs, RMap rs, RecordToList rs, @@ -873,19 +873,19 @@ RecAll (Attr f) rs ToMisoString) => Attributes f rs -> [Attribute action] svgWriteAttrs Attributes f rs -iAts [Attribute action] -> [Attribute action] -> [Attribute action] +iAts [Attribute action] -> [Attribute action] -> [Attribute action] forall a. Semigroup a => a -> a -> a <> [Attribute action] -ats) +ats) -instance ToMisoString r => Drawable (Ipe.Group r) where - draw :: forall action. Group r -> [Attribute action] -> View action -draw (Ipe.Group [IpeObject r] -os) [Attribute action] -ats = [Attribute action] -> [View action] -> View action +instance ToMisoString r => Drawable (Ipe.Group r) where + draw :: forall action. Group r -> [Attribute action] -> View action +draw (Ipe.Group [IpeObject r] +os) [Attribute action] +ats = [Attribute action] -> [View action] -> View action forall action. [Attribute action] -> [View action] -> View action g_ [Attribute action] -ats ((IpeObject r -> View action) -> [IpeObject r] -> [View action] +ats ((IpeObject r -> View action) -> [IpeObject r] -> [View action] forall a b. (a -> b) -> [a] -> [b] map ((IpeObject r -> [Attribute action] -> View action) -> [Attribute action] -> IpeObject r -> View action @@ -896,25 +896,25 @@ Drawable t => t -> [Attribute action] -> View action draw []) [IpeObject r] -os) +os) -instance ToMisoString r => Drawable (Ipe.Image r) where - draw :: forall action. Image r -> [Attribute action] -> View action +instance ToMisoString r => Drawable (Ipe.Image r) where + draw :: forall action. Image r -> [Attribute action] -> View action draw Image r -_ [Attribute action] -ats = [Attribute action] -> [View action] -> View action +_ [Attribute action] +ats = [Attribute action] -> [View action] -> View action forall action. [Attribute action] -> [View action] -> View action text_ [Attribute action] -ats [MisoString -> View action +ats [MisoString -> View action forall action. MisoString -> View action text MisoString "image"] -instance ToMisoString r => Drawable (Ipe.TextLabel r) where - draw :: forall action. TextLabel r -> [Attribute action] -> View action -draw (Ipe.Label MisoString -t Point 2 r -p) [Attribute action] -ats = [Attribute action] -> [View action] -> View action +instance ToMisoString r => Drawable (Ipe.TextLabel r) where + draw :: forall action. TextLabel r -> [Attribute action] -> View action +draw (Ipe.Label MisoString +t Point 2 r +p) [Attribute action] +ats = [Attribute action] -> [View action] -> View action forall action. [Attribute action] -> [View action] -> View action text_ ([ MisoString -> Attribute action forall action. MisoString -> Attribute action @@ -923,24 +923,24 @@ $ Point 2 r -> MisoString forall r. ToMisoString r => Point 2 r -> MisoString moveTo Point 2 r -p ] [Attribute action] -> [Attribute action] -> [Attribute action] +p ] [Attribute action] -> [Attribute action] -> [Attribute action] forall a. Semigroup a => a -> a -> a <> [Attribute action] -ats) [MisoString -> View action +ats) [MisoString -> View action forall action. MisoString -> View action text (MisoString -> View action) -> MisoString -> View action forall a b. (a -> b) -> a -> b $ MisoString -> MisoString forall str. ToMisoString str => str -> MisoString ms MisoString -t ] -instance ToMisoString r => Drawable (Ipe.MiniPage r) where - draw :: forall action. MiniPage r -> [Attribute action] -> View action -draw (Ipe.MiniPage MisoString -t Point 2 r -p r -w) [Attribute action] -ats = [Attribute action] -> [View action] -> View action +t ] +instance ToMisoString r => Drawable (Ipe.MiniPage r) where + draw :: forall action. MiniPage r -> [Attribute action] -> View action +draw (Ipe.MiniPage MisoString +t Point 2 r +p r +w) [Attribute action] +ats = [Attribute action] -> [View action] -> View action forall action. [Attribute action] -> [View action] -> View action text_ ([ MisoString -> Attribute action forall action. MisoString -> Attribute action @@ -949,7 +949,7 @@ $ Point 2 r -> MisoString forall r. ToMisoString r => Point 2 r -> MisoString moveTo Point 2 r -p +p , MisoString -> Attribute action forall action. MisoString -> Attribute action width_ (MisoString -> Attribute action) -> MisoString -> Attribute action @@ -957,11 +957,11 @@ $ r -> MisoString forall str. ToMisoString str => str -> MisoString ms r -w +w ] [Attribute action] -> [Attribute action] -> [Attribute action] forall a. Semigroup a => a -> a -> a <> [Attribute action] -ats) +ats) [MisoString -> View action forall action. MisoString -> View action text (MisoString -> View action) -> MisoString -> View action @@ -969,10 +969,10 @@ $ MisoString -> MisoString forall str. ToMisoString str => str -> MisoString ms MisoString -t] +t] -- | renders a translation matrix -moveTo :: ToMisoString r => Point 2 r -> MisoString +moveTo :: ToMisoString r => Point 2 r -> MisoString moveTo :: forall r. ToMisoString r => Point 2 r -> MisoString moveTo (ASetter (Point 2 r) (Point 2 MisoString) r MisoString -> (r -> MisoString) -> Point 2 r -> Point 2 MisoString @@ -991,27 +991,27 @@ (NumType (Point 2 MisoString)) coordinates r -> MisoString forall str. ToMisoString str => str -> MisoString -ms -> Point2 MisoString -x MisoString -y) = MisoString +ms -> Point2 MisoString +x MisoString +y) = MisoString "translate(" MisoString -> MisoString -> MisoString forall a. Semigroup a => a -> a -> a <> MisoString -x MisoString -> MisoString -> MisoString +x MisoString -> MisoString -> MisoString forall a. Semigroup a => a -> a -> a <> MisoString " " MisoString -> MisoString -> MisoString forall a. Semigroup a => a -> a -> a <> MisoString -y MisoString -> MisoString -> MisoString +y MisoString -> MisoString -> MisoString forall a. Semigroup a => a -> a -> a <> MisoString ")" -instance ToMisoString r => Drawable (Ipe.IpeSymbol r) where - draw :: forall action. IpeSymbol r -> [Attribute action] -> View action -draw (Ipe.Symbol Point 2 r -p MisoString +instance ToMisoString r => Drawable (Ipe.IpeSymbol r) where + draw :: forall action. IpeSymbol r -> [Attribute action] -> View action +draw (Ipe.Symbol Point 2 r +p MisoString _ ) = ([Attribute action] -> [View action] -> View action) -> [Attribute action] -> [Attribute action] -> View action forall action. @@ -1022,11 +1022,11 @@ ellipse_ [ MisoString -> Attribute action forall action. MisoString -> Attribute action rx_ MisoString -r +r , MisoString -> Attribute action forall action. MisoString -> Attribute action ry_ MisoString -r +r , MisoString -> Attribute action forall action. MisoString -> Attribute action cx_ (MisoString -> Attribute action) @@ -1037,7 +1037,7 @@ ms (r -> Attribute action) -> r -> Attribute action forall a b. (a -> b) -> a -> b $ Point 2 r -pPoint 2 r -> Getting r (Point 2 r) r -> r +pPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -1055,7 +1055,7 @@ ms (r -> Attribute action) -> r -> Attribute action forall a b. (a -> b) -> a -> b $ Point 2 r -pPoint 2 r -> Getting r (Point 2 r) r -> r +pPoint 2 r -> Getting r (Point 2 r) r -> r forall s a. s -> Getting a s a -> a ^.Getting r (Point 2 r) r forall (d :: Nat) point r. @@ -1065,15 +1065,15 @@ yCoord ] where - r :: MisoString -r = MisoString + r :: MisoString +r = MisoString "5" -instance ToMisoString r => Drawable (Ipe.Path r) where - draw :: forall action. Path r -> [Attribute action] -> View action -draw (Ipe.Path Seq (PathSegment r) -s) [Attribute action] -ats = [Attribute action] -> [View action] -> View action +instance ToMisoString r => Drawable (Ipe.Path r) where + draw :: forall action. Path r -> [Attribute action] -> View action +draw (Ipe.Path Seq (PathSegment r) +s) [Attribute action] +ats = [Attribute action] -> [View action] -> View action forall action. [Attribute action] -> [View action] -> View action g_ [] ((PathSegment r -> View action) -> [PathSegment r] -> [View action] forall a b. (a -> b) -> [a] -> [b] @@ -1091,7 +1091,7 @@ "none"Attribute action -> [Attribute action] -> [Attribute action] forall a. a -> [a] -> [a] :[Attribute action] -ats)) ([PathSegment r] -> [View action]) +ats)) ([PathSegment r] -> [View action]) -> (Seq (PathSegment r) -> [PathSegment r]) -> Seq (PathSegment r) -> [View action] @@ -1103,27 +1103,27 @@ -> Seq (PathSegment r) -> [View action] forall a b. (a -> b) -> a -> b $ Seq (PathSegment r) -s) +s) -- svg fills paths by default; don't do that unless specified otherwise -instance ToMisoString r => Drawable (Ipe.PathSegment r) where - draw :: forall action. PathSegment r -> [Attribute action] -> View action +instance ToMisoString r => Drawable (Ipe.PathSegment r) where + draw :: forall action. PathSegment r -> [Attribute action] -> View action draw = \case - Ipe.PolyLineSegment PolyLine (Point 2 r) -pl -> PolyLine (Point 2 r) -> [Attribute action] -> View action + Ipe.PolyLineSegment PolyLine (Point 2 r) +pl -> PolyLine (Point 2 r) -> [Attribute action] -> View action forall polyLine point r action. (PolyLine_ polyLine point, Point_ point 2 r, ToMisoString r) => polyLine -> [Attribute action] -> View action dPolyLine PolyLine (Point 2 r) -pl +pl Ipe.PolygonPath Orientation -_ SimplePolygon (Point 2 r) -pg -> SimplePolygon (Point 2 r) -> [Attribute action] -> View action +_ SimplePolygon (Point 2 r) +pg -> SimplePolygon (Point 2 r) -> [Attribute action] -> View action forall simplePolygon point r action. (SimplePolygon_ simplePolygon point r, ToMisoString r) => simplePolygon -> [Attribute action] -> View action dSimplePolygon SimplePolygon (Point 2 r) -pg -- TODO: maybe don't ignore the orientation +pg -- TODO: maybe don't ignore the orientation PathSegment r _ -> String -> [Attribute action] -> View action forall a. HasCallStack => String -> a @@ -1137,32 +1137,32 @@ -------------------------------------------------------------------------------- -type SvgF action = MisoString -> Attribute action +type SvgF action = MisoString -> Attribute action -- | Functon to write all attributes in a Rec -svgWriteAttrs :: ( AllConstrained IpeToMisoAttr rs - , RMap rs, RecordToList rs - , ReifyConstraint ToMisoString (IA.Attr f) rs - , RecAll (IA.Attr f) rs ToMisoString +svgWriteAttrs :: ( AllConstrained IpeToMisoAttr rs + , RMap rs, RecordToList rs + , ReifyConstraint ToMisoString (IA.Attr f) rs + , RecAll (IA.Attr f) rs ToMisoString ) - => IA.Attributes f rs - -> [Attribute action] + => IA.Attributes f rs + -> [Attribute action] svgWriteAttrs :: forall (rs :: [AttributeUniverse]) (f :: TyFun AttributeUniverse (*) -> *) action. (AllConstrained IpeToMisoAttr rs, RMap rs, RecordToList rs, ReifyConstraint ToMisoString (Attr f) rs, RecAll (Attr f) rs ToMisoString) => Attributes f rs -> [Attribute action] -svgWriteAttrs (IA.Attrs Rec (Attr f) rs -r) = ((MisoString -> Attribute action, MisoString) -> Attribute action) +svgWriteAttrs (IA.Attrs Rec (Attr f) rs +r) = ((MisoString -> Attribute action, MisoString) -> Attribute action) -> [(MisoString -> Attribute action, MisoString)] -> [Attribute action] forall a b. (a -> b) -> [a] -> [b] -map (\(MisoString -> Attribute action -g,MisoString -x) -> MisoString -> Attribute action -g MisoString -x) ([(MisoString -> Attribute action, MisoString)] +map (\(MisoString -> Attribute action +g,MisoString +x) -> MisoString -> Attribute action +g MisoString +x) ([(MisoString -> Attribute action, MisoString)] -> [Attribute action]) -> (Rec (Const (Maybe (MisoString -> Attribute action, MisoString))) rs @@ -1219,42 +1219,42 @@ Const (Maybe (MisoString -> Attribute action)) a -> Const (Maybe MisoString) a -> Const (Maybe (MisoString -> Attribute action, MisoString)) a -f (Rec (Attr f) rs +f (Rec (Attr f) rs -> Rec (Const (Maybe (MisoString -> Attribute action))) rs forall (rs :: [AttributeUniverse]) (f :: AttributeUniverse -> *) action. AllConstrained IpeToMisoAttr rs => Rec f rs -> Rec (Const (Maybe (SvgF action))) rs writeAttrFunctions Rec (Attr f) rs -r) +r) (Rec (Attr f) rs -> Rec (Const (Maybe MisoString)) rs forall {u} (f :: TyFun u (*) -> *) (rs :: [u]). (ReifyConstraint ToMisoString (Attr f) rs, RMap rs, RecAll (Attr f) rs ToMisoString) => Rec (Attr f) rs -> Rec (Const (Maybe MisoString)) rs writeAttrValues Rec (Attr f) rs -r) +r) where - f :: Const (f a) b -> Const (f a) b -> Const (f (a, a)) b -f (Const f a -mn) (Const f a -mv) = f (a, a) -> Const (f (a, a)) b + f :: Const (f a) b -> Const (f a) b -> Const (f (a, a)) b +f (Const f a +mn) (Const f a +mv) = f (a, a) -> Const (f (a, a)) b forall k a (b :: k). a -> Const a b Const (f (a, a) -> Const (f (a, a)) b) -> f (a, a) -> Const (f (a, a)) b forall a b. (a -> b) -> a -> b $ (,) (a -> a -> (a, a)) -> f a -> f (a -> (a, a)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> f a -mn f (a -> (a, a)) -> f a -> f (a, a) +mn f (a -> (a, a)) -> f a -> f (a, a) forall a b. f (a -> b) -> f a -> f b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> f a -mv +mv -- | Writing Attribute names -writeAttrFunctions :: AllConstrained IpeToMisoAttr rs - => Rec f rs - -> Rec (Const (Maybe (SvgF action))) rs +writeAttrFunctions :: AllConstrained IpeToMisoAttr rs + => Rec f rs + -> Rec (Const (Maybe (SvgF action))) rs writeAttrFunctions :: forall (rs :: [AttributeUniverse]) (f :: AttributeUniverse -> *) action. AllConstrained IpeToMisoAttr rs => @@ -1264,17 +1264,17 @@ Rec (Const (Maybe (SvgF action))) '[] forall {u} (a :: u -> *). Rec a '[] RNil -writeAttrFunctions (f r -x :& Rec f rs -xs) = Maybe (SvgF action) -> Const (Maybe (SvgF action)) r +writeAttrFunctions (f r +x :& Rec f rs +xs) = Maybe (SvgF action) -> Const (Maybe (SvgF action)) r forall k a (b :: k). a -> Const a b Const (f r -> Maybe (SvgF action) forall (f :: AttributeUniverse -> *) (s :: AttributeUniverse) action. IpeToMisoAttr s => f s -> Maybe (SvgF action) -write'' f r -x) Const (Maybe (SvgF action)) r +write'' f r +x) Const (Maybe (SvgF action)) r -> Rec (Const (Maybe (SvgF action))) rs -> Rec (Const (Maybe (SvgF action))) (r : rs) forall {u} (a :: u -> *) (r :: u) (rs :: [u]). @@ -1285,14 +1285,14 @@ AllConstrained IpeToMisoAttr rs => Rec f rs -> Rec (Const (Maybe (SvgF action))) rs writeAttrFunctions Rec f rs -xs +xs where - write'' :: forall f s action. IpeToMisoAttr s => f s -> Maybe (SvgF action) - write'' :: forall (f :: AttributeUniverse -> *) (s :: AttributeUniverse) + write'' :: forall f s action. IpeToMisoAttr s => f s -> Maybe (SvgF action) + write'' :: forall (f :: AttributeUniverse -> *) (s :: AttributeUniverse) action. IpeToMisoAttr s => f s -> Maybe (SvgF action) -write'' f s +write'' f s _ = Proxy s -> Maybe (SvgF action) forall (a :: AttributeUniverse) (proxy :: AttributeUniverse -> *) action. @@ -1302,13 +1302,13 @@ proxy s -> Maybe (SvgF action) attrSvg (Proxy s forall {k} (t :: k). Proxy t -Proxy :: Proxy s) +Proxy :: Proxy s) -- | Writing the attribute values -writeAttrValues :: ( ReifyConstraint ToMisoString (IA.Attr f) rs, RMap rs - , RecAll (IA.Attr f) rs ToMisoString) - => Rec (IA.Attr f) rs -> Rec (Const (Maybe MisoString)) rs +writeAttrValues :: ( ReifyConstraint ToMisoString (IA.Attr f) rs, RMap rs + , RecAll (IA.Attr f) rs ToMisoString) + => Rec (IA.Attr f) rs -> Rec (Const (Maybe MisoString)) rs writeAttrValues :: forall {u} (f :: TyFun u (*) -> *) (rs :: [u]). (ReifyConstraint ToMisoString (Attr f) rs, RMap rs, RecAll (Attr f) rs ToMisoString) => @@ -1322,8 +1322,8 @@ (forall (x :: u). f x -> g x) -> Rec f rs -> Rec g rs forall (f :: u -> *) (g :: u -> *). (forall (x :: u). f x -> g x) -> Rec f rs -> Rec g rs -rmap (\(Compose (Dict Attr f x -x)) -> Maybe MisoString -> Const (Maybe MisoString) x +rmap (\(Compose (Dict Attr f x +x)) -> Maybe MisoString -> Const (Maybe MisoString) x forall k a (b :: k). a -> Const a b Const (Maybe MisoString -> Const (Maybe MisoString) x) -> Maybe MisoString -> Const (Maybe MisoString) x @@ -1333,7 +1333,7 @@ ToMisoString (Attr f at) => Attr f at -> Maybe MisoString toMaybeValue Attr f x -x) +x) (Rec (Dict ToMisoString :. Attr f) rs -> Rec (Const (Maybe MisoString)) rs) -> (Rec (Attr f) rs -> Rec (Dict ToMisoString :. Attr f) rs) @@ -1348,13 +1348,13 @@ Rec f rs -> Rec (Dict c :. f) rs reifyConstraint @ToMisoString -toMaybeValue :: ToMisoString (IA.Attr f at) => IA.Attr f at -> Maybe MisoString +toMaybeValue :: ToMisoString (IA.Attr f at) => IA.Attr f at -> Maybe MisoString toMaybeValue :: forall {u} (f :: TyFun u (*) -> *) (at :: u). ToMisoString (Attr f at) => Attr f at -> Maybe MisoString -toMaybeValue Attr f at -a = case Attr f at -a of +toMaybeValue Attr f at +a = case Attr f at +a of Attr f at IA.NoAttr -> Maybe MisoString forall a. Maybe a @@ -1367,33 +1367,33 @@ $ Attr f at -> MisoString forall str. ToMisoString str => str -> MisoString toMisoString Attr f at -a +a -- | For the types representing attribute values we can get the name/key to use -- when serializing to ipe. -class IpeToMisoAttr (a :: IA.AttributeUniverse) where - attrSvg :: proxy a -> Maybe (SvgF action) +class IpeToMisoAttr (a :: IA.AttributeUniverse) where + attrSvg :: proxy a -> Maybe (SvgF action) -- CommonAttributeUnivers -instance IpeToMisoAttr IA.Layer where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Layer where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Layer -> Maybe (SvgF action) attrSvg proxy 'Layer _ = Maybe (SvgF action) forall a. Maybe a Nothing -instance IpeToMisoAttr IA.Matrix where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Matrix where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Matrix -> Maybe (SvgF action) attrSvg proxy 'Matrix _ = Maybe (SvgF action) forall a. Maybe a Nothing -- TODO -instance IpeToMisoAttr IA.Pin where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Pin where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Pin -> Maybe (SvgF action) attrSvg proxy 'Pin _ = Maybe (SvgF action) forall a. Maybe a Nothing -instance IpeToMisoAttr IA.Transformations where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Transformations where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Transformations -> Maybe (SvgF action) attrSvg proxy 'Transformations _ = Maybe (SvgF action) @@ -1401,7 +1401,7 @@ Nothing -- IpeSymbolAttributeUniversre -instance IpeToMisoAttr IA.Stroke where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Stroke where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Stroke -> Maybe (SvgF action) attrSvg proxy 'Stroke _ = SvgF action -> Maybe (SvgF action) @@ -1409,7 +1409,7 @@ Just SvgF action forall action. MisoString -> Attribute action stroke_ -instance IpeToMisoAttr IA.Fill where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Fill where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Fill -> Maybe (SvgF action) attrSvg proxy 'Fill _ = SvgF action -> Maybe (SvgF action) @@ -1417,13 +1417,13 @@ Just SvgF action forall action. MisoString -> Attribute action fill_ -instance IpeToMisoAttr IA.Pen where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Pen where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Pen -> Maybe (SvgF action) attrSvg proxy 'Pen _ = Maybe (SvgF action) forall a. Maybe a Nothing -instance IpeToMisoAttr IA.Size where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Size where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Size -> Maybe (SvgF action) attrSvg proxy 'Size _ = Maybe (SvgF action) @@ -1431,13 +1431,13 @@ Nothing -- PathAttributeUniverse -instance IpeToMisoAttr IA.Dash where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Dash where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Dash -> Maybe (SvgF action) attrSvg proxy 'Dash _ = Maybe (SvgF action) forall a. Maybe a Nothing -instance IpeToMisoAttr IA.LineCap where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.LineCap where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'LineCap -> Maybe (SvgF action) attrSvg proxy 'LineCap _ = SvgF action -> Maybe (SvgF action) @@ -1445,31 +1445,31 @@ Just SvgF action forall action. MisoString -> Attribute action strokeLinecap_ -instance IpeToMisoAttr IA.LineJoin where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.LineJoin where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'LineJoin -> Maybe (SvgF action) attrSvg proxy 'LineJoin _ = Maybe (SvgF action) forall a. Maybe a Nothing -instance IpeToMisoAttr IA.FillRule where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.FillRule where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'FillRule -> Maybe (SvgF action) attrSvg proxy 'FillRule _ = Maybe (SvgF action) forall a. Maybe a Nothing -instance IpeToMisoAttr IA.Arrow where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Arrow where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Arrow -> Maybe (SvgF action) attrSvg proxy 'Arrow _ = Maybe (SvgF action) forall a. Maybe a Nothing -instance IpeToMisoAttr IA.RArrow where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.RArrow where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'RArrow -> Maybe (SvgF action) attrSvg proxy 'RArrow _ = Maybe (SvgF action) forall a. Maybe a Nothing -instance IpeToMisoAttr IA.StrokeOpacity where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.StrokeOpacity where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'StrokeOpacity -> Maybe (SvgF action) attrSvg proxy 'StrokeOpacity _ = SvgF action -> Maybe (SvgF action) @@ -1477,7 +1477,7 @@ Just SvgF action forall action. MisoString -> Attribute action strokeOpacity_ -instance IpeToMisoAttr IA.Opacity where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Opacity where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Opacity -> Maybe (SvgF action) attrSvg proxy 'Opacity _ = SvgF action -> Maybe (SvgF action) @@ -1485,13 +1485,13 @@ Just SvgF action forall action. MisoString -> Attribute action fillOpacity_ -instance IpeToMisoAttr IA.Tiling where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Tiling where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Tiling -> Maybe (SvgF action) attrSvg proxy 'Tiling _ = Maybe (SvgF action) forall a. Maybe a Nothing -instance IpeToMisoAttr IA.Gradient where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Gradient where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Gradient -> Maybe (SvgF action) attrSvg proxy 'Gradient _ = Maybe (SvgF action) @@ -1499,7 +1499,7 @@ Nothing -- GroupAttributeUniverse -instance IpeToMisoAttr IA.Clip where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. +instance IpeToMisoAttr IA.Clip where attrSvg :: forall (proxy :: AttributeUniverse -> *) action. proxy 'Clip -> Maybe (SvgF action) attrSvg proxy 'Clip _ = Maybe (SvgF action) diff --git a/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.html b/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.html index 1e7f678c4..50544c0c3 100644 --- a/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.html +++ b/haddocks/hgeometry/svg/src/HGeometry.Miso.Svg.html @@ -39,12 +39,12 @@ -- | Given an file path, and a view whose root is an svg element, -- render the output to the given file. -renderSvgToFile :: OsPath -> Miso.View action -> IO () +renderSvgToFile :: OsPath -> Miso.View action -> IO () renderSvgToFile :: forall action. OsPath -> View action -> IO () -renderSvgToFile OsPath -fp = OsPath -> ByteString -> IO () +renderSvgToFile OsPath +fp = OsPath -> ByteString -> IO () File.writeFile OsPath -fp (ByteString -> IO ()) +fp (ByteString -> IO ()) -> (View action -> ByteString) -> View action -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . View action -> ByteString @@ -52,17 +52,17 @@ renderAsSvgByteString -- | Add the doctype -withDocType :: Svg.Svg a -> Svg.Svg a +withDocType :: Svg.Svg a -> Svg.Svg a withDocType :: forall a. Svg a -> Svg a -withDocType HtmlT Identity a -content = do +withDocType HtmlT Identity a +content = do SvgT Identity () forall (m :: * -> *). Monad m => SvgT m () Svg.doctype_ HtmlT Identity a -> [Attribute] -> HtmlT Identity a forall a. With a => a -> [Attribute] -> a Svg.with HtmlT Identity a -content +content [ Text -> Text -> Attribute Lucid.makeAttribute Text "xmlns" Text @@ -79,7 +79,7 @@ -- | Given an View whose root is an svg element, renders the view to a -- lazy Text -- -renderAsSvgText :: Miso.View action -> Text.Text +renderAsSvgText :: Miso.View action -> Text.Text renderAsSvgText :: forall action. View action -> Text renderAsSvgText = SvgT Identity () -> Text forall a. Html a -> Text @@ -101,7 +101,7 @@ -- | Given an View whose root is an svg element, renders the view to a -- lazy ByteString. -- -renderAsSvgByteString :: Miso.View action -> ByteString.ByteString +renderAsSvgByteString :: Miso.View action -> ByteString.ByteString renderAsSvgByteString :: forall action. View action -> ByteString renderAsSvgByteString = SvgT Identity () -> ByteString forall a. Html a -> ByteString