Wez Furlong
5dbf90412f
bounds check should be on the actual number of cols
...
Don't trust that a given Line has exactly phys_cols columns.
2018-01-28 23:33:31 -08:00
Wez Furlong
4a4d8c7186
add CUF cursor move support
2018-01-28 22:25:53 -08:00
Wez Furlong
2e73b937bb
Add some state to track vertical scroll regions
...
However, it doesn't really do very much that is useful yet
2018-01-28 21:16:59 -08:00
Wez Furlong
6ed0e81f02
fix SetCursorPosXY; had rows/cols flipped
2018-01-28 21:13:11 -08:00
Wez Furlong
13a856bbb2
add device attributes answerback
2018-01-28 20:46:34 -08:00
Wez Furlong
1059620233
add stub for setting the scroll region
2018-01-28 20:33:21 -08:00
Wez Furlong
2011eec9f2
clamp cursor y position when moving the cursor
2018-01-28 19:30:07 -08:00
Wez Furlong
001eda902b
tidy up basic scroll handling
...
Previously, we would not allocate a new line and would end up
panicking when we went off the end of the default screen height.
2018-01-28 18:05:22 -08:00
Wez Furlong
8d9cd83e6d
add some more comments on CSIParser
2018-01-28 17:11:05 -08:00
Wez Furlong
0057b42c4f
Pull intermediates check up higher in CSIParser
...
This should reduce the chance of ambiguous matches for sequences
that have the same 'byte' field but different intermediates.
2018-01-28 17:01:15 -08:00
Wez Furlong
78c3aee697
Add support for responding to escape sequences
2018-01-28 16:43:10 -08:00
Wez Furlong
d28494ac20
recognize device status report codes
2018-01-28 15:11:07 -08:00
Wez Furlong
b696aae51f
vim truecolor mode uses kde style rgb sgr
2018-01-28 14:55:28 -08:00
Wez Furlong
a0cc6822ef
add support for recognizing some decset modes
...
We don't do anything about those modes yet.
2018-01-28 14:51:00 -08:00
Wez Furlong
5816928a25
Add support for Erase In Display
2018-01-28 14:12:56 -08:00
Wez Furlong
39a5b5ef0d
add some comments about CSIParser
2018-01-28 14:03:57 -08:00
Wez Furlong
d48bc62a18
move all the current CSI parsing into the CSIParser
2018-01-28 13:53:18 -08:00
Wez Furlong
12a839c4ac
Adopt slice patterns for parsing CSI
2018-01-28 13:36:17 -08:00
Wez Furlong
2eefee4412
move csi parsing to its own file
2018-01-28 11:35:36 -08:00
Wez Furlong
cedc62e91a
fix cursor positioning when ligatures are used
2018-01-28 09:55:28 -08:00
Wez Furlong
dbeda14566
Add ShmImage, a shared memory Pixmap
...
Using the SHM extension of the X server saves us from sending ~1MB of
bitmap data to the server on many screen update operations for a
modestly sized terminal window.
SHM may not be available in some situations so we need to keep a
fallback that basically works. This is done via a helper enum
in xwin.rs.
I've removed the unused Pixmap class; the pixmap concept makes the
most sense for us only when SHM is available.
2018-01-28 09:43:36 -08:00
Wez Furlong
91424e427f
factor out BitmapImage from Image
2018-01-27 22:58:40 -08:00
Wez Furlong
bf854d0eb0
remove some unused code
2018-01-27 22:24:44 -08:00
Wez Furlong
0ab8cf1eec
Render the cursor position, fixup colors
...
I thought it would be nice to use the default xterm palette, but
I really hate the contrast of its default blue on black, so switch
to the palette from my xterm config.
2018-01-27 22:17:31 -08:00
Wez Furlong
1d4fc17187
apply Deref to simplify Terminal/TerminalState
2018-01-27 21:56:29 -08:00
Wez Furlong
1ae85b2349
send keyboard input to the pty
2018-01-27 21:54:57 -08:00
Wez Furlong
f879447d59
add xgfx::Connection, store atoms inside it
2018-01-27 14:49:15 -08:00
Wez Furlong
ec3c8f04ba
move TerminalWindow into its own file
2018-01-27 14:29:07 -08:00
Wez Furlong
ee85a0bdcd
avoid .bk files when rustfmt'ing
2018-01-27 14:20:15 -08:00
Wez Furlong
5d6d9747c7
expand columns as needed for set_cell
2018-01-27 13:56:35 -08:00
Wez Furlong
2d739eb667
Ensure that the pty is the controlling terminal for the child
2018-01-27 13:51:10 -08:00
Wez Furlong
8080718c71
Listen for sigchld
2018-01-27 13:41:45 -08:00
Wez Furlong
a11a34b031
We're now able to run and render top
2018-01-27 13:38:26 -08:00
Wez Furlong
e63f003ad0
move the pty into the TerminalWindow
2018-01-27 08:43:08 -08:00
Wez Furlong
eef4487d27
plumb XCB events into the mio loop
2018-01-27 08:18:55 -08:00
Wez Furlong
ab74b4c731
proof of concept with having mio drive the pty reads
2018-01-26 09:00:40 -08:00
Wez Furlong
0ecda48f01
Add some code for working with ptys
2018-01-26 08:23:32 -08:00
Wez Furlong
3484b94435
Allow setting full RGB foreground/background color
2018-01-25 21:37:16 -08:00
Wez Furlong
b56209a181
tighten up SGR parsing
...
Track all the rendition bits described in the SGR section here:
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
Still need to hook up color matching against the color palette
as described for the 256 color mode flavor.
2018-01-25 10:05:57 -08:00
Wez Furlong
3ec0b3f795
connect model to display, hook up print + some basic SGR
2018-01-24 22:28:03 -08:00
Wez Furlong
342efa810b
cell attributes to bitfield, add screen container
2018-01-24 09:13:03 -08:00
Wez Furlong
7e41bb27d4
Add basic attribute setting and rendering
2018-01-23 23:12:30 -08:00
Wez Furlong
641e85650d
add terminal cell and colors
2018-01-23 08:57:59 -08:00
Wez Furlong
36a884b872
Add compositing to colorize text
...
Defines a couple of compositing operators so that we can support having
both colored background and colored text.
2018-01-22 22:32:48 -08:00
Wez Furlong
fb53f2c16b
remove cairo dependency
...
It's a PITA to make it work with pixels without scaling and blurring
2018-01-22 18:54:18 -08:00
Wez Furlong
aef4e340e8
add xcb_util, set window name
2018-01-22 09:02:28 -08:00
Wez Furlong
3ea7bbc501
compute descender, render cell box, fixup GRAY handling
2018-01-22 08:13:00 -08:00
Wez Furlong
31f35554a4
Add text color, improve resize render performance
2018-01-21 17:14:56 -08:00
Wez Furlong
306414baa9
Add double buffering to eliminate flicker
...
Actually, the flicker was caused by the back pixel setting on the
window; I spent a long time running this down and finally got the
clue from this crusade against flicker:
http://www.ruska.it/michal/flicker.html
2018-01-21 10:25:40 -08:00
Wez Furlong
aa18b273f9
remove sdl. use cairo + xcb
...
The spacing between glyphs seems too wide. Need to figure this out.
A bunch of the integer vs float changes in this diff were a result
of trying to run this down, but success has been limited, and in fact
the spacing has increased as a result of making this more correct(!)
2018-01-21 01:32:59 -08:00