clipper

package module
v0.0.0-...-3274bcc Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 27, 2016 License: BSL-1.0 Imports: 5 Imported by: 8

README

go.clipper

BUILD

int32 version

$ go build -tags 'use_int32'

int64 version

$ go build -tags '!use_int32'
# or combine build tags
$ go build -tags '!use_int32,!use_xyz'

Documentation

Index

Constants

View Source
const (
	Skip       int = -2
	Unassigned int = -1
)

Variables

This section is empty.

Functions

func Area

func Area(poly Path) float64

func AreaCombined

func AreaCombined(polygons Paths) float64

func Int128Mul

func Int128Mul(lhs, rhs CInt) *big.Int

func Orientation

func Orientation(poly Path) bool

func PointInPolygon

func PointInPolygon(pt *IntPoint, path Path) int

returns 0 if false, +1 if true, -1 if pt ON polygon boundary See "The Point in Polygon Problem for Arbitrary Polygons" by Hormann & Agathos http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.5498&rep=rep1&type=pdf

Types

type CInt

type CInt int64

func Round

func Round(value float64) CInt

func TopX

func TopX(edge *TEdge, currentY *CInt) CInt

type ClipType

type ClipType int
const (
	CtIntersection ClipType = iota
	CtUnion
	CtDifference
	CtXor
)

type Clipper

type Clipper struct {
	ClipperBase

	ZFillFunction                   TZFillCallback
	ReverseSolution, StrictlySimple bool
	// contains filtered or unexported fields
}

func NewClipper

func NewClipper(initOptions InitOptions) *Clipper

func (*Clipper) AddEdgeToSEL

func (c *Clipper) AddEdgeToSEL(edge *TEdge)

func (*Clipper) AddGhostJoin

func (c *Clipper) AddGhostJoin(Op *OutPt, OffPt *IntPoint)

func (*Clipper) AddJoin

func (c *Clipper) AddJoin(Op1, Op2 *OutPt, OffPt *IntPoint)

func (*Clipper) AddLocalMaxPoly

func (c *Clipper) AddLocalMaxPoly(e1, e2 *TEdge, pt *IntPoint)

func (*Clipper) AddLocalMinPoly

func (c *Clipper) AddLocalMinPoly(e1, e2 *TEdge, pt *IntPoint) *OutPt

func (*Clipper) AddOutPt

func (c *Clipper) AddOutPt(e *TEdge, pt *IntPoint) *OutPt

func (*Clipper) AddPolyNodeToPaths

func (c *Clipper) AddPolyNodeToPaths(polynode *PolyNode, nt NodeType, paths Paths)

func (*Clipper) AppendPolygon

func (c *Clipper) AppendPolygon(e1, e2 *TEdge)

func (*Clipper) BuildIntersectList

func (c *Clipper) BuildIntersectList(topY CInt)

func (*Clipper) BuildResult

func (c *Clipper) BuildResult() Paths

func (*Clipper) BuildResult2

func (c *Clipper) BuildResult2(polytree *PolyTree)

func (*Clipper) CleanPolygon

func (c *Clipper) CleanPolygon(path Path, distance float64) Path

distance = proximity in units/pixels below which vertices will be stripped. Default ~= sqrt(2) so when adjacent vertices or semi-adjacent vertices have both x & y coords within 1 unit, then the second vertex will be stripped. default distance=1.415

func (*Clipper) CleanPolygons

func (c *Clipper) CleanPolygons(polys Paths,
	distance float64) Paths

------------------------------------------------------------------------------ default distance = 1.415

func (*Clipper) ClosedPathsFromPolyTree

func (c *Clipper) ClosedPathsFromPolyTree(polytree *PolyTree) Paths

func (*Clipper) CopyAELToSEL

func (c *Clipper) CopyAELToSEL()

func (*Clipper) CreateOutRec

func (c *Clipper) CreateOutRec() *OutRec

func (*Clipper) DeleteFromAEL

func (c *Clipper) DeleteFromAEL(e *TEdge)

func (*Clipper) DeleteFromSEL

func (c *Clipper) DeleteFromSEL(e *TEdge)

func (*Clipper) DisposeAllPolyPts

func (c *Clipper) DisposeAllPolyPts()

func (*Clipper) DisposeOutRec

func (c *Clipper) DisposeOutRec(index int)

func (*Clipper) DisposeScanbeamList

func (c *Clipper) DisposeScanbeamList()

func (*Clipper) DistanceFromLineSqrd

func (c *Clipper) DistanceFromLineSqrd(pt, ln1, ln2 *IntPoint) float64

func (*Clipper) DistanceSqrd

func (c *Clipper) DistanceSqrd(pt1, pt2 *IntPoint) float64

func (*Clipper) DoMaxima

func (c *Clipper) DoMaxima(e *TEdge)

func (*Clipper) DoSimplePolygons

func (c *Clipper) DoSimplePolygons()

func (*Clipper) DupOutPt

func (c *Clipper) DupOutPt(outPt *OutPt, InsertAfter bool) *OutPt

func (*Clipper) E2InsertsBeforeE1

func (c *Clipper) E2InsertsBeforeE1(e1, e2 *TEdge) bool

func (*Clipper) EdgesAdjacent

func (c *Clipper) EdgesAdjacent(inode *IntersectNode) bool

func (*Clipper) ExcludeOp

func (c *Clipper) ExcludeOp(op *OutPt) *OutPt

func (*Clipper) Execute1

func (c *Clipper) Execute1(clipType ClipType,
	subjFillType, clipFillType PolyFillType) (solution Paths, succeeded bool)

func (*Clipper) Execute2

func (c *Clipper) Execute2(clipType ClipType,
	subjFillType, clipFillType PolyFillType) (polytree *PolyTree, succeeded bool)

func (*Clipper) ExecuteInternal

func (c *Clipper) ExecuteInternal() bool

func (*Clipper) FirstIsBottomPt

func (c *Clipper) FirstIsBottomPt(btmPt1, btmPt2 *OutPt) bool

func (*Clipper) FixHoleLinkage

func (c *Clipper) FixHoleLinkage(outRec *OutRec)

func (*Clipper) FixupFirstLefts1

func (c *Clipper) FixupFirstLefts1(OldOutRec, NewOutRec *OutRec)

func (*Clipper) FixupFirstLefts2

func (c *Clipper) FixupFirstLefts2(OldOutRec, NewOutRec *OutRec)

func (*Clipper) FixupIntersectionOrder

func (c *Clipper) FixupIntersectionOrder() bool

func (*Clipper) FixupOutPolygon

func (c *Clipper) FixupOutPolygon(outRec *OutRec)

func (*Clipper) GetBottomPt

func (c *Clipper) GetBottomPt(pp *OutPt) *OutPt

func (*Clipper) GetDx

func (c *Clipper) GetDx(pt1, pt2 *IntPoint) float64

func (*Clipper) GetHorzDirection

func (c *Clipper) GetHorzDirection(HorzEdge *TEdge, Dir *Direction, Left, Right *CInt)

func (*Clipper) GetLowermostRec

func (c *Clipper) GetLowermostRec(outRec1, outRec2 *OutRec) *OutRec

func (*Clipper) GetMaximaPair

func (c *Clipper) GetMaximaPair(e *TEdge) *TEdge

func (*Clipper) GetNextInAEL

func (c *Clipper) GetNextInAEL(e *TEdge, direction Direction) *TEdge

func (*Clipper) GetOutRec

func (c *Clipper) GetOutRec(idx int) *OutRec

func (*Clipper) GetOverlap

func (c *Clipper) GetOverlap(a1, a2, b1, b2 CInt, Left, Right *CInt) bool

func (*Clipper) HorzSegmentsOverlap

func (c *Clipper) HorzSegmentsOverlap(seg1a, seg1b, seg2a, seg2b CInt) bool

func (*Clipper) InsertEdgeIntoAEL

func (c *Clipper) InsertEdgeIntoAEL(edge, startEdge *TEdge)

func (*Clipper) InsertLocalMinimaIntoAEL

func (c *Clipper) InsertLocalMinimaIntoAEL(botY CInt)

func (*Clipper) InsertScanbeam

func (c *Clipper) InsertScanbeam(Y CInt)

func (*Clipper) IntersectEdges

func (c *Clipper) IntersectEdges(e1, e2 *TEdge, pt *IntPoint, protect bool)

default protect=false

func (*Clipper) IntersectNodeSort

func (c *Clipper) IntersectNodeSort(node1, node2 *IntersectNode) int

func (*Clipper) IntersectPoint

func (c *Clipper) IntersectPoint(edge1, edge2 *TEdge) (ip *IntPoint)

func (*Clipper) IsContributing

func (c *Clipper) IsContributing(edge *TEdge) bool

func (*Clipper) IsEvenOddAltFillType

func (c *Clipper) IsEvenOddAltFillType(edge *TEdge) bool

func (*Clipper) IsEvenOddFillType

func (c *Clipper) IsEvenOddFillType(edge *TEdge) bool

func (*Clipper) IsIntermediate

func (c *Clipper) IsIntermediate(e *TEdge, Y CInt) bool

func (*Clipper) IsMaxima

func (c *Clipper) IsMaxima(e *TEdge, Y CInt) bool

func (*Clipper) IsMinima

func (c *Clipper) IsMinima(e *TEdge) bool

func (*Clipper) JoinCommonEdges

func (c *Clipper) JoinCommonEdges()

func (*Clipper) JoinHorz

func (c *Clipper) JoinHorz(op1, op1b, op2, op2b *OutPt,
	Pt *IntPoint, DiscardLeft bool) bool

func (*Clipper) JoinPoints

func (c *Clipper) JoinPoints(j *Join, outRec1, outRec2 *OutRec) bool

func (*Clipper) Minkowski

func (c *Clipper) Minkowski(pattern, path Path, IsSum, IsClosed bool) Paths

func (*Clipper) MinkowskiDiff

func (c *Clipper) MinkowskiDiff(poly1, poly2 Path) Paths

func (*Clipper) MinkowskiSum

func (c *Clipper) MinkowskiSum(pattern, path Path, pathIsClosed bool) Paths

func (*Clipper) MinkowskiSumAll

func (c *Clipper) MinkowskiSumAll(pattern Path, paths Paths, pathIsClosed bool) Paths

func (*Clipper) OpenPathsFromPolyTree

func (c *Clipper) OpenPathsFromPolyTree(polytree *PolyTree) Paths

func (*Clipper) Param1RightOfParam2

func (c *Clipper) Param1RightOfParam2(outRec1, outRec2 *OutRec) bool

func (*Clipper) ParseFirstLeft

func (c *Clipper) ParseFirstLeft(FirstLeft *OutRec) *OutRec

func (*Clipper) PointCount

func (c *Clipper) PointCount(pts *OutPt) int

func (*Clipper) PointsAreClose

func (c *Clipper) PointsAreClose(pt1, pt2 *IntPoint, distSqrd float64) bool

func (*Clipper) Poly2ContainsPoly1

func (c *Clipper) Poly2ContainsPoly1(outPt1, outPt2 *OutPt) bool

func (*Clipper) PolyTreeToPaths

func (c *Clipper) PolyTreeToPaths(polytree *PolyTree) Paths

func (*Clipper) PopScanbeam

func (c *Clipper) PopScanbeam() CInt

func (*Clipper) ProcessEdgesAtTopOfScanbeam

func (c *Clipper) ProcessEdgesAtTopOfScanbeam(topY CInt)

func (*Clipper) ProcessHorizontal

func (c *Clipper) ProcessHorizontal(horzEdge *TEdge, isTopOfScanbeam bool)

func (*Clipper) ProcessHorizontals

func (c *Clipper) ProcessHorizontals(isTopOfScanbeam bool)

func (*Clipper) ProcessIntersectList

func (c *Clipper) ProcessIntersectList()

func (*Clipper) ProcessIntersections

func (c *Clipper) ProcessIntersections(topY CInt) bool

func (*Clipper) Reset

func (c *Clipper) Reset()

func (*Clipper) ReversePaths

func (c *Clipper) ReversePaths(polys Paths)
func (c *Clipper) ReversePolyPtLinks(pp *OutPt)

func (*Clipper) SetHoleState

func (c *Clipper) SetHoleState(e *TEdge, outRec *OutRec)

func (*Clipper) SetWindingCount

func (c *Clipper) SetWindingCount(edge *TEdge)

func (*Clipper) SetZ

func (c *Clipper) SetZ(pt *IntPoint, e1, e2 *TEdge)

func (*Clipper) SimplifyPolygon

func (c *Clipper) SimplifyPolygon(poly Path,
	fillType PolyFillType) Paths

------------------------------------------------------------------------------ SimplifyPolygon functions ... Convert self-intersecting polygons into simple polygons ------------------------------------------------------------------------------ default fillType = PftEvenOdd

func (*Clipper) SimplifyPolygons

func (c *Clipper) SimplifyPolygons(polys Paths,
	fillType PolyFillType) Paths

default fillType = PftEvenOdd

func (*Clipper) SlopesNearCollinear

func (c *Clipper) SlopesNearCollinear(pt1,
	pt2, pt3 *IntPoint, distSqrd float64) bool

func (*Clipper) SwapPolyIndexes

func (c *Clipper) SwapPolyIndexes(edge1, edge2 *TEdge)

func (*Clipper) SwapPositionsInAEL

func (c *Clipper) SwapPositionsInAEL(edge1, edge2 *TEdge)

func (*Clipper) SwapPositionsInSEL

func (c *Clipper) SwapPositionsInSEL(edge1, edge2 *TEdge)

func (*Clipper) SwapSides

func (c *Clipper) SwapSides(edge1, edge2 *TEdge)

func (*Clipper) TranslatePath

func (c *Clipper) TranslatePath(path Path, delta *IntPoint) Path

func (*Clipper) UpdateEdgeIntoAEL

func (c *Clipper) UpdateEdgeIntoAEL(e *TEdge) *TEdge

func (*Clipper) UpdateOutPtIdxs

func (c *Clipper) UpdateOutPtIdxs(outrec *OutRec)

type ClipperBase

type ClipperBase struct {
	PreserveCollinear bool
	// contains filtered or unexported fields
}

func NewClipperBase

func NewClipperBase() *ClipperBase

func (*ClipperBase) AddPath

func (c *ClipperBase) AddPath(pg Path, polyType PolyType, Closed bool) bool

func (*ClipperBase) AddPaths

func (c *ClipperBase) AddPaths(ppg Paths, polyType PolyType, closed bool) bool

func (*ClipperBase) Clear

func (c *ClipperBase) Clear()

func (*ClipperBase) DisposeLocalMinimaList

func (c *ClipperBase) DisposeLocalMinimaList()

func (*ClipperBase) FindNextLocMin

func (c *ClipperBase) FindNextLocMin(E *TEdge) *TEdge

func (*ClipperBase) InitEdge

func (c *ClipperBase) InitEdge(e, eNext, ePrev *TEdge, pt *IntPoint)

func (*ClipperBase) InitEdge2

func (c *ClipperBase) InitEdge2(e *TEdge, polyType PolyType)

func (*ClipperBase) InsertLocalMinima

func (c *ClipperBase) InsertLocalMinima(newLm *LocalMinima)

func (*ClipperBase) IsHorizontal

func (c *ClipperBase) IsHorizontal(e *TEdge) bool

func (*ClipperBase) PointIsVertex

func (c *ClipperBase) PointIsVertex(pt *IntPoint, pp *OutPt) bool

func (*ClipperBase) PointOnLineSegment

func (c *ClipperBase) PointOnLineSegment(pt,
	linePt1, linePt2 *IntPoint, UseFullRange bool) bool

func (*ClipperBase) PointOnPolygon

func (c *ClipperBase) PointOnPolygon(pt *IntPoint, pp *OutPt, UseFullRange bool) bool

func (*ClipperBase) PopLocalMinima

func (c *ClipperBase) PopLocalMinima()

func (*ClipperBase) ProcessBound

func (c *ClipperBase) ProcessBound(E *TEdge, IsClockwise bool) *TEdge

func (*ClipperBase) Pt2IsBetweenPt1AndPt3

func (c *ClipperBase) Pt2IsBetweenPt1AndPt3(pt1, pt2, pt3 *IntPoint) bool

func (*ClipperBase) RangeTest

func (c *ClipperBase) RangeTest(Pt *IntPoint, useFullRange *bool)

func (*ClipperBase) RemoveEdge

func (c *ClipperBase) RemoveEdge(e *TEdge) *TEdge

func (*ClipperBase) Reset

func (c *ClipperBase) Reset()

func (*ClipperBase) ReverseHorizontal

func (c *ClipperBase) ReverseHorizontal(e *TEdge)

func (*ClipperBase) SetDx

func (c *ClipperBase) SetDx(e *TEdge)

func (*ClipperBase) SlopesEqual

func (c *ClipperBase) SlopesEqual(e1, e2 *TEdge, UseFullRange bool) bool

func (*ClipperBase) SlopesEqual3

func (c *ClipperBase) SlopesEqual3(pt1, pt2,
	pt3 *IntPoint, UseFullRange bool) bool

func (*ClipperBase) SlopesEqual4

func (c *ClipperBase) SlopesEqual4(pt1, pt2,
	pt3, pt4 *IntPoint, UseFullRange bool) bool

func (*ClipperBase) Swap

func (c *ClipperBase) Swap(val1, val2 *CInt)

type ClipperException

type ClipperException struct {
	// contains filtered or unexported fields
}

func NewClipperException

func NewClipperException(s string) *ClipperException

func (ClipperException) Error

func (e ClipperException) Error() string

type ClipperOffset

type ClipperOffset struct {
	ArcTolerance float64
	MiterLimit   float64
	// contains filtered or unexported fields
}

func NewClipperOffset

func NewClipperOffset() *ClipperOffset

func (*ClipperOffset) AddPath

func (co *ClipperOffset) AddPath(path Path, joinType JoinType, endType EndType)

func (*ClipperOffset) AddPaths

func (co *ClipperOffset) AddPaths(paths Paths, joinType JoinType, endType EndType)

func (*ClipperOffset) Clear

func (co *ClipperOffset) Clear()

func (*ClipperOffset) DoMiter

func (co *ClipperOffset) DoMiter(j, k int, r float64)

func (*ClipperOffset) DoOffset

func (co *ClipperOffset) DoOffset(delta float64)

func (*ClipperOffset) DoRound

func (co *ClipperOffset) DoRound(j, k int)

func (*ClipperOffset) DoSquare

func (co *ClipperOffset) DoSquare(j, k int)

func (*ClipperOffset) Execute

func (co *ClipperOffset) Execute(delta float64) (solution Paths)

func (*ClipperOffset) Execute2

func (co *ClipperOffset) Execute2(delta float64) (solution *PolyTree)

func (*ClipperOffset) FixOrientations

func (co *ClipperOffset) FixOrientations()

func (*ClipperOffset) GetUnitNormal

func (co *ClipperOffset) GetUnitNormal(pt1, pt2 *IntPoint) *DoublePoint

func (*ClipperOffset) OffsetPoint

func (co *ClipperOffset) OffsetPoint(j int, k *int, jointype JoinType)

func (*ClipperOffset) Round

func (co *ClipperOffset) Round(value float64) CInt

type Direction

type Direction int
const (
	DRightToLeft Direction = iota
	DLeftToRight
)

type DoublePoint

type DoublePoint struct {
	X float64
	Y float64
}

func CopyDoublePoint

func CopyDoublePoint(dp *DoublePoint) *DoublePoint

func NewDoublePoint

func NewDoublePoint(x, y float64) *DoublePoint

type EdgeSide

type EdgeSide int
const (
	EsLeft EdgeSide = iota
	EsRight
)

type EndType

type EndType int
const (
	EtClosedPolygon EndType = iota
	EtClosedLine
	EtOpenButt
	EtOpenSquare
	EtOpenRound
)

type InitOptions

type InitOptions int

InitOptions that can be passed to the constructor ...

const (
	IoNone              InitOptions = 0
	IoReverseSolution   InitOptions = 1
	IoStrictlySimple    InitOptions = 2
	IoPreserveCollinear InitOptions = 4
)

type IntPoint

type IntPoint struct {
	X CInt
	Y CInt
}

func NewIntPoint

func NewIntPoint(X, Y CInt) *IntPoint

func NewIntPointFromFloat

func NewIntPointFromFloat(x, y float64) *IntPoint

func (*IntPoint) Copy

func (ip *IntPoint) Copy() IntPoint

func (*IntPoint) Equals

func (a *IntPoint) Equals(b *IntPoint) bool

The == operator, which will also compare Z values if they exist, is usually used instead of this one. This may be a problem when using Z values.

func (*IntPoint) NotEqual

func (a *IntPoint) NotEqual(b *IntPoint) bool

func (IntPoint) String

func (p IntPoint) String() string

func (*IntPoint) ToDoublePoint

func (ip *IntPoint) ToDoublePoint() *DoublePoint

type IntRect

type IntRect struct {
	// contains filtered or unexported fields
}

func GetBounds

func GetBounds(paths Paths) *IntRect

func NewIntRect

func NewIntRect(l, t, r, b CInt) *IntRect

func (*IntRect) Copy

func (ir *IntRect) Copy() IntRect

type IntersectNode

type IntersectNode struct {
	Edge1, Edge2 *TEdge
	Pt           *IntPoint
}

func (*IntersectNode) String

func (in *IntersectNode) String() string

type IntersectNodeList

type IntersectNodeList []*IntersectNode

func (IntersectNodeList) Len

func (i IntersectNodeList) Len() int

func (IntersectNodeList) Less

func (i IntersectNodeList) Less(a, b int) bool

func (IntersectNodeList) Swap

func (i IntersectNodeList) Swap(a, b int)

type Join

type Join struct {
	OutPt1, OutPt2 *OutPt
	OffPt          *IntPoint
}

func (*Join) String

func (j *Join) String() string

type JoinType

type JoinType int
const (
	JtSquare JoinType = iota
	JtRound
	JtMiter
)

type LocalMinima

type LocalMinima struct {
	Y                     CInt
	LeftBound, RightBound *TEdge
	Next                  *LocalMinima
}

func (*LocalMinima) String

func (lm *LocalMinima) String() string

type NodeType

type NodeType int

type OutPt

type OutPt struct {
	Idx        int
	Pt         *IntPoint
	Next, Prev *OutPt
}

func (*OutPt) String

func (o *OutPt) String() string

type OutRec

type OutRec struct {
	Idx            int
	IsHole, IsOpen bool
	FirstLeft      *OutRec //see comments in clipper.pas
	Pts            *OutPt
	BottomPt       *OutPt
	PolyNode       *PolyNode
}

type Path

type Path []*IntPoint

func NewPath

func NewPath() Path

func (Path) String

func (p Path) String() string

type Paths

type Paths []Path

func NewPaths

func NewPaths() Paths

func (Paths) String

func (p Paths) String() string

type PolyFillType

type PolyFillType int

By far the most widely used winding rules for polygon filling are EvenOdd & NonZero (GDI, GDI+, XLib, OpenGL, Cairo, AGG, Quartz, SVG, Gr32) Others rules include Positive, Negative and ABS_GTR_EQ_TWO (only in OpenGL) see http://glprogramming.com/red/chapter11.html

const (
	PftEvenOdd PolyFillType = iota
	PftNonZero
	PftPositive
	PftNegative
)

type PolyNode

type PolyNode struct {
	IsOpen bool
	// contains filtered or unexported fields
}

func NewPolyNode

func NewPolyNode() *PolyNode

func (*PolyNode) AddChild

func (pn *PolyNode) AddChild(Child *PolyNode)

func (*PolyNode) ChildCount

func (pn *PolyNode) ChildCount() int

func (*PolyNode) Contour

func (pn *PolyNode) Contour() Path

func (*PolyNode) GetNext

func (pn *PolyNode) GetNext() *PolyNode

func (*PolyNode) GetNextSiblingUp

func (pn *PolyNode) GetNextSiblingUp() *PolyNode

func (*PolyNode) IsHole

func (pn *PolyNode) IsHole() bool

func (*PolyNode) IsHoleNode

func (pn *PolyNode) IsHoleNode() bool

func (*PolyNode) Parent

func (pn *PolyNode) Parent() *PolyNode

type PolyTree

type PolyTree struct {
	PolyNode
	// contains filtered or unexported fields
}

func NewPolyTree

func NewPolyTree() *PolyTree

func (*PolyTree) Clear

func (pt *PolyTree) Clear()

func (*PolyTree) GetFirst

func (pt *PolyTree) GetFirst() *PolyNode

func (*PolyTree) Total

func (pt *PolyTree) Total() int

type PolyType

type PolyType int
const (
	PtSubject PolyType = iota
	PtClip
)

type Scanbeam

type Scanbeam struct {
	Y    CInt
	Next *Scanbeam
}

func (*Scanbeam) String

func (s *Scanbeam) String() string

type TEdge

type TEdge struct {
	Bot, Curr, Top, Delta            IntPoint
	Dx                               float64
	PolyTyp                          PolyType
	Side                             EdgeSide
	WindDelta                        int //1 or -1 depending on winding direction
	WindCnt                          int
	WindCnt2                         int //winding count of the opposite polytype
	OutIdx                           int
	Next, Prev, NextInLML, NextInAEL *TEdge
	PrevInAEL, NextInSEL, PrevInSEL  *TEdge
}

func (*TEdge) String

func (e *TEdge) String() string

type TZFillCallback

type TZFillCallback interface {
	ZFill(bot1, top1, bot2, top2, intersectPt *IntPoint)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL