9140 Commits

Author SHA1 Message Date
Mitchell Hashimoto
5713c2f468 move input test to qualified 2022-08-24 11:17:28 -07:00
Mitchell Hashimoto
3b5a9caff5 hook up more control keys: home, end, page up, page down 2022-08-24 11:16:36 -07:00
Mitchell Hashimoto
80376ce6da hook up keybindings for copy/paste and arrow keys 2022-08-24 11:08:39 -07:00
Mitchell Hashimoto
e6f09093dd unify non-printables up by bindings 2022-08-24 10:21:27 -07:00
Mitchell Hashimoto
b33268cee3 only handle non-printables on press/release, and BS is 0x7F 2022-08-24 10:18:05 -07:00
Mitchell Hashimoto
622537d665 look up keybindings on keypress, clean up how non-printables are handled 2022-08-24 10:02:13 -07:00
Mitchell Hashimoto
2800a46854 keybind parsing in CLI args 2022-08-24 09:31:14 -07:00
Mitchell Hashimoto
222f70857a move input stuff to src/input 2022-08-23 19:52:14 -07:00
Mitchell Hashimoto
bc9f81e8d2 binding parse action with parameter 2022-08-23 17:48:52 -07:00
Mitchell Hashimoto
7303909d01 key.Binding and basic parsing 2022-08-23 17:40:36 -07:00
Mitchell Hashimoto
5d8915cc9a remove unused zig file 2022-08-23 15:30:13 -07:00
Mitchell Hashimoto
8e1e8cfc51 pin new zig-overlay repo 2022-08-23 10:23:02 -07:00
Mitchell Hashimoto
3774972caf update mach 2022-08-23 10:07:18 -07:00
Mitchell Hashimoto
5c61bfbe8f fix stage2 compiler error 2022-08-21 21:38:24 -07:00
Mitchell Hashimoto
13225a2d78 remove done shader TODO 2022-08-20 17:39:34 -07:00
Mitchell Hashimoto
f19f5fdc79 update TODO 2022-08-20 17:37:41 -07:00
Mitchell Hashimoto
235146ccd4 Emoji and Wide Unicode Char Support (i.e. Asian characters)
Many changes to support emoji and wide chars:

- Freetype built with libpng support (some emoji font use pngs)
- Introduced `font.FallbackSet` structure for looking for glyphs in multiple fonts so we can find emojis
- Texture atlas supports 3 and 4 channel colors (RGB/RGBA, although emojis are in BGRA)
- `font.Face` supports loading colored fonts and glyphs
- `font.Face` supports fonts that do not support variable pixel sizes
- Shader supports two textures (greyscale and colored)
- Shader will downsample glyphs that don't fit into the cell size because some fixed size emoji fonts are large
- Shader supports wide (2x) cells across all types: cursor, fg, bg, underline
- Terminal state supports detecting and managing wide (2x) chars by looking them up in the Unicode EastAsianWidth database and populating "spacer" cells.
- Selection (and clipboard ops) support wide chars
2022-08-20 17:33:59 -07:00
Mitchell Hashimoto
ec288d9111 get rid of assertions because its possible they're false 2022-08-20 17:21:14 -07:00
Mitchell Hashimoto
561bbca053 don't render wide char trailers 2022-08-20 17:17:13 -07:00
Mitchell Hashimoto
28072157d5 selection of wide chars and copy/paste works 2022-08-20 17:10:10 -07:00
Mitchell Hashimoto
8a1d7070b3 render wide chars 2022-08-20 16:49:55 -07:00
Mitchell Hashimoto
da79aae0ab terminal: print wide characters 2022-08-20 16:11:48 -07:00
Mitchell Hashimoto
ecf8353c74 support dynamic linking (not default) test in GH actions 2022-08-20 15:21:24 -07:00
Mitchell Hashimoto
f93e9eedb3 font: move codepoint into a public API 2022-08-20 10:50:37 -07:00
Mitchell Hashimoto
32d96dd49b add utf8proc so we can detect unicode char width 2022-08-20 10:48:54 -07:00
Mitchell Hashimoto
e83262e48e nix: remove libpng 2022-08-20 10:37:39 -07:00
Mitchell Hashimoto
813f11a5eb fix crash that could happen looking up fallback 2022-08-20 10:37:12 -07:00
Mitchell Hashimoto
c29f4cace6 remove the font style fallback for the fallback set 2022-08-20 10:37:12 -07:00
Mitchell Hashimoto
6026fdf834 only downsample size if its an emoji 2022-08-20 10:37:12 -07:00
Mitchell Hashimoto
43c61f57ef font FallbackSet for looking up in fallback TTFs (emoji) 2022-08-20 10:37:12 -07:00
Mitchell Hashimoto
22ed65a818 really hacked in emoji support, time to clean it up 2022-08-20 10:37:11 -07:00
Mitchell Hashimoto
3d6ca0e423 font face supports loading color fonts (emoji!) 2022-08-20 10:37:11 -07:00
Mitchell Hashimoto
5d27fd55e9 temp: add libpng to nix 2022-08-20 10:37:06 -07:00
Mitchell Hashimoto
5ae450099d freetype builds in png support, uses our own zlib 2022-08-20 10:33:57 -07:00
Mitchell Hashimoto
54b0c6cd03 Merge branch 'ft-libpng' 2022-08-20 10:25:32 -07:00
Mitchell Hashimoto
43e42a54cd vendor 2022-08-20 10:25:19 -07:00
Mitchell Hashimoto
728df4af16 build libpng and link freetype to it 2022-08-20 10:24:49 -07:00
Mitchell Hashimoto
583eec0fe6 zlib 2022-08-20 10:02:04 -07:00
Mitchell Hashimoto
f9313801f1 avoid an alloc and buffer copy in the common case on font loading 2022-08-19 15:12:57 -07:00
Mitchell Hashimoto
742dd010eb Texture atlas supports variable color depth, not just greyscale 2022-08-19 14:37:22 -07:00
Mitchell Hashimoto
eeaad799e5 get rid of Z buffer stuff
This optimization will take more work, and we already got a lot of the
way there by optimizing how we send data down to the GPU.
2022-08-19 13:48:34 -07:00
Mitchell Hashimoto
2351f88631 updateCell sets the proper Z value and bumps it 2022-08-19 13:34:07 -07:00
Mitchell Hashimoto
73e43b6e64 Grid supports sending partial cell updates to GPU 2022-08-19 12:54:07 -07:00
Mitchell Hashimoto
4ca45936f7 Only reallocate the GPU buffer if our CPU capacity changes
Previously, every single render was re-allocating a fairly large (~1MB)
buffer on the GPU. The recommended best practice is to allocate once and
then use `glBufferSubData` to update the memory in-place on the GPU.

We now track the last size we sent to the GPU, compare it to our copy on
the CPU, and if it _grows_ then we reallocate the GPU buffer. If it
shrinks we leave the GPU as-is for now. After this, we use the sub-data
routines to update the data in place.
2022-08-19 10:26:23 -07:00
Mitchell Hashimoto
390d95a5af Enable depth buffer, add depth to shader 2022-08-19 10:07:30 -07:00
Mitchell Hashimoto
a36ae221ae rename font/font.zig to font/main.zig 2022-08-19 09:56:01 -07:00
Mitchell Hashimoto
d16c672771 update Zig, fixed new invalid octal error 2022-08-19 08:58:27 -07:00
Mitchell Hashimoto
1aecfc1061 math style 2022-08-18 11:42:32 -07:00
Mitchell Hashimoto
4dd8924427 clean up ortho2d to do less things 2022-08-18 11:37:29 -07:00
Mitchell Hashimoto
e5c583ccf5 get rid of gb_math and create matrices from scratch 2022-08-18 11:33:28 -07:00