jspaint/TODO.md

184 lines
5.6 KiB
Markdown
Raw Normal View History

2014-05-18 08:47:46 +00:00
# Todo
2014-05-22 08:20:59 +00:00
* Improve README
2014-08-18 20:56:16 +00:00
* Introduce and explain the project ...better?
2014-06-03 00:13:16 +00:00
* Is a link in the header visible enough?
* Publish jspaint to the webstore and link to that
* Make it pretty with images
2014-05-18 08:47:46 +00:00
* Menus!
2014-05-29 19:04:47 +00:00
* Keyboard Navigation
* Mouse navigation
* Use keyboard shortcuts defined in the `menus` data structure (which isn't currently saved to a variable) to declaratively setup hotkeys
* on key press, loop through the menus
* if shortcut matches
* "call to action"
* break
* Pixel Perfection
2014-08-18 15:27:39 +00:00
* MAKE THINGS DO THINGS
* Image > Attributes
2014-08-18 17:34:47 +00:00
* Image > Clear Image ✓
2014-08-18 15:27:39 +00:00
* View > Show/Hide stuff
* Edit > Paste From... ✓
* Select the selection tool
2014-08-18 15:27:39 +00:00
* Other stuff
* About paint
2014-08-19 19:55:06 +00:00
* Repeat is always grayed out, but is functional
* Clear Selection is always grayed out, but is functional
2014-05-18 08:47:46 +00:00
2014-08-18 15:27:39 +00:00
* For tools, don't draw for every single pixel the mouse moves, when drawing once would have the same effect but be 10x-300x+ faster!
* Firefox's canvas is slow which makes the difference very obvious!
* `filter: invert();` doesn't work yet in Firefox
* Invert the image with canvas
* Make class $UpscaledCanvas
2014-05-22 08:20:59 +00:00
* Keep track of what's saved
* Don't warn about saving saved files (Ctrl+S and then Ctrl+N)
* Do warn about losing unsaved files (close button, etc.)
2014-05-22 08:20:59 +00:00
* Issue: status text gets cut off
2014-06-07 16:11:49 +00:00
Also, it should gracefully push the dimension displays off the edge instead of covering up the text with usually blank space
2014-08-08 21:44:46 +00:00
* It's not supposed to show the canvas handles when there is a selection. It used to hide them but now it doesn't.
2014-06-07 15:37:08 +00:00
* Handle some edge cases
* `this_ones_a_frame_changer();` (undo, redo, reset, file_open, ... switching between frames of an animation)
* That's not how mspaint handles these edge cases. It disables actions while you're drawing. Maybe I should do that. (It does allow actions when you have a selection, and handles this like I tried to)
2014-06-07 15:37:08 +00:00
* The window can be smaller than the minimum window area of mspaint
* Dialogue windows should go away at some point. Also, there should only be one of most of them at a time.
2014-06-07 15:37:08 +00:00
* Set up minification?
2014-05-22 08:20:59 +00:00
2014-05-30 07:00:01 +00:00
* Use win98 default scrollbar size @easy
2014-05-22 08:20:59 +00:00
* Minor color differences (0x808080 != 0x7b7b7b)
* Tips and Tricks from [this tutorial](http://www.albinoblacksheep.com/tutorial/mspaint)
2014-05-22 08:20:59 +00:00
* Brush Scaling ✓
* Custom Brushes ✓
* The 'Stamp' "Tool" ✓
2014-08-19 19:55:06 +00:00
* Image Scaling ✓
2014-05-22 08:20:59 +00:00
* Color Replacement (see [Tools](#tools))
* The Grid (Ctrl+G + zoom6x+)
* Quick Undo ✓ (I also made it redoable, in case you do it by accident)
* Scroll Wheel draws line down and to the right (let's maybe not implement this hm?)
2014-05-18 08:47:46 +00:00
2014-05-22 08:20:59 +00:00
### Extended editing
2014-05-18 08:47:46 +00:00
* Transparent PNGs
2014-08-08 21:44:46 +00:00
* Detect transparency when opening an image
* Optimization: Don't forget to assume jpegs are opaque. Because they are.
2014-08-08 21:44:46 +00:00
* Option in Image > Attributes...
* Animated GIFs
2014-08-08 21:44:46 +00:00
* Use ternary color as transparent color?
* Animated Transparent (A)PNGs
* Multisize Icons
2014-05-18 08:47:46 +00:00
### Mobile support
2014-05-18 08:47:46 +00:00
* Multitouch (use pointer events polyfill)
* Tap (/click?) current colors area to swap
2014-05-18 08:47:46 +00:00
### Actions
2014-05-22 08:20:59 +00:00
* Canvas Manipulations
* Rotate
* Flip
* Skew
2014-08-08 21:44:46 +00:00
* Invert ✓
2014-08-18 17:34:47 +00:00
* Clear ✓
* Undo/Redo History to Frames
2014-05-18 08:47:46 +00:00
### Tools
2014-05-22 08:20:59 +00:00
2014-08-08 21:44:46 +00:00
* Curve tool
* Aliasing
2014-08-08 21:44:46 +00:00
* Polygon tool
* Issue with extra undoables
* Ending the operation when switching tools
* Self-intersecting shapes are handled differently by mspaint than with the Canvas API
* Aliasing
* Close the polygon when switching tools
* OPTIONS
* shapes all have their own settings for [fill | stroke | stroke_fill] ✓
* shapes, lines and curves all use one setting for stroke width ✓
* selection + free-form selection + text use one setting for [opaque/transparent] ✓
* secret 10x zoom by clicking the area just underneath the 8x zoom
2014-05-22 08:20:59 +00:00
* visual area is different from selection highlight area is different from clickable area
* fill bucket and airbrush cursors are supposed to be inverty :\
2014-05-22 08:20:59 +00:00
* Color Eraser
2014-06-03 00:13:16 +00:00
* right click with the eraser to selectively replace color1 with color2
2014-05-22 08:20:59 +00:00
* Fill Bucket
* Find a better fill algorithm!
* get into those corners!
* handle transparency
2014-05-22 08:20:59 +00:00
* Text tool
* Handles
* Wrapping!
* Expanding to new lines
2014-08-16 01:57:01 +00:00
* Minimum size of 3em x 1em (that is, the width of 3 'm's by the height of one line)
2014-08-18 15:27:39 +00:00
* Fonts (`FontBox`)
* Detect fonts
2014-08-18 15:27:39 +00:00
* Implement underline (Probably after wrapping!)
* Store position
2014-08-16 01:57:01 +00:00
* Keep the old textbox while drawing a new one (this somewhat complicates the "singleton" pattern I'm using now)
* Save text and record transformations so it can be saved as an SVG (or HTML?) with invisible selectable elements
* Select tool
* Handles
* Image is blurry
* Strokes
* Shapes respond to Ctrl, by...
* It's complicated.
* Use stroke size
* Rectangle: The stroke is within the rectangle.
* Rounded Rectangle / Ellipse: If the width/height is less than the stroke size, it fills a similar shape with the stroke color.
### Colors
2014-06-03 00:13:16 +00:00
This isn't in mspaint, but maybe use should be able to click (double-click?) one of the selected colors to change it directly?
Or, for mobile, tap/click to switch colors. Yeah, that sounds better.
2014-08-16 01:57:01 +00:00
Load palettes with [palette.js](https://github.com/1j01/palette.js/)
### Components / Windows
* Drag components into a window ✓
* Drag window and component together seamlessly
* Double-click a component window's titlebar to dock the component to its most recent location.
### BSOD
2014-05-22 08:20:59 +00:00
Press `/~ to bluescreen
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
* 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-05-29 19:04:47 +00:00
* Themed window border
* (Note: Minimum window size might need updating)
2014-05-29 19:04:47 +00:00
* Publish to webstore!?!?!?
2014-08-16 01:57:01 +00:00
### Also
Anything marked `@TODO` in the source code is also to be done.