jspaint/TODO.md

347 lines
9.8 KiB
Markdown
Raw Normal View History

2014-05-18 08:47:46 +00:00
2014-09-22 10:13:18 +00:00
# ![](images/icons/32.png) JS Paint Todo
2014-05-18 08:47:46 +00:00
2015-10-17 17:10:33 +00:00
* Help Topics
2015-10-18 00:43:21 +00:00
* Resizable panes
* Resizable window
2015-10-17 17:10:33 +00:00
* Link-esque things
* Popups (I'll probably make the text selectable within the popups)
2015-10-17 17:10:33 +00:00
* Related topics (I'll probably make this a heading with links instead of the weird context menu thing)
* Note unsupported features
* "To use black and white instead of color"
* "To display gridlines"
2015-10-19 19:11:10 +00:00
* Update topics
2015-10-19 20:15:01 +00:00
* "To use a picture as the desktop background":
add a third step? It's not quite that easy (at least in the browser)
* "To create custom colors": way too OS-specific
(unless I'm gonna emulate the color selection dialogue)
2015-10-19 19:11:10 +00:00
* "To enlarge the size of the viewing area" (`paint_enlarge_area.htm`):
jspaint currently allows you to draw while "Viewing the Bitmap"
* "To zoom in or out of a picture", "To type and format text":
"You can enter text into a picture only in Normal view."
— jspaint handles this case (well, as well as it handles the Normal case)
* Add topics
* In "Tips and Tricks" (which is just a lame section)
* Transparency
* Replace "To use black and white instead of color"?
* Multiplayer / collaboration / "sharing the document"
2015-10-18 00:43:21 +00:00
* Index
* Search
2015-10-19 19:11:10 +00:00
* Keyboard support
* Rename everything
* `paint_squares` to `paint_rectangles`
* `*.htm` to `*.html`
2015-10-17 17:10:33 +00:00
2016-03-24 16:00:40 +00:00
* Make storage quota dialogue clearer
* Also add a message like "All cleaned up!" (probably with an additional Close button)
2014-09-29 01:19:39 +00:00
* Visual
2015-06-19 19:29:49 +00:00
* Warning sign for "Save changes to X?" dialogue
* Error symbol for error message dialogues
2014-10-24 00:54:05 +00:00
* The window close button uses text; font rendering is not consistent
2015-06-29 04:19:22 +00:00
* The menus use text; the arrow character is converted to an icon on some mobile devices
2014-10-24 00:54:05 +00:00
* The progress bar (Rendering GIF) is left native
2014-09-22 10:13:18 +00:00
* Use win98 default scrollbar size
2015-10-17 17:10:33 +00:00
* Menu seperator spacing
2014-09-22 10:13:18 +00:00
* Minor color differences (0x808080 != 0x7b7b7b)
2014-09-29 21:12:32 +00:00
* I want to give most things a revisit later on for Pixel Perfection
* Dynamic cursors
* Inverty fill bucket and airbrush cursors
* Previewy brush and eraser cursors
2015-06-15 23:50:31 +00:00
* Pixelize icons, images, checkered backgrounds when zoomed in
2014-09-22 10:13:18 +00:00
2014-09-29 01:19:39 +00:00
* Issues
* If you open an image it resets the zoom but if you're on the magnification tool it doesn't update the options
2015-06-15 23:50:31 +00:00
* If you zoom in with the magnifier without previously changing the magnification on the toolbar,
then switch back to the magnifier, the toolbar doesn't show any magnification highlighted
2016-03-24 16:00:40 +00:00
* Selections
* Completely broken in Firefox
* Broken in Edge when zoomed in
* https://github.com/1j01/jspaint/issues/3
* Middle-click scrolling is prevented
2014-09-29 01:19:39 +00:00
* Firefox
* It lags unusably when using tools
* For some tools it only happens while dragging the mouse on the canvas
* Tool options flicker... *and lag*, when they're redrawn in quick succession
2014-11-28 02:53:34 +00:00
* The TextBox scrollbars have extra buttons
* The TextBox contents move down and right when rasterizing
2015-06-15 23:50:31 +00:00
* Free-form select can leave behind inverty brush in multiplayer
2014-11-28 02:53:34 +00:00
* Multiplayer cursors that go outside the parent can cause the page to be scrollable
* Multiplayer interupts you:
* If you try to make a selection when there's a selection
* If you try to play with multiple players
2014-09-29 01:19:39 +00:00
2014-09-29 01:19:39 +00:00
### Menus
2015-06-29 04:33:22 +00:00
* Keyboard navigation of submenus
* <kbd>Alt</kbd> (by itself)?
2014-10-27 01:16:43 +00:00
2014-09-29 01:19:39 +00:00
### Components / Windows
* Use the ghost when dragging on a component window's titlebar
2015-02-24 00:39:43 +00:00
* Make the component ghost account for the window's titlebar
2014-09-29 01:19:39 +00:00
* Handle windows going off the screen
2014-05-22 08:20:59 +00:00
### Extended editing
2014-05-18 08:47:46 +00:00
2014-10-24 00:54:05 +00:00
* Transparency ✓
2014-09-29 21:12:32 +00:00
* Detect transparency when opening an image ✓
* Option in Image > Attributes... ✓
2014-09-29 21:12:32 +00:00
* Color opacity slider
2014-10-02 19:29:25 +00:00
* Toggle between blend and copy modes
2014-11-20 13:51:24 +00:00
* Represent transparency with a checkered background pattern
2014-10-24 00:54:05 +00:00
* Maybe equivalise any rgba(X, X, X, 0) in fill algorithm
2014-09-29 21:12:32 +00:00
* Images with multiple sub-images
* Component to switch between sub-images
* Deal with undo/redo for sub-images
* Animated GIFs
* Transparency ([jnordberg/gif.js issue #5](https://github.com/jnordberg/gif.js/issues/5))
* Animated Transparent APNGs
* APNG Library ([this kickstarter wants $15,000 to make this](https://www.kickstarter.com/projects/374397522/apngasm-foss-animated-png-tools-and-apng-standardi))
* Multi-size Icons
* Windows ICO ([jBinary can read](http://jdataview.github.io/jBinary.Repo/demo/#ico) and presumably write ICO files)
* Mac ICNS
* Layered images?
* Photoshop PSD ([via psd.js](https://github.com/trevorlinton/psd.js))
* OpenRaster ORA ([via ora.js](https://github.com/zsgalusz/ora.js/tree/master))
2014-05-18 08:47:46 +00:00
2014-10-24 00:54:05 +00:00
* Multiplayer
2015-10-17 17:10:33 +00:00
* See [multiplayer.js](src/multiplayer.js)
2014-10-27 01:16:43 +00:00
* Deal with undo/redo for sessions
2014-10-24 00:54:05 +00:00
2014-09-22 10:13:18 +00:00
2014-11-25 05:39:16 +00:00
### Device support
2014-05-18 08:47:46 +00:00
2015-06-22 00:01:12 +00:00
* Multi-touch devices
* Two-finger drag to pan (the second touch cancels the default action just like normal)
* Single-touch devices
* Pan tool
2014-09-22 10:13:18 +00:00
2014-05-18 08:47:46 +00:00
2015-06-22 00:01:12 +00:00
* Enlarge GUI elements on touch devices
2015-06-29 04:19:22 +00:00
* Menus!
* Resize handles
2015-06-16 01:29:30 +00:00
2014-09-29 01:19:39 +00:00
* You can't use the Eraser/Color Eraser tool as a "Color Eraser" without a secondary mouse button
2014-10-24 00:54:05 +00:00
* Make sure anything that uses hovering is paralleled on mobile (tooltips, :hover effects)
2014-09-29 01:19:39 +00:00
2014-11-27 16:27:58 +00:00
* Access to functionality that would normally require a keyboard (with a numpad!)
2014-09-29 01:19:39 +00:00
* Numpad +/-: Increase/Decrease brush size, Double/Half selection size, ...
* Shift (toggle): Proportional, Smear / Trail Selection, "Snap to 8 directions" / "Octosnap"?
2014-11-27 16:27:58 +00:00
* Ctrl+Select: Crop tool
2014-09-29 01:19:39 +00:00
* Ctrl+Shift+G: "Render GIF"
2014-05-22 08:20:59 +00:00
2014-08-08 21:44:46 +00:00
2014-09-29 01:19:39 +00:00
### Tools
2014-09-22 10:13:18 +00:00
2014-10-24 07:17:24 +00:00
* Free-Form Select
* Passive: create no undoables until you do something
* See [On-Canvas Objects](#on-canvas-objects) for Selection
2014-09-22 10:13:18 +00:00
2014-10-02 19:29:25 +00:00
* Select
* Passive: create no undoables until you do something
* See [On-Canvas Objects](#on-canvas-objects) for Selection
2014-10-02 19:29:25 +00:00
* Eraser/Color Eraser ✓
2014-09-20 17:36:56 +00:00
* Fill With Color
2014-11-20 13:51:24 +00:00
* Find a better fill algorithm that gets into all the corners
2014-10-02 19:29:25 +00:00
* Pick Color ✓
2014-11-27 03:54:50 +00:00
* Magnifier
* Choose and preview viewport with rectangular cursor
2014-10-02 19:29:25 +00:00
* Pencil
* Adjust size
* Brush ✓
* Airbrush ✓
2014-05-22 08:20:59 +00:00
2014-09-20 17:36:56 +00:00
* Text
* Handles
* Wrapping!
2014-09-20 17:36:56 +00:00
* Underline
* Expanding to new lines
2014-10-02 19:29:25 +00:00
* Minimum size of 3em x 1em
2014-09-20 17:36:56 +00:00
* Store position of FontBox
2014-11-27 16:27:58 +00:00
* Keep an old TextBox while drawing a new one
* Save text and record transformations so the image can be saved as
SVG (or HTML?) with invisible selectable transformed text elements
2014-09-20 17:36:56 +00:00
2014-10-02 19:29:25 +00:00
* Line
* Stroke size when aliased
2014-10-02 19:29:25 +00:00
* Curve
* Aliasing
* Rectangle
* The stroke should go within the rectangle
* Polygon
* Aliasing
2014-11-27 16:27:58 +00:00
* Handle self-intersecting shapes like MS Paint, not like the canvas API
2014-10-02 19:29:25 +00:00
* Issue with extra undoables
2014-10-24 07:17:24 +00:00
* Close and finalize the polygon when switching to a different tool
2014-10-02 19:29:25 +00:00
* Ellipse
* See below
* Rounded Rectangle
* See below
2014-09-20 17:36:56 +00:00
2014-09-29 01:19:39 +00:00
* **Options**
* Secret 10x zoom by clicking the area just underneath the 8x zoom
* In MS Paint, visual area =/= selection highlight area =/= clickable area
2014-09-20 17:36:56 +00:00
2014-09-22 10:13:18 +00:00
2014-09-29 01:19:39 +00:00
* **Shape Styles and Strokes**
* Shapes: respond to Ctrl (It's complicated)
* Lots of things: Use stroke size
2014-10-02 19:29:25 +00:00
* Rounded Rectangle & Ellipse:
2014-09-29 01:19:39 +00:00
* Support shape styles!
2014-11-27 16:27:58 +00:00
* If the width/height is less than the stroke size,
it should draw a shape with no stroke, filled with
the color that would normally be used for the stroke.
### On-Canvas Objects
* Selection
* Proportionally resize selection while holding Shift
2014-11-27 16:27:58 +00:00
* Don't cut until you drag or do something else
(In MS Paint, you can make a selection, change the background color
and drag it, leaving the new background color behind.)
2014-10-27 01:16:43 +00:00
* Classic transparency where the selected background color is considered transparent
* TextBox
* See Text tool
2014-11-29 17:53:26 +00:00
* Handles
* Hide the canvas handles when there is a selection. (This used to work!)
* I have a git stash where I'm trying to improve selections.
2016-03-24 16:00:40 +00:00
Hiding canvas handles is fixed there, but other stuff is broken
2014-11-29 17:53:26 +00:00
### BSOD
2014-05-22 08:20:59 +00:00
2014-09-20 17:36:56 +00:00
Press ~ to bluescreen (or maybe something on the numpad?)
2014-05-22 08:20:59 +00:00
2014-06-07 15:37:08 +00:00
Prankily wait for next user input before fullscreening and bluescreening
2014-05-22 08:20:59 +00:00
### Chrome App
2014-05-22 08:20:59 +00:00
2014-09-02 23:02:38 +00:00
* Set up build process
2014-11-20 13:51:24 +00:00
* Increment version
2014-09-20 17:36:56 +00:00
* Compress into zip file
* Upload new version to the Chrome Web Store?
2014-09-20 17:36:56 +00:00
2014-09-02 23:02:38 +00:00
2014-11-20 13:51:24 +00:00
* Use the chrome.wallpaper API to change the ChromeOS wallpaper
* Theoretical support ✓
* Test this on Chrome OS
2014-05-22 08:20:59 +00:00
2014-09-20 17:36:56 +00:00
2014-09-22 10:13:18 +00:00
* Custom window frame
* (Note: Minimum window size might need updating)
2014-05-29 19:04:47 +00:00
2014-09-20 17:36:56 +00:00
2015-10-19 19:11:10 +00:00
* Save/manage application state
* On restart, reopen images from storage
* On close / Exit, ask to save, remove image from storage
2016-03-24 16:00:40 +00:00
* Basic things that people would complain about
2014-08-16 01:57:01 +00:00
2014-09-22 10:13:18 +00:00
2015-10-19 19:11:10 +00:00
* [Analytics](https://developer.chrome.com/apps/analytics)
2016-03-24 16:00:40 +00:00
* Publish to the Chrome Web Store!
### Native App
* Proper clipboard support
* A dialogue when closing
* Subwindows outside the main window
* A different way of handling always-saved documents
(recovery?)
2014-08-16 01:57:01 +00:00
### Also
2014-10-18 06:34:44 +00:00
* Anything marked `@TODO` or `@FIXME` in the source code
2014-09-29 01:19:39 +00:00
* Improve README
2015-10-19 19:11:10 +00:00
* More images! Animated GIFs perhaps? :)
2014-09-29 01:19:39 +00:00
* CSS
2015-02-24 00:39:43 +00:00
* Buttons shouldn't need a class `.jspaint-button`!
2014-09-29 01:19:39 +00:00
* Color cells probably shouldn't be buttons
* There also shouldn't be classes `.jspaint-window-button` (`.jspaint-window-titlebar button`) or `.jspaint-dialogue-button` (`.jspaint-window-content button`) at all
* DRY, especially for the buttons
* Seriously, the buttons
2015-06-15 23:50:31 +00:00
* Move into styles folder
* Deal with `z-index`es
2014-11-20 13:51:24 +00:00
* Comment stuff
2015-02-24 00:39:43 +00:00
* Buttons
* Srsly
2015-06-15 23:50:31 +00:00
* C'mon
* Buttons
* Also other `.jspaint-` classes
2014-09-29 01:19:39 +00:00
* JS
2016-03-24 16:00:40 +00:00
* `Selection` and `TextBox` should inherit from a base class
* Remove either `selection.x/y/w/h` or `._x/_y/_w/_h`; and use `x/y/width/height`
2016-03-24 16:00:40 +00:00
* Outdated names like `sel.$ghost` being `div.jspaint-selection` (not exactly a ghost)
* Everything is in random files! "functions.js", REALLY?
2016-03-24 16:00:40 +00:00
* `$Window` has a `$Button` facility; `$FormWindow` overrides it with essentially a better one
* Image inversion code is duplicated in `ChooserCanvas` from tool-options.js but should go in image-manipulation.js
* Make code clearer / improve code quality: https://codeclimate.com/github/1j01/jspaint
2014-10-01 18:45:19 +00:00
2014-10-18 06:34:44 +00:00
* Images
2015-06-15 23:50:31 +00:00
* Use a global sprite sheet, and optimize it
2014-10-18 06:34:44 +00:00
2014-10-01 18:45:19 +00:00
* Search Engine Optimization
* Load the About Paint content from an element on the page that gets hidden by code
2014-09-29 01:19:39 +00:00