mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-26 00:08:12 +08:00
Add path-bool library (#1952)
* Add path-bool library * Cleanup code * Cargo format * Integrate boolean ops into graphite * Add test for editor crash * Fix edge sort floating point instability * Add unit test for red-dress failure * Backport tests and aux functions * Use curvature based sorting * Convert linear cubic splines to line segments * Deduplicate reversed path segments * Fix epsilon for empty segments * Remove parameter based intersection pruning * Add support for reversed paths * Add benchmark infrastructure * Add intersection benchmark * Add recursion bound * Implement support for overlapping path segments * Remove rouge prinln * Fix sorting for bezier segments with one control point at the start of the segment * Cleanup log statements * Directly translate graphite paths to Path segments * Round data before passing it to path_bool * Fix flag_faces traversal order * Add test for white dots in bottom right of painted dreams * Make rounding configurable * Update demo artwork to remove manual path modifications * Convert from path segments to manipulator groups directly * Remove dead code * Fix clippy lints * Replace functions in path segment with methods and add documentation * Add more documentation * Close subpaths * Reorganize files and add README.md * Add license information * Code review * Fix license info * Adopt new node macro and fix demo artwork * Close subpaths with Z --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
co-authored by
Keavon Chambers
parent
2febbfd698
commit
3eb98c6d6d
@@ -0,0 +1,81 @@
|
||||
# This is a helper file for people using NixOS as their operating system.
|
||||
# If you don't know what this file does, you can safely ignore it.
|
||||
|
||||
# If you are using Nix as your package manager, you can run 'nix-shell'
|
||||
# in the root directory of the project and Nix will open a bash shell
|
||||
# with all the packages needed to build and run Graphite installed.
|
||||
# A shell.nix file is used in the Nix ecosystem to define a development
|
||||
# environment with specific dependencies. When you enter a Nix shell using
|
||||
# this file, it ensures that all the specified tools and libraries are
|
||||
# available regardless of the host system's configuration. This provides
|
||||
# a reproducible development environment across different machines and developers.
|
||||
|
||||
# You can enter the Nix shell and run Graphite like normal with:
|
||||
# > npm start
|
||||
# Or you can run it like this without needing to first enter the Nix shell:
|
||||
# > nix-shell --command "npm start"
|
||||
|
||||
let
|
||||
# Get oxalica's Rust overlay for better Rust integration
|
||||
rust-overlay-source = builtins.fetchGit {
|
||||
url = "https://github.com/oxalica/rust-overlay";
|
||||
};
|
||||
|
||||
# Import it so we can use it in Nix
|
||||
rust-overlay = import rust-overlay-source;
|
||||
|
||||
# Import system packages overlaid with the Rust overlay
|
||||
pkgs = import <nixpkgs> {
|
||||
overlays = [ rust-overlay ];
|
||||
};
|
||||
|
||||
# Define the rustc we need
|
||||
rustc-wasm = pkgs.rust-bin.stable.latest.default.override {
|
||||
targets = [ "wasm32-unknown-unknown" ];
|
||||
# wasm-pack needs this
|
||||
extensions = [ "rust-src" "rust-analyzer" "clippy"];
|
||||
};
|
||||
in
|
||||
# Make a shell with the dependencies we need
|
||||
pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
rustc-wasm
|
||||
nodejs
|
||||
cargo
|
||||
cargo-watch
|
||||
cargo-nextest
|
||||
cargo-expand
|
||||
wasm-pack
|
||||
binaryen
|
||||
wasm-bindgen-cli
|
||||
vulkan-loader
|
||||
libxkbcommon
|
||||
llvm
|
||||
gcc-unwrapped.lib
|
||||
llvmPackages.libcxxStdenv
|
||||
pkg-config
|
||||
# used for profiling
|
||||
gnuplot
|
||||
samply
|
||||
cargo-flamegraph
|
||||
|
||||
# For Tauri
|
||||
openssl
|
||||
glib
|
||||
gtk3
|
||||
libsoup
|
||||
webkitgtk
|
||||
|
||||
# For Raw-rs tests
|
||||
libraw
|
||||
|
||||
# Use Mold as a linker
|
||||
mold
|
||||
];
|
||||
|
||||
# Hacky way to run Cargo through Mold
|
||||
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [pkgs.openssl pkgs.vulkan-loader pkgs.libxkbcommon pkgs.llvmPackages.libcxxStdenv pkgs.gcc-unwrapped.lib pkgs.llvm pkgs.libraw];
|
||||
shellHook = ''
|
||||
alias cargo='mold --run cargo'
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user