1TODO
2====
3
4If you're particularly interested in any of this, send patches/pull requests
5or maybe just prod me a little.
6
7Minor Features/UX
8-----------------
9
10- HTML output.
11- Symbols: Math.
12- Accept image on standard input.
13- Accept -o, --output to write to file.
14- Verbose output. Show file names.
15- Add a --test option to print a test page.
16- Add a --show-symbols op to print matching symbols.
17- Add a --ping-pong option for animations.
18- Strv building API in addition to GString?
19- If FG color is transparent, see if we can use an inverted symbol and swap
20  with BG.
21  - Avoid using transparent foreground due to XFCE Terminal (other terminals?)
22    weird handling with background picture set?
23    - Except in FGBG modes.
24- Test with more terminals.
25  - iTerm?
26  - Other OSX terminals?
27  - PuTTY on Windows 8, 10?
28    - Windows 7 fonts support half, solid, some borders.
29  - Terminology.
30    - Emulate tycat.
31  - Emacs ansi-term.
32  - Emacs shell (TERM=dumb).
33  - Come up with some kind of support matrix.
34- More symbol aliases
35  - CP437
36
37Major features
38--------------
39
40- Lossy/lossless intra-frame compression. Data rate regulated:
41  - By desired output size.
42  - By maximum desired per-cell error.
43  - By total error?
44  - Slide window over row, calculate mean colors, calc error?
45- Lossy/lossless delta compression.
46  - Double-buffer with a checkpoint call to swap.
47    - Dirty map not enough in case each frame is composited in multiple steps.
48  - Emit difference between checkpoint state and current.
49  - Optimization: Keep a rect or region of changed area.
50  - Multiply previous symbol's new error with weight to increase or decrease
51    stability (prevent flicker)?
52- Drawing context with clip rect/region, etc.
53  - Potentially a context stack.
54  - Getting into NCurses territory...
55- Video playback.
56- Interactive UI (may need to be in separate tool).
57
58Optimization
59------------
60
61- Avoid ImageMagick for remaining common formats like PNG, JPEG and directly
62  use more efficient decoders instead.
63- Speed up alpha transparency code path.
64- Preload next image/frame in delay phase.
65- Don't calculate error if we're only using a single symbol (e.g. vhalf).
66
67The Fine Material
68-----------------
69
70- Tips.
71  - For scrolling, use e.g. chafa input.jpg -s 200 | less -S
72  - Rate-controlled playback with e.g. cat input.txt | pv -qL 100k
73  - Playback with awk + proper inter-frame delay.
74  - X11 applications in terminal
75    1) Xvfb :99 -ac -fbdir t -screen 0 1440x900x24 &
76    2) DISPLAY=:99 lament -root &
77    3) chafa --watch t/Xvfb_screen0
78  - gnome-shell in terminal
79    - XDG_SESSION_TYPE=x11 DISPLAY=:99 gnome-shell
80    - Run as different user.
81  - Using (unreleased) ffmpeg driver:
82    - ./ffmpeg -i movie.mkv -pix_fmt rgba -f chafa -color 16 -symbols vhalf,space -fill ascii -
83