Go to file
Thomas Cheng b84e647f40 Implement arcs for Bezier math library (#731)
* added arcs impl

Co-authored-by: Hannah Li <hannahli2010@gmail.com>
Co-authored-by: Rob Nadal <RobNadal@users.noreply.github.com>

* fixed arc drawing,  todo - fix linear check

Co-authored-by: Hannah Li <hannahli2010@gmail.com>

* fixed linear bug + added comments and tests

Co-authored-by: Hannah Li <hannahli2010@gmail.com>

* added max iteration guard + made params optional  + added impl todo

* Add functionality to get arcs between extrema

* Add ArcsOptions to manage optional parameters of the arcs function

* added slider to toggle between arcs impl

Co-authored-by: Rob Nadal <RobNadal@users.noreply.github.com>

* Remove unused types

* address some comments

* added rustdoc for CircularArc struct

* Extract duplicate code into helper, remove loop labels, use window function

* Make JsValue handling consistent in WasmBezier and add comments for the underlying type

* Add enum for MaximizeArcs Auto/On/Off functionality

* Change Auto to Automatic

* fix errors from resolving merge conflict

* fixed error from resolving merge conflicts

* fixed formatting

* address comments

* Small fix

* Add some missing comments

* address comments

* rename variable

* Use unit to show maximize_arcs values

* Change i32 to usize and other minor adjustments

* Change computation for middle t values

* Remove tsconfig

* Fix more usize number handling

Co-authored-by: Hannah Li <hannahli2010@gmail.com>
Co-authored-by: Rob Nadal <RobNadal@users.noreply.github.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-06 01:34:39 -04:00
.deploy Rename deployment script 2022-02-03 18:29:02 -08:00
.github Skip cargo-about in CI to save 5 minutes (#409) 2021-12-20 02:22:19 -08:00
.vscode Additional cleanup of prelude imports in editor codebase 2022-08-05 17:09:37 -07:00
bezier-rs Implement arcs for Bezier math library (#731) 2022-08-06 01:34:39 -04:00
docs Add frontend file structure docs and some related cleanup 2022-05-23 19:13:51 -07:00
editor Implement arcs for Bezier math library (#731) 2022-08-06 01:34:39 -04:00
frontend Fix various typos (#745) 2022-08-05 23:57:52 -04:00
graphene Restructure the entire editor codebase to consistently match the message hierarchy 2022-08-05 05:38:11 -07:00
libraries/dyn-any Add license information for node_graph crates 2022-08-04 11:47:38 +02:00
node-graph Add raster module to graphene_core 2022-08-04 12:34:05 +02:00
proc-macros Additional cleanup of prelude imports in editor codebase 2022-08-05 17:09:37 -07:00
website Update npm dependencies 2022-07-23 15:31:02 -07:00
.editorconfig Move .editorconfig to root for GitHub tab rendering 2021-03-24 14:02:26 -07:00
.gitattributes Add `npm start` script alias for `npm run serve` 2022-01-12 06:14:32 -08:00
.gitignore Add frontend file structure docs and some related cleanup 2022-05-23 19:13:51 -07:00
.gitmodules Add dyn-any as a submodule 2022-08-02 11:52:08 +02:00
.nvmrc Switch to Node.js 16 LTS, upgrade TypeScript, ESLint, and other dependencies (#395) 2021-11-29 03:32:09 -08:00
Cargo.lock Add raster module to graphene_core 2022-08-04 12:34:05 +02:00
Cargo.toml Integrate dyn-any into the main graphite repo 2022-08-04 08:52:24 +02:00
LICENSE.txt Add Apache 2 license 2020-07-12 13:58:50 -07:00
README.md Update readme 2022-05-25 00:27:29 -07:00
about.hbs Do not silently install cargo-about. (#377) 2021-09-19 16:58:04 +02:00
about.toml Auto-generate third-party license notices (#370) 2021-09-06 06:57:35 -07:00
deny.toml Rename vector components to match new terminology (#719) 2022-07-12 17:59:06 -07:00
package.json Add `npm start` script alias for `npm run serve` 2022-01-12 06:14:32 -08:00
rustfmt.toml Upgrade rustfmt to 2021 edition 2021-11-02 20:08:39 -07:00

README.md

Graphite logo

Redefining state-of-the-art graphics editing.

Graphite is an in-development raster and vector 2D graphics editor that is free and open source. It is designed to be powered by a node graph compositing engine that supercharges your layer stack, providing a completely non-destructive editing experience.

Right now, Graphite is a lightweight vector graphics editor available for alpha testing in your web browser. The node system is in the prototype stage and will be usable in later 2022, while raster graphics editing and a native desktop application will come next year.

Learn more on the project website.

Please star this GitHub repository to help build momentum.

Discord

If the Graphite project strikes your fancy, join our Discord community to chat with the community and development team. You're invited to stop by just to lurk, ask questions, offer suggestions, or get involved in the project. We are seeking collaborators to help design and develop the software and this is where we communicate.

Contributing

We need Rust and web developers! See instructions here for getting started.

We are also in search of artists to create beautiful sample work in Graphite and illustrations for the website and social media. Please get in touch if you are able to help out.

Design

The #1 priority for the Graphite software is providing a delightful user experience. Unlike some other open source applications, the UI, UX, and product design is not an afterthought, but a central guiding light in the software development process.

Below are some mockups demonstrating future goals for the user interface once nodes and raster photo editing is possible.

Graphite raster UI viewport mockup

Viewport interface mockup showcasing a photo editing project that utilizes Graphite's raster graphics pipeline, one of the upcoming roadmap milestones. Raster editing is not yet supported.

Graphite raster UI node graph mockup

Node graph mockup demonstrating how the layers directly correspond to nodes. Thick vertical (upward) lines represent compositing stacks and horizontal (rightward) links represent data flow connections.

Roadmap

Graphite does not use formal version numbers because of the constant rate of feature development and continuous release cycle. Changes can be tracked by commit hash. Development is broken into monthly sprints and less frequent release series based on major technology readiness milestones:

  • Alpha Milestone 1 is the current release series available at editor.graphite.rs which encompasses minimum-viable-product (MVP) vector editing features. Features and improvements are continually added and deployed. Regrettably, file format stability isn't guaranteed at this stage since it would prohibitively hinder the pace of development.

  • Alpha Milestone 2 is the next release series. It will introduce the node graph system for procedural vector editing. Late summer is the optimistic target.

  • Alpha Milestone 3 will probably focus on switching to an in-house vector graphics render engine built on wgpu.

  • Alpha Milestone 4 will probably introduce raster compositing.

  • Beta versions will follow once basic procedural vector and raster editing is fully supported. File format stability, authoring + sharing custom nodes/extensions, and a downloadable native desktop client will be included during or before Beta.

  • RAW photo editing, advanced color handling, automation and batch processing, and procedural painting workflows will be added during further Beta development.