Commit graph

2124 commits

Author SHA1 Message Date
Daniel Eklöf
ad8f293d96
terminfo: add remaining keypad keys 2020-06-27 20:05:50 +02:00
Daniel Eklöf
26528f6a73
input: add key mapping for XKB_KEY_KP_Decimal 2020-06-27 20:03:41 +02:00
Daniel Eklöf
9f31cfa764
terminfo: add ka1, ka3, kc1 and kc3 (upper/lower left/right keypad keys) 2020-06-27 19:39:27 +02:00
Daniel Eklöf
851e99f9a5
terminfo: kb2 (center keypad key) should be \EOu, not \EOE 2020-06-27 19:38:53 +02:00
Daniel Eklöf
644c8ef879
grid: add TODO, and an assert, that sixels must not cross wrap-around 2020-06-27 15:34:54 +02:00
Daniel Eklöf
1915e53629
sixel: improve descriptions of sixel_delete_* and sixel_overwrite_* 2020-06-27 15:32:33 +02:00
Daniel Eklöf
186a07c364
sixel: split -> overwrite 2020-06-27 15:29:47 +02:00
Daniel Eklöf
ae727e372a
term: erasing characters now splits sixels instead of deleting them 2020-06-27 15:22:31 +02:00
Daniel Eklöf
0953ffd2d3
sixel: delete/split: early(ier) exit when there aren't in sixel images
Avoid unnecessary wrap checks if the sixel image list is empty.
2020-06-27 14:43:29 +02:00
Daniel Eklöf
a25ff1ed84
Merge branch 'sixel-split' 2020-06-27 14:28:26 +02:00
Daniel Eklöf
f976df6f4d
changelog: sixel images can now be printed on 2020-06-27 14:27:49 +02:00
Daniel Eklöf
8cdfd03c4b
sixel: split: make pixman instantiation generic 2020-06-27 14:26:13 +02:00
Daniel Eklöf
cc65002539
sixel: never generate scrollback wrapping sixel images
Instead, split them up into two (or more...).

This makes the intersection detection logic *much* simpler.
2020-06-27 14:19:08 +02:00
Daniel Eklöf
e896c2fa55
sixel: refactor handling of wrap-around delete- and split regions
Handle these on a higher abstraction level. The low level functions
that detect sixel intersections now assume the specified rectangle (or
line region) does *not* cross the wrap-around.

This is ensured by detecting a wrap-around region before hand, and
splitting it up into two, non wrapping regions.
2020-06-27 13:56:13 +02:00
Daniel Eklöf
3715a37be9
sixel: split_by_rectangle: bug: typo in boundary check 2020-06-27 13:19:19 +02:00
Daniel Eklöf
37ceb65729
sixel: split: make sure relative row/column values are bounded 2020-06-27 13:18:54 +02:00
Daniel Eklöf
d9b7a85722
sixel: split: push front instead of back
This reduces the burden on sixel_split_by_rectangle(), which would
otherwise consider the newly added/splitted sixels. Since we already
know they aren't covered by the specified rectangle, we can skip that.
2020-06-27 12:50:39 +02:00
Daniel Eklöf
dfc205e706
sixel: add sixel_split_by_rectangle()
This function splits a sixel image into up to four pieces. The four
pieces correspond to the relative complement (set difference) of the
sixel image and the specified rectangle.

Use this function when (possibly) overwriting existing sixel images
when generating a new one, i.e. in sixel_unhook().
2020-06-27 12:45:22 +02:00
Daniel Eklöf
f4fcdbf38b
sixel: hopefully fix erasing of scrollback wrap-around sixels
If a sixel image crossed the scrollback wrap around, the logic that
detected whether a row, or a row range, intersected with the sixel was
incorrect.
2020-06-27 11:00:28 +02:00
Daniel Eklöf
32e70263f9
wayland: use xdg_output's description if there's no 'model' 2020-06-25 17:30:51 +02:00
Daniel Eklöf
bc82d4ee28
sixel: wip: split up image being overwritten, rather than erasing it
Instead of completely erasing a sixel image when it is being
"overwritten" (text is printed somewhere within the image, or another
sixel image is emitted within the first image), split it up into up to
four pieces: 'above', 'below', 'to-the-left' and 'to-the-right'.

This is currently very un-optimized, but seems to produce correct
results.
2020-06-23 21:07:12 +02:00
Daniel Eklöf
bae11000cc
term: reset: set title to the user configured title, not "foot" 2020-06-22 14:33:16 +02:00
Daniel Eklöf
e466063020
term: ptmx: don't abort on EAGAIN when trying to read from ptxm 2020-06-19 11:33:03 +02:00
Daniel Eklöf
c94cbdeb64
osc: set color: update both grids, but exclude scrollback 2020-06-14 09:34:46 +02:00
Daniel Eklöf
70c48091f3
changelog: language 2020-06-14 09:14:04 +02:00
Daniel Eklöf
dec796f525
sixel: if the client has specified a size, do not change that
We used to auto-resize images to always be a multiple of 6.

This is incorrect. The client may, for example, have specified a size
to align the image to a cell boundary, which may not be a multiple of
6.

Furthermore, in e.g. Jexer, which splits up an image into stripes,
that the next image would "overwrite" the previous one. Since the next
image was started on a cell row that the previous image had overflowed
into.
2020-06-11 18:40:52 +02:00
Daniel Eklöf
957e482f45
osc: 'Set Color' now updates already rendered cells in current grid
Since we don't have the original palette index in already rendered
cells, we compare the color *value*. If it matches, we assume this was
the color index used, and updates the cell's color.

Note that for performance reasons, we only update the current
grid. This is of course wrong, strictly speaking.

However, it is expected that _Set Color_ is used by full-screen
applications using the alternate grid.
2020-06-11 17:13:32 +02:00
Daniel Eklöf
6454e897ab
sixel: only use configured alpha when color matches the default bg 2020-06-10 18:52:53 +02:00
Daniel Eklöf
e0dc01f2ee
sixel: don't erase if cursor is *before* the image 2020-06-10 18:43:42 +02:00
Daniel Eklöf
cc5dedc259
sixel: do not reset palette after each image
A client can re-use the palette between images. Resetting the palette
breaks this.

Now we initialize the palette on demand, and resets it when the
palette size is changed (by the client).
2020-06-10 18:38:46 +02:00
Daniel Eklöf
8524e32bd5
doc: benchmark: move alacritty-unicode-random text from footnote to separate chapter 2020-06-09 20:59:48 +02:00
Daniel Eklöf
ae75a7933f
doc: benchmark: describe _why_ Alacritty is so fast in 'unicode-random' 2020-06-09 20:55:41 +02:00
Daniel Eklöf
7fb2da3cf9
main: log architecture at startup 2020-06-09 20:35:21 +02:00
Daniel Eklöf
8624a8823c
readme: fix mastodon link 2020-06-09 17:46:12 +02:00
Daniel Eklöf
aa331404b5
readme: add link to my mastodon account 2020-06-09 17:44:03 +02:00
Daniel Eklöf
12fda70402
sixel: log message: fix spelling 2020-06-09 17:34:04 +02:00
Daniel Eklöf
f72c982c89
osc: don't assert on \E]4 being followed by a ';'
This fixes a crash (in debug builds) that could be triggered by
e.g. cat:ing /dev/urandom.
2020-06-09 17:33:26 +02:00
Daniel Eklöf
bf57d0c606
csi: \E[3J: reset render.last_cursor.row if necessary
This fixes a crash that occurred when the last rendered cursor cell
had scrolled off screen, and \E[3J (clear scrollback) was executed.
2020-06-09 17:32:34 +02:00
Daniel Eklöf
fb001ee7a7
unicode combining: don't log overflow errors unless LOG_ENABLE_DBG == 1 2020-06-09 17:31:58 +02:00
Daniel Eklöf
e7d7b30c84
Merge branch 'faster-unicode' 2020-06-09 17:31:40 +02:00
Daniel Eklöf
9df7e8fa07
term: print_insert: early return 2020-06-09 17:31:28 +02:00
Daniel Eklöf
97221dd09b
vt: utf8-print: check width == 0 first, when deciding whether to do combining 2020-06-09 17:30:49 +02:00
Daniel Eklöf
9452aff020
vt: initial version of UTF-8 decoding built-in into the VT parser 2020-06-07 16:16:50 +02:00
Daniel Eklöf
0969b2ebd7
render: sixel: use pixman_image_composite32() 2020-06-06 14:22:54 +02:00
Daniel Eklöf
fd99b28beb
render: cell: reset clip region also when we're NOT rendering a glyph 2020-06-06 14:22:25 +02:00
Daniel Eklöf
21e9031420
sixel: don't erase image when printing text *next* to it. 2020-06-06 13:59:46 +02:00
Daniel Eklöf
a08e7f358f
sixel: fix asan runtime warning: left shift of 255 by 24 cannot...
be represented in type 'int'
2020-06-06 13:52:09 +02:00
Daniel Eklöf
f0980934d4
PKGBUILD: works on aarch64 too 2020-06-05 12:06:38 +02:00
Daniel Eklöf
c012a0ffc7
doc: benchmarks: results from my desktop 2020-06-05 11:07:30 +02:00
Daniel Eklöf
d8a83b500f
render: regression: don't let cell background overflow into the margins
This used to work before because we had a "global" clip region on the
text area, excluding the margins.

When we introduced per-cell clipping, this global clip region was
removed, and the background drawing code could now overflow into the
margins.

This fixes it by setting the cell clip region not just when rendering
a glyph, but before we render the cell background.
2020-06-05 08:10:38 +02:00