Commit Graph
100 Commits
Author SHA1 Message Date
0HyperCubeandKeavon Chambers 2b071437ac Improve history states (#932)
* Add some more history states

* Fix undo whilst drawing

* Paste image history

* Toggle output and preview history

* Code review nits

* Remove extra '{'

* Fix typo

* Fix about.toml

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-01-01 14:02:44 -08:00
0HyperCubeandKeavon Chambers 4f0843d2bc Fix a derivative causing NaNs in boolean ops (#934)
* Fix a derivative causing NaNs

* Better error messages around boolean ops

* Tweak error dialog wording

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-01-01 00:54:10 -08:00
0HyperCube 8423723e98 Gradient tool improvements (#927)
* Reuse existing gradient

* Double click to insert gradient stop

* Add history states to the gradient tool

* Do trig in viewport space so it is actually perpendicular

* Sync tool options with active gradient

* Deleting points with delete key

* More tolerance on inserting points
2022-12-29 12:00:58 -08:00
0HyperCube 98176177d3 Fix setting the position and rotation in the Properties panel (#928)
Fix setting the position and rotation in the properties panel
2022-12-29 03:29:06 -08:00
0HyperCubeandKeavon Chambers 904f38fa1b Add a 'Preserve Aspect Ratio' checkbox to Properties panel (#923)
* Add the link button

* Transform around pivot

* Remove log

* Fix tests

* Add a hacky two-line layout for the checkbox

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-28 15:21:03 -08:00
0HyperCubeandKeavon Chambers df74f6f562 Only open the node graph panel after drawing a new frame to avoid layout shift interruption (#924)
* Store drag start as document position

* Don't open graph whilst drawing

* Rename to is_drawing_node_graph_frame

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-28 13:07:10 -08:00
0HyperCubeandKeavon Chambers f51dda5149 Add a button to refresh the input (#926)
* Add a button to refresh the input

* Align left of refresh button

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-28 13:02:03 -08:00
0HyperCubeandKeavon Chambers e62526a321 Fix stuck outline overlay (#925)
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-28 12:21:13 -08:00
0HyperCubeandKeavon Chambers cf10d04827 Allow the user to force clear any stuck overlays (#922)
Force clear overlays

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-28 12:19:50 -08:00
0HyperCubeandKeavon Chambers c229883780 Make copying/duplicating nodes not preserve the incoming connection (#917)
* Remove wires to nodes outside of copy

* Fix logic error

* Shift pasted nodes

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-28 12:00:53 -08:00
0HyperCubeandKeavon Chambers b660df84ba Node 'Disable' and 'Preview' UX improvements (#918)
* Don't allow disabling input or output nodes

* Shortcuts to show and preview node

* Update preview tooltip and label

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-28 11:38:35 -08:00
0HyperCubeandKeavon Chambers d969a4d797 Clear properties panel and layer tree on close (#920)
* Clear properties panel and layer tree on close

* Fix on close all documents

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-28 14:44:11 +00:00
0HyperCube 22866acefb Round document alignment in viewport to avoid AA induced by a shift after zooming in and panning (#921) 2022-12-28 04:06:06 -08:00
0HyperCube 36b2eff319 Save the layouts, even when in the welcome screen (#916) 2022-12-27 13:24:18 -08:00
0HyperCubeandmfish33 694890642e Diff simple layout changes to avoid excessive DOM replacements (#910)
* Add UI diffs to rust

* Clean up some js

* Fix lints

* Fix test

* Remove one unnecessary keyword

* Rename to widget path

* Rename new_val to new_value

* Rename newVal to layoutGroup in createLayoutGroup

* Extract get_widget_path to a function

* Base skipping on the layout rather than the target

* Rename to ResendActiveWidget

* Switch info to trace

* Add a link to the documentation about Object.assign

* knitpick js changes

* Add more comments to diff functions

Co-authored-by: mfish33 <maxmfishernj@gmail.com>
2022-12-25 10:56:35 -08:00
0HyperCubeandKeavon Chambers 01931939ff Add preview and disable buttons for nodes (#905)
* Add preview and disable button

* Fix tests

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-25 02:28:18 -08:00
0HyperCube d4fe6601c1 Avoid deprecated into_serde() (#906) 2022-12-23 11:16:23 -08:00
0HyperCube 1f69b0f35f Pasting and duplicating nodes (#902)
* Pasting and duplicating nodes

* Rebind duplication

* Update selection on duplicate
2022-12-22 21:47:48 +00:00
0HyperCubeandKeavon Chambers 537dbf266a Add drag to connect nodes (#901)
* Add drag to connect nodes

* Clean up node graph code

* Close node list with escape or click

* Check if line is contained within box

* Shift the nodes

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-22 21:14:21 +00:00
0HyperCube 55d5dbaf52 Better downcast panics (#898) 2022-12-22 09:27:55 +00:00
0HyperCubeandKeavon Chambers 9973e17479 Node code cleanup for vector data, and add node creation guide (#895)
* Cleanup Vector Nodes

* Add the creating nodes guide

* Rename guide as readme so GitHub shows it by default

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-21 11:50:40 -08:00
0HyperCube 5e95090504 Drag out links to disconnect nodes (#894)
* Disconnecting Links

* Fix bug if nodeid is 0
2022-12-21 11:19:24 -08:00
0HyperCubeandKeavon Chambers 4f637ee18b Show all nodes with no selection (#893)
* Show all nodes with no selection

* Slight text tweaks

* Rename to artwork

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-21 11:12:33 +00:00
0HyperCubeandKeavon Chambers 80d39c2be7 Fix Imaginate flicker during generation (#891)
Fix imaginate flicker

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-21 10:09:01 +00:00
0HyperCube d374e400ed Automatic graph popup on Node Graph Frame layer (#890)
Automatic Node Graph Frame Popup
2022-12-21 10:04:58 +00:00
0HyperCubeandKeavon Chambers 7a752b93f9 Make Imaginate into a node (#878)
* Simplify document node input defenitions

* Remove imaginate layer

* Imaginate node properties

* Fix serde feature gate

* Add Proc Macro for Protonode implementation

* Fix incorrect type

* Add cargo.toml metadata

* Send imaginate params to frontend

* Fix image_creativity range

* Finish imaginate implementation

* Fix the imaginate draw tool

* Remove node-graph/rpco-macro

* Cargo fmt

* Fix missing workspace member

* Changes to the resolution

* Add checkbox for Imaginate auto resolution; improve Properties panel layouts

And fix bugs in panel resizing

* Implement the Rescale button

* Reorder imports

* Update Rust deps

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-20 14:51:38 -08:00
0HyperCubeandKeavon Chambers 11b6147719 Nested networks UI (#885)
* Initial UI for nested nodes

* Clean up deleting nodes

* Print address of nested network

* Add exiting network message

* Implement the breadcrumb trail

* Remove whitespace

* Fix double click not registering in Chromium

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-12-17 15:38:29 +00:00
0HyperCube cb3cb991e3 Fix inability to expose the Add node's parameter (#877)
* Fix add node

* Simplify document node input defenitions
2022-12-10 20:39:54 -08:00
0HyperCube f9d772070b Add some additional image effect nodes (#869)
* Move the Subpath type to graphene-std

* Add the transform subpath node

* Delete selected nodes

* Inserting node list on right click

* Add several bitmap manipulator nodes

* Convert add node to use f64

* Add posterize node

* Rename names randomly

* Fix naming

* Exposure node

* Fix typo

* Adjust exposure node range

* Comment out vector nodes

* Adjust exposure range again

* Posterise as ints

* Rename input

* Use >= in the to hsl function
2022-12-03 14:29:45 -08:00
0HyperCube 0fb12bf39b Fix Crashing on Smoothing Vertex (#868)
Fix occasional crashing on smoothing a vertex in a path by double clicking.
2022-11-27 18:57:15 +00:00
0HyperCube 4a4d8cf003 Fix Smoothing on Close Path (#867) 2022-11-24 22:22:13 +00:00
0HyperCube 007afd53f6 Add support for exposing node parameter inputs (#866)
* Add exposing inputs to graph

* Use uuids and better node positioning

* Fix accidentally refering to the wrong grid spacing

* Secondary input without primary input

* Cleanup document node types

* Rename to input and addend
2022-11-22 19:57:08 +00:00
0HyperCubeandKeavon Chambers 47e2275e55 Add secondary inputs to nodes UI (#863)
* Add secondary inputs to UI

* Fix add node

* Dragging nodes

* Add ParameterExposeButton component

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-11-22 09:36:19 -08:00
0HyperCubeandKeavon Chambers 5990d105d5 Add inpainting and outpainting to Imaginate (#864)
* Do not select layer immediatly on drag

* Add LayerReferenceInput MVP widget

* Properties Panel

* Fix dragging marker flicker

* Change mask shape to outline

* Add mask rendering

* Simplify select code

* Remove colours

* Fix inpaint/outpaint and rearrage widget UX

* Add mask blur and mask starting fill parameters

* Guard for the case when the layer is missing

* Add icon to LayerReferenceInput to finalize its UI

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-11-20 23:00:38 -08:00
0HyperCube 65e505bbbb Add double clicking a node frame to open the graph panel (#862)
Double Click to Open Node UI
2022-11-19 13:27:44 -08:00
0HyperCubeandKeavon Chambers 6cd0dbdcd0 Node graph improvements (#855)
* Selecting multiple nodes

* Improve logs

* Log bad types in dyn any

* Add (broken) node links

* New topological sort

* Fix reorder ids function

* Input and output node

* Add nodes that operate on images

* Fixups

* Show node parameters together with layer properties

* New nodes don't crash editor

* Fix tests

* Node positions backend

* Generate node graph on value change

* Add expose input message

* Fix tests

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-11-17 15:36:23 -08:00
d9177f5f4d Add a basic API and rudimentary frontend for node graph layers (#846)
* Node graph API stub

* Rename and fix SetInputValue

* Get list of links from network

* Test populating node graph UI

* Node properties

* Fix viewport bounds

* Slightly change promise usage

* A tiny bit of cleanup I did while reading code

* Cleanup and work towards hooking up node links in Vue template

* Add the brighten colour node

* Run cargo fmt

* Add to and from hsla

* GrayscaleImage node with small perf improvement

* Fix gutter panel resizing

* Display node links from backend

* Add support for connecting node links

* Use existing message

* Fix formatting error

* Add a (currently crashing) brighten node

* Replace brighten node with proto node implementation

* Add support for connecting node links

* Update watch dirs

* Add hue shift node

* Add create_node function to editor api

* Basic insert node UI

* Fix broken names

* Add log

* Fix positioning

* Set connector index to 0

* Add properties for Heu shift / brighten

* Allow deselecting nodes

* Redesign Properties panel collapsible sections

Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2022-11-12 13:23:28 -08:00
0HyperCubeandKeavon Chambers 4cda84521f Reduce history system's excessive memory usage from storing copies of images each step (#845)
* Limit saved undo history

* Do not commit path every mouse move event

* Reference count images in history system instead of cloning the image data

* Increase history storage step limit to 100

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-11-11 11:44:43 -08:00
0HyperCube be353878d0 Fix disappearing path when it is closed with the Pen tool by drawing from its start point (#844) 2022-11-09 13:57:06 -08:00
0HyperCubeandKeavon Chambers 9cdebfb1f0 Integrate the node graph as a Node Graph Frame layer type (#812)
* Add node graph frame tool

* Add a brighten

* Use the node graph

* Fix topological_sort

* Update UI

* Add icons for the tool and layer type

* Avoid serde & use bitmaps to improve performance

* Allow serialising a node graph

* Fix missing ..Default::default()

* Fix incorrect comments

* Cache node graph output image

* Suppress no-cycle import warning

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-11-05 14:38:14 -07:00
0HyperCubeandKeavon Chambers 596b9f4531 Add control over gradient stops (#834)
* Add gradient stops

* Better step adding

* Steps can be dragged past each other

* Swapping and switching gradient/fill

* Fix convert to gradient

* Skip non finite transforms for overlays

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-11-05 06:30:48 -07:00
0HyperCube 803fa4a045 Better checks for invalid transforms in the transform cage (#831)
* Better checks for invalid transform

* Fix resize cursor

* Do not allow resizing with no width/height

* Fix pivots for 0 width/height layers
2022-10-26 16:14:32 -07:00
0HyperCubeandKeavon Chambers d44e7ff925 Break handle of path being drawn by placing anchor on previous anchor with Pen tool (#814)
* Break path by placing anchor on previous one

* Fix offset on click without dragging

* Fix bug where ids reassigned from saved document

* Fix stuck overlay

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-10-24 19:35:48 -07:00
0HyperCube 74b2737f1f Double click to toggle sharpness of an anchor's handles with the Path tool (#815)
* Double click to flip sharpness of anchor's handles

* Fix bad length

* Convert mirror distance to toggle

* Revert "Convert mirror distance to toggle"

This reverts commit 76b5650022.

* Fix mirror_distance_between_handles being inverted
2022-10-24 21:55:31 +01:00
0HyperCube a9d787bb49 Fix image export bounds calculation for selected layers (#807)
* Fix Export Bounds

* Fix the scale of the transform
2022-10-22 14:48:38 -07:00
0HyperCubeandKeavon Chambers 55deba1ccc Allow Imaginate layers to work with rotation and skew (#806)
* Fix AI layer rotation

* Transform things by matricies

* Clean up size calculation

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-10-22 20:01:38 +01:00
0HyperCube ac4b33f9f5 Fix image importing due to incorrect variable name (#781) 2022-09-23 10:53:03 -07:00
0HyperCube 74737bc13d #[macro_use] the log crate (#775) 2022-09-08 13:14:01 -07:00
0HyperCubeandKeavon Chambers 131f24300a Add a pivot widget to selected layer(s) to control the origin(s) (#772)
* Add pivot

* Add dragging pivot

* Cleanup

* Remove tabs

* Fix multiplication order

* Restyle pivot

* Add move cursor icon

* Update pivot size

* Code review tweaks

* Fix alt with non-centred pivot

* Comment for add one

* Pivot sets layer panel origin

* Tweek alt centre thing

* Fix division by zero case

* Add pivot dots to properties

* FIx some typos

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-30 14:36:33 -07:00
0HyperCubeandKeavon Chambers 440a9a6dd6 Fix transformation cage centered-scaling to use the center as its pivot (#769)
* Add centre of transformation

* Add alt support

* New breaking file format version

* Spelling

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-28 17:30:45 -07:00
0HyperCubeandKeavon Chambers a6bdabcbaa Add Alt-dragging to duplicate layers (#762)
* Add alt drag to duplicate

* Allow duplicating whilst dragging

* Remove unused variable

* Clearer names for functions

* Better renaming of functions

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-28 13:33:21 -07:00
0HyperCubeandKeavon Chambers 7ca45c25e1 Use .then() instead of .after() for sequencing nodes (#760)
* Add .then() for sequencing nodes

* Remove all uses af after

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-28 12:52:46 -07:00
0HyperCubeandKeavon Chambers cac92ad9a2 Fix fast drag with path tool eating handles (#763)
* Fix fast drag with path tool eating handles

* Remove extra space

* Import ordering

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-27 18:19:20 -07:00
0HyperCubeandKeavon Chambers 3c2bc04c3c Stop dragging after deselecting point with Shift key (#764)
Stop dragging after deselecting point with shift

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-27 17:38:45 -07:00
0HyperCubeandKeavon Chambers 9b67a96adf Prevent using G/R/S without any layers selected (#761)
Stop users from using g/r/s without selected layers

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-27 15:21:26 -07:00
0HyperCube f18acd055e Fix licenses (#765) 2022-08-27 13:49:19 -07:00
0HyperCubeandKeavon Chambers 3775aedab1 Add point insertion to the Path tool (#754)
* Messaging cleanup

* Add bezier iter

* Add splitting

* Use bezier_rs bounding box

* Cleanup

* Fix comments

* Fix typo

* Code review tweaks

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-21 14:43:24 -07:00
0HyperCubeandKeavon Chambers d8b4055bcb Add path closing and segment extension to the Pen tool (#753)
* Close paths with pen tool

* Issue Z command always at end of path

* Small code review style changes

* Extending paths

* Fix mirror on extend path

* Code review tweaks

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-08-20 16:36:17 -07:00
0HyperCube dd3d33e523 Fix images and text again (#752)
* Images and text now work again

* Fix crash on load images
2022-08-18 13:40:34 +01:00
0HyperCube 3dc36297d0 Fix a new non-infinite document getting a NaN zoom (#750) 2022-08-15 11:11:06 -07:00
0HyperCubeandKeavon Chambers 94e21c803f Tree-based message logging and toggleable trace printing (#728)
* Log message tree

* Log when message execution deferred

* Tree structure in traces

* Fix ordering when queue partially consumed

* Change some log settings and wording

* Revert default max log level to debug

* Change messages to On/Names/Contents as log::info, change trace to toggle, rename GlobalMessage to DebugMessage

* DebugPrintDocument cleanup

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-07-22 17:33:21 -07:00
0HyperCube 08721aa7a2 Fix desynced UI (#727) 2022-07-15 18:41:14 +01:00
0HyperCubeandKeavon Chambers 342d4b5f02 Fix IndexedDb in Firefox private browsing mode (#721)
* Fix db in firefox private

* Polished wording

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-07-09 15:23:49 -07:00
0HyperCube fed1ccff88 Fix path overlays and pen tool click (#720)
* Fix path overlays

* Fix pen tool click
2022-07-09 13:20:37 -07:00
9ed9db7009 Fix select tool deselect all (#714)
* Fix select tool deselect all

* remove extra log

* add back buffer to branch

* Remove the buffer vec

Co-authored-by: mfish33 <maxmfishernj@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-07-06 17:26:16 +01:00
0HyperCube b7f3ad6bda Improve message ordering to use a stack (#707)
* Improve message ordering

* Resovle bug with widgets

* Less code duplication for UpdateOpenDocumentsList

* Fix layer panel
2022-07-01 11:11:15 -07:00
0HyperCubeandKeavon Chambers 2191b09f9f Image and text bug fixes (#685)
* Image and text bugfixes

* Mark only the required layer types as dirty

* Fix doctest

* Disable selection if empty

* Cleanup naming

* Simplify cache deleting on export

* Minor css style change

* Nit

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-06-29 18:18:01 -07:00
0HyperCube 42db620b3c Prevent subsequent panics for already borrowed editor (#689)
Fix double panic
2022-06-26 14:55:24 -07:00
0HyperCube 55ef8eedb8 Fix Ctrl+Enter to commit text (#675) 2022-06-11 04:01:31 -07:00
0HyperCubeandKeavon Chambers 42dbed9315 Add font menu previews and virtual scrolling (#650)
* Keyboard menu navigation

* Fix dropdown keyboard navigation

* Fix merge error

* Some code review

* Interactive dropdowns

* Query by data attr not class name

* Add locking behaviour

* Add font prieviews

* Remove blank line in css

* Use default for interactive in struct

* Use menulist for fontinput

* Polish

* Rename state -> manager

* Code review

* Cleanup fontinput

* More cleanup

* Make fonts.ts an empty state

* Fix regression

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-06-10 15:21:10 -07:00
0HyperCube 4f968385c5 Fix hover outline when panning (#673) 2022-06-10 13:33:36 -07:00
0HyperCube 93354fa9ae Fix nudge and textbox creation (#672)
* Fix nudge and textbox creation

* Code review

* Cleanup veriable names
2022-06-10 09:25:37 -07:00
0HyperCubeandKeavon Chambers 469e40d4e9 Refactor font loading from per-document to the portfolio (#659)
* Cleanup default font loading

* Refactor fonts

* Fix menulist mouse navigation

* Format

* Formatting

* Move default font into consts.rs

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-05-26 16:27:33 -07:00
0HyperCubeandKeavon Chambers 889e988fb3 Keyboard menu/widget navigation (#628)
* Keyboard menu navigation

* Fix dropdown keyboard navigation

* Fix merge error

* Some code review

* Interactive dropdowns

* Query by data attr not class name

* Add locking behaviour

* Change query selector style

* Change query selector style (again)

* Code review feedback

* Fix highlighted entry regression

* Styling and disabling checkbox tabindex in MenuLists

* Don't redirect space off canvas to backend

* Do not emit update if value same

* Escape closes all floating menus

* Close dropdowns on blur

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-05-25 14:10:18 -07:00
0HyperCubeandKeavon Chambers c73f8a64a0 Fix paste into UI (#654)
* Keyboard menu navigation

* Fix dropdown keyboard navigation

* Fix merge error

* Add font prieviews

* Fix paste into UI

* Fix paste UI

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-05-23 20:01:36 -07:00
0HyperCubeandKeavon Chambers 3554a38d27 Restore the zoom to fit behaviour in new bounded documents (#641)
* Restore the zoom to fit behaviour

* cargo fmt

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-05-12 11:31:35 -07:00
0HyperCubeandKeavon Chambers 1481b03c85 Add the File > Export dialog and PNG/JPG downloading (#629)
* Add export dialog

* Code review changes

* More code review feedback

* Fix compilation on stable Rust

* Fixes to problems

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-05-08 23:35:22 -07:00
0HyperCubeandKeavon Chambers 79d40fa451 Snapping system improvements and refactor (#621)
* Snap to points and refactor

* Improve dot position on bounds

* Add snap matrix

* Cleanup

* Code review

* Half axis fade rather than increase it

* Fix fmt

* Hide snap to point overlay when active

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-05-08 20:13:57 -07:00
0HyperCubeandKeavon Chambers f177f63217 Migrate dialogs to Rust and add a New File dialog (#623)
* Migrate coming soon and about dialog to Rust

* Migrate confirm close and close all

* Migrate dialog error

* Improve keyboard navigation throughout UI

* Cleanup and fix panic dialog

* Reduce css spacing to better match old dialogs

* Add new document modal

* Fix crash when generating default name

* Populate rust about graphite data on startup

* Code review changes

* Move one more :focus CSS rule into App.vue

* Add a dialog message and move dialogs

* Split out keyboard input navigation from this branch

* Improvements including simplifying panic dialog code

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-05-07 01:59:52 -07:00
0HyperCube b61d91e3c5 Draw the outlines of shapes on hover and selection (#609)
* Add hover outline overlay

* Increase selection tolerance

* Increase weight

* Only check if top intersection is selected

* Outline selected paths

* Reduce outline weight

* Increase path tool outline thickness to match hover
2022-04-23 17:21:48 -07:00
0HyperCube 6777864ca3 Fix properties deselect (#606)
* Fix properties panel deselect

* Fix arrow cursors on select tool

* Fix drag from UI to document causing mouse down

* Fix tests

* Cleanup
2022-04-22 10:58:29 +01:00
0HyperCube 8a8e94a4bb Stop pointerdown event from properties panel (#600) 2022-04-21 21:14:11 +01:00
0HyperCube 2ace16df0f Improvements to the layer transform cage UX (#589)
* Allow input system to handle mousedown while dragging

* Fix abort

* Add apsect ratio

* Make comment more explicit

* Fix abort when dragging

* Constrain when dragging edge
2022-04-21 10:00:22 +01:00
0HyperCubeandKeavon Chambers 239aa03453 Font selection for text layers (#585)
* Add font dropdown

* Add fonts

* Font tool options

* Fix tests

* Replace http with https

* Add variant selection

* Do not embed default font

* Use proxied font list API

* Change default font to Merriweather

* Remove outdated comment

* Specify font once & load font into foreignobject

* Fix tests

* Rename variant to font_style

* Change TextAreaInput to use FieldInput (WIP, breaks functionality)

* Fix textarea functionality

* Fix types

* Add weight name mapping

* Change labeling of "Italic"

* Remove commented HTML node

* Rename font "name" to "font_family" and "file" "font_file"

* Fix errors

* Fix fmt

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-04-21 09:50:44 +01:00
0HyperCube ca28bc3947 Fix gradient transformation (#588)
* Fix with perfect circle

* Actually fix rotated gradient

* Gradient transform & fix on rotated canvas

* Cleanup & remove logging
2022-04-20 18:14:33 +01:00
0HyperCubeandKeavon Chambers 66a100ff52 All shapes now have a Fill in the properties panel; color inputs are now optional (#583)
* Add aditional stroke properties

* Make the colour input optional

* Fix fmt

* Apply code review changes

* Code review nitpicks

* Fix recursion

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-04-18 09:25:09 +01:00
0HyperCubeandKeavon Chambers 24c8e6ad6f Add additional stroke properties (#582)
* Add aditional stroke properties

* Add comment explaining clones for closure

* Improve labels

* Fix doc test

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-04-09 01:28:29 -07:00
0HyperCube d49914e7c1 Fix panic dialogue when handling a message (#573)
* Fix panic dialogue when handling a message

* Fix indents for github reporting

* More whitespace improvements
2022-04-02 13:42:10 -07:00
0HyperCubeandKeavon Chambers 95ce94fa50 Add embedable images (#564)
* Add embedable bitmaps

* Initial work on blob urls

* Finish implementing data url

* Fix some bugs

* Rename bitmap to image

* Fix loading image on document load

* Add transform properties for image

* Remove some logging

* Add image dimensions

* Implement system copy and paste

* Fix pasting images

* Fix test

* Address code review

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-03-27 11:43:41 +01:00
0HyperCube bac34e3e64 Fix clippy lints and update packages (#568)
# Conflicts:
#	Cargo.lock
2022-03-14 14:23:08 -07:00
0HyperCubeandKeavon Chambers 2aba0fc06b Gradient Tool (#546)
* Refactor to support fill enum & svg defs

* Init tool

* Fix advertise

* Gradient tool click and drag

* Overlays

* Drag overlays

* Cleanup

* Fix transform on elongated shapes

* Snap rotate

* Snapping

* Add hints

* Rename to solid

* Code review changes

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-02-14 15:07:11 -08:00
0HyperCube 2bf1d5ebea Reduce transformation cage rotate tolerance (#548) 2022-02-13 21:49:06 +00:00
0HyperCube 02516d8cbb Rename tools (#537)
* Rename tools

* Rename Text -> TextLayer
2022-02-12 19:04:34 +00:00
0HyperCube e22030ffb2 Allow deleting artboards (#533) 2022-02-10 20:03:14 +00:00
c54774c4c3 Implement the Crop Tool for artboard resizing (#519)
* Extract transformation cage to a seperate file

* Hook up tool

* Implement resize

* Draw artboards

* centre and constrain

* Bounding box is rotated

* Fix transform handle positions for artboard

* Drag layers

* Snapping

* Fix imports

* Cleanup

* Remove allocation from bounding_boxes

* Round artboard size and position

* Hints

* Fix rotated transform cage

* Code review changes

* Hints changes

Co-authored-by: Dennis <dennis@kobert.dev>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-02-09 15:22:23 -08:00
0HyperCube 8b6c786ca8 Fix TextInput widget casting from string to number by mistake (#528) 2022-02-09 15:13:22 -08:00
0HyperCube 07c1d887be Double click on a SimpleShape to path edit (#507) 2022-02-05 17:19:32 +00:00
0HyperCubeandKeavon Chambers 0a1717cf77 Transformation cage (#502)
* Render corners and edges of selection box

* Refactor

* Add drag detection

* Implement the transform handles

* Implement rotation by dragging <40px from bounds

* Refine clustered handle behaviour

* Add cursors

* Add snap angle

* Fix MMB drag whilst in select tool

* Convert calculate_pivot into a seperate function

* rename start_vec to start_offset

* Fix typo

* Remove Undo transaction on <10px mouse move

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-02-04 16:46:44 +00:00
0HyperCubeandKeavon Chambers 376f4da480 Clean up text input (#506)
* Fix firefox text input

* Fix descenders below bounding box

* Fix chromium empty text

* Descenders back below baseline

* Fix trailing newline on chromium

* Reinstate correct baseline height

* Fix highlighted new line on empty text

* Add comment for trailing new line removal

* Extract cleanupTextInput to a separate file

* Function import simplification

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-02-03 20:26:44 -08:00
0HyperCubeandKeavon Chambers 5c5d3b0d1c Fix overlays on document switching (#505)
* Fix overlays on document switching

* Fix generating new document

* Move messages

* Abort tool when deleteing active document

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2022-02-03 19:08:39 +00:00