jspaint/TODO.md

207 lines
5.9 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?
2014-09-20 17:36:56 +00:00
* Publish jspaint to the webstore (and link to that)
2014-06-03 00:13:16 +00:00
* Make it pretty with images
2014-05-18 08:47:46 +00:00
2014-09-20 17:36:56 +00:00
* Menus!
2014-05-29 19:04:47 +00:00
* Keyboard Navigation
* Mouse navigation
2014-09-20 17:36:56 +00:00
* Use keyboard shortcuts defined in the menu data structure (which isn't yet saved to a variable) to declaratively setup hotkeys
2014-05-29 19:04:47 +00:00
* 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
2014-09-02 23:02:38 +00:00
* Image
* Flip / Rotate
* Stretch / Skew
* Invert Colors ✓
* Attributes...
* Clear Image ✓
* Draw Opaque
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-09-20 17:36:56 +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!
2014-09-20 17:36:56 +00:00
* Firefox's canvas is slow which makes the difference obvious!
2014-08-18 15:27:39 +00:00
* `filter: invert();` doesn't work yet in Firefox
* Invert the image with canvas
* Make class $UpscaledCanvas
2014-05-22 08:20:59 +00:00
2014-09-20 17:36:56 +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
2014-09-20 17:36:56 +00:00
* Issue: status text gets cut off
2014-09-02 23:02:38 +00:00
* Also, it should gracefully push the dimension displays off the edge instead of covering up the text with usually blank space
2014-06-07 16:11:49 +00:00
2014-09-20 17:36:56 +00:00
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-09-20 17:36:56 +00:00
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
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)
2014-09-20 17:36:56 +00:00
* Tips and Tricks from [this tutorial](http://www.albinoblacksheep.com/tutorial/mspaint)
2014-05-22 08:20:59 +00:00
* Color Replacement (see [Tools](#tools))
* The Grid (Ctrl+G + zoom6x+)
2014-09-20 17:36:56 +00:00
* Scroll Wheel draws line down and to the right (um, this is a bug, though)
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
2014-09-20 17:36:56 +00:00
* Optimization: Don't forget to assume jpegs are opaque.
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?
2014-09-20 17:36:56 +00:00
* Animated Transparent APNGs
* Multi-size Icons
2014-05-18 08:47:46 +00:00
### Mobile support
2014-05-18 08:47:46 +00:00
2014-09-02 23:02:38 +00:00
* Use pointer events polyfill
* Multitouch
* Two-finger drag to pan
* Unitouch (mobile devices without multitouch support)
2014-09-20 17:36:56 +00:00
* 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?
2014-05-18 08:47:46 +00:00
### Tools
2014-05-22 08:20:59 +00:00
2014-09-20 17:36:56 +00:00
* Curve
* Aliasing
2014-08-08 21:44:46 +00:00
2014-09-20 17:36:56 +00:00
* Polygon
* Issue with extra undoables
* Ending the operation when switching tools
2014-09-20 17:36:56 +00:00
* The canvas API handles self-intersecting shapes differently than mspaint
* Aliasing
2014-09-20 17:36:56 +00:00
* The above two items mean I would have to re-implement drawing polygons
* Close the polygon when switching tools
2014-09-20 17:36:56 +00:00
* Eraser/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
2014-09-20 17:36:56 +00:00
* Fill With Color
* Find a better fill algorithm!
* get into those corners!
* handle transparency
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-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-09-20 17:36:56 +00:00
* 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
* Handles
2014-09-02 23:02:38 +00:00
* Image is blurry in the selection
* Proportionally resize selection by holding Shift
2014-09-20 17:36:56 +00:00
* 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.
* 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.
2014-09-20 17:36:56 +00:00
* Inverty fill bucket and airbrush cursors
### 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?
2014-09-20 17:36:56 +00:00
Or, for mobile, tap/click selected colors area to switch colors. Yeah, that seems more useful.
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
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-09-20 17:36:56 +00:00
* 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
2014-09-02 23:02:38 +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-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
2014-09-20 17:36:56 +00:00
2014-05-29 19:04:47 +00:00
* Publish to webstore!?!?!?
2014-08-16 01:57:01 +00:00
### Also
2014-09-20 17:36:56 +00:00
Anything marked `@TODO` in the source code