Daniel Eklöf
e17d297dca
term: if the damage list gets too long, replace with a full redraw
2019-07-02 19:45:17 +02:00
Daniel Eklöf
d04029d703
render: revert glyph caching
...
Instead, try to group as long sequences of glyphs as possible, as
fewer calls to cairo_show_glyphs() is *much* faster.
2019-07-02 19:44:02 +02:00
Daniel Eklöf
607df23a92
render: fix cursor not always being rendered
...
In case the only difference between this and the last frame was cursor
movement, the cursor was not rendered.
2019-07-02 12:51:43 +02:00
Daniel Eklöf
9392cfbbf3
render: draw pre-rendered glyph OVER background
...
This allows us to render the background dynamically. Note that
pre-rendered glyphs still have wrong foreground color.
2019-07-02 12:50:18 +02:00
Daniel Eklöf
3d8e140a28
render: cache glyph masks
...
Cache rendered glyph masks for each font combo. When rendering text,
use these when possible (standard ASCII).
For now, use the cached glyph as a mask. This allows colors to just
work. It would be faster to cache a completely pre-rendered image, but
then we would need one image for each background/foreground combo.
2019-07-02 12:22:05 +02:00
Daniel Eklöf
e6d9eb7c9e
main: log resize event as INFO
2019-07-01 21:15:06 +02:00
Daniel Eklöf
4b824d824c
term: 'end' variable is only used in assert()
2019-07-01 21:14:31 +02:00
Daniel Eklöf
0954ffdf22
vt: no need to clear temporary utf8 buffer after printing it
2019-07-01 21:14:07 +02:00
Daniel Eklöf
dfc9554e89
render: always render cursor
2019-07-01 21:13:24 +02:00
Daniel Eklöf
7e4dd2de9a
csi: clear all existing alt damage when switch alt <--> normal
2019-07-01 19:25:04 +02:00
Daniel Eklöf
ee476a7e5a
csi: erase alt screen when enabling it
2019-07-01 19:23:31 +02:00
Daniel Eklöf
24395cf4cd
scrolling: implement partial scrolling
2019-07-01 19:20:21 +02:00
Daniel Eklöf
63e46b7b0b
render: use actual grid size when re-allocating grid buffer
2019-07-01 19:19:48 +02:00
Daniel Eklöf
c853f01027
render: re-enable drawing cursor on erase
2019-07-01 19:19:32 +02:00
Daniel Eklöf
482f56b4a2
grid: implement a memmove-sort-of function
...
grid_memmove() moves cell data from one index to another, taking the
grid offset into account.
2019-07-01 19:18:52 +02:00
Daniel Eklöf
b45b492f41
csi: DECSTBM: move cursor to top left corner of scrolling region
2019-07-01 19:13:45 +02:00
Daniel Eklöf
d70956da08
wip: use a sliding window instead of memmove() to scroll
...
Instead of memmoving a large amount of data on every scroll, use a
sliding window. That is, each time we scroll, we offset origin.
2019-07-01 12:23:38 +02:00
Daniel Eklöf
9e3b8ab3ff
vt: only prep logging of CSI/ESC parameters when debug logging is enabled
2019-07-01 12:21:25 +02:00
Daniel Eklöf
0f48b4f8f7
terminal: prepare for floating grids
2019-06-29 21:30:54 +02:00
Daniel Eklöf
8cff861f38
terminal: move print_needs_wrap from grid to terminal
2019-06-29 21:16:06 +02:00
Daniel Eklöf
a8f4cb55af
terminal: move cursor from grid to terminal
2019-06-29 21:15:32 +02:00
Daniel Eklöf
8723098cda
terminal: move fore/background colors from grid to terminal
2019-06-29 21:09:58 +02:00
Daniel Eklöf
3d2ab03f62
terminal: move col/row count, cell width/height and scroll region to terminal
2019-06-29 21:08:08 +02:00
Daniel Eklöf
1ecd4a6ae1
Rename grid_* functions to term_*
2019-06-29 21:03:28 +02:00
Daniel Eklöf
e2bdda8c61
render: don't try to render glyph for empty cell(s)
2019-06-29 20:50:40 +02:00
Daniel Eklöf
28f7ab5130
main: increase ptmx slave buffer size
2019-06-29 20:50:27 +02:00
Daniel Eklöf
23a133a64a
render: alignment
2019-06-29 20:50:21 +02:00
Daniel Eklöf
b59b03fd07
render: also check scroll damage list
2019-06-29 20:50:09 +02:00
Daniel Eklöf
34fb86724f
slave: remove initial debug code
2019-06-29 20:49:35 +02:00
Daniel Eklöf
ed867a78bb
vt: dummy implementation of of "ESC (B" (character charset)
2019-06-29 20:49:00 +02:00
Daniel Eklöf
63fb7a9374
log: don't syslog
2019-06-29 20:48:02 +02:00
Daniel Eklöf
1dbddd7155
colors: store as doubles, rather than uint32_t
...
Since cairo uses doubles, we don't want to have to convert a uin32_t
to double values every time we render a cell.
2019-06-26 20:33:32 +02:00
Daniel Eklöf
54403738bb
render: use alpha from cell colors
2019-06-26 20:09:02 +02:00
Daniel Eklöf
3349c28fce
render: avoid division
2019-06-26 20:08:49 +02:00
Daniel Eklöf
dbd883935b
vt: execute: implement HT - horizontal tab
2019-06-26 19:58:37 +02:00
Daniel Eklöf
3a97fce6d0
grid: attributes now track whether we've set a foreground/background color
...
This means we don't have to explicitly set the foreground/background
to the grid's default colors whenever we reset/clear a cell, and we
can instead simply memset() the entire cell to 0.
This also means the renderer has to get the default color when
rendering a cell without a foreground/background color set.
2019-06-26 19:44:31 +02:00
Daniel Eklöf
97420f13d8
scroll: let the render erase the scrolled up region
...
The grid scroll operation no longer inserts a DAMAGE_ERASE operation,
but instead manually clears the region. The render does the
corresponding thing.
2019-06-26 19:33:39 +02:00
Daniel Eklöf
a35738d96f
scroll-region: don't clear damage queue when changing scroll region
...
Vim, for example, changes the scroll region every time you scroll a
single line. Thus, resetting the damage queue is slow.
This reworks the damage handling of scroll updates:
* Split damage queue into two: one for scroll operations and one for
update/erase operations.
* Don't separate update/erase operations inside/outside the scroll
region
* Store the current scroll region in the scroll damage operation. This
allows us to stack multiple scroll operations with different scroll
regions.
* When updating update/erase operations after a scroll operation,
split the update/erase operations if necessary (the current scroll
operation may have a scroll region different from before, thus
forcing us to split existing update/erase operations.
* The renderer no longer erases after a scroll. The scroll operation
also adds an erase operation. This also means that erase operation
are subject to adjustments by later scroll operations.
2019-06-25 20:11:08 +02:00
Daniel Eklöf
0f76f4190a
grid: scroll reverse: hopefully done correct now
2019-06-24 20:49:37 +02:00
Daniel Eklöf
0e078f44b6
grid: scroll: fix start/end for erase region
2019-06-24 20:45:14 +02:00
Daniel Eklöf
e7043c8a6d
csi: fix scrolling region end
2019-06-24 20:44:29 +02:00
Daniel Eklöf
5b53fda5e6
csi: add function param_get()
...
Returns the value of parameter #idx, if available, or the specified
default value.
If the specified parameter does exist, but is 0, the default value is
returned.
2019-06-24 20:17:02 +02:00
Daniel Eklöf
da0a65d499
csi: implement cursor horizontal absolute
2019-06-24 20:08:44 +02:00
Daniel Eklöf
637820bef5
csi: implement VPR (vertical line position relative)
2019-06-24 20:05:31 +02:00
Daniel Eklöf
d4b6bc77d5
csi: VPA: saturate row
2019-06-24 20:05:24 +02:00
Daniel Eklöf
86519f93ba
csi: implement "send device attributes"
2019-06-24 20:01:41 +02:00
Daniel Eklöf
722c2e7ed2
csi: recognize a bunch of ?h/l commands, log unimplemented
2019-06-24 20:01:12 +02:00
Daniel Eklöf
0cf1253ac0
csi: implement VPA (vertical line position absolute)
2019-06-24 19:59:54 +02:00
Daniel Eklöf
44206b49d4
csi: saturate row/col when setting cursor position
2019-06-24 19:40:00 +02:00
Daniel Eklöf
2b3f3711fc
TIOCSWINSZ: fix alignment and spelling
2019-06-24 19:39:31 +02:00