8195 Commits

Author SHA1 Message Date
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
Mitchell Hashimoto
7626f194e9 basic charset mapping, support configuration, print tests 2022-08-27 09:42:05 -07:00
Mitchell Hashimoto
75b63f3df3 british charset 2022-08-27 08:41:06 -07:00
Mitchell Hashimoto
40ca2a69fb starting charset tables 2022-08-26 20:00:25 -07:00
Mitchell Hashimoto
1f4572b3d2 update TODO 2022-08-26 15:20:28 -07:00
Mitchell Hashimoto
50409271a3 Mouse Reporting #8
Implements all known formats and event types for mouse reporting. This makes vim, htop, etc. handle mouse events!

Mouse formats:

  * X10
  * UTF-8
  * SGR
  * urxvt
  * SGR Pixels

Event types:

  * X10
  * "Normal" - mouse button press/release, including scroll wheel
  * "Button" - "Normal" + mouse motion events while a button is pressed
  * "Any" - "Normal" + mouse motion events at anytime (even if a button is not pressed)

See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
2022-08-26 15:10:14 -07:00
Mitchell Hashimoto
ff460887b5 fix miscompilation around sgr mode 2022-08-26 15:07:22 -07:00
Mitchell Hashimoto
fe6ba02709 sgr pixels mouse report format 2022-08-26 14:59:44 -07:00
Mitchell Hashimoto
1039ad76bf urxvt reporting format 2022-08-26 14:57:35 -07:00
Mitchell Hashimoto
f551c0ef66 SGR reporting 2022-08-26 14:55:18 -07:00
Mitchell Hashimoto
b46fe522d5 UTF-8 mouse reporting 2022-08-26 14:42:20 -07:00
Mitchell Hashimoto
ab305add6c any event mouse tracking 2022-08-26 14:26:42 -07:00
Mitchell Hashimoto
bd5dd69538 normal event (motion) mouse tracking 2022-08-26 14:17:42 -07:00
Mitchell Hashimoto
9aa5378ffa Track/cache button state and mods state 2022-08-26 13:55:24 -07:00
Mitchell Hashimoto
a4bab6592d normal events can now track scroll 2022-08-26 12:25:33 -07:00
Mitchell Hashimoto
3096b32f13 mouse normal events in x10 format 2022-08-26 12:17:58 -07:00
Mitchell Hashimoto
93f45af41b X10 click-only mouse reporting 2022-08-26 12:04:54 -07:00
Mitchell Hashimoto
43b7727cf8 change u1 in mode to bool 2022-08-26 11:27:44 -07:00
Mitchell Hashimoto
f9274bdafc define mouse events, all TODO 2022-08-26 11:14:34 -07:00
Mitchell Hashimoto
dc6fc5c1c3 implement faint colors (SGR 2) 2022-08-26 11:13:34 -07:00
Mitchell Hashimoto
65df657b4e make cell attrs bools instead of u1s 2022-08-26 11:09:48 -07:00
Mitchell Hashimoto
469515c02b bind function keys (F1 to F12) 2022-08-26 10:27:41 -07:00
Mitchell Hashimoto
4ffd5cd994 SGR 39/49 (reset fg/bg, respectively) 2022-08-26 09:56:17 -07:00
Mitchell Hashimoto
a1130095f8 note charsets are TODO 2022-08-26 09:27:51 -07:00
Mitchell Hashimoto
551de6eda4 update TODO 2022-08-25 16:45:39 -07:00
Mitchell Hashimoto
c7a5045bd4 missed comment 2022-08-25 16:24:20 -07:00
Mitchell Hashimoto
84b75967a2 scale the cursor position from screen coords to pixels 2022-08-25 16:09:54 -07:00
Mitchell Hashimoto
a9b34b43c5 code for getting physical DPI
we don't need it but I want to put it in Git history
2022-08-25 15:53:29 -07:00
Mitchell Hashimoto
9601920b4d font size is now in font points, determine size based on window DPI 2022-08-25 12:29:28 -07:00
Mitchell Hashimoto
46bbab5d10 ignore zero-width characters for now 2022-08-24 13:48:22 -07:00