Commit Graph
100 Commits
Author SHA1 Message Date
Keavon Chambers df1b25f42e Remove regex lookbehind in rasterization which is unsupported by Safari 2022-11-02 00:26:39 -07:00
Keavon Chambers 7d2bdf11e1 Revamp the ColorPicker popover and ColorInput widget (#830)
* Add cancel hint to Eyedropper tool

* Improve eyedropper overlay CSS

* Make CSS for transparent checkered background reusable

* Add color choice preview to color picker

* Draw text and markers as contrasting white or black

* Add reactive color updating and new/initial swapping

* Add Hex, RGB, HSV, and Opacity inputs

* Add none color and preset buttons

* Add eyedropper button and fix alignment (now visually done)

* Wire up none colors through the backend and style the ColorInput widget

* Add color info chip to ColorInput widget

* Fix all UX bugs

* Add more tooltips

* Fix FloatingMenu recursive loop

* Prevent mouse stray from closing color picker while dragging pickers

Closes #703

* Fix deselect all layers shortcut

* Add temporary eyedropper for Chromium browsers and a coming soon fallback
2022-10-28 18:36:04 -07:00
Keavon Chambers 5f1501aad3 Improve floating menu hover transfer behavior (#829) 2022-10-26 02:39:08 -07:00
Keavon Chambers 3fe552ff20 Fix image flickering while Imaginate layers generate 2022-10-24 20:40:06 -07:00
Keavon Chambers 24cfa6a5ad Clean up Vue component refs (#813)
* Clean up Vue component refs

* Second pass of code improvements
2022-10-24 20:02:49 -07:00
Keavon Chambers 0b9c45c9e8 Refactor color picker floating menu (#809)
* Move FloatingMenu template component

* Rewrite the ColorPicker component so it's not horrifically bad code

* Move FloatingMenu into the ColorPicker component

* Little Imaginate fixes

* Add todo
2022-10-23 17:29:04 -07:00
Keavon Chambers 4023491792 Improve visibility of Eyedropper widget on dark backgrounds (closes #802) 2022-10-21 16:43:32 -07:00
Keavon Chambers f2db20f061 Remake Eyedropper tool to sample pixel colors from viewport canvas (#801)
* Remake Eyedropper tool to sample pixel colors from viewport canvas

* Bug fixes

* Reorder export buttons

* Remove the larger primary/secondary ring

* Add aborting with Escape
2022-10-21 01:50:02 -07:00
30719bdc72 Integrate Stable Diffusion with the Imaginate layer (#784)
* Add AI Artist layer

* WIP add a button to download the rendered folder under an AI Artist layer

* Successfully download the correct image

* Break out image downloading JS into helper function

* Change file download from using data URLs to blob URLs

* WIP rasterize to blob

* Remove dimensions from AI Artist layer

* Successfully draw rasterized image on layer after calculation

* Working txt2img generation based on user prompt

* Add img2img and the main parameters

* Fix ability to rasterize multi-depth documents with blob URL images by switching them to base64

* Fix test

* Rasterize with artboard background color

* Allow aspect ratio stretch of AI Artist images

* Add automatic resolution choosing

* Add a terminate button, and make the lifecycle more robust

* Add negative prompt

* Add range bounds for parameter inputs

* Add seed

* Add tiling and restore faces

* Add server status check, server hostname customization, and resizing layer to fit AI Artist resolution

* Fix background color of infinite canvas rasterization

* Escape prompt text sent in the JSON

* Revoke blob URLs when cleared/replaced to reduce memory leak

* Fix welcome screen logo color

* Add PreferencesMessageHandler

* Add persistent storage of preferences

* Fix crash introduced in previous commit when moving mouse on page load

* Add tooltips to the AI Artist layer properties

* Integrate AI Artist tool into the raster section of the tool shelf

* Add a refresh button to the connection status

* Fix crash when generating and switching to a different document tab

* Add persistent image storage to AI Artist layers and fix duplication bugs

* Add a generate with random seed button

* Simplify and standardize message names

* Majorly improve robustness of networking code

* Fix race condition causing default server hostname to show disconnected when app loads with AI Artist layer selected (probably, not confirmed fixed)

* Clean up messages and function calls by changing arguments into structs

* Update API to more recent server commit

* Add support for picking the sampling method

* Add machinery for filtering selected layers with type

* Replace placeholder button icons

* Improve the random icon by tilting the dice

* Use selected_layers() instead of repeating that code

* Fix borrow error

* Change message flow in progress towards fixing #797

* Allow loading image on non-active document (fixes #797)

* Reduce code duplication with rasterization

* Add AI Artist tool and layer icons, and remove ugly node layer icon style

* Rename "AI Artist" codename to "Imaginate" feature name

Co-authored-by: otdavies <oliver@psyfer.io>
Co-authored-by: 0hypercube <0hypercube@gmail.com>
2022-10-18 22:33:27 -07:00
Keavon Chambers 9f96d80bea Add building instructions to the website contribute page 2022-10-14 10:09:37 -07:00
Keavon Chambers 2ee57df709 Break apart and improve the JS for rasterizing SVGs and downloading files (#786)
It now uses a blob URL instead of a data URL in the download process, which is cleaner and better performance.
2022-10-08 11:34:31 -07:00
Keavon Chambers 6e12651c56 Add website link prompting to subscribe to the newsletter 2022-09-25 01:45:59 -07:00
Keavon Chambers 461064c81d Improve the website and readme with details and cleanup 2022-09-16 01:29:33 -07:00
Keavon Chambers 242a242809 Improve wording on the website home page; add a volunteer icon 2022-09-04 14:31:08 -07:00
Keavon Chambers 1e723b8c86 Add the Pivot Assist widget
Part of #525
2022-08-29 00:08:01 -07:00
Keavon Chambers 8f59289c5d Remove usage of 'null' in favor of 'undefined' 2022-08-26 00:24:20 -07:00
Keavon Chambers 078cc4373f Enable some TS consistency lints 2022-08-26 00:24:10 -07:00
Keavon Chambers 33e790dc86 Prefix all type imports with the 'type' keyword where appropriate 2022-08-26 00:10:41 -07:00
Keavon Chambers 7848391f6e Clean up MenuList types and fix many Vue and Clippy warnings
Also remove hard-coded-in-Vue Graphite logo in the menu bar in favor of a Rust definition.
2022-08-26 00:10:41 -07:00
Keavon Chambers 5ad76bec6e Clean up camelCase and snake_case in frontend code 2022-08-26 00:10:15 -07:00
Keavon Chambers 5531fc690f Add grayscale sample image for its node graph test 2022-08-23 14:00:17 -07:00
Keavon Chambers 763cdbb100 Move bezier-rs into libraries folder and deploy its interactive docs 2022-08-15 00:17:31 -07:00
Keavon Chambers 44eb83c9b3 Fix logic bug in key internationalization for A-Z keys in alternate layouts 2022-08-14 13:57:01 -07:00
Keavon ChambersandDennis 776992a297 Simplify platform-specific keyboard layouts with Accel key and global platform variable (#748)
* Simplify platform-specific keyboard layouts with Accel key and global platform variable


Co-authored-by: Dennis <dennis@kobert.dev>
2022-08-13 13:28:02 +02:00
Keavon Chambers d8ae727ea9 Rename MovementMessage to NavigationMessage 2022-08-11 17:20:10 -07:00
Keavon Chambers dfdfd8149c Switch Vec<Key> to KeysGroup newtype 2022-08-11 16:35:04 -07:00
Keavon Chambers d6e726f99d Fix shortcut label on welcome screen: "Control" -> "Ctrl" 2022-08-11 10:53:03 -07:00
Keavon Chambers 0f6ecefb3f Revamp key/code input processing which fixes Option key on Mac and other locales
Closes #742
Closes #746
2022-08-11 02:53:46 -07:00
Keavon Chambers 9f4a241e0f Extend welcome screen button click area to labels
Closes #738
2022-08-08 01:29:23 -07:00
Keavon Chambers e440fba4cc Populate menu bar
Closes #531
2022-08-06 18:08:39 -07:00
Keavon Chambers c235c7f252 Additional cleanup of prelude imports in editor codebase
Closes #744
2022-08-05 17:12:56 -07:00
Keavon Chambers ddfd7db0a0 Restructure the entire editor codebase to consistently match the message hierarchy
Closes #744
2022-08-05 17:13:43 -07:00
Keavon Chambers 0c7870c5b0 Fix formatting of previous commit 2022-08-04 00:18:42 -07:00
Keavon ChambersandDennis 52b3553a75 Add full support for Mac-specific keyboard layouts (#736)
* IPP for Mac, flawed initial experiments

* Cleanup and progress, but not compiling yet

* Fix error and rename nonmac -> standard

* Extentd ipp macros to accomodate mac input

* Add Mac versions of shortcuts; refactor and document the input mapper macros

* Change frontend styling for user input labels in floating menus

* Additional macro documentation

* A little more documentation

* Improve entry macro syntax

* Move input mapper macros to a separate file

* Adapt the keyboard shortcuts to the user's OS

* Display keyboard shortcuts in the menu bar based on OS

* Change Input Mapper macro syntax from {} to ()

* Fix esc key bug in Vue

* Tweaks

* Interim solution for Mac-specific hints

* Feed tooltip input hotkeys from their actions

* Fix hotkeys for tools because of missing actions

* Make Vue respect Ctrl/Cmd differences per platform

* Remove commented lines

* Code review pass by me

* Code review suggestions with TrueDoctor

* Turn FutureKeyMapping struct into ActionKeys enum which is a bit cleaner

* Add serde derive attributes for message discriminants

* Re-add serde deserialize

* Fix not mutating ActionKeys conversion; remove custom serializer

* Add serde to dev dependencies

Co-authored-by: Dennis <dennis@kobert.dev>
2022-08-03 14:13:43 -07:00
Keavon Chambers cafa2e61dc Update npm dependencies 2022-07-23 15:31:02 -07:00
Keavon Chambers f3bdf970f4 Implement File > Import and fix Ctrl+O to Open hotkey
Closes #671
2022-07-23 15:17:20 -07:00
Keavon Chambers 08a81002ff Hide canvas zoom widget automatically when zero 2022-07-22 23:09:45 -07:00
Keavon Chambers 4fa7a81f61 Fix broken BigInt64Array unsupported message on old Safari 2022-07-07 10:58:29 -07:00
Keavon Chambers b4a24d7d83 Fix website styling 2022-06-29 18:47:05 -07:00
Keavon Chambers 2052c00010 Fix DropdownInput repeated change emitting 2022-06-19 19:34:59 -07:00
Keavon Chambers a443de8342 Implement the Edit > Paste menu entry (#683)
Closes #682
2022-06-19 00:53:33 -07:00
Keavon Chambers 63fd5e87ab Change MenuList checkbox to be an icon from a widget 2022-06-17 17:55:04 -07:00
Keavon Chambers 4924d7ede7 Add code style formatting to the website 2022-06-16 22:57:15 -07:00
Keavon Chambers 04d6bd9190 Update npm dependencies (#678) 2022-06-13 12:32:01 -07:00
Keavon Chambers e6d096f73e Update banner for the lastest blog post 2022-06-06 16:09:42 -07:00
Keavon Chambers 811ca391ac Update readme 2022-05-26 00:28:29 -07:00
Keavon Chambers eca9797597 Refactor source of Git commit build info (closes #661) 2022-05-24 14:33:58 -07:00
Keavon Chambers bec7a4c109 Add frontend file structure docs and some related cleanup 2022-05-23 19:24:31 -07:00
Keavon Chambers ab77105ffb Reorganize Vue components and add documentation explaining each folder 2022-05-23 19:22:41 -07:00
Keavon Chambers 2c2d7bd137 Update the assets directory to prefix icon folders with "icon-" 2022-05-23 18:56:33 -07:00
Keavon Chambers ef53577b20 Vue initialization and FloatingMenu codebase refactoring and cleanup (#649)
* Clean up Vue initialization-related code

* Rename folder: dispatcher -> interop

* Rename folder: state -> providers

* Comments and clarification

* Rename JS dispatcher to subscription router

* Assorted cleanup and renaming

* Rename: js-messages.ts -> messages.ts

* Comments

* Remove unused Vue component injects

* Clean up coming soon and add warning about freezing the app

* Further cleanup

* Dangerous changes

* Simplify App.vue code

* Move more disparate init code from components into managers

* Rename folder: providers -> state-providers

* Other

* Move Document panel options bar separator to backend

* Add destructors to managers to fix HMR

* Comments and code style

* Rename variable: font -> font_file_url

* Fix async font loading; refactor janky floating menu openness and min-width measurement; fix Vetur errors

* Fix misaligned canvas in viewport until panning on page (re)load

* Add Vue bidirectional props documentation

* More folder renaming for better terminology; add some documentation
2022-05-21 19:46:15 -07:00
Keavon Chambersand0hypercube a8f09da5a2 Move layouts definitions to backend and fix Firefox overlay scrollbars (#647)
* Fix two-axis scrollbars in scrollable regions on Firefox

* Move Document Mode dropdown to the backend; and related code cleanup

* Port the Layer Tree options bar layout to the backend

* Port the tool shelf to the backend

* Clean up initialization and wasm wrapper

* Fix crash

* Fix missing document bar

* Remove unused functions in api.rs

* Code review

* Tool initalisation

* Remove some frontend functions

* Initalise -> Init so en-US/GB doesn't have to matter :)

* Remove blend_mode and opacity from LayerPanelEntry

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2022-05-17 13:12:52 -07:00
Keavon Chambers 95435d8bf1 Update the VS Code rust-analyzer extension to its new official owner 2022-05-13 12:09:37 -07:00
Keavon Chambers 6cae6b54b7 Fix website rendering issues on Firefox with -webkit-line-clamp 2022-05-12 14:22:43 -07:00
Keavon Chambers 15641a3d2a Fix website responsive layouts 2022-05-12 13:08:53 -07:00
Keavon Chambers e2f616934b Add Reddit and Twitter links to blog posts 2022-05-12 01:15:56 -07:00
Keavon Chambers 89ed5ac392 Fix website URL encoding in certain links 2022-05-12 01:04:23 -07:00
Keavon Chambers 10e2365536 Blog post updates 2022-05-12 00:45:20 -07:00
Keavon Chambersand0hypercube 07d5bef125 Build the node graph frontend with placeholder graph info (#581)
* Build the node graph frontend

* Graph pan and zoom

* Graph's dot grid now pans/zooms also

* Interactive horisontal to vertical curves

* Data types and zooming on wires

* Icon definitions code beautification

* Add a visibility toggle

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2022-05-10 22:34:25 -07:00
Keavon Chambers be6351573f Update list of recommended VS Code extensions 2022-05-10 20:39:58 -07:00
Keavon Chambers 8dec73c344 Clean up website file structure 2022-05-10 11:35:39 -07:00
Keavon Chambers 7729b6219e Move the Layer Tree panel's New Folder and Delete icons into the options bar 2022-05-06 13:19:00 -07:00
Keavon Chambers 8c9caf12c7 Tidy up the full frontend codebase and use optional chaining where possible (#620)
* Tidy up the full frontend codebase and use optional chaining where possible

* Code review changes
2022-04-30 02:52:53 -07:00
Keavon Chambersand0hypercube d1c32ad7d0 Upgrade vue-cli to version 5 (#594)
* Upgrade to Vue CLI 5 (fails to compile)

* Upgrade versions with last few weeks of changes

* Updated to fork-ts-checker-webpack-plugin 7.2.3

* Remove package.json overrides in lieu of the fixed fork-ts-checker-webpack-plugin@6.5.1

* Fix svg importing

* Comments

* For debugging only: added infrastructureLogging to vue.config.js

* Now works on Windows, waiting on fork-ts-checker-webpack-plugin backport if possible

* Switch to the fixed fork-ts-checker-webpack-plugin@6.5.2

* Fix license checker build compilation

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2022-04-26 01:47:13 -07:00
Keavon Chambers 1bf1687642 Change stroke weight from ints to floats (#601)
Also rename stroke "width" to "weight" in some places. Closes #587

* Change stroke weight from ints to floats

* "miter_limit" -> "line_join_miter_limit"

* Bump file format version
2022-04-21 13:35:35 -07:00
Keavon Chambers d65ce17d7e Rename Crop tool to Artboard tool 2022-04-21 10:52:33 -07:00
Keavon Chambers 9c61fbc936 New blog post: "Distributed computing with the Graphene runtime" 2022-04-18 02:04:22 -07:00
Keavon Chambers a76bded12f Expand upon the "Announcing Graphite alpha" blog post 2022-04-14 10:19:09 -07:00
Keavon Chambers 3e2962e36a Add node graph mockup to website 2022-03-25 02:11:31 -07:00
Keavon Chambers 9af26a3840 Various website fixes 2022-03-17 02:51:37 -07:00
Keavon Chambers 045448a26e Small website text improvements 2022-03-15 16:06:09 -07:00
Keavon Chambers a1b91c75c7 Add features page and fixes to website 2022-03-13 11:32:53 -07:00
Keavon Chambers b4f316c3b9 Add website revisions and many new pages 2022-03-12 08:31:12 -08:00
Keavon Chambers 7b4b0ff06e Add Image node icon and rename node from Path to Shape 2022-03-05 23:51:59 -08:00
Keavon Chambers f9012060db Change tool shelf icon colors to use classes not style 2022-03-05 18:28:41 -08:00
Keavon Chambers 6169a30f6e Remake node type icons (closes #483); color picker cleanup 2022-03-04 22:48:22 -08:00
Keavon Chambers d8df4b9369 Reorder tool icons, update favicon and logo, and other icon cleanup 2022-03-04 13:04:59 -08:00
Keavon Chambers acc02cf743 Set text color based on its fill when it's being edited 2022-03-04 12:15:42 -08:00
Keavon Chambers f1ddf46109 Update npm dependencies 2022-03-02 22:02:40 -08:00
Keavon Chambers a62147ce36 Add "New Folder"/"Delete Selected" buttons to layer panel
Closes #532
2022-03-02 21:55:40 -08:00
Keavon Chambers acfa9ecaa4 Add newsletter signup to website 2022-02-19 03:31:02 -08:00
Keavon Chambers 1fd8e9f0e9 Website responsive resizing improvements 2022-02-19 02:16:30 -08:00
Keavon Chambers 8baa1b1213 Create project website with near-complete home page 2022-02-17 03:38:01 -08:00
Keavon Chambers 767b1a01b1 Release Alpha Milestone 1! 2022-02-12 09:31:48 -08:00
Keavon Chambers c4fdc28449 Polishing: standardize binding JS resize event (fixes non-integer AA rendering); remove "X" to delete; cleanup 2022-02-10 02:29:45 -08:00
Keavon Chambers cb518c6ce0 Improve Path Tool hint text 2022-02-09 16:52:54 -08:00
Keavon Chambersandmfish33 99bf6c496f Add the TextInput widget (#518)
* Separate out the number input from a generic field input

* Add TextInput widget

Co-authored-by: mfish33 <32677537+mfish33@users.noreply.github.com>
2022-02-09 12:16:44 -08:00
Keavon Chambers 4d232e6b46 Solve "Coming Soon" dialog from bubbled click event on sub-menu entries (#517) 2022-02-05 13:49:12 -08:00
Keavon Chambers dd36339605 Rename deployment script 2022-02-03 18:29:02 -08:00
Keavon ChambersandMoritz Vetter dae79caf15 Implement layer renaming (#501)
* Implement layer renaming

* Fix sneaky typo in CSS

Co-authored-by: Moritz Vetter <16950410+HansAuger@users.noreply.github.com>

Co-authored-by: Moritz Vetter <16950410+HansAuger@users.noreply.github.com>
2022-01-29 11:04:15 -08:00
Keavon Chambers c215719598 Clean up web code's use of display CSS properties, using <LayoutRow>/<LayoutCol> where intended 2022-01-23 20:24:50 -08:00
Keavon Chambers 12ef88f261 Move scrollable behavior into LayoutRow/LayoutCol 2022-01-23 15:07:10 -08:00
Keavon Chambers 841f34e797 Fix sorting of message enum variants 2022-01-16 13:59:55 -08:00
Keavon Chambers 73448a4849 Make the toggle overlays button functional (#484)
* Make the toggle overlays button functional

* Move state from the OverlaysMessageHandler to DocumentMessageHandler

* Code review fixes
2022-01-16 09:40:47 -08:00
Keavon Chambers 34664e7c56 Fix all remaining Vue/TS errors flagged in Volar 2022-01-15 18:04:34 -08:00
Keavon Chambers ab0a55f6ce Tweak whitespace around use statements and other lint fixes 2022-01-15 12:55:51 -08:00
Keavon Chambers c46edfdc5b Change canvas artboard background color to be 1 shade lighter 2022-01-15 06:35:06 -08:00
Keavon Chambers b3cf1a42bd Modify all message enum data to use named struct values, not tuples (#479)
* Massively reorganize and clean up the whole Rust codebase

* Modify all message enum data to use named struct values, not tuples
2022-01-14 20:54:38 -08:00
Keavon Chambers 40d5960571 Massively reorganize and clean up the whole Rust codebase (#478)
* Massively reorganize and clean up the whole Rust codebase

* Additional changes during code review
2022-01-14 14:58:08 -08:00
Keavon Chambers f63424b676 Sort messages and message handlers 2022-01-12 16:17:40 -08:00