Kovid Goyal
085bc09dfb
Micro-optimization
2021-02-15 16:24:04 +05:30
Kovid Goyal
886309850f
Dont add alpha when rendering alpha mask on canvas
...
Instead use the larger of the two alphas. This gives better results
for overlapping text, such as the infinite length ligature glyphs used
by FiraCode. I dont think adding ever gave better results anyway.
2021-02-15 16:08:06 +05:30
Kovid Goyal
ba005e991a
Improve handling of infinite length ligatures in newer versions of FiraCode and CascadiaCode.
...
Now such ligatures are detected based on glyph naming convention.
This removes the gap in the ligatures at cell boundaries. However, at
least in Fira Code the infinite length ligature glyphs define a negative
left side bearing. This means they overlap when drawn consecutively,
leading to unsightly bumps at the joins.
Fixes #2695
2021-02-15 15:49:09 +05:30
Kovid Goyal
912c46fc57
Fix rendering of ligatures in the latest release of Cascadia code
...
For some reason it puts empty glyphs after the ligature glyph rather than before it.
There is a possibility this fix might break something else, we will see.
Fixes #3313
2021-02-15 11:57:57 +05:30
Kovid Goyal
5675944c0c
Recognize remaining ASCII keys for legacy mode as well
2021-02-15 05:33:57 +05:30
Kovid Goyal
19b882a0bd
Also handle : as a legacy ASCII key
...
Fixes #3315
2021-02-15 05:24:21 +05:30
Kovid Goyal
323d5dba7e
SingleKey parsing requires ASCII lowercase
2021-02-15 04:55:51 +05:30
Kovid Goyal
fbcdf352ac
Allow resizing of OS Window framebuffers to a single cell
...
This is much smaller than before and essentially works around the issue
of the text being scaled when the window is resized to small sizes. Also
has the nice side effect of making the code simpler for the panel
kitten. Fixes #3307
2021-02-14 22:17:41 +05:30
Kovid Goyal
015fe9054e
Fix shifted keys not matching shortcuts in kittens
...
Broke after keyboard refactoring for new keyboard protocol. Now a key
event will match a shortcut specification if either the mods and key
match or mods without shift and shifted key match. Fixes #3314
2021-02-14 07:52:08 +05:30
Kovid Goyal
de0f225c45
Fix #3299
2021-02-09 22:10:40 +05:30
Kovid Goyal
4541cf8807
Another CodeQL warning
2021-02-05 10:41:35 +05:30
Kovid Goyal
fe07306ff1
Use a nicer decorator for functions that only need to be run once
2021-02-05 10:40:52 +05:30
Kovid Goyal
726d736aac
Type check return value of cache_dir
2021-02-05 10:34:17 +05:30
Kovid Goyal
db0360dc81
Fix a bunch of CodeQL warnings
2021-02-05 10:05:54 +05:30
Kovid Goyal
0e483f81ac
Compat for python < 3.8
2021-02-05 09:23:54 +05:30
Kovid Goyal
e969dea3b7
Remove unused function
2021-02-05 09:20:58 +05:30
Kovid Goyal
95dc87cf04
Prevent stack overflows when recursing to coalesce frames
2021-02-05 09:12:08 +05:30
Kovid Goyal
7a1785e1e8
Get chunked loading working with frames
2021-02-04 21:04:44 +05:30
Kovid Goyal
5d2baaac38
...
2021-02-04 17:52:18 +05:30
Kovid Goyal
b479510f6c
Allow controlling the number of loops in icat
2021-02-04 17:47:53 +05:30
Kovid Goyal
83b8c8ea12
Reduce frequency of key frames slightly
2021-02-04 17:08:06 +05:30
Kovid Goyal
a447ba7d76
Fix typo in coalesce function causing incorrect coalesce for more than one level of recursion
2021-02-04 16:50:13 +05:30
Kovid Goyal
450e1c2f95
Use key frames for performance
2021-02-04 16:20:30 +05:30
Kovid Goyal
cf3a01f502
Handle images whose first frame is smaller than the canvas
2021-02-04 15:57:49 +05:30
Kovid Goyal
2650c7dd9e
Avoid calculation when over px is transparent
2021-02-04 14:26:10 +05:30
Kovid Goyal
f18a56682f
Fix animations not resuming when OS window is hidden and then shown
2021-02-04 13:34:27 +05:30
Kovid Goyal
af94e07618
Cache exe lookups
2021-02-04 11:36:59 +05:30
Kovid Goyal
b72dbc973d
Allow controlling how many times an animation will loop
2021-02-03 20:54:43 +05:30
Kovid Goyal
2dad179285
...
2021-02-03 16:00:31 +05:30
Kovid Goyal
19f0e2303d
Refactor to store frame deltas instead of fully coalesced frames
...
Trades CPU usage for cache/memory space
2021-02-03 15:49:33 +05:30
Kovid Goyal
c152624634
Rename state variable to be closer to its actual purpose
2021-02-02 09:00:28 +05:30
Kovid Goyal
212906cf7d
gap should be gap to next frame not gap from previous frame
...
Matches usage in the GIF format and makes the concept of gapless
clearer.
2021-02-01 17:08:59 +05:30
Kovid Goyal
bb5c5a8e4f
Allow gapless frames
2021-02-01 16:22:36 +05:30
Kovid Goyal
9cf5348c36
Modify ImageMagick wrapper to handle animated images
2021-02-01 14:12:26 +05:30
Kovid Goyal
8fa737f01c
Rescan for animated images on various events
2021-01-31 20:58:43 +05:30
Kovid Goyal
f16e22fbec
Forgot to convert gaps to monotonic_t
2021-01-31 20:58:43 +05:30
Kovid Goyal
19e0406459
Wire up animation state tracking
2021-01-31 20:58:43 +05:30
Kovid Goyal
354d7c2740
...
2021-01-31 20:58:42 +05:30
Kovid Goyal
00edb6058e
Start work on implementing frame transitions
...
Also ensure that the correct OS Window is current when uploading images
to GPU.
2021-01-31 20:58:42 +05:30
Kovid Goyal
597267d1d0
root frame gap should be set to the gap of the first received frame
2021-01-31 20:58:42 +05:30
Kovid Goyal
ad4665e638
Add support for newer keys to GraphicsCommand serializer
2021-01-31 20:58:42 +05:30
Kovid Goyal
b21850dd15
Implement updating of current frame on GPU
2021-01-31 20:58:42 +05:30
Kovid Goyal
5eba754c60
Implement animation control escape codes
2021-01-31 20:58:42 +05:30
Kovid Goyal
b35084062d
Remove old data from cache when re-using image objects
2021-01-31 20:58:42 +05:30
Kovid Goyal
1d20472759
Avoid a cache move when deleting frames
2021-01-31 20:58:42 +05:30
Kovid Goyal
c0e336a971
DRYer
2021-01-31 20:58:42 +05:30
Kovid Goyal
d76e757d53
Implement delete for frames
2021-01-31 20:58:42 +05:30
Kovid Goyal
43ea58ef48
Start work on delete for frames
2021-01-31 20:58:42 +05:30
Kovid Goyal
17f485d614
Basic frame loading works
2021-01-31 20:58:41 +05:30
Kovid Goyal
35f3312a1e
Use shorter cache keys
2021-01-31 20:58:41 +05:30