Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Boolean operations node #1091

Closed
3 tasks done
Tracked by #912 ...
Keavon opened this issue Mar 26, 2023 · 5 comments · Fixed by #1759
Closed
3 tasks done
Tracked by #912 ...

Boolean operations node #1091

Keavon opened this issue Mar 26, 2023 · 5 comments · Fixed by #1759
Assignees
Labels
Feature New feature or request Help Wanted Extra attention is needed Rust Involves Rust programming for the backend Time Sensitive Blocking another task that needs to be worked on now
Milestone

Comments

@Keavon
Copy link
Member

Keavon commented Mar 26, 2023

The legacy boolean operations were unstable, and are no longer compatible with the migration of vector data to nodes (#1065) so they had to be removed. But they're very important in the artist's workflow, so re-adding them as a node is high priority.

In order of importance, this should:

  • Either use web-sys to call Paper.js, or finish the attempted Paper.js Rust port in this branch
  • Introduce a vector operations node operating on vector data in the graph
  • Hook up the boolean buttons in the Select tool's options bar so they take the selected vector layers and combine them into one graph set up so they feed into the boolean operations node

Each of these would be suitable for a single or separate PRs depending on the author's approach.

@Keavon Keavon changed the title Boolean operations Boolean operations node Mar 26, 2023
@Keavon Keavon added Feature New feature or request Help Wanted Extra attention is needed Available Time Sensitive Blocking another task that needs to be worked on now Rust Involves Rust programming for the backend labels Mar 26, 2023
@github-project-automation github-project-automation bot moved this to Sprint 24 Goals in Task Board Mar 26, 2023
@Keavon Keavon removed the Available label May 31, 2023
@Keavon Keavon moved this to Available in Task Board May 31, 2023
@Keavon Keavon moved this from Always Up for Grabs to Short-Term in Task Board May 31, 2023
@Keavon Keavon removed the P-Critical label May 31, 2023
@be5invis
Copy link

I know an old thread in Paper.js which is all about the robustness of their Booleans. They eventually implemented it pretty good.
Thread: paperjs/paper.js#761
Tests (A LOT!): https://github.com/paperjs/paper.js/blob/master/test/tests/Path_Boolean.js

@Keavon
Copy link
Member Author

Keavon commented Jun 14, 2023

Thanks for the links @be5invis! I did actually attempt a (partially-complete) port of the paper.js logic: https://github.com/GraphiteEditor/Graphite/tree/paperjs-boolean-ops However I got stuck once it started depending on other files within their library. Any help porting this by a community member would be amazing and very helpful to us. Thanks!

@Keavon
Copy link
Member Author

Keavon commented Sep 9, 2023

One more idea: instead of porting paper.js, we could do a Rust -> JS -> Rust call to use it as an actual JS library (just doing data type conversion before and after).

@forresto
Copy link

Throwing in PathKit (Skia's WASM interface) for reference: https://skia.org/docs/user/modules/pathkit/#makefromoppathone-pathtwo-op

@github-project-automation github-project-automation bot moved this from Short-Term to Tasks Completed This Sprint in Task Board May 26, 2024
@forresto
Copy link

@Keavon Keavon added this to the Sprint 37 milestone Jun 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature New feature or request Help Wanted Extra attention is needed Rust Involves Rust programming for the backend Time Sensitive Blocking another task that needs to be worked on now
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

5 participants