aboutsummaryrefslogtreecommitdiffstats
path: root/code/editor/plan.txt
blob: 10fc7aa456753a42acf285c988e22d1e9361ab52 (plain) (blame)
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
- Platorm replay improvements
  - Forward/Backward 1 frame
  - Multiple slots
  - Save/Load replay to/from file
  - Select a starting state 
  - Overwrite a recording buffer partially.
    - Idea: Always load/to Save.Buffer so that we have enough space to eventually get it out.
  - We could use an arena for permanent memory so that the platform knows exactly how much memory to write to disk to speed up load/save times.  But in the end we might end up being using all that memory or more so does it really matter?

- PlatformLog & AppLog which have FrameIdx attached.
- Cycle panels

- Fat panel struct instead of text panel nodes.

- Popup window / Prompt / Command palette

- Common UI button behavior
  - only "clicked" when button was pressed mouse goes up inside of it

- albedo sample 

- Speed up atlas creation.
- Glyph cache for faster atlas creating

- text: Undo/Redo
- text: Have text be clipped at pixel level and not rectangle level

- Display images through shader
- Sound
  - when hovering over an item
  - when clicking

- ui: Assert when adding the same box twice.

- panels: Go for megastruct instead, panel has kind (e.g., text) 

- cling: On windows get cling to run ./cling_temp.exe even when "norebuild" since that will be the most up-to-date version of the program.

- Marker in arena's to not have to clear to 0 from freshly allocated pages.

- platform: linux: release clipboard when exiting
 
- text: when selecting with mouse, do not scroll
- text: When selecting to the side of the text do select as well.
- text: Virtual whitespace
- text: Improve text rendering
  - Check text rendering extensively (xoff & leftsidebearing)
- text: Unicode
  - kb_text_shape()
  - harfbuzz
  - implement all movements taking unicode into account

- text: Non contiguous selection (e.g., with control)

- make initialization with permanentarena homogenous
  ? Poisoning should take care of everything, do the rest manually,  since we are using arena's it's not that much work
  - We should only be pushing once on PermanentArena.
    And be able to push onto PermanentArena when !Memory->Initialized

- platform: keyboard input (pressing & holding, vs text)
  - easier query of keys & modifiers.
  - to have key binds. (WasPressed(Control, 'c')
- platform: linux: investigate startup time.
  - choosing visual config ~40ms
  - atlas = 90ms
- platform: window resizing
- platform: sleep when idle
- platform: custom borders and titlebar

- unified logs
  - with date, system, level and stacktraces
- Cmdline hash table

- ui: Implement properties from https://www.dgtlgrove.com/p/ui-part-3-the-widget-building-language
- ui: inset elements
- ui: panels
  - rotate columns
  - tabs
- ui: windows

- tick() function?

- win32: repaint and resizing.
  - 24:36

- shader:
  - group draw calls with those that need the same texture and those that don't without changing draw order (because foreground&background) 
  - find a way to push a texture for a number of rectangles
  - then pop when not adding characters anymore

# Archived
x Ryan's layout algorithm
x Specify axis
x Draw background + border + gradient
x ui_comm from UI_AddBox()
x draw text from same shader
x center text vertically & horizontally
x specify vertical & horizontal padding for text, or maybe don't
x Assert that rect instances does not exceed the max instances allowed.\
x Use DrawRect() in DrawRectChar()
x Remove ReadOnlyMemoryBlock
x Stacks for selecting options like ryan
x make hot reloading shader optional
x Spacer
x Proper hashing of string and splitting up into DisplayString
x Solving violations
x win32: flickering
x panels: 
  x draggable array to change PercentOfParent
  x create/split new panel
  x close panel button
x proper mouse dragging
x clipping
x after splitting multiply all old panes on same axis by (1 - 1/n) and give the new pane size 1/n
x Evict boxes from cache when they aren't touched anymore
x prune stale elements from cache on the end of UI_ResolveLayout()
x Add back text rendering of the input buffer
x profile compile times on linux
  - standard libraries (linux et al): 100ms, math.h: 100ms, gl_core: 50ms
x Fix UI layouting not working for nested elements
x Metaprogramming:
  x flag enums
  x shaders
platform:
  x loop editing
  x profiler: toggle key bind
  x save/load state to disk
  windows:
    x editor_libs.o in .bat script
    x rename to editor.exe
app:
 x ui bug when using PercentOfParent, can overflow with rounding error. (tested with .25f)
   -> wasn't a rounding error.
x Custom draw command for rendering text edit view.
x replace X macros
x Eat up input events, because resizing a pane shouldn't be clicking buttons or selecting text.
  x concept of "selected" to receive key inputs.
x Implement dragging in the platform layer
x prune boxes correctly after closing panel
x panels: resizing
x panels: selected panel so that input events only go to one panel
x panels: close panel button
x panels: better positioned resize border
x text: Scrolling text
x text: Movements
x text: Deletions
x text: Selections
x text: Clipboard
x platform: clipboard: use bool instead of second buffer `PlatftormSetClipboard`
x text: multiple buffers
x Smooth smooth animations
x replay: Separate renderer such that we can also render some debug UI from the platform. (Overlay debug info)