Commit Graph

237 Commits (main)

Author SHA1 Message Date
Isaiah Odhner 894c0b138a Update todos
- I have created a home page for JS Paint: https://jspaint.app/about
- Tweak other todos
2023-08-14 20:45:01 -04:00
Isaiah Odhner b75f6c31a8 Support CSP in Electron and in browser 2022-01-15 16:54:07 -05:00
Isaiah Odhner c6c8c0c991 Add unsaved changes dialog when closing electron app 2022-01-15 16:54:07 -05:00
Isaiah Odhner be45ba9bc3 Enable sandboxing in electron app
- This was a huge pain in the neck, literally and figuratively.
- Saving: WORKING
- Opening: WORKING
- Overwriting: WORKING
- Wallpaper: (reply was never sent...)
2022-01-14 00:39:38 -05:00
Isaiah Odhner fde33a73ed TODO 2022-01-13 19:08:18 -05:00
Isaiah Odhner ec81e6aca8 Set up Content-Security-Policy for Electron app 2022-01-13 19:08:18 -05:00
Isaiah Odhner f6da7f4b82 Update todo :)
(Alt by itself doesn't work yet, but this is OS-GUI's territory)
2021-11-29 02:27:37 -05:00
Isaiah Odhner 9c88f205b2 Improve message boxes
- Add icons
- Add audio
- Add padding
- Add "default button" styling logic, where the default or focused button gets a bolder border.
- Tweak some dialogs, favoring localized and accurate renditions, rather than more modern, more specific button labels.
2021-11-29 02:27:37 -05:00
Isaiah Odhner 847fbc394b Update os-gui to 0.3.0, unifying windowing code
Enable resizable windows! And proper dialog window styles!
Tool window titlebar text is truncated with ellipses now instead of making the window ridiculously wide for some languages, e.g. EspaƱol which reads "Herramientas" for "Tools"
2021-11-19 20:31:27 -05:00
Isaiah Odhner 91c2cb6a73 Rename electron app executable name 2021-11-19 20:31:27 -05:00
Isaiah Odhner 401475e180 Set up icon for electron app
- Linux uses BrowserWindow icon option, but the filename was incorrect.
- Windows and Mac use packagerConfig, which differentiates on the file extension automatically, but the file names have to be the same otherwise.
2021-11-19 20:31:27 -05:00
Isaiah Odhner 468b8e659b Expand Extended Editing section of todos
I don't normally add to this todo list, I want it to only get smaller...
I have an external todo list with much more, that always grows,
but this is adding a lot of notes on a stated goal of the project.
2021-08-01 16:34:33 -04:00
Isaiah Odhner 977c8c3b65 Spellcheck 2021-06-19 20:40:30 -04:00
Isaiah Odhner 0e7dde674f Unify todos 2021-02-15 13:02:39 -05:00
Isaiah Odhner d51779df1a Text tool: preview exact size with ghost 2021-02-08 16:21:00 -05:00
Isaiah Odhner 480d33a042 Auto-expand textbox and apply minimum size 2021-02-08 13:41:27 -05:00
Isaiah Odhner bf95aec553 Preview window frame with ghost when component will become a window 2021-02-02 15:59:02 -05:00
Isaiah Odhner e63bb6dbc1 Allow docking component via drag from window titlebar 2021-02-02 15:59:02 -05:00
Isaiah Odhner 88cc100083 Style progress bars 2021-02-02 15:58:59 -05:00
Isaiah Odhner b8330fff79 Update docs 2021-02-02 15:58:58 -05:00
Isaiah Odhner ef3bb836d6 No more alert/confirm/prompt! 2020-05-14 01:13:25 -04:00
Isaiah Odhner 456ce97c94 Update TODOs 2020-04-29 17:36:33 -04:00
Isaiah Odhner 5e6b803967 WIP: use os-gui 2020-03-24 14:28:10 -04:00
Isaiah Odhner 14cf228157 Support patterns for Fill With Color 2019-12-23 13:50:24 -05:00
Isaiah Odhner 1cf7130ad1 nothin 2019-12-21 00:39:05 -05:00
Isaiah Odhner 2150603fb7 Update and pare down TODOs and README 2019-12-21 00:38:28 -05:00
Isaiah Odhner f9069fd8ab DRY image inversion code 2019-12-21 00:38:10 -05:00
Isaiah Odhner 8c24c79fe1 Rename 2019-12-21 00:38:09 -05:00
Isaiah Odhner 3223362074 Pan view with two finger drag on canvas 2019-12-09 22:45:49 -05:00
Isaiah Odhner f63b3cad66 Create local undoables from multi-user session updates 2019-12-09 09:39:56 -05:00
Isaiah Odhner 7ce4e94293 Fix resizing selections and textboxes when zoomed in!!! 2019-12-04 17:31:29 -05:00
Isaiah Odhner 74db55a86c Make handles way easier to grab
Like in Windows 7 Paint
2019-12-04 14:41:40 -05:00
Isaiah Odhner 0d09c24f19 Update TODO
- Underline works now!
- Re: "Keep an old OnCanvasTextBox while drawing a new one" - even tho this should be easy now that it's not using that object to represent in progress selections, I don't think I want to do this! I think the way it works now is better.
2019-12-04 13:19:34 -05:00
Isaiah Odhner d3f1ce9fb6 WIP: make Text tool WYSIWYG! 2019-12-04 11:26:23 -05:00
Isaiah Odhner 847d6fec68 Cancel polygon if first two points end up very close
- Cancel the polygon if you end up within the auto-finalization distance on the first gesture
- Regarding "Don't start making the polygon until you click and drag more than the auto-finalization distance" - I don't see evidence for this. I think this was just a misconception based on the canceling.
2019-12-03 14:48:44 -05:00
Isaiah Odhner 2d9a50161e Preview filled polygon invertily and finish with stealth stroke 2019-12-03 14:38:37 -05:00
Isaiah Odhner bc7c233e3a When switching tools, cancel curve, but complete polygon 2019-12-03 13:22:12 -05:00
Isaiah Odhner bd432432de Make Polygon passive until it's finalized 2019-12-03 10:57:15 -05:00
Isaiah Odhner 9d0ab21d54 Update help 2019-10-27 17:26:34 -04:00
Isaiah Odhner 56617c993f Fix a minor thing 2019-10-27 01:14:10 -04:00
Isaiah Odhner f046671ee3 Update TODO 2019-10-27 01:11:41 -04:00
Isaiah Odhner 3a1f4a37ca This is not an issue
It zooms to 4x, which isn't one of the options.
2019-10-26 16:53:40 -04:00
Isaiah Odhner 47bb0b075b Zoom towards mouse generally
Start implementing viewport preview and zooming in on a specific location
2019-10-26 13:25:26 -04:00
Isaiah Odhner efec7f62bb WIP: hide tool previews when appropriate 2019-10-01 18:41:33 -04:00
Isaiah Odhner a5fcf53b42 Update brush preview color when not drawing 2019-10-01 15:07:35 -04:00
Isaiah Odhner e878239be5 Implement View > Zoom > Custom... 2019-10-01 14:25:33 -04:00
Isaiah Odhner 4bc4d34c5d doot 2019-10-01 13:34:20 -04:00
Isaiah Odhner 9ffb5a6758 WIP: brush tool preview 2019-10-01 12:51:29 -04:00
Isaiah Odhner 0421882eaf Save undos/redos as ImageData & fix Free-Form Select
- (PARTIALLY avoid a browser bug in chrome. When you zoom to a non-integer scale, there's this weird quantum antialiasing due to the canvas having a backing store which is higher density than the canvas's logical pixels (and redraw regions come into play as well). Switching to storing ImageData instead of canvases for undos/redos doesn't eliminate much of this problem, but it avoids having the undos/redos also store some high-DPI state and thereby SOMETIMES restore a state of whether antialiasing is happening or not. So it's a little less weird now, but it doesn't really solve that bugginess.)
- Protect against data loss when running low on memory. The browser (chrome at least) can clear canvases when low on memory. If the data is erased, and you undo, or do anything to the canvas, jspaint saves over the autosave. Ideally there should be multiple autosaves, but for now this is catastrophic in terms of data loss. Using ImageData instead of canvases, hopefully the browser is less willing to destroy this data, since it's more like a plain data structure in your program, and you would hope it wouldn't just delete arbitrary data in your program. A crash should be better than losing the canvas data (undos/redos) because in that case the autosave should still be in tact, altho this doesn't protect against the case where the main canvas is cleared by the browser, and then you do something to interact with the canvas other than undo/redo, and then either the page crashes or you refresh, and the autosave will still be gone.
- Behavior change or Regression: Now if the document is transparent, but the document mode is opaque, and you paste something larger than the canvas, it'll keep the transparency in the area of the original document, because it's using putImageData instead of drawImage.
- Regression: When you choose Opaque in the Image > Attributes... it no longer makes the document opaque because it's using putImageData instead of drawImage.
- Fix: Rewrite the Free-Form Select's temporary shape preview to use a proper layer instead of abusing the undo stack. This reduces the number of undo states created, and should make it easier to implement passive selections in the future. (Selections shouldn't create an undo state until you start dragging them.) This should also fix a bug in multiplayer where "inverty brush" could be left behind.
2019-09-30 19:50:48 -04:00
Isaiah Odhner dac402b64b Clean up icon files
Use a (more) consistent naming scheme
2019-09-29 14:36:45 -04:00