Skip to main content

Module engine_fns

Module engine_fns 

Source
Expand description

Engine free functions - standalone utility functions for the sweep-line algorithm

Direct port from clipper.engine.cpp Copyright (c) Angus Johnson 2010-2025

Functions§

area_outpt
Calculate area of an OutPt circular list Direct port from clipper.engine.cpp line 366
area_triangle
Calculate area of a triangle formed by three points Direct port from clipper.engine.cpp line 380
build_path64_from_outpt
Build a Path64 from OutPt circular list Direct port from clipper.engine.cpp BuildPath64 (line 2891)
build_path_d_from_outpt
Build a PathD from OutPt circular list Direct port from clipper.engine.cpp BuildPathD (line 3055)
edges_adjacent_in_ael
Check if intersect node edges are adjacent in AEL Direct port from clipper.engine.cpp EdgesAdjacentInAEL (line 468)
extract_from_sel
Extract an active from the SEL (sorted edge list) Direct port from clipper.engine.cpp ExtractFromSEL
fix_outrec_pts
Fix all OutPt outrec references in an OutRec Direct port from clipper.engine.cpp FixOutRecPts (line 2158)
get_clean_path
Build a Path64 from an OutRec Direct port from clipper.engine.cpp GetCleanPath equivalent
get_curr_y_maxima_vertex
Get current Y maxima vertex for closed paths Direct port from clipper.engine.cpp line 243
get_curr_y_maxima_vertex_open
Get current Y maxima vertex for open paths Direct port from clipper.engine.cpp line 226
get_dx
Calculate slope dx for an edge defined by two points Direct port from clipper.engine.cpp line 116
get_last_op
Get the last output point for a hot edge Direct port from clipper.engine.cpp GetLastOp (line 2496)
get_maxima_pair
Get the maxima pair for an active edge Direct port from clipper.engine.cpp line 254
get_poly_type
Get the polytype of an active edge Direct port from clipper.engine.cpp line 162
get_real_outrec
Get the real (non-disposed) OutRec by following owner chain Direct port from clipper.engine.cpp GetRealOutRec (line 412)
insert1_before2_in_sel
Insert tmp before left in SEL Direct port from clipper.engine.cpp Insert1Before2InSEL
intersect_list_sort
Sort comparator for IntersectNodes Direct port from clipper.engine.cpp line 322
is_heading_left_horz
Check if a horizontal edge is heading left Direct port from clipper.engine.cpp line 149
is_heading_right_horz
Check if a horizontal edge is heading right Direct port from clipper.engine.cpp line 143
is_horizontal_active
Check if an active edge is horizontal Direct port from clipper.engine.cpp line 137
is_hot_edge
Check if an active edge is “hot” (has an output record) Direct port from clipper.engine.cpp line 67
is_invalid_path
Check if an OutPt path is invalid (single point or None) Direct port from clipper.engine.cpp line 105
is_joined
Check if an edge is joined Direct port from clipper.engine.cpp IsJoined (line 473)
is_maxima_active
Check if an active edge is at a local maximum Direct port from clipper.engine.cpp line 221
is_maxima_vertex
Check if a vertex is a local maximum Direct port from clipper.engine.cpp line 215
is_odd
Check if a value is odd Direct port from clipper.engine.cpp line 61
is_open_active
Check if an active edge is part of an open path Direct port from clipper.engine.cpp line 73
is_open_end_active
Check if an active edge’s vertex_top is an open end Direct port from clipper.engine.cpp line 87
is_open_end_vertex
Check if a vertex is an open end Direct port from clipper.engine.cpp line 79
is_same_poly_type
Check if two active edges are the same polytype Direct port from clipper.engine.cpp line 167
is_valid_ael_order
Check if the AEL ordering is valid between two active edges Direct port from clipper.engine.cpp IsValidAelOrder (line 1119)
is_valid_closed_path
Check if a closed path is valid Direct port from clipper.engine.cpp IsValidClosedPath (line 449)
is_valid_owner
Check if an owner is valid (not circular) Direct port from clipper.engine.cpp IsValidOwner (line 418)
is_very_small_triangle
Check if an OutPt triangle is very small Direct port from clipper.engine.cpp IsVerySmallTriangle (line 441)
move_splits
Move splits from one OutRec to another Direct port from clipper.engine.cpp MoveSplits (line 2269)
next_vertex
Get next vertex for an active edge (depends on winding direction) Direct port from clipper.engine.cpp line 177
outrec_is_ascending
Check if the hot edge is ascending (front edge of its outrec) Direct port from clipper.engine.cpp OutrecIsAscending (line 455)
path2_contains_path1
Check if path1 is contained within path2 using Path64 vectors Direct port from clipper.h line 717 - template Path2ContainsPath1 precondition: paths must not intersect, except for transient micro intersections
path2_contains_path1_outpt
Check if path1 (as OutPt list) is contained within path2 (as OutPt list) Direct port from clipper.engine.cpp Path2ContainsPath1 (line 576)
point_count
Count points in an OutPt circular list Direct port from clipper.engine.cpp line 266
point_in_op_polygon
Point in polygon test for OutPt-based polygons Direct port from clipper.engine.cpp PointInOpPolygon (line 488)
prev_prev_vertex
Get the vertex two steps back (useful for alternate edge top) Direct port from clipper.engine.cpp line 187
pts_really_close
Check if two points are really close (within 2 units) Direct port from clipper.engine.cpp PtsReallyClose (line 436)
reverse_out_pts
Reverse the direction of an OutPt circular list Direct port from clipper.engine.cpp line 388
set_dx
Set dx for an active edge from its bot/top points Direct port from clipper.engine.cpp line 172
set_owner
Set the owner of an OutRec Direct port from clipper.engine.cpp SetOwner (line 478)
swap_front_back_sides
Swap front and back sides of an OutRec Direct port from clipper.engine.cpp SwapFrontBackSides (line 460)
top_x
Get the x coordinate of an active edge at a given y Direct port from clipper.engine.cpp line 127
uncouple_outrec
Uncouple an OutRec from its edges Direct port from clipper.engine.cpp UncoupleOutRec (line 425)
update_outrec_owner
Update all OutPt outrec references in an OutRec Direct port from clipper.engine.cpp UpdateOutrecOwner (line 1684)