Mitchell Hashimoto
2b28106837
update zig
2023-10-02 08:18:35 -07:00
Mitchell Hashimoto
5c1fbd09cd
font: shaper dynamically allocates cell buffer
...
Pathlogical grapheme clusters can use a LOT of memory, so we need to be
able to grow.
2023-09-26 17:59:16 -07:00
Mitchell Hashimoto
b1389cbbfe
renderer: support font style changing at runtime
2023-09-26 08:51:04 -07:00
Mitchell Hashimoto
4b791f3ee1
renderer: always reset font group on config change
2023-09-26 08:18:11 -07:00
Mitchell Hashimoto
4b8056afd8
renderer/opengl: remove gpucell lru cache
...
There was no noticable performance improvement and it complicated the
code and also diverged it from Metal.
2023-09-22 09:47:01 -07:00
Mitchell Hashimoto
bebf6bb108
renderer/opengl: only skip drawing cells if they're empty, not clear
...
Fixes #518
This optimization to avoid a draw call to OpenGL was premature. This
optimization is fine but needs to happen only for the draw calls. We
still need to clear the screen if we have no cells.
This was causing #518 because when the cursor was blinked (invisible)
then we had no cells so we'd skip the draw call which reused the old
buffer state for OpenGL.
2023-09-22 09:45:26 -07:00
Mitchell Hashimoto
0cf2ed6a9f
renderer/opengl: gl state init needs to set blending, realization
2023-09-16 11:26:07 -07:00
Mitchell Hashimoto
a19acf14d2
renderer/opengl: support reloading the Opengl state
2023-09-16 09:37:29 -07:00
Mitchell Hashimoto
58100f0a00
renderer/opengl: OpenGL state may be nil to disable rendering
2023-09-16 09:08:35 -07:00
Mitchell Hashimoto
10989ae7b0
renderer: implement underline cursor
2023-09-10 22:05:47 -07:00
Mitchell Hashimoto
8b26e93cb5
renderer: update some code comments
2023-09-10 12:18:38 -07:00
Mitchell Hashimoto
afacc2ca9e
renderer: cursor style unit tests
2023-09-09 20:48:56 -07:00
Mitchell Hashimoto
3583a0c1ca
renderer/opengl: new cursor apis
2023-09-09 20:37:56 -07:00
Mitchell Hashimoto
d9cfd00e9f
Big Cursor State Refactor
...
This makes a few major changes:
- cursor style on terminal is single source of stylistic truth
- cursor style is split between style and style request
- cursor blinking is handled by the renderer thread
- cursor style/visibility is no longer stored as persistent state on
renderers
- cursor style computation is extracted to be shared by all renderers
- mode 12 "cursor_blinking" is now source of truth on whether blinking
is enabled or not
- CSI q and mode 12 are synced like xterm
2023-09-09 20:19:37 -07:00
Mitchell Hashimoto
a6c40d0417
renderer: always show cursor if window is not focused
...
Fixes #400
This ensures the hollow box is shown even if the cursor is not in a
blinking state when unfocus happens. We still hide the cursor even on
unfocus if the terminal mode explictly asks for a hidden cursor.
2023-09-06 11:23:42 -07:00
SoraTenshi
6faed268e0
config: clean up cursor style configuration
2023-09-03 07:51:36 -07:00
Mitchell Hashimoto
22eb533473
content scale change events should also impact viewport padding
...
This calculates the new padding pixel values and propogates those
changes to the renderer.
2023-09-02 11:00:51 -07:00
Mitchell Hashimoto
e2fae7ab2b
surface should default to default cursor, blinking should check selected
2023-08-30 08:12:38 -07:00
Mitchell Hashimoto
ae0de7bce4
renderer: split ligature around cursor even if cursor is flashing
...
Fixes #356
2023-08-29 13:49:14 -07:00
Mitchell Hashimoto
0204d94921
Merge pull request #349 from mitchellh/sync
...
Synchronized Output Sequence
2023-08-28 13:15:50 -07:00
Mitchell Hashimoto
5168dc7645
renderer: do not render if synchronized output is on
2023-08-28 11:38:11 -07:00
SoraTenshi
fcf1537f82
config: Add option for custom cursor style
2023-08-28 18:20:45 +02:00
Kevin Hovsäter
8b9a11db4b
Implement cursor text in addition to color
2023-08-26 15:29:48 +02:00
Mitchell Hashimoto
e0ee5d1763
Revert "Merge pull request #322 from mitchellh/big-glyphs"
...
This reverts commit 0ffbab00a42ba0fb9a3f2aa02428760df61d03d3, reversing
changes made to 6751087bead34efe1684997503c3764a63607397.
2023-08-24 21:05:33 -07:00
Mitchell Hashimoto
aad4bdb32a
renderer/opengl: glyphs that are too wide should be scaled down
...
U+226A is 1-char wide according to the Unicode database but renders very
wide in many fonts. This causes it to leak outside of its grid cell. We
should scale down by x the same way we scale down by y.
2023-08-24 14:19:38 -07:00
Mitchell Hashimoto
135250018e
terminal/kitty-gfx: get rid of selection
2023-08-23 11:41:49 -07:00
Mitchell Hashimoto
4b38fb96db
terminal/kitty-gfx: honor "z" setting
2023-08-23 09:55:13 -07:00
Mitchell Hashimoto
7ff76ca00d
terminal/kitty-gfx: respect display c/r params
2023-08-22 14:43:50 -07:00
Mitchell Hashimoto
3bbfee676b
terminal/kitty-gfx: process source rectangle display params
2023-08-22 14:33:41 -07:00
Mitchell Hashimoto
84c72bbe46
renderer/metal: honor cell offset graphics command
2023-08-22 13:28:40 -07:00
Mitchell Hashimoto
e4e952d077
renderer/metal: image should always be rendered at desired x
2023-08-22 12:24:58 -07:00
Mitchell Hashimoto
5a9bbcbc2d
renderer/metal: clip image if necessary off top of viewport (scrolling)
2023-08-22 11:32:45 -07:00
Mitchell Hashimoto
53b25d0ecc
renderer/metal: set correct x/y for image
2023-08-22 10:14:57 -07:00
Mitchell Hashimoto
cb70d86c00
renderer/metal: emit draw calls for images
2023-08-22 10:12:40 -07:00
Mitchell Hashimoto
e665fc6741
renderer/metal: first pass at an image shader
2023-08-22 09:20:30 -07:00
Mitchell Hashimoto
5229cb93d2
renderer/metal: extract helpers for shaders/buffers
2023-08-22 08:49:34 -07:00
Mitchell Hashimoto
da4ead8f60
renderer/metal: deallocate unused image textures
2023-08-21 22:11:58 -07:00
Mitchell Hashimoto
20257c7a87
renderer/metal: images required by placements become textures
2023-08-21 21:40:57 -07:00
Mitchell Hashimoto
7ccf86b175
remove imgui and devmode
...
imgui has been a source of compilation challenges (our fault not theirs)
and devmode hasn't worked in awhile, so drop it.
2023-08-20 08:50:24 -07:00
Mitchell Hashimoto
0ca6957d0c
renderer/{metal,opengl}: need to premult our cell alpha to have effect
2023-08-18 18:38:47 -07:00
Mitchell Hashimoto
ab68569281
renderer/opengl: fix compilation for new modes style
2023-08-15 13:33:06 -07:00
Mitchell Hashimoto
951aa00c63
terminal: move to new modes struct
2023-08-15 11:30:33 -07:00
Mitchell Hashimoto
55778a049b
apprt/gtk, opengl: render preedit
2023-08-11 12:37:27 -07:00
Mitchell Hashimoto
d62161e2c3
support preedit text rendering in core and metal
2023-08-11 12:20:48 -07:00
cryptocode
6045088afc
Don't show hollow cursor in inactive windows when cursor is hidden.
...
This is the behavior of the other terminals I have, such as iTerm, allcritty, WezTerm, and Kitty. The hollow cursor is especially noticable when running in two panes,
one of them inactive with animations (such as a progress bar)
2023-08-11 17:20:03 +02:00
Mitchell Hashimoto
e15b5ab42c
fix error set for libxev cross-platform
2023-08-09 10:05:48 -07:00
Mitchell Hashimoto
e33f6c71de
update libxev to fix split writes on large writes (i.e. big paste)
...
Fixes #258
This was an upstream bug in libxev where partial the queueWrite
mechanism would not correctly handle partial write results:
https://github.com/mitchellh/libxev/pull/60
2023-08-09 08:18:43 -07:00
Kevin Hovsäter
22b8173164
Fix typos
2023-08-08 14:27:34 +02:00
Mitchell Hashimoto
85e32f9a15
renderer: hide cursor is state explicit asks for invisible cursor
...
This was a regression. The previous logic would always show the cursor
if we were using a non-blinking cursor. But, if the terminal state is
explicitly requesting an invisible cursor (mode 25) then we need to hide
the cursor.
2023-08-06 09:55:13 -07:00
Mitchell Hashimoto
2065dd77d7
renderer/opengl: need to release OpenGL context with glfw
2023-08-05 22:33:55 -07:00