[Enhancement] Two.Path.smooth method added#803
Merged
Merged
Conversation
Introduces a new `smooth` method to Path for advanced handle assignment and curve smoothing, supporting multiple algorithms. Refactors subdivision logic for more accurate handle inheritance, updates related tests, and improves type definitions and documentation for hit testing and group traversal.
Expanded JSDoc comments for getShapesAtPoint and contains methods to clarify options and coordinate expectations. Updated types.d.ts to include Path#contains signature and options. These changes improve developer understanding and TypeScript support for hit testing in world-space coordinates.
Updated path subdivision logic to generate cubic Bezier segments instead of lines, improving curve accuracy and handle placement. Refactored related utility functions and updated SVG interpreter tests to reflect new vertex structure and control points.
Introduces `contains` methods for Shape and Path, a `smooth` method for Path, and a `getShapesAtPoint` method for Group and Two. Refactors hit testing logic to support visibility, tolerance, and filtering options, and adds path smoothing and subdivision utilities for improved curve handling.
Eliminated unnecessary console.log statement that output shape objects during test execution.
Owner
Author
|
cc @yuinchien ⬆️ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses:
Add Path.smooth function #467
Added a manual
Path#smoothAPI that mirrors Paper.js’ smoothing modes (continuous,asymmetric,catmull-rom,geometric), keepsautomaticoff after smoothing, and respects range selection / open path endpoints via shared helpers insrc/utils/path.js.Reworked
Path.subdivideto use de Casteljau splitting so curved segments preserve their bezier handles and inserted anchors get correct commands, covering mixed curved/linear paths as well as SVG-imported compound paths.Introduced reusable handle utilities and solver logic in
src/utils/path.js, consuming them fromPath, and expanded QUnit coverage to validate smoothing handle assignment and subdivision handle recomputation.Note: SVG interpreter fixtures will need to be refreshed before landing to account for the new subdivision output.