-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO
98 lines (62 loc) · 3.58 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
1. Approximate handwriting by smooth curves
- This could decrease the file size and perhaps rendering speed.
- Currently, each pen move event produces one point on the stroke. Probably, the frequency with which these events are generated somehow depends on the tablet / platform / ... (?)
- There should be a setting controlling the maximum allowed deviation of the smooth curve from the actual handwriting. In particular, it should be possible to turn off the smoothness. (?)
- Potential problem: How to do this while drawing? Can we avoid having to redraw the entire curve after each pen move event?
2. Consider compressing the default Cap'n Proto binary format instead of using the Cap'n proto packed format.
For example, for a file containing only handwriting (no embedded PDF), I got the following results:
# Original packed format
time tail -c +41 a.sau | wc -c
=> 2446615 bytes
# Unpacked binary format
time tail -c +41 a.sau | capnp convert packed:binary src/file4.capnp File | gzip | wc -c
=> 2969920 bytes
# Compress the packed file with gzip
time tail -c +41 a.sau | gzip | wc -c
=> 1574861 bytes
# Compress the unpacked binary file with gzip
time tail -c +41 a.sau | capnp convert packed:binary src/file4.capnp File | gzip | wc -c
=> 1565029 bytes
(Compression takes about 0.2 s. Decompression takes about 0.04 s.)
# Compress the unpacked binary file with lz4
time tail -c +41 a.sau | capnp convert packed:binary src/file4.capnp File | lz4 | wc -c
=> 2277312 bytes
(Compression takes about 0.01 s. Decompression takes about 0.01 s.)
# Compress the unpacked binary file with zlib
time tail -c +41 a.sau | capnp convert packed:binary src/file4.capnp File | zlib-flate -compress | wc -c
=> 1565363 bytes
(Compression takes about 0.21 s. Decompression takes about 0.04 s.)
# Compress the unpacked binary file with zstd (with default compression level 3)
time tail -c +41 a.sau | capnp convert packed:binary src/file4.capnp File | zstd | wc -c
=> 1681520 bytes
(Compression takes about 0.05 s. Decompression takes about 0.01 s.)
# Compress the unpacked binary file with xz
time tail -c +41 a.sau | capnp convert packed:binary src/file4.capnp File | xz | wc -c
=> 1113384 bytes
(Compression takes about 1.31 s. Decompression takes about 0.16 s.)
# For comparison: size of the exported pdf file a.pdf
=> 1810621 bytes
3. Tablet settings
4. Color schemes
Idea: There is a (light) paper mode and a (dark) blackboard mode. Each "color" on the palette has an associated RGB value for paper and blackboard. For example, black on paper = white on blackboard. At any point, one can simply switch between the modes.
For example, lecture in blackboard mode, export in paper mode.
5. Interface for selecting, adding, removing, editing layers
For example, there is currently no way to change the background color.
6. Think about composition of layers
- Should there be only a linear sequence of layers on each page or should more complicated compositions be allowed?
- Should it be possible to use the same layer object on several pages, or in several places on the same page?
7. Table of contents
- Import from PDF
- Export to PDF
9. Configurable layout
We might not always want two columns, one row.
10. Configurable page size
11. Procedural layers
For example, grid background.
12. Scripted presentations :D
13. Allow editing / removing old strokes
14. Object types other than strokes
15. Automatically adjust window size to paper format.
17. Open multiple files simultaneously (?)
18. Support pressure-sensitivity
19. Instead of or in addition to autosaving, keep a journal file of all undo commands performed (or undone)