Commit graph

42 commits

Author SHA1 Message Date
00JCIV00
6e97c8d21d Fixed PR Corrections 2024-05-12 20:25:51 -05:00
00JCIV00
8d842c8b44 Added some various integer overflow protections 2024-05-12 20:25:51 -05:00
00JCIV00
392dffb307 Made more declarations public in src/Window.zig 2024-05-12 20:25:51 -05:00
Tim Culverhouse
ca4346e35a window(fill): fix bounds check
The bounds check should terminate at the window height.

Fixes: f7f4606f1d "window(fill): bounds check the memcpy op"
2024-05-12 20:24:31 -05:00
Tim Culverhouse
f7f4606f1d window(fill): bounds check the memcpy op
Bounds check our window before performing any direct buffer access. This
affects clear and fill, and allows a window to technically be out of
bounds, but only the visual portion of the window will be filled.
2024-05-11 06:38:08 -05:00
CJ van den Berg
cde85103a1 window: add readCell method 2024-05-09 06:20:56 -05:00
Tim Culverhouse
fa7d94f3df window(print): use const Segment 2024-05-03 13:58:23 -05:00
Tim Culverhouse
fc9f55d6fa perf: improve perf of fill and Screen.init
Use @memset for initializing and filling a Screen.
2024-04-30 12:33:46 -05:00
Tim Culverhouse
cb685f3780 perf: improve equality checks
Improve equality checks during render calls by creating bespoke eql
methods or using std.mem instead of std.meta
2024-04-30 06:50:45 -05:00
Tim Culverhouse
8a71cd4c85 zg: complete replacement of ziglyph with zg 2024-04-29 14:00:08 -05:00
Tim Culverhouse
9fec6f122b core: replace ziglyph.GraphemeIterator with zg version
ziglyph is being replaced by zg. Replace all calls to ziglyph grapheme
iterator with the zg version
2024-04-29 13:03:01 -05:00
Tim Culverhouse
03f5986c52 window: remove unused code 2024-04-29 09:52:01 -05:00
Tim Culverhouse
bb277b8e37 window: fix word wrapping 2024-04-19 19:31:37 -08:00
Tim Culverhouse
b93a5d2c72 window: change print return value to struct, add commit option
Return more information from `print`. Add `commit` option which does a
"dry run" of printing and returns the size of the wrapped text.
2024-04-19 16:12:52 -08:00
Tim Culverhouse
cda3e1de79 window: mark initChild and wrap as deprecated 2024-04-19 08:10:36 -08:00
Tim Culverhouse
3a928be693 window: export hasMouse
hasMouse should have been marked pub
2024-04-16 16:06:14 -08:00
Tim Culverhouse
18609912d3 cursor: implement cursor shapes 2024-04-15 07:14:31 -05:00
Tim Culverhouse
d3f22e7612 window: add hasMouse and scroll methods 2024-04-10 14:37:28 -05:00
Tim Culverhouse
117545ca4b window: add custom border location option
Add a way to draw borders in custom locations
2024-03-26 15:11:20 -05:00
Tim Culverhouse
5e1f9b17a5 window: add child method for cleaner child spawning 2024-03-21 13:54:49 -05:00
Tim Culverhouse
5e940fd295 print: continue on 0 width graphemes or words
Don't print 0 width graphemes or words. Usually these will be
overwritten since we advance by 0 columns, however if one is at the end
of text it can mess up rendering.

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-03-11 19:01:43 -05:00
Tim Culverhouse
22af4908a1 window: fix wrap method
The wrap method was returning a bool from the call to print. Fix this.
2024-03-10 07:48:01 -05:00
Tim Culverhouse
378984bd87 print: fix bounds for word wrap
Let words go all the way to the end

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-03-05 15:46:44 -06:00
Tim Culverhouse
fa39f0a067 window: saturate size, export Color
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-03-01 21:29:16 -06:00
Tim Culverhouse
e281a67a43 window: add print method
Add a print method with multiple print options

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-03-01 12:28:29 -06:00
Jora Troosh
4a463cfa3a
refactor: make code more idiomatic
- Added standard .gitattributes file for Zig projects.
- Reworked build.zig a little, hopefully it's a bit clearer. Also, now zig build will run all steps.
- outer: while in examples was redundant since there's only one loop to break from. switch expressions don't allow breaking from them, so breaking is only for loops, i.e. while and for.
- When returning a struct instance from a function, the compiler infers the return type from function signature, so instead of return MyType{...}; , it's more idiomatic to write return .{...};.
- Logging adds a new line by default, so you don't usually need to write \n like here: log.debug("event: {}\r\n", .{event});.
2024-02-11 12:59:33 -06:00
Tim Culverhouse
3798a8ede3 window: implement wrap and introduce Segment type
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-31 19:13:56 -06:00
Tim Culverhouse
ee85f49bde window: remove old import
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-30 18:23:05 -06:00
Tim Culverhouse
f901dde2a0 images: kitty image protocol works
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-30 16:26:35 -06:00
Tim Culverhouse
cc75fe6272 image: implement transmitting images
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-30 13:30:36 -06:00
Tim Culverhouse
626a9101bd images: move to subfolder, use union enum for implementations
There will only ever be a handful of image implementations. Let's just
use a union enum for handling them.

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-30 07:14:34 -06:00
Tim Culverhouse
c99dffaecf WIP: images
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-25 13:32:22 -06:00
Tim Culverhouse
1b83dfe652 fix: don't use sixel geometry query yet
This query has a response that interferes with key f4. We need to fix
that parsing before doing sixel queries, and we don't even support
sixels yet.

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 06:25:45 -06:00
Tim Culverhouse
9f89ed06f3 vaxis: use vt caps to measure grapheme widths
Implement our own grapheme measuring function which switches on whether
the terminal supports mode 2027

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 06:12:39 -06:00
Tim Culverhouse
70e0cafafe window: add hideCursor and showCursor
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-22 11:18:59 -06:00
Tim Culverhouse
13e9dadbb1 window: implement fill
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 13:16:53 -06:00
Tim Culverhouse
58bc6864cb render: implement double buffered screen for rendering
This lets us efficiently render by only updating cells that have changed
since last render

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 13:13:20 -06:00
Tim Culverhouse
811fbdd2cb screen: refactor arg order and fix some math
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 12:21:14 -06:00
Tim Culverhouse
bef5276340 vaxis: send winsize at run, initialize screen to default cells
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 11:44:20 -06:00
Tim Culverhouse
959ae27c9f window: add some doc comments
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 10:21:49 -06:00
Tim Culverhouse
9029055de0 window: remove reference to parent
We don't need to keep references to the parent. We only need to
calculate offsets when we initialize a new window.

Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 10:17:11 -06:00
Tim Culverhouse
e1c042d5ae window: implement initial window data structure
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 06:48:10 -06:00