* add document method to check intersection and insideness with polygon
* impl lasso selection
* impl lasso select to always add to selection
* add hint for lasso selection
* fix calculating selection mode based on direction on each pointer move
* fix lasso polygon lagging behing mouse position
* add overlay to draw lasso polygon with fill color same as quad
* fix comment
* change removing from selection key binding from Sift + Ctrl to just Alt
* impl Alt to shrink selection for quad in path tool
* refactor rename SelectionType to SelectionShape
* impl lasso overlay for path tool
* impl selecting anchors and handles intersection lasso in path tool
* add keys hint info
* fix converting lasso polygon to closed subpath which is has less than two points
* Code review
* impl preferences-based selection mode to the Path tool for only for overlays,
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* visualize spline end points using overlays
* implement for spline tool to extend path by draging end points
* allow holding Shift to begin drawing a new spline subpath in the same layer
* implement spline tool to join two endpoints
* fix naming
* refactor spline tool
* impl spline tool snapping and overlays
* fix joining path and refactor
* improve join_path comment
* fix snapping overlays flickering by ignoring snapping in current layer
* fix inserting single point on aborting spline tool
* add snapping for endpoint even when regular snapping is disabled
* fix extending
* fix inserting new point instead of extending and Add hint for Shift to append
* fix grammatical errors and code style
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* add function to calculate if a subpath is inside polygon
* make is_subpath_inside_polygon() flexible
* obtimize is_subpath_inside_polygon function
* move is_inside_subpath function to Subpath struct method
* add interactive demo for subpath insideness
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>