Mitchell Hashimoto
56c6c096fa
renderer: handle scenarios the preedit text is wider than our screen
2023-12-03 20:16:49 -08:00
Mitchell Hashimoto
0cdefe8b8b
core: remove size limit on preedit length by heap allocating
...
Fixes #882
We previously had a hardcoded limit of 16 codepoints. In #882 , a user
pointed out that in Chinese, is reasonable for a preedit input to be
longer than this.
To avoid any future issues, this commit moves to a heap-allocated
variant. Preedits aren't that common, they aren't high throughput, and
they're generally pretty small, so using a heap allocation is fine. The
memory is owned by the person who set it.
2023-12-03 19:54:26 -08:00
Mitchell Hashimoto
7f40881747
font: faces use primary grid metrics to better line up glyphs
...
Fixes #895
Every loaded font face calculates metrics for itself. One of the
important metrics is the baseline to "sit" the glyph on top of. Prior to
this commit, each rasterized glyph would sit on its own calculated
baseline. However, this leads to off-center rendering when the font
being rasterized isn't the font that defines the terminal grid.
This commit passes in the font metrics for the font defining the
terminal grid to all font rasterization requests. This can then be used
by non-primary fonts to sit the glyph according to the primary grid.
2023-12-02 09:51:15 -08:00
Mitchell Hashimoto
ec8f3d036e
renderer/opengl: implement min contrast
2023-12-01 21:55:51 -08:00
Mitchell Hashimoto
e3eba92c0e
renderer/metal: only apply min contrast if set and only on non-color fg
2023-12-01 21:26:33 -08:00
Mitchell Hashimoto
7af4009f27
renderer/metal: minimum contrast ratio is configurable
2023-12-01 21:24:38 -08:00
Mitchell Hashimoto
6c859cca82
renderer/metal: minimum contrast experiment
...
This uses WCAG2 algorithms with a minimum ratio hardcoded of 3:1. This
is not shippable in its current state because we want the ratio to be
configurable and I'm not happy with the way data is being sent to the
shader.
2023-12-01 20:51:16 -08:00
Mitchell Hashimoto
bb60d2c1c0
renderer/opengl: urls
2023-11-29 15:30:23 -08:00
Mitchell Hashimoto
8fcf3f08dd
core: send mouse hover point
2023-11-29 15:30:22 -08:00
Mitchell Hashimoto
3a599ec7df
renderer: link sets handle hover links
2023-11-29 15:30:22 -08:00
Mitchell Hashimoto
b94c607256
renderer: matchset tests
2023-11-29 15:30:22 -08:00
Mitchell Hashimoto
5a7596e1b1
renderer: link set for more efficient matching
2023-11-29 15:30:22 -08:00
Mitchell Hashimoto
aa86031ff6
terminal: move line searching here, unit test
2023-11-29 15:30:22 -08:00
Mitchell Hashimoto
5db002cb12
renderer/metal: underline urls
2023-11-29 15:30:21 -08:00
Mitchell Hashimoto
247b92ce07
renderer/opengl: convert Kitty images from RGB to RGBA
...
Fixes #932
We have to do this for Metal as well (this code is copied from Metal)
since Metal doesnt even allow RGB textures. I couldn't figure out a way
to get the A value to be "255" (byte), it seems to always be set to 1
which gets normalized to 1/255, so lets just manually convert.
2023-11-21 16:56:02 -08:00
Mitchell Hashimoto
cf8a0bdaec
renderer: handle Kitty images where z < 0 for all placements
2023-11-20 21:34:17 -08:00
Mitchell Hashimoto
9988dedb80
renderr/opengl: stylistic
2023-11-20 09:45:38 -08:00
Mitchell Hashimoto
d1de53ed22
renderer/opengl: correct shader params
2023-11-19 22:52:40 -08:00
Mitchell Hashimoto
a5d71723d5
renderer/opengl: do not need to convert
2023-11-19 22:49:30 -08:00
Mitchell Hashimoto
2a10af90a3
renderer/opengl: draw images
2023-11-19 22:43:39 -08:00
Mitchell Hashimoto
64cacce1cf
renderer/opengl: setup image uniforms
2023-11-19 22:33:06 -08:00
Mitchell Hashimoto
76c76ce85e
renderer/opengl: upload kitty image textures
2023-11-19 22:08:07 -08:00
Mitchell Hashimoto
e55cb274ba
config: custom-shader-animation
2023-11-17 21:51:07 -08:00
Mitchell Hashimoto
61f10dc583
renderer/opengl: new gpucell
2023-11-17 21:51:07 -08:00
Mitchell Hashimoto
8253fc1f31
renderer/opengl: shaders only need one color input
2023-11-17 21:51:07 -08:00
Mitchell Hashimoto
2db36646ac
renderer/opengl: some comments
2023-11-17 21:51:07 -08:00
Mitchell Hashimoto
a64d12d3cb
renderer: animations should stop if config changes them
2023-11-17 21:51:07 -08:00
Mitchell Hashimoto
5d7c47a469
renderer/metal: clean up some memory management
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
cc389c81c2
quiet tests
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
39e7055853
renderer/opengl: enable animations
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
5c7bad2f7d
renderer/opengl: resize the screen texture
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
c8a51a2158
renderer/opengl: create the screen texture
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
fbc13d08b0
renderer/opengl: set resolution uniform on screen size change
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
2559d6b367
renderer/opengl: increment time uniform
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
e0afa442c4
renderer/opengl: better organization of custom shader state
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
47971e7663
renderer/opengl: setup uniform buffer objects for custom shaders
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
5fc91401f2
renderer/opengl: draw custom shaders, simplified
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
da600fee8f
renderer/opengl: pull out cell program drawing to dedicated func
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
aff5090362
renderer/opengl: simplifying the custom shader to get things working
2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
1fedc912f0
renderer/opengl: create ubos
2023-11-17 21:51:05 -08:00
Mitchell Hashimoto
3502db0f5f
renderer/opengl: start custom program work
2023-11-17 21:51:05 -08:00
Mitchell Hashimoto
cc630f10ac
renderer/opengl: only one GPUCell
2023-11-17 21:51:05 -08:00
Mitchell Hashimoto
fb0929a11b
renderer/opengl: extract cell program state to dedicated struct
2023-11-17 21:51:05 -08:00
Mitchell Hashimoto
46dd084ee9
renderer/opengl: wip
2023-11-17 21:51:05 -08:00
Mitchell Hashimoto
8576acb89e
renderer/opengl: move opengl API to pkg/opengl
2023-11-17 21:51:04 -08:00
Mitchell Hashimoto
76a88e3fbe
renderer: spirv binary must be aligned to u32
2023-11-17 21:50:53 -08:00
Mitchell Hashimoto
4742cd308d
renderer: animation timer if we have custom shaders
2023-11-17 21:50:53 -08:00
Mitchell Hashimoto
17de73f802
renderer: log shadertoy compile errors
2023-11-17 21:50:53 -08:00
Mitchell Hashimoto
3a17ac48cf
prettier: ignore shaders
2023-11-17 21:50:53 -08:00
Mitchell Hashimoto
244e7266a1
renderer/metal: don't recreate custom shader resources per frame
2023-11-17 21:50:53 -08:00