Update TODO.md

main
Isaiah Odhner 2014-09-20 13:36:56 -04:00
parent f3c7087f63
commit f9e17c69ee
1 changed files with 60 additions and 43 deletions

103
TODO.md
View File

@ -4,13 +4,14 @@
* Improve README
* Introduce and explain the project ...better?
* Is a link in the header visible enough?
* Publish jspaint to the webstore and link to that
* Publish jspaint to the webstore (and link to that)
* Make it pretty with images
* Menus!
* 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
* Use keyboard shortcuts defined in the menu data structure (which isn't yet saved to a variable) to declaratively setup hotkeys
* on key press, loop through the menus
* if shortcut matches
* "call to action"
@ -32,22 +33,28 @@
* Repeat is always grayed out, but is functional
* Clear Selection is always grayed out, but is functional
* 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!
* Firefox's canvas is slow which makes the difference obvious!
* `filter: invert();` doesn't work yet in Firefox
* Invert the image with canvas
* Make class $UpscaledCanvas
* 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.)
* Issue: status text gets cut off
* Also, it should gracefully push the dimension displays off the edge instead of covering up the text with usually blank space
* It's not supposed to show the canvas handles when there is a selection. It used to hide them but now it doesn't.
* 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)
@ -60,26 +67,23 @@
* Use win98 default scrollbar size @easy
* Minor color differences (0x808080 != 0x7b7b7b)
* Tips and Tricks from [this tutorial](http://www.albinoblacksheep.com/tutorial/mspaint)
* Brush Scaling ✓
* Custom Brushes ✓
* The 'Stamp' "Tool" ✓
* Image Scaling ✓
* 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?)
* Scroll Wheel draws line down and to the right (um, this is a bug, though)
### Extended editing
* Transparent PNGs
* Detect transparency when opening an image
* Optimization: Don't forget to assume jpegs are opaque. Because they are.
* Optimization: Don't forget to assume jpegs are opaque.
* Option in Image > Attributes...
* Animated GIFs
* Use ternary color as transparent color?
* Animated Transparent (A)PNGs
* Multisize Icons
* Animated Transparent APNGs
* Multi-size Icons
### Mobile support
@ -87,56 +91,63 @@
* Multitouch
* Two-finger drag to pan
* Unitouch (mobile devices without multitouch support)
* Awkwardly fit in pan tool?
* Tap (/click?) current colors area to swap
* Panel for things that would normally require a keyboard? (hidden by default?)
* Numpad plus & minus (...it's not just phones that don't always have numpads...)
* Shift = "Proportional" / "Smear" / "Snap to 8 directions"?
* Ctrl+Shift+G = Render GIF?
* Pan tool awkwardly shoved into the toolbox?
* Tap/click current colors area to swap bg/fg
* Panel for things that would normally require a keyboard?
* Numpad +/- (Note: it's not just phones that don't always have numpads...)
* Shift = "Proportional" / "Smear" / "Snap to 8 directions"? "Octosnap"?
* Ctrl+Shift+G = Render GIF
* Pan tool for unitouch
* Hidden by default?
### Tools
* Curve tool
* Curve
* Aliasing
* Polygon tool
* Polygon
* Issue with extra undoables
* Ending the operation when switching tools
* Self-intersecting shapes are handled differently by mspaint than with the Canvas API
* The canvas API handles self-intersecting shapes differently than mspaint
* Aliasing
* The above two items mean I would have to re-implement drawing polygons
* Close the polygon when switching tools
* OPTIONS
* secret 10x zoom by clicking the area just underneath the 8x zoom
* visual area is different from selection highlight area is different from clickable area
* fill bucket and airbrush cursors are supposed to be inverty :\
* Color Eraser
* Eraser/Color Eraser
* right click with the eraser to selectively replace color1 with color2
* Fill Bucket
* Fill With Color
* Find a better fill algorithm!
* get into those corners!
* handle transparency
* Text tool
* Text
* Handles
* Wrapping!
* Underline
* Expanding to new lines
* Minimum size of 3em x 1em (that is, the width of 3 'm's by the height of one line)
* Fonts (`FontBox`)
* Detect fonts
* Implement underline (Probably after wrapping!)
* Store position
* 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
* Detect fonts
* Store position of FontBox
* Keep an old textbox while drawing a new one (this somewhat complicates the "singleton" pattern I'm using now)
* Save text and record transformations so the image can be saved as SVG (or HTML?) with invisible selectable transformed text elements
* Select tool
* Select
* Handles
* Image is blurry in the selection
* Proportionally resize selection by holding Shift
* OPTIONS
* secret 10x zoom by clicking the area just underneath the 8x zoom
* in mspaint, visual area =/= selection highlight area =/= clickable area
* Strokes
* Shapes respond to Ctrl, by...
* It's complicated.
@ -145,11 +156,14 @@
* Rounded Rectangle / Ellipse: If the width/height is less than the stroke size, it fills a similar shape with the stroke color.
* Inverty fill bucket and airbrush cursors
### Colors
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.
Or, for mobile, tap/click selected colors area to switch colors. Yeah, that seems more useful.
Load palettes with [palette.js](https://github.com/1j01/palette.js/)
@ -162,7 +176,7 @@ Load palettes with [palette.js](https://github.com/1j01/palette.js/)
### BSOD
Press `/~ to bluescreen
Press ~ to bluescreen (or maybe something on the numpad?)
Prankily wait for next user input before fullscreening and bluescreening
@ -170,20 +184,23 @@ Prankily wait for next user input before fullscreening and bluescreening
### Chrome App
* Set up build process
* Concatenate + Minify?
* Increment version
* Move things into zip file
* Upload? Notify of new bug reports, stats? haha I'm thinking of things I might put in multiism/multi-platform once many people were using it
* Concatenate + Minify? Why?
* Increment version?
* Compress into zip file
* Upload? Notify of new bug reports, stats? haha I'm thinking of things I might put in multiism/multi-platform once people were using it
* Use the chrome.wallpaper API to change the ChromeOS wallpaper.
* Theoretical support ✓
* Test this on Chrome OS
* Themed window border
* (Note: Minimum window size might need updating)
* Publish to webstore!?!?!?
### Also
Anything marked `@TODO` in the source code is also to be done.
Anything marked `@TODO` in the source code