824 Commits

Author SHA1 Message Date
Mitchell Hashimoto
621b067e83 update overlay but we still can't use master 2022-08-31 19:58:44 -07:00
Mitchell Hashimoto
cf969b27eb screen2: dynamically allow scrollback when its needed 2022-08-31 19:54:10 -07:00
Mitchell Hashimoto
a192249c77 circbuf rotateToZero does nothing if its already at zero 2022-08-31 19:33:28 -07:00
Mitchell Hashimoto
50612002a8 circbuf resize operation 2022-08-31 17:17:43 -07:00
Mitchell Hashimoto
b7b83db119 fix some circbuf bugs (add tests) and add rotation 2022-08-31 17:08:02 -07:00
Mitchell Hashimoto
cb06bf4873 use non-extern unions so we get safety checks 2022-08-31 16:02:22 -07:00
Mitchell Hashimoto
10ec5f509e circbuf doesn't use zeroes, it takes a default value 2022-08-31 15:27:45 -07:00
Mitchell Hashimoto
e8009f89cf add cursor to new screen 2022-08-31 15:13:30 -07:00
Mitchell Hashimoto
c7b7e3cb44 screen2: selection 2022-08-31 14:58:43 -07:00
Mitchell Hashimoto
f6f8fee804 screen2: scrolling (to a certain extent), copying in tests 2022-08-31 11:44:39 -07:00
Mitchell Hashimoto
001ec979a2 big API surface for screen2, can test write/read now 2022-08-30 17:33:25 -07:00
Mitchell Hashimoto
19b46b6084 starting the new screen implementation 2022-08-30 16:39:49 -07:00
Mitchell Hashimoto
f2af0983cf dedicated circular buffer 2022-08-30 16:35:44 -07:00
Mitchell Hashimoto
953f1aeb29 pkg/harfbuzz: fixing some APIs 2022-08-30 10:02:40 -07:00
Mitchell Hashimoto
36140d3ee9 TODO 2022-08-29 20:26:02 -07:00
Mitchell Hashimoto
39376feae0 font: shape API, calls shape and outputs some debug 2022-08-29 20:15:29 -07:00
Mitchell Hashimoto
5a232e0c3e utf8proc: add grapheme break API 2022-08-29 20:13:13 -07:00
Mitchell Hashimoto
dafc99746d font: Face initializes a hb_font alongside every face 2022-08-29 16:46:53 -07:00
Mitchell Hashimoto
0505018186 Line segmentation into text runs 2022-08-29 16:39:48 -07:00
Mitchell Hashimoto
f73783a521 pkg/harfbuzz: add guessSegmentProperties 2022-08-29 14:52:16 -07:00
Mitchell Hashimoto
2cab94e64d move cell metrics calculation out into src/font 2022-08-29 11:44:05 -07:00
Mitchell Hashimoto
bd9c048c02 use new font.GroupCache, remove unused font structs 2022-08-29 11:34:21 -07:00
Mitchell Hashimoto
a0aa100815 font: GroupCache is like Group, but with caching... 2022-08-29 11:10:50 -07:00
Mitchell Hashimoto
a75035c042 font: introduce Group which will eventually replace FallbackSet
This is more oriented around glyph indexes and also introduces an
important concept in the FontIndex which can be cached ahead of time so
that we can eventually break down text into runs for text shaping.
2022-08-29 10:16:53 -07:00
Mitchell Hashimoto
985b329c8a src/font: change Face to require font to init 2022-08-29 08:48:40 -07:00
Mitchell Hashimoto
f1abca51f7 convert src/font to use new pkg/freetype 2022-08-28 22:22:16 -07:00
Mitchell Hashimoto
28e9619361 allow non-printables even if modifiers are pressed 2022-08-28 21:12:58 -07:00
Mitchell Hashimoto
672f6e720c pkg/freetype: finish APIs we need 2022-08-28 21:06:36 -07:00
Mitchell Hashimoto
8ef3018189 pkg/freetype: loading glyphs 2022-08-28 21:02:39 -07:00
Mitchell Hashimoto
a2b06d7705 pkg/freetype: more face APIs 2022-08-28 17:18:23 -07:00
Mitchell Hashimoto
7af9091497 pkg/freetype: Library and Face 2022-08-28 17:07:27 -07:00
Mitchell Hashimoto
483bb90cf9 shader: only downsample glyph if its bigger than width plus padding 2022-08-28 16:57:30 -07:00
Mitchell Hashimoto
d8a06e7768 clean up some imports 2022-08-28 14:50:22 -07:00
Mitchell Hashimoto
f42bac6bc4 pkg/harfbuzz: use extern funcs for freetype interop 2022-08-28 14:47:47 -07:00
Mitchell Hashimoto
c377e19bd0 pkg/harfbuzz: shape 2022-08-28 12:12:41 -07:00
Mitchell Hashimoto
1f2d2e926c pkg/harfbuzz: buffer get glyph positions and info 2022-08-28 12:05:00 -07:00
Mitchell Hashimoto
0b4344693a pkg/harfbuzz: buffer set direction, script, and language 2022-08-28 11:54:38 -07:00
Mitchell Hashimoto
3c077ee19b pkg/harfbuzz: buffer init, add 2022-08-28 11:42:57 -07:00
Mitchell Hashimoto
5d42e2711f pkg/harfbuzz: face, font, freetype 2022-08-28 11:21:35 -07:00
Mitchell Hashimoto
3d68c72912 pkg/harfbuzz: some blob APIs 2022-08-28 10:54:42 -07:00
Mitchell Hashimoto
44dfe54fe8 output harfbuzz version on startup 2022-08-28 10:26:49 -07:00
Mitchell Hashimoto
755760a79e pkg/harfbuzz: some functions and tests 2022-08-28 10:24:07 -07:00
Mitchell Hashimoto
367aba62c4 Add harfbuzz build (not used yet) 2022-08-28 10:09:39 -07:00
Mitchell Hashimoto
8ff98446a9 sgr parsing bright colors now sets color properly 2022-08-27 10:55:10 -07:00
Mitchell Hashimoto
1609c8e775 hook up scroll down and up CSI codes (SD/SU) 2022-08-27 10:46:11 -07:00
Mitchell Hashimoto
cd74902f89 Charsets
Initial charset support. This gets a lot of stuff working but still has some critical (but not very real world) limitations.

Implements:

  * All charset slots G0 to G3
  * All shifting commands to shift into GL and GR
  * Single shift commands `ESC N` and `ESC O`
  * UTF8, ASCII, British, and DEC Special Graphics character sets

Notably missing:

  * A number of rarely used charsets
  * NRC handling
  * Disabling UTF-8 mode

All the missing stuff is very edge case... but necessary for correctness.
2022-08-27 10:33:38 -07:00
Mitchell Hashimoto
1be4626726 update TODO 2022-08-27 10:29:52 -07:00
Mitchell Hashimoto
312d589a2e implement locking shift 2022-08-27 10:20:54 -07:00
Mitchell Hashimoto
4a247e3bb8 single shift 2/3 2022-08-27 10:16:21 -07:00
Mitchell Hashimoto
bee82d58dc Shift Out/Shift In (invoke charset into GL) 2022-08-27 10:08:01 -07:00