2014-05-18 08:47:46 +00:00
|
|
|
|
|
|
|
# Todo
|
|
|
|
|
2014-05-22 08:20:59 +00:00
|
|
|
* Improve README
|
|
|
|
* Make it more than 4 words
|
|
|
|
* (If you exclude "words" that have acronyms in them, there is only one two-letter word: "in")
|
2014-05-29 19:04:47 +00:00
|
|
|
* Make it better than the TODO list at introducing the project
|
|
|
|
* Explain the project
|
|
|
|
* Current state
|
|
|
|
* [Goals](#extended-editing)
|
|
|
|
* Link to the hosted version
|
|
|
|
* Show how to install it as a chrome app
|
|
|
|
* Make it pretty with images
|
2014-05-22 08:20:59 +00:00
|
|
|
|
2014-05-18 08:47:46 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* Menus!
|
2014-05-29 19:04:47 +00:00
|
|
|
* Pixel Perfection
|
|
|
|
* 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
|
|
|
|
* To do this, do this:
|
|
|
|
* on key press, loop through the menus
|
|
|
|
* if shortcut matches
|
|
|
|
* "call to action"
|
|
|
|
* break
|
2014-05-18 08:47:46 +00:00
|
|
|
|
2014-05-22 08:20:59 +00:00
|
|
|
|
|
|
|
* Don't warn about saving saved files (Ctrl+S and then Ctrl+N)
|
|
|
|
* Do warn about losing unsaved files (close button, etc.)
|
|
|
|
|
|
|
|
|
|
|
|
* Use win98 default scrollbar size
|
|
|
|
* Minor color differences (0x808080 != 0x7b7b7b)
|
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* Tips and Tricks from [this tutorial](http://www.albinoblacksheep.com/tutorial/mspaint)
|
2014-05-22 08:20:59 +00:00
|
|
|
* Brush Scaling ✓
|
2014-05-19 21:04:19 +00:00
|
|
|
* Custom Brushes ✓
|
2014-05-22 08:20:59 +00:00
|
|
|
* The 'Stamp' Tool (Draw the selection on click, not just drag)
|
2014-05-19 21:04:19 +00:00
|
|
|
* Image Scaling (Ctrl+Plus and Ctrl+Minus on the Numpad to scale the selection by factors of 2)
|
2014-05-22 08:20:59 +00:00
|
|
|
* Color Replacement (see [Tools](#tools))
|
2014-05-19 21:04:19 +00:00
|
|
|
* 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
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* Transparent PNGs
|
|
|
|
* Animated GIFs
|
|
|
|
* Multisize Icons
|
2014-05-18 08:47:46 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
### Mobile support
|
2014-05-18 08:47:46 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* Multitouch (use pointer events polyfill)
|
2014-05-18 08:47:46 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
### Actions
|
2014-05-22 08:20:59 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* Canvas Manipulations
|
|
|
|
* Rotate
|
|
|
|
* Flip
|
|
|
|
* Skew
|
|
|
|
* Invert
|
|
|
|
* Clear
|
2014-05-22 08:20:59 +00:00
|
|
|
* Make these all as (canvas)-> new Canvas?
|
2014-05-19 21:04:19 +00:00
|
|
|
* rotated(canvas, degrees)?
|
|
|
|
* flipped(canvas, vertical)?
|
|
|
|
* skewed(canvas, skewX, skewY)?
|
|
|
|
* inverted(canvas)?
|
|
|
|
* cleared(canvas)???
|
|
|
|
* Undo/Redo History to Frames
|
2014-05-18 08:47:46 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
### Tools
|
2014-05-22 08:20:59 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* OPTIONS
|
|
|
|
* shapes all have their own settings for [fill | stroke | stroke_fill]
|
2014-05-22 08:20:59 +00:00
|
|
|
* shapes, lines and curves all use one setting for stroke width
|
2014-05-19 21:04:19 +00:00
|
|
|
* 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
|
2014-05-19 21:04:19 +00:00
|
|
|
|
|
|
|
* fill bucket and airbrush cursors are supposed to be inverty :\
|
|
|
|
|
2014-05-22 08:20:59 +00:00
|
|
|
* Shapes respond to Ctrl, by...
|
|
|
|
* It's complicated.
|
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* Use stroke width
|
|
|
|
|
2014-05-22 08:20:59 +00:00
|
|
|
* Color Eraser
|
|
|
|
* right click with the eraser to selectively replace color1 with color2 (background)
|
|
|
|
|
|
|
|
* Fill Bucket
|
|
|
|
* get into those corners!
|
|
|
|
* handle transparency also
|
|
|
|
* man, this fill algorithm is pretty bad
|
|
|
|
* *find a better fill algorithm*
|
|
|
|
|
|
|
|
* Text tool
|
|
|
|
* Save text and record transformations so it can be saved as an SVG with invisible selectable elements
|
2014-05-19 21:04:19 +00:00
|
|
|
|
|
|
|
* Strokes
|
|
|
|
* Rectangle: The stroke is within the rectangle.
|
|
|
|
* Rounded Rectangle / Ellipse: If the width/height is less than the stroke width, it draws the fillstroke.
|
|
|
|
|
|
|
|
|
|
|
|
### Colors
|
|
|
|
* Double-left-click a color to choose primary color. ✓
|
|
|
|
* Double-right-click to choose the secondary color. ✓
|
|
|
|
* Double-ctrl-click to choose the ternary color. ✓
|
|
|
|
* (not in mspaint) Double?-Click one of the selected colors to change it directly?
|
|
|
|
|
|
|
|
### Components / Windows
|
|
|
|
* Drag components into a window
|
|
|
|
* Drag windows
|
|
|
|
* 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
|
|
|
|
|
|
|
|
As a prank, wait for next user input before fullscreening and bluescreening
|
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
|
|
|
|
### Chrome App
|
2014-05-22 08:20:59 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* Use the chrome.wallpaper API to change the ChromeOS wallpaper.
|
|
|
|
* Code:
|
2014-05-18 08:47:46 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
chrome.wallpaper.setWallpaper({
|
|
|
|
url: canvas.toDataURL(),
|
|
|
|
layout: 'CENTER_CROPPED',
|
|
|
|
name: file_name
|
|
|
|
}, function(){});
|
2014-05-22 08:20:59 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* I'd need to test this on Chrome OS
|
2014-05-22 08:20:59 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* Handle files: ✓
|
|
|
|
* [Manifest - File Handlers](http://developer.chrome.com/apps/manifest/file_handlers)
|
|
|
|
* [chrome.fileSystem](http://developer.chrome.com/apps/fileSystem)
|
2014-05-22 08:20:59 +00:00
|
|
|
|
2014-05-19 21:04:19 +00:00
|
|
|
* Minimum Window Size ✓
|
2014-05-29 19:04:47 +00:00
|
|
|
|
|
|
|
* Themed window border
|
|
|
|
|
|
|
|
* Publish to webstore!?!?!?
|