-
Notifications
You must be signed in to change notification settings - Fork 4
/
Todo.txt
157 lines (117 loc) · 4.42 KB
/
Todo.txt
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
bindings overlay
on off
for top level
except movements
with movements
constraints
alignement
arrows not overlapping
depth of arrow for overlapping arrow
shortest length to turn on top
direction arrow
.-----.
v |
.-U-. |
| | | .------------.
'---' | | |
.---. | | .---. | .---. .---.
| R---------' | | R----' | R---. | R---.
'---' | '---' '---' | '---' |
'-----. | |
| | |
.-U-. | .-U-.
| | .-----' | |
'---' | '---'
|
|
.-U-.
| |
'---'
with A*
build bulwark around box except for connector
tunnel around connector to force direction
variable size bulwark
on demand optimization if too slow
bulwark other elements
semi permeable bulwark on arrows
without A*
start, go connectors favorite direction
end
one virtual point, 1 character in end's favorite direction
next direction, everything except favorite direction opposite
documentation format and structure
markdown
directory structure reflecting contents
output
text info
md
#html
document usage of peek and key-mon
https://github.com/phw/peek
https://github.com/scottkirkwood/key-mon
geo-selection
selecting without tab is slow if there are many components
movement with emulated cursors are slow
select based on location
enter geo-location
remove currently selected from candidates
chose a direction, up/down/left/right
remove half of the elements
select a middle object in the remaining objects
and select it
loop until found or none left
in case of error, reset everything and restart
can we achieve he same result without state?
no entering geo-state
no list of not matching currently selected
text interface
vim script
open file under cursor
objects
any orientation text/arrow
call a sub that returns a text, sub gets direction and length
different sub used to implement angled-arrow
labled arrows
angle arrow dialog does nothing
table exec-box
s-arrow
multi-wirl arrow routing
display
GUI/TUI: a faster stencil picker
TUI can use fzf
with preview
architecture
handle multiple binary format versions
optimization
Z buffer
https://metacpan.org/pod/Tree::Interval::Fast
Selecting an object takes long time when there are many objects
is stripes coordinates used rather than object to filter out?
Zbuffer/bit masks
when rendering stripes, keep list of objects per cell
IE: quadrant size is 1 cell
update_display called every time mouse changes grid cell
optimize by first looking if there are objects changes
use object CHANGED field which is not a boolean but an index
save CHANGED field for all objects wen doing an undo snapshot
if object has changed, compute changed window
we may still get an event where everything needs to be redrawn
Connection optimizer
use CHANGED field which is not a boolean but an index
auto connection using A* module http://search.cpan.org/~acdalton/AI-Pathfinding-AStar-0.10/
- orthogonal or orthogonal and diagonal arrows
- add get_cost_map to base Asciio
- get_cost_map can also be implemented in draw in sub classes
- connectors and elements could have different costs
http://www-cs-students.stanford.edu/~amitp/gameprog.html
Path finding, see ISBN 2550-0124977820
https://github.com/brean/python-pathfinding/tree/main/pathfinding/finder
connected, non auto-connect, arrows loose their connection if the connectee is resized
=> this is because resize doesn't keep the connection. The
canonizer reconnects elements but non auto-connect objects are not handled by the canonizer
=> make canonizer re connect to the same place instead for changing the connector
optimize current arrow (A* pathfinder)
do_stack serialization
put ID to objects in ELEMENTS rather than serialized elements
large test shows time 0.2s vs 0.002s
objects versions can be kept in memory or serialized separately