5828 Commits

Author SHA1 Message Date
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
f93e9eedb3 font: move codepoint into a public API 2022-08-20 10:50:37 -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
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
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
Mitchell Hashimoto
b562eec83c erase display complete should scroll to bottom 2022-08-17 17:24:09 -07:00
Mitchell Hashimoto
16f981a48a Typing a character clears selection, scrolls to bottom 2022-08-17 17:23:58 -07:00
Mitchell Hashimoto
7c50ac2be5 skip a test on stage2, with this the main package tests pass! 2022-08-17 17:06:42 -07:00
Mitchell Hashimoto
5c2edf4d2a Fix some stage2 compilation errors 2022-08-17 14:42:23 -07:00
Mitchell Hashimoto
2f36d5f715 pkg/tracy 2022-08-17 14:03:49 -07:00
Mitchell Hashimoto
ea1e972a29 turn tracy into proper package 2022-08-17 14:02:09 -07:00
Mitchell Hashimoto
2457454b07 test wasm of the term package 2022-08-17 13:57:21 -07:00
Mitchell Hashimoto
ead6e5a435 src/terminal can build into a minimal wasm library, I think 2022-08-17 12:25:53 -07:00
Mitchell Hashimoto
f2d65d4524 move freetype into pkg 2022-08-17 11:20:31 -07:00
Mitchell Hashimoto
b2192ea8f7 move libuv into pkg 2022-08-16 17:47:44 -07:00
Mitchell Hashimoto
3b7a6b78a7 fix ttyWrite calculation to avoid truncating data
the math was wrong. The easiest way to see this was attempting to paste
a large chunk of text, it'd just skip certain parts and truncate it.
2022-08-15 09:57:38 -07:00
Mitchell Hashimoto
e3ddffdf36 don't scale up OpenGL projection in Retina, use true values
This gets rid of blurriness.
2022-08-09 10:21:23 -07:00
Mitchell Hashimoto
f94f3cb5a4 enable retina on Mac, set OpenGL to pixel size properly
This makes things look a bit better, but trades pixelation for blurry
(still TODO). This also fixes an issue on Retina where if you resize
it'd make the viewport 1/4 of the size. The issue here is that OpenGL
uses pixels and glfw uses screen coordinates for everything. We adapt
the screen coords to pixels properly here.
2022-08-09 10:06:30 -07:00
Mitchell Hashimoto
ad1cdbcd59 implement erase display scrollback ("clear" command) 2022-08-09 09:22:34 -07:00
Mitchell Hashimoto
fb5afbedd2 add screen .history tag to fetch scrollback region 2022-08-09 09:18:10 -07:00
Mitchell Hashimoto
57cec33303 set a minimum window size
Fixes #4

The currently picked 10x4 is somewhat arbitrary but matches
Terminal.app. We can make this configurable.
2022-08-09 08:59:45 -07:00
Mitchell Hashimoto
38af14ff3a resize alt screen without reflow 2022-08-08 21:14:27 -07:00
Mitchell Hashimoto
f82493cccf when growing cols, adjust viewport and cursor if we shorten 2022-08-08 20:52:36 -07:00
Mitchell Hashimoto
16a5a45293 when growing rows, offset cursor by added rows 2022-08-08 18:14:11 -07:00
Mitchell Hashimoto
d551f1126b when less cols, cursor needs to be in screen space, not viewport 2022-08-08 17:47:16 -07:00
Mitchell Hashimoto
113b5a318b when shrinking rows, clear empty space from the end (see test case) 2022-08-08 17:24:10 -07:00
Mitchell Hashimoto
a2cf116063 fix a crash when reflowing to smaller cols but still buggy 2022-08-08 14:20:52 -07:00
Mitchell Hashimoto
f3d3d255fb handle case where cursor is past where content is on col shrink 2022-08-08 14:08:01 -07:00
Mitchell Hashimoto
9493561159 assertions to save our bacon 2022-08-08 14:03:14 -07:00
Mitchell Hashimoto
e4c8bbd394 reflow cursor when shrinking cols 2022-08-08 14:02:28 -07:00
Mitchell Hashimoto
6fa4cb07c7 more cursor reflow 2022-08-08 13:56:09 -07:00
Mitchell Hashimoto
bfbeceeefa when cols grow, move cursor if it unwraps the line it is on 2022-08-08 13:47:49 -07:00
Mitchell Hashimoto
9ddb19e9b0 replace old resize with new reflow resize 2022-08-08 13:06:01 -07:00