diff --git a/TODO.md b/TODO.md index 757fa63..0c2309c 100644 --- a/TODO.md +++ b/TODO.md @@ -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