Updated PaintWeb to the latest snapshot.
[moodle/mihaisucan.git] / lib / paintweb / TODO
blob4ae76819c2af1ef201067a79d95537b1e6c79d7a
1 $Author: Mihai Şucan $
2 $URL: http://code.google.com/p/paintweb $
3 $Date: 2009-07-30 14:35:21 +0300 $
5 Until the end of GSOC:
7 - Integrate into TinyMCE and Moodle.
8 - Color theme for the OLPC XO.
10 As quick as possible, after GSOC 2009:
12 - report browser bugs:
13   - when strokeText() is used shadows do not render (Webkit, needs recheck).
14   - elem.hasAttribute('data-whatever') fails to return true when it should do 
15   so. The problem affects Webkit.
16   - outlines are drawn irrespective of z-index in Opera 9.6 and Opera 10.
17   - serious redraw issues with the color mixer when the colormixer_selector tab 
18   panel has some width set. The problem affects Opera 9.6 and Opera 10.
19   - globalCompositeOperation + gradients renders mildly different in Google 
20   Chrome 2 on Windows, compared to the other browsers. To see this, test the RGB 
21   color space visualisation in the color mixer. I cannot reproduce the issue 
22   with Google Chrome 3 on Linux.
23   - images cannot be selected in editable content, on Webkit - in some special 
24   cases.
25   - images with data URL are considered external, and thus when drawn on Canvas 
26   they cause security violations, in Webkit and Gecko 1.9.0 (fixed in 1.9.1).
28 - implement the GUI improvements suggested by Olli Savolainen.
29 - new tools: bucket, pencil v2 (avec pression).
30 - toolRegister creates instances of tool objects automatically.
31   - cleanup interface script from having hard-coded stuff related to tools.
32 - investigate the use of an iframe to hold the whole PaintWeb interface because 
33 I can have style sandboxing and other advantages.
34 - allow integration by specifying a form input to replace.
35 - provide API to load language strings on demand.
36 - provide API to load configurations on demand.
37 - viewport resize handle.
38 - double-click on the tab bar to hide its content and only show a minimal list 
39 of tabs.
40 - allow canvas resize on the right and at the bottom - not just the south-east 
41 resize handle.
42 - allow single click on the image size, in the status bar to bring-up a panel 
43 which shows the image dimensions, where the user can crop and resize the image.
44 - implement a GUI option to allow live changing of background color.
45 - flip and rotate image.
46 - some issues when middle/right clicking instead of simple left click on the 
47 canvas, with some drawing tools.
48 - maybe selection rotate.
49 - maybe use .scale() and .translate() for selection manipulation.
50 - more per-tool settings. For example, do not share the lineWidth option between 
51 tools.
52 - css 3 animations for the GUI.
53 - make the color mixer resizable.
54 - attempt color mixer code organization / code quality improvements.
55 - look into performance improvement specific to the color mixer.
56 - allow mousewheel scrolling on the color mixer slider.
57 - allow the user to focus the color mixer slider, to press up/down keys.
58 - allow the user to press Enter in the color mixer in an input to simply accept 
59 the current color.
60 - (maybe) allow the user to press Escape in an input from the color mixer to 
61 close/cancel the color change.
62 - retest overall performance and see if more things can be improved. More 
63 importantly, try initialization performance improvements.
64 - allow mousewheel scroll to increase/decrease the numeric value in an input of 
65 type=number.
66 - allow permanent color save in the color mixer.
67 - add a checkbox into the color mixer which allows the user to enable realtime 
68 color changes, such that, without clicking accept, the user can test the new 
69 color using some drawing tool.
70 - tab reordering and grouping.
72 Each and every item is doable pretty "easy", but it takes a lot of time to do 
73 all of the above. Some of the items might get dropped. On request, I can 
74 prioritize any item from the list during GSOC.
76 Further down the road:
78 * allow editing of multiple images in a single paintweb instance;
79 * hybrid undo system, not like now (storing ImageDatas);
80 * hybrid drawing: vectorial + bitmap drawing;
81 * layers;
82 * non-destructive filters;
83 * color gradients and fill patterns;
84 * macros: look into the possibility of implementing a scripting API compatible 
85   with that of Photoshop. Photoshop can run JavaScript. PaintWeb can run 
86   JavaScript: just provide the same API. Obviously, PaintWeb could implement 
87   only a subset, but it would be very good if this kind of work would be 
88   successful.
90 That should be all for now. Huh, lots of work to do.
92 Volunteers are needed! Please contact me if you want to help. Thank you! ;)
95 vim:set spell spl=en fenc=utf-8 ff=unix: