gitextract_ahenmele/ ├── .branding ├── .cargo/ │ └── config.toml ├── .devcontainer/ │ └── devcontainer.json ├── .editorconfig ├── .envrc ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── build.yml │ ├── cargo-deny.yml │ ├── check.yml │ ├── comment-!build-commands.yml │ ├── comment-clippy-warnings.yaml │ ├── comment-profiling-changes.yaml │ ├── library-rawkit.yml │ ├── provide-shaders.yml │ ├── scripts/ │ │ └── artifact-upload.bash │ └── website.yml ├── .gitignore ├── .nix/ │ ├── default.nix │ ├── deps/ │ │ ├── cef.nix │ │ ├── crane.nix │ │ └── rust-gpu.nix │ ├── dev.nix │ └── pkgs/ │ ├── graphite-branding.nix │ ├── graphite-bundle.nix │ ├── graphite-flatpak-manifest.nix │ ├── graphite-raster-nodes-shaders.nix │ ├── graphite.nix │ └── tools/ │ └── third-party-licenses.nix ├── .nvmrc ├── .prettierrc ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── Cargo.toml ├── LICENSE.txt ├── README.md ├── about.toml ├── demo-artwork/ │ ├── changing-seasons.graphite │ ├── isometric-fountain.graphite │ ├── marbled-mandelbrot.graphite │ ├── painted-dreams.graphite │ ├── parametric-dunescape.graphite │ ├── procedural-string-lights.graphite │ ├── red-dress.graphite │ └── valley-of-spires.graphite ├── deny.toml ├── desktop/ │ ├── Cargo.toml │ ├── assets/ │ │ └── art.graphite.Graphite.desktop │ ├── bundle/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ └── src/ │ │ ├── common.rs │ │ ├── linux.rs │ │ ├── mac.rs │ │ ├── main.rs │ │ └── win.rs │ ├── embedded-resources/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ └── src/ │ │ └── lib.rs │ ├── platform/ │ │ ├── linux/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── main.rs │ │ ├── mac/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── helper.rs │ │ │ └── main.rs │ │ └── win/ │ │ ├── Cargo.toml │ │ ├── build.rs │ │ └── src/ │ │ └── main.rs │ ├── src/ │ │ ├── app.rs │ │ ├── cef/ │ │ │ ├── consts.rs │ │ │ ├── context/ │ │ │ │ ├── builder.rs │ │ │ │ ├── multithreaded.rs │ │ │ │ └── singlethreaded.rs │ │ │ ├── context.rs │ │ │ ├── dirs.rs │ │ │ ├── input/ │ │ │ │ ├── keymap.rs │ │ │ │ └── state.rs │ │ │ ├── input.rs │ │ │ ├── internal/ │ │ │ │ ├── browser_process_app.rs │ │ │ │ ├── browser_process_client.rs │ │ │ │ ├── browser_process_handler.rs │ │ │ │ ├── context_menu_handler.rs │ │ │ │ ├── display_handler.rs │ │ │ │ ├── life_span_handler.rs │ │ │ │ ├── load_handler.rs │ │ │ │ ├── render_handler.rs │ │ │ │ ├── render_process_app.rs │ │ │ │ ├── render_process_handler.rs │ │ │ │ ├── render_process_v8_handler.rs │ │ │ │ ├── resource_handler.rs │ │ │ │ ├── scheme_handler_factory.rs │ │ │ │ └── task.rs │ │ │ ├── internal.rs │ │ │ ├── ipc.rs │ │ │ ├── platform.rs │ │ │ └── utility.rs │ │ ├── cef.rs │ │ ├── cli.rs │ │ ├── consts.rs │ │ ├── dirs.rs │ │ ├── event.rs │ │ ├── gpu_context.rs │ │ ├── lib.rs │ │ ├── main.rs │ │ ├── persist.rs │ │ ├── preferences.rs │ │ ├── render/ │ │ │ ├── composite_shader.wgsl │ │ │ ├── frame_buffer_ref.rs │ │ │ └── state.rs │ │ ├── render.rs │ │ ├── window/ │ │ │ ├── linux.rs │ │ │ ├── mac/ │ │ │ │ ├── app.rs │ │ │ │ └── menu.rs │ │ │ ├── mac.rs │ │ │ ├── win/ │ │ │ │ └── native_handle.rs │ │ │ └── win.rs │ │ └── window.rs │ └── wrapper/ │ ├── Cargo.toml │ └── src/ │ ├── handle_desktop_wrapper_message.rs │ ├── intercept_editor_message.rs │ ├── intercept_frontend_message.rs │ ├── lib.rs │ ├── message_dispatcher.rs │ ├── messages.rs │ └── utils.rs ├── editor/ │ ├── Cargo.toml │ ├── build.rs │ └── src/ │ ├── application.rs │ ├── consts.rs │ ├── dispatcher.rs │ ├── lib.rs │ ├── macros.rs │ ├── messages/ │ │ ├── animation/ │ │ │ ├── animation_message.rs │ │ │ ├── animation_message_handler.rs │ │ │ └── mod.rs │ │ ├── app_window/ │ │ │ ├── app_window_message.rs │ │ │ ├── app_window_message_handler.rs │ │ │ └── mod.rs │ │ ├── broadcast/ │ │ │ ├── broadcast_message.rs │ │ │ ├── broadcast_message_handler.rs │ │ │ ├── event/ │ │ │ │ ├── event_message.rs │ │ │ │ ├── event_message_handler.rs │ │ │ │ └── mod.rs │ │ │ └── mod.rs │ │ ├── clipboard/ │ │ │ ├── clipboard_message.rs │ │ │ ├── clipboard_message_handler.rs │ │ │ ├── mod.rs │ │ │ └── utility_types.rs │ │ ├── debug/ │ │ │ ├── debug_message.rs │ │ │ ├── debug_message_handler.rs │ │ │ ├── mod.rs │ │ │ └── utility_types.rs │ │ ├── defer/ │ │ │ ├── defer_message.rs │ │ │ ├── defer_message_handler.rs │ │ │ └── mod.rs │ │ ├── dialog/ │ │ │ ├── dialog_message.rs │ │ │ ├── dialog_message_handler.rs │ │ │ ├── export_dialog/ │ │ │ │ ├── export_dialog_message.rs │ │ │ │ ├── export_dialog_message_handler.rs │ │ │ │ └── mod.rs │ │ │ ├── mod.rs │ │ │ ├── new_document_dialog/ │ │ │ │ ├── mod.rs │ │ │ │ ├── new_document_dialog_message.rs │ │ │ │ └── new_document_dialog_message_handler.rs │ │ │ ├── preferences_dialog/ │ │ │ │ ├── mod.rs │ │ │ │ ├── preferences_dialog_message.rs │ │ │ │ └── preferences_dialog_message_handler.rs │ │ │ └── simple_dialogs/ │ │ │ ├── about_graphite_dialog.rs │ │ │ ├── close_all_documents_dialog.rs │ │ │ ├── close_document_dialog.rs │ │ │ ├── confirm_restart_dialog.rs │ │ │ ├── demo_artwork_dialog.rs │ │ │ ├── error_dialog.rs │ │ │ ├── licenses_dialog.rs │ │ │ ├── licenses_third_party_dialog.rs │ │ │ └── mod.rs │ │ ├── frontend/ │ │ │ ├── frontend_message.rs │ │ │ ├── mod.rs │ │ │ └── utility_types.rs │ │ ├── input_mapper/ │ │ │ ├── input_mapper_message.rs │ │ │ ├── input_mapper_message_handler.rs │ │ │ ├── input_mappings.rs │ │ │ ├── key_mapping/ │ │ │ │ ├── key_mapping_message.rs │ │ │ │ ├── key_mapping_message_handler.rs │ │ │ │ └── mod.rs │ │ │ ├── mod.rs │ │ │ └── utility_types/ │ │ │ ├── input_keyboard.rs │ │ │ ├── input_mouse.rs │ │ │ ├── macros.rs │ │ │ ├── misc.rs │ │ │ └── mod.rs │ │ ├── input_preprocessor/ │ │ │ ├── input_preprocessor_message.rs │ │ │ ├── input_preprocessor_message_handler.rs │ │ │ └── mod.rs │ │ ├── layout/ │ │ │ ├── layout_message.rs │ │ │ ├── layout_message_handler.rs │ │ │ ├── mod.rs │ │ │ └── utility_types/ │ │ │ ├── layout_widget.rs │ │ │ ├── mod.rs │ │ │ └── widgets/ │ │ │ ├── button_widgets.rs │ │ │ ├── input_widgets.rs │ │ │ ├── label_widgets.rs │ │ │ └── mod.rs │ │ ├── menu_bar/ │ │ │ ├── menu_bar_message.rs │ │ │ ├── menu_bar_message_handler.rs │ │ │ └── mod.rs │ │ ├── message.rs │ │ ├── mod.rs │ │ ├── portfolio/ │ │ │ ├── document/ │ │ │ │ ├── data_panel/ │ │ │ │ │ ├── data_panel_message.rs │ │ │ │ │ ├── data_panel_message_handler.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── document_message.rs │ │ │ │ ├── document_message_handler.rs │ │ │ │ ├── graph_operation/ │ │ │ │ │ ├── graph_operation_message.rs │ │ │ │ │ ├── graph_operation_message_handler.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── transform_utils.rs │ │ │ │ │ └── utility_types.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── navigation/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── navigation_message.rs │ │ │ │ │ ├── navigation_message_handler.rs │ │ │ │ │ └── utility_types.rs │ │ │ │ ├── node_graph/ │ │ │ │ │ ├── document_node_definitions/ │ │ │ │ │ │ └── document_node_derive.rs │ │ │ │ │ ├── document_node_definitions.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── node_graph_message.rs │ │ │ │ │ ├── node_graph_message_handler.rs │ │ │ │ │ ├── node_properties.rs │ │ │ │ │ └── utility_types.rs │ │ │ │ ├── overlays/ │ │ │ │ │ ├── grid_overlays.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── overlays_message.rs │ │ │ │ │ ├── overlays_message_handler.rs │ │ │ │ │ ├── utility_functions.rs │ │ │ │ │ ├── utility_types_native.rs │ │ │ │ │ └── utility_types_web.rs │ │ │ │ ├── properties_panel/ │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── properties_panel_message.rs │ │ │ │ │ └── properties_panel_message_handler.rs │ │ │ │ └── utility_types/ │ │ │ │ ├── clipboards.rs │ │ │ │ ├── document_metadata.rs │ │ │ │ ├── error.rs │ │ │ │ ├── misc.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── network_interface/ │ │ │ │ │ ├── deserialization.rs │ │ │ │ │ ├── memo_network.rs │ │ │ │ │ └── resolved_types.rs │ │ │ │ ├── network_interface.rs │ │ │ │ ├── nodes.rs │ │ │ │ ├── transformation.rs │ │ │ │ └── wires.rs │ │ │ ├── document_migration.rs │ │ │ ├── mod.rs │ │ │ ├── portfolio_message.rs │ │ │ ├── portfolio_message_handler.rs │ │ │ └── utility_types.rs │ │ ├── preferences/ │ │ │ ├── mod.rs │ │ │ ├── preferences_message.rs │ │ │ ├── preferences_message_handler.rs │ │ │ └── utility_types.rs │ │ ├── prelude.rs │ │ ├── tool/ │ │ │ ├── common_functionality/ │ │ │ │ ├── auto_panning.rs │ │ │ │ ├── color_selector.rs │ │ │ │ ├── compass_rose.rs │ │ │ │ ├── gizmos/ │ │ │ │ │ ├── gizmo_manager.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── shape_gizmos/ │ │ │ │ │ ├── circle_arc_radius_handle.rs │ │ │ │ │ ├── grid_rows_columns_gizmo.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── number_of_points_dial.rs │ │ │ │ │ ├── point_radius_handle.rs │ │ │ │ │ ├── spiral_turns_handle.rs │ │ │ │ │ └── sweep_angle_gizmo.rs │ │ │ │ ├── graph_modification_utils.rs │ │ │ │ ├── layer_origin_cross.rs │ │ │ │ ├── measure.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── pivot.rs │ │ │ │ ├── resize.rs │ │ │ │ ├── shape_editor.rs │ │ │ │ ├── shapes/ │ │ │ │ │ ├── arc_shape.rs │ │ │ │ │ ├── arrow_shape.rs │ │ │ │ │ ├── circle_shape.rs │ │ │ │ │ ├── ellipse_shape.rs │ │ │ │ │ ├── grid_shape.rs │ │ │ │ │ ├── line_shape.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── polygon_shape.rs │ │ │ │ │ ├── rectangle_shape.rs │ │ │ │ │ ├── shape_utility.rs │ │ │ │ │ ├── spiral_shape.rs │ │ │ │ │ └── star_shape.rs │ │ │ │ ├── snapping/ │ │ │ │ │ ├── alignment_snapper.rs │ │ │ │ │ ├── distribution_snapper.rs │ │ │ │ │ ├── grid_snapper.rs │ │ │ │ │ ├── layer_snapper.rs │ │ │ │ │ └── snap_results.rs │ │ │ │ ├── snapping.rs │ │ │ │ ├── transformation_cage.rs │ │ │ │ └── utility_functions.rs │ │ │ ├── mod.rs │ │ │ ├── tool_message.rs │ │ │ ├── tool_message_handler.rs │ │ │ ├── tool_messages/ │ │ │ │ ├── artboard_tool.rs │ │ │ │ ├── brush_tool.rs │ │ │ │ ├── eyedropper_tool.rs │ │ │ │ ├── fill_tool.rs │ │ │ │ ├── freehand_tool.rs │ │ │ │ ├── gradient_tool.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── navigate_tool.rs │ │ │ │ ├── path_tool.rs │ │ │ │ ├── pen_tool.rs │ │ │ │ ├── select_tool.rs │ │ │ │ ├── shape_tool.rs │ │ │ │ ├── spline_tool.rs │ │ │ │ └── text_tool.rs │ │ │ ├── transform_layer/ │ │ │ │ ├── mod.rs │ │ │ │ ├── transform_layer_message.rs │ │ │ │ └── transform_layer_message_handler.rs │ │ │ └── utility_types.rs │ │ └── viewport/ │ │ ├── mod.rs │ │ ├── viewport_message.rs │ │ └── viewport_message_handler.rs │ ├── node_graph_executor/ │ │ ├── runtime.rs │ │ └── runtime_io.rs │ ├── node_graph_executor.rs │ ├── test_utils.rs │ ├── utility_traits.rs │ └── utility_types.rs ├── flake.nix ├── frontend/ │ ├── .gitignore │ ├── .prettierrc │ ├── README.md │ ├── branding-installer.js │ ├── eslint.config.js │ ├── index.html │ ├── package-installer.js │ ├── package.json │ ├── src/ │ │ ├── App.svelte │ │ ├── README.md │ │ ├── components/ │ │ │ ├── Editor.svelte │ │ │ ├── README.md │ │ │ ├── floating-menus/ │ │ │ │ ├── ColorPicker.svelte │ │ │ │ ├── Dialog.svelte │ │ │ │ ├── EyedropperPreview.svelte │ │ │ │ ├── MenuList.svelte │ │ │ │ ├── NodeCatalog.svelte │ │ │ │ └── Tooltip.svelte │ │ │ ├── layout/ │ │ │ │ ├── ConditionalWrapper.svelte │ │ │ │ ├── FloatingMenu.svelte │ │ │ │ ├── LayoutCol.svelte │ │ │ │ └── LayoutRow.svelte │ │ │ ├── panels/ │ │ │ │ ├── Data.svelte │ │ │ │ ├── Document.svelte │ │ │ │ ├── Layers.svelte │ │ │ │ ├── Properties.svelte │ │ │ │ └── Welcome.svelte │ │ │ ├── views/ │ │ │ │ └── Graph.svelte │ │ │ ├── widgets/ │ │ │ │ ├── WidgetLayout.svelte │ │ │ │ ├── WidgetSection.svelte │ │ │ │ ├── WidgetSpan.svelte │ │ │ │ ├── WidgetTable.svelte │ │ │ │ ├── buttons/ │ │ │ │ │ ├── BreadcrumbTrailButtons.svelte │ │ │ │ │ ├── IconButton.svelte │ │ │ │ │ ├── ImageButton.svelte │ │ │ │ │ ├── ParameterExposeButton.svelte │ │ │ │ │ ├── PopoverButton.svelte │ │ │ │ │ └── TextButton.svelte │ │ │ │ ├── inputs/ │ │ │ │ │ ├── CheckboxInput.svelte │ │ │ │ │ ├── ColorInput.svelte │ │ │ │ │ ├── CurveInput.svelte │ │ │ │ │ ├── DropdownInput.svelte │ │ │ │ │ ├── FieldInput.svelte │ │ │ │ │ ├── NumberInput.svelte │ │ │ │ │ ├── RadioInput.svelte │ │ │ │ │ ├── ReferencePointInput.svelte │ │ │ │ │ ├── RulerInput.svelte │ │ │ │ │ ├── ScrollbarInput.svelte │ │ │ │ │ ├── SpectrumInput.svelte │ │ │ │ │ ├── TextAreaInput.svelte │ │ │ │ │ ├── TextInput.svelte │ │ │ │ │ └── WorkingColorsInput.svelte │ │ │ │ └── labels/ │ │ │ │ ├── IconLabel.svelte │ │ │ │ ├── ImageLabel.svelte │ │ │ │ ├── Separator.svelte │ │ │ │ ├── ShortcutLabel.svelte │ │ │ │ └── TextLabel.svelte │ │ │ └── window/ │ │ │ ├── MainWindow.svelte │ │ │ ├── Panel.svelte │ │ │ ├── StatusBar.svelte │ │ │ ├── TitleBar.svelte │ │ │ └── Workspace.svelte │ │ ├── editor.ts │ │ ├── global.d.ts │ │ ├── icons.ts │ │ ├── main.ts │ │ ├── managers/ │ │ │ ├── clipboard.ts │ │ │ ├── fonts.ts │ │ │ ├── hyperlink.ts │ │ │ ├── input.ts │ │ │ ├── localization.ts │ │ │ ├── panic.ts │ │ │ └── persistence.ts │ │ ├── stores/ │ │ │ ├── app-window.ts │ │ │ ├── dialog.ts │ │ │ ├── document.ts │ │ │ ├── fullscreen.ts │ │ │ ├── node-graph.ts │ │ │ ├── portfolio.ts │ │ │ └── tooltip.ts │ │ ├── subscription-router.ts │ │ ├── utility-functions/ │ │ │ ├── colors.ts │ │ │ ├── crash-report.ts │ │ │ ├── escape.ts │ │ │ ├── files.ts │ │ │ ├── images.ts │ │ │ ├── keyboard-entry.ts │ │ │ ├── network.ts │ │ │ ├── panic-proxy.ts │ │ │ ├── platform.ts │ │ │ ├── rasterization.ts │ │ │ ├── strip-indents.ts │ │ │ ├── viewports.ts │ │ │ └── widgets.ts │ │ ├── vite-env-override.d.ts │ │ └── vite-env.d.ts │ ├── svelte.config.js │ ├── tsconfig.json │ ├── vite.config.ts │ └── wasm/ │ ├── Cargo.toml │ ├── README.md │ └── src/ │ ├── editor_api.rs │ ├── helpers.rs │ ├── lib.rs │ └── native_communication.rs ├── libraries/ │ ├── dyn-any/ │ │ ├── Cargo.toml │ │ ├── LICENSE-APACHE │ │ ├── LICENSE-MIT │ │ ├── README.md │ │ ├── derive/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ └── src/ │ │ └── lib.rs │ ├── math-parser/ │ │ ├── Cargo.toml │ │ ├── benches/ │ │ │ └── bench.rs │ │ └── src/ │ │ ├── ast.rs │ │ ├── constants.rs │ │ ├── context.rs │ │ ├── executer.rs │ │ ├── grammer.pest │ │ ├── lib.rs │ │ ├── parser.rs │ │ └── value.rs │ └── rawkit/ │ ├── .gitignore │ ├── Cargo.toml │ ├── LICENSE-APACHE │ ├── LICENSE-MIT │ ├── README.md │ ├── camera_data/ │ │ └── Sony/ │ │ ├── DSLR-A100.toml │ │ ├── DSLR-A200.toml │ │ ├── DSLR-A300.toml │ │ ├── DSLR-A330.toml │ │ ├── DSLR-A350.toml │ │ ├── DSLR-A550.toml │ │ ├── DSLR-A700.toml │ │ ├── DSLR-A850.toml │ │ ├── DSLR-A900.toml │ │ ├── ILCA-68.toml │ │ ├── ILCA-99M2.toml │ │ ├── ILCE-1.toml │ │ ├── ILCE-5100.toml │ │ ├── ILCE-6000.toml │ │ ├── ILCE-6100.toml │ │ ├── ILCE-6300.toml │ │ ├── ILCE-6400.toml │ │ ├── ILCE-6500.toml │ │ ├── ILCE-6600.toml │ │ ├── ILCE-6700.toml │ │ ├── ILCE-7CM2.toml │ │ ├── ILCE-7CR.toml │ │ ├── ILCE-7M2.toml │ │ ├── ILCE-7M3.toml │ │ ├── ILCE-7RM3.toml │ │ ├── ILCE-7RM4.toml │ │ ├── ILCE-7RM5.toml │ │ ├── ILCE-7SM2.toml │ │ ├── ILCE-9.toml │ │ ├── ILCE-9M2.toml │ │ ├── ILCE-9M3.toml │ │ ├── NEX-3.toml │ │ ├── NEX-3N.toml │ │ ├── NEX-5R.toml │ │ ├── NEX-6.toml │ │ ├── NEX-7.toml │ │ ├── ZV-1.toml │ │ ├── ZV-1M2.toml │ │ ├── ZV-E1.toml │ │ └── ZV-E10.toml │ ├── rawkit-proc-macros/ │ │ ├── Cargo.toml │ │ ├── LICENSE-APACHE │ │ ├── LICENSE-MIT │ │ ├── README.md │ │ └── src/ │ │ ├── build_camera_data.rs │ │ ├── lib.rs │ │ └── tag_derive.rs │ ├── src/ │ │ ├── decoder/ │ │ │ ├── arw1.rs │ │ │ ├── arw2.rs │ │ │ ├── mod.rs │ │ │ └── uncompressed.rs │ │ ├── demosaicing/ │ │ │ ├── linear_demosaicing.rs │ │ │ └── mod.rs │ │ ├── lib.rs │ │ ├── metadata/ │ │ │ ├── camera_data.rs │ │ │ ├── identify.rs │ │ │ └── mod.rs │ │ ├── postprocessing/ │ │ │ ├── convert_to_rgb.rs │ │ │ ├── gamma_correction.rs │ │ │ ├── mod.rs │ │ │ ├── record_histogram.rs │ │ │ └── transform.rs │ │ ├── preprocessing/ │ │ │ ├── mod.rs │ │ │ ├── scale_to_16bit.rs │ │ │ ├── scale_white_balance.rs │ │ │ └── subtract_black.rs │ │ ├── processing.rs │ │ └── tiff/ │ │ ├── file.rs │ │ ├── mod.rs │ │ ├── tags.rs │ │ ├── types.rs │ │ └── values.rs │ └── tests/ │ ├── images/ │ │ └── .gitkeep │ └── tests.rs ├── node-graph/ │ ├── LICENSE │ ├── README.md │ ├── graph-craft/ │ │ ├── Cargo.toml │ │ ├── benches/ │ │ │ ├── compile_demo_art_criterion.rs │ │ │ └── compile_demo_art_iai.rs │ │ └── src/ │ │ ├── document/ │ │ │ └── value.rs │ │ ├── document.rs │ │ ├── graphene_compiler.rs │ │ ├── lib.rs │ │ ├── proto.rs │ │ ├── util.rs │ │ └── wasm_application_io.rs │ ├── graphene-cli/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── export.rs │ │ └── main.rs │ ├── interpreted-executor/ │ │ ├── Cargo.toml │ │ ├── benches/ │ │ │ ├── benchmark_util.rs │ │ │ ├── run_cached.rs │ │ │ ├── run_cached_iai.rs │ │ │ ├── run_demo_art_criterion.rs │ │ │ ├── run_once.rs │ │ │ ├── run_once_iai.rs │ │ │ ├── update_executor.rs │ │ │ └── update_executor_iai.rs │ │ └── src/ │ │ ├── dynamic_executor.rs │ │ ├── lib.rs │ │ ├── node_registry.rs │ │ └── util.rs │ ├── libraries/ │ │ ├── application-io/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── core-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── bounds.rs │ │ │ ├── consts.rs │ │ │ ├── context.rs │ │ │ ├── generic.rs │ │ │ ├── lib.rs │ │ │ ├── math/ │ │ │ │ ├── bbox.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── polynomial.rs │ │ │ │ ├── quad.rs │ │ │ │ └── rect.rs │ │ │ ├── memo.rs │ │ │ ├── misc.rs │ │ │ ├── ops.rs │ │ │ ├── registry.rs │ │ │ ├── render_complexity.rs │ │ │ ├── table.rs │ │ │ ├── text.rs │ │ │ ├── transform.rs │ │ │ ├── types.rs │ │ │ ├── uuid.rs │ │ │ └── value.rs │ │ ├── graphic-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── artboard.rs │ │ │ ├── graphic.rs │ │ │ └── lib.rs │ │ ├── no-std-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── blending.rs │ │ │ ├── choice_type.rs │ │ │ ├── color/ │ │ │ │ ├── color_traits.rs │ │ │ │ ├── color_types.rs │ │ │ │ ├── discrete_srgb.rs │ │ │ │ └── mod.rs │ │ │ ├── context.rs │ │ │ ├── lib.rs │ │ │ ├── registry.rs │ │ │ └── shaders/ │ │ │ ├── buffer_struct/ │ │ │ │ ├── glam.rs │ │ │ │ ├── mod.rs │ │ │ │ └── primitive.rs │ │ │ └── mod.rs │ │ ├── raster-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── image.rs │ │ │ ├── lib.rs │ │ │ └── raster_types.rs │ │ ├── rendering/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── convert_usvg_path.rs │ │ │ ├── lib.rs │ │ │ ├── render_ext.rs │ │ │ ├── renderer.rs │ │ │ └── to_peniko.rs │ │ ├── vector-types/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── gradient.rs │ │ │ ├── lib.rs │ │ │ ├── math/ │ │ │ │ └── mod.rs │ │ │ ├── subpath/ │ │ │ │ ├── consts.rs │ │ │ │ ├── core.rs │ │ │ │ ├── lookup.rs │ │ │ │ ├── manipulators.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── solvers.rs │ │ │ │ ├── structs.rs │ │ │ │ └── transform.rs │ │ │ └── vector/ │ │ │ ├── algorithms/ │ │ │ │ ├── bezpath_algorithms.rs │ │ │ │ ├── contants.rs │ │ │ │ ├── intersection.rs │ │ │ │ ├── merge_by_distance.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── offset_subpath.rs │ │ │ │ ├── poisson_disk.rs │ │ │ │ ├── spline.rs │ │ │ │ └── util.rs │ │ │ ├── click_target.rs │ │ │ ├── misc.rs │ │ │ ├── mod.rs │ │ │ ├── reference_point.rs │ │ │ ├── style.rs │ │ │ ├── vector_attributes.rs │ │ │ ├── vector_modification.rs │ │ │ └── vector_types.rs │ │ └── wgpu-executor/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── context.rs │ │ ├── lib.rs │ │ ├── resample.rs │ │ ├── resample_shader.wgsl │ │ ├── shader_runtime/ │ │ │ ├── mod.rs │ │ │ └── per_pixel_adjust_runtime.rs │ │ └── texture_conversion.rs │ ├── node-macro/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── buffer_struct.rs │ │ ├── codegen.rs │ │ ├── crate_ident.rs │ │ ├── derive_choice_type.rs │ │ ├── lib.rs │ │ ├── parsing.rs │ │ ├── shader_nodes/ │ │ │ ├── mod.rs │ │ │ └── per_pixel_adjust.rs │ │ └── validation.rs │ ├── nodes/ │ │ ├── blending/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── brush/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── brush.rs │ │ │ ├── brush_cache.rs │ │ │ ├── brush_stroke.rs │ │ │ └── lib.rs │ │ ├── gcore/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── animation.rs │ │ │ ├── context.rs │ │ │ ├── context_modification.rs │ │ │ ├── debug.rs │ │ │ ├── extract_xy.rs │ │ │ ├── lib.rs │ │ │ ├── logic.rs │ │ │ ├── memo.rs │ │ │ └── ops.rs │ │ ├── graphic/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── artboard.rs │ │ │ ├── graphic.rs │ │ │ └── lib.rs │ │ ├── gstd/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── any.rs │ │ │ ├── lib.rs │ │ │ ├── pixel_preview.rs │ │ │ ├── render_cache.rs │ │ │ ├── render_node.rs │ │ │ ├── text.rs │ │ │ └── wasm_application_io.rs │ │ ├── math/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── path-bool/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ └── lib.rs │ │ ├── raster/ │ │ │ ├── Cargo.toml │ │ │ ├── shaders/ │ │ │ │ ├── Cargo.toml │ │ │ │ ├── build.rs │ │ │ │ ├── entrypoint/ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src/ │ │ │ │ │ └── lib.rs │ │ │ │ ├── spirv-unknown-naga-wgsl.json │ │ │ │ └── src/ │ │ │ │ └── lib.rs │ │ │ └── src/ │ │ │ ├── adjust.rs │ │ │ ├── adjustments.rs │ │ │ ├── blending_nodes.rs │ │ │ ├── cubic_spline.rs │ │ │ ├── curve.rs │ │ │ ├── dehaze.rs │ │ │ ├── filter.rs │ │ │ ├── fullscreen_vertex.rs │ │ │ ├── generate_curves.rs │ │ │ ├── gradient_map.rs │ │ │ ├── image_color_palette.rs │ │ │ ├── lib.rs │ │ │ └── std_nodes.rs │ │ ├── repeat/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── repeat_nodes.rs │ │ ├── text/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── font_cache.rs │ │ │ ├── lib.rs │ │ │ ├── path_builder.rs │ │ │ ├── text_context.rs │ │ │ └── to_path.rs │ │ ├── transform/ │ │ │ ├── Cargo.toml │ │ │ └── src/ │ │ │ ├── lib.rs │ │ │ └── transform_nodes.rs │ │ └── vector/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── generator_nodes.rs │ │ ├── lib.rs │ │ ├── merge_qr_squares.rs │ │ ├── vector_modification_nodes.rs │ │ └── vector_nodes.rs │ ├── preprocessor/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── rfcs/ │ └── fine-grained-context-caching.md ├── proc-macros/ │ ├── Cargo.toml │ └── src/ │ ├── as_message.rs │ ├── combined_message_attrs.rs │ ├── discriminant.rs │ ├── extract_fields.rs │ ├── helper_structs.rs │ ├── helpers.rs │ ├── hierarchical_tree.rs │ ├── hint.rs │ ├── lib.rs │ ├── message_handler_data_attr.rs │ ├── transitive_child.rs │ └── widget_builder.rs ├── rustfmt.toml ├── tools/ │ ├── cargo-run/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── lib.rs │ │ ├── main.rs │ │ └── requirements.rs │ ├── crate-hierarchy-viz/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── editor-message-tree/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── node-docs/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── main.rs │ │ ├── page_catalog.rs │ │ ├── page_category.rs │ │ ├── page_node.rs │ │ └── utility.rs │ └── third-party-licenses/ │ ├── .gitignore │ ├── Cargo.toml │ ├── build.rs │ └── src/ │ ├── cargo.rs │ ├── cef.rs │ ├── main.rs │ └── npm.rs └── website/ ├── .build-scripts/ │ └── install.ts ├── .gitignore ├── config.toml ├── content/ │ ├── _index.md │ ├── about.md │ ├── blog/ │ │ ├── 2022-02-12-announcing-graphite-alpha.md │ │ ├── 2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.md │ │ ├── 2022-05-12-distributed-computing-in-the-graphene-runtime.md │ │ ├── 2024-01-01-looking-back-on-2023-and-what's-next.md │ │ ├── 2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.md │ │ ├── 2024-05-09-graphite-progress-report-q1-2024.md │ │ ├── 2024-07-31-graphite-progress-report-q2-2024.md │ │ ├── 2024-10-15-graphite-progress-report-q3-2024.md │ │ ├── 2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.md │ │ ├── 2025-03-31-graphite-progress-report-q4-2024.md │ │ ├── 2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.md │ │ ├── 2025-09-19-graphite-community-meetup-in-germany.md │ │ └── _index.md │ ├── contact.md │ ├── donate.md │ ├── features.md │ ├── learn/ │ │ ├── _index.md │ │ ├── _outline_draft.md │ │ ├── interface/ │ │ │ ├── _index.md │ │ │ ├── document-panel.md │ │ │ └── menu-bar.md │ │ └── introduction/ │ │ ├── _index.md │ │ └── features-and-limitations.md │ ├── license.md │ ├── logo.md │ ├── press.md │ ├── privacy-policy.md │ └── volunteer/ │ ├── _index.md │ └── guide/ │ ├── _index.md │ ├── codebase-overview/ │ │ ├── _index.md │ │ ├── debugging-tips.md │ │ └── editor-structure.md │ ├── graphene/ │ │ ├── _index.md │ │ └── networks-and-nodes.md │ ├── project-setup/ │ │ └── _index.md │ ├── starting-a-task/ │ │ ├── _index.md │ │ ├── ai-contribution-policy.md │ │ ├── code-quality-guidelines.md │ │ └── submitting-a-contribution.md │ └── student-projects/ │ ├── _index.md │ └── completed-projects.md ├── eslint.config.js ├── package.json ├── sass/ │ ├── base.scss │ ├── component/ │ │ ├── carousel.scss │ │ ├── code-snippet.scss │ │ ├── demo-artwork.scss │ │ ├── feature-box.scss │ │ ├── feature-icons.scss │ │ ├── image-comparison.scss │ │ └── youtube-embed.scss │ ├── layout/ │ │ └── reading-material.scss │ ├── page/ │ │ ├── about.scss │ │ ├── blog.scss │ │ ├── contributor-guide/ │ │ │ ├── bisect-tool.scss │ │ │ ├── crate-hierarchy.scss │ │ │ └── editor-structure.scss │ │ ├── donate.scss │ │ ├── features.scss │ │ ├── index.scss │ │ ├── logo.scss │ │ ├── user-manual/ │ │ │ ├── node-catalog.scss │ │ │ ├── node-category.scss │ │ │ └── node.scss │ │ └── volunteer.scss │ └── template/ │ ├── article.scss │ └── book.scss ├── static/ │ └── js/ │ ├── component/ │ │ ├── carousel.js │ │ ├── image-comparison.js │ │ ├── video-autoplay.js │ │ └── youtube-embed.js │ ├── navbar.js │ ├── page/ │ │ └── contributor-guide/ │ │ ├── bisect-tool.js │ │ ├── crate-hierarchy.js │ │ └── editor-structure.js │ ├── template/ │ │ └── book.js │ └── text-justification.js ├── templates/ │ ├── 404.html │ ├── article.html │ ├── base.html │ ├── blog.html │ ├── book.html │ ├── macros/ │ │ ├── book-outline.html │ │ └── replacements.html │ ├── page.html │ └── section.html └── tsconfig.json