nick black
eee6ed4f7b
rotate unit tests: fix for big-endian #1714
2021-06-06 12:16:51 +00:00
nick black
e03b1fb5d8
if query_sixel_details fails, disable bitmap support #1469
2021-06-06 07:53:43 -04:00
nick black
b432166f66
send DA following XTSMGRAPHICS #1469
2021-06-06 07:53:43 -04:00
nick black
60c030e232
send DA following XTSMGRAPHICS #1469
2021-06-06 07:53:43 -04:00
nick black
8f0324547e
oiio: use pixel_stride() when appropriate #1723
2021-06-06 02:13:18 -04:00
nick black
bb243989d3
blitters: take bpp as parameter to deal with OIIO pixel_stride() #1723
2021-06-06 02:13:18 -04:00
nick black
383dc90842
ncvisual_blit: call resize_bitmap() for implicit scaling without multimedia engine #1718
2021-06-06 02:13:18 -04:00
nick black
c64e6e265e
drop visual_resize_internal
2021-06-06 02:13:18 -04:00
nick black
4cf653635a
add Visual::Stretch unit test, complete FIXMEs in two others #1718
2021-06-06 02:13:18 -04:00
nick black
0184ccc0b3
add visual_resize_internal to visual_interface API #1718
2021-06-06 02:13:18 -04:00
nick black
a7f41dcefa
ffmpeg_resize: check for owndata before frame_unref #1718
2021-06-06 02:13:18 -04:00
nick black
250c5c9262
ffmpeg_resize: rewrite using ffmpeg_resize_internal() #1718
2021-06-06 02:13:18 -04:00
nick black
e07d712029
notcurses-tester: use unique_ptr on find_data()
2021-06-06 02:13:18 -04:00
nick black
ba8dd1b705
extract ffmpeg_resize_internal(), call from ffmpeg_blit() #1718
2021-06-06 02:13:18 -04:00
nick black
68c0ac4093
ffmpeg: no need for an AVFrame in resize, yay #1718
2021-06-06 02:13:18 -04:00
nick black
3a3fe77514
null media implementation: use c source, not c++ #1718
2021-06-06 02:13:18 -04:00
nick black
73ed97993f
kill 'none' multimedia implementation #1718
2021-06-06 00:22:53 -04:00
nick black
f77c008e88
tinfo_debug_caps: print unicode block characters
2021-06-03 07:17:02 -04:00
nick black
8d22f4618f
lookup_blitset: replace O(N) loop with O(1) access
2021-06-03 07:16:43 -04:00
nick black
26054e757c
rely on ncvisual_set_data() for clear in ffmpeg_resize() #1712
2021-06-03 01:46:10 -04:00
nick black
63bbe9fbbf
FdsAndSubprocs: WARN on (very rarely) failing pthread_mutex_destroy()
2021-06-03 01:16:27 -04:00
nick black
27831c744e
[ffmpeg] restore some av_freep()s, IMGALLOCALIGN 32->64 #1712
2021-06-03 01:16:27 -04:00
nick black
c2a82d0ed1
ffmpeg: transfer ownership following resize #1712
2021-06-03 01:16:27 -04:00
nick black
5f3844d6f1
ffmpeg: free sframe->data[0], not sframe->data #1712
2021-06-03 01:16:27 -04:00
nick black
36f7eb500c
av_frame_free() instead of av_freep() in ffmpeg_destroy() #1712
2021-06-03 01:16:27 -04:00
nick black
5ad08e7e87
[fallin] plug up memory leak on empty ncplane_at_yx() return
2021-06-02 21:56:46 -04:00
nick black
7c54fe0f23
ncplane_at_yx: free intermediate empty ret
2021-06-02 21:51:03 -04:00
nick black
1daa011269
kill OWNDATA diagnostic
2021-06-02 21:46:37 -04:00
nick black
d8c9463175
none_destroy: free up subdata #1711
2021-06-02 21:46:19 -04:00
nick black
82fb065795
only manage ncvisual in toplayer with no media implementation #1711
2021-06-02 21:34:50 -04:00
nick black
5a4b6cdae0
ncvisual_destroy: free up structure on all paths #1711
2021-06-02 20:50:34 -04:00
nick black
c2dd6b6a78
fix compilation error in textplay #1710
2021-06-02 19:17:15 -04:00
nick black
2aa63404e2
resize_bitmap: guard against potential overwrite
2021-06-02 03:39:48 -04:00
nick black
bebd33a30a
prune cruft
2021-06-02 03:18:10 -04:00
nick black
f0bcf63214
properly inflate #1576
2021-06-02 03:18:10 -04:00
nick black
27b09da0f7
ncvisual_inflate: use dstride for new rowstride #1576
2021-06-02 03:18:10 -04:00
nick black
b5174e75b7
Visual tests: properly base checks off rowstride
2021-06-02 03:18:10 -04:00
nick black
2dff72340f
remove obsoleted inflate_bitmap() #1576
2021-06-02 03:18:10 -04:00
nick black
513dbc18fc
factor out pad_for_image() #1705
2021-06-02 03:18:10 -04:00
nick black
7b72ef0567
unit tests now pass with null multimedia #1705
2021-06-02 03:18:10 -04:00
nick black
f46012e2d9
hook up resize_bitmap() to null VI #1576
2021-06-02 03:18:10 -04:00
nick black
f2fefacfc0
first go at generic resize_bitmap() for NCCSCALE_INFLATE #1576
2021-06-02 03:18:10 -04:00
nick black
3a6a2fa90b
textplayer: dewhiten last character written on delay #1649
2021-06-02 03:18:10 -04:00
nick black
e7d40e00e3
textplayer: support longdelay on '…'
2021-06-02 03:18:10 -04:00
nick black
52ebb71ac9
ncdirect_style_emit/render: take palette-indexing into account
2021-06-01 18:39:50 -04:00
nick black
96d743536f
box demo: work when built without multimedia support
2021-06-01 18:18:09 -04:00
nick black
3ac445a328
enforce singleton across both direct and rendered mode #1694
2021-06-01 17:44:34 -04:00
nick black
d170e6e7a2
man pages: document that only one context can be active at a time #1694
2021-06-01 17:44:34 -04:00
nick black
e4aae2d9b7
tinfo_debug_caps: tighten up output a bit
2021-06-01 04:37:06 -04:00
Nick Black
cd2b5de5fa
Panblitter ncplane_as_rgba() ( #1697 )
...
ncplane_as_rgba: genericize across blitters
ncplane_as_rgba() previously was implemented explicitly
in terms of NCBLIT_2x1. it now uses the `egcs` field of the
`blitset`. this supports NCBLIT_2x2 and NCBLIT_3x2 in
ncplane_rgba(). Closes #1490 .
2021-06-01 02:25:11 -04:00
nick black
d216b4115e
scrub_color_table: use sprixel cell geom not plane cell geom #1689
2021-05-31 22:48:16 -04:00
nick black
d20a4d8104
ncdirect: restore colors properly following sgr #1703
2021-05-31 20:07:10 -04:00
nick black
1f1bbadeac
demo: fpsgraph_init: ncuplot_create() kills plane on error
2021-05-31 18:21:17 -04:00
nick black
74eac6236b
ncXplot_create: own ncplane on all paths
2021-05-31 18:20:54 -04:00
joseLuís
9b5987e061
from_bgra(): repair mempcy #1700
2021-05-31 13:08:24 +02:00
nick black
217ab0cd90
cbreak_mode: require working file descriptor
2021-05-27 17:28:15 -04:00
nick black
ccad97dcff
cbreak_mode(): take no action on invalid file descriptor
2021-05-27 17:26:48 -04:00
nick black
a0130a88e6
don't try to preserve termios sans terminal
2021-05-27 17:26:48 -04:00
nick black
a4337ef144
merge tpreserved across direct/rendered #1525
2021-05-27 17:26:48 -04:00
nick black
e10a2f7a21
unify ncinputlayer between direct and rendered mode #1525
2021-05-26 21:46:49 -04:00
nick black
36d1eaf37b
revert, revert, revert my idiot change
2021-05-26 21:01:11 -04:00
nick black
d902dae60b
unify preserved termios between direct/rendered mode
2021-05-26 20:38:57 -04:00
nick black
73913c3f1a
free_terminfo_cache: free up esctable #1525
2021-05-26 18:04:29 -04:00
nick black
2df95f7e25
load up ESCAPE_OC #1525
2021-05-26 18:04:29 -04:00
nick black
1b15de9532
convert last two into esctable (initc/getm) #1525
2021-05-26 18:04:29 -04:00
nick black
59ddd3b0aa
move sc, rc, clear, and home to esctable #1525
2021-05-26 18:04:29 -04:00
nick black
567a1796a5
add smxx/rmxx to esctable #1525
2021-05-26 18:04:29 -04:00
nick black
857d5e5958
move smkx/rmkx smcup/rmcup into escape block #1525
2021-05-26 18:04:29 -04:00
nick black
c4e5ee2c38
sgr-direct PoC: use ncdirect_supported_styles() to guide output
2021-05-26 18:04:29 -04:00
nick black
a22414cd35
explicitly disable italics on ncv failure #1525
2021-05-26 18:04:29 -04:00
nick black
d613ed0784
move cursor controls into escblock #1525
2021-05-26 18:04:29 -04:00
nick black
92873d6b6e
move italics into esctable #1525
2021-05-26 18:04:29 -04:00
nick black
b67315a17e
tinfo: keep supported styles as single-site bitmap #1525
2021-05-26 18:04:29 -04:00
nick black
3b4057d550
move blink/dim/reverse/uline/standout to bools #1525
2021-05-26 18:04:29 -04:00
nick black
c4e2932c76
add ncdirect_supported_styles(), move SGR/SGR0/OC into escblock #1525
2021-05-26 18:04:29 -04:00
nick black
91d8529f0f
civis and cnorm go into escape table #1525
2021-05-26 18:04:29 -04:00
nick black
3f26ff2464
factor out term_supported_styles() for use by ncdirect
2021-05-26 18:04:29 -04:00
nick black
e5bc2a7d7f
terminfo: bold is just a boolean now #1525
2021-05-26 18:04:29 -04:00
nick black
1207765cc8
op/fgop/bgop into escape block #1525
2021-05-26 18:04:29 -04:00
nick black
6767a36996
move setaf/setab into escape table #1525
2021-05-26 18:04:29 -04:00
nick black
317c09d87d
bring hpa and vpa into escape table #1525
2021-05-26 18:04:29 -04:00
nick black
a5b597cfef
move ESCAPE_CUP into dense pack #1525
2021-05-26 18:04:29 -04:00
nick black
0f10eaf9fc
termdesc: move smcup/rmcup lookup into interrogate_terminfo() #1525
2021-05-26 18:04:29 -04:00
nick black
01c4ec61f3
termdesc: add get_escape(), tables #1525
2021-05-26 18:04:29 -04:00
nick black
55fd1f7bbe
TERMS.md: proper syntax on ETerm
2021-05-26 18:04:29 -04:00
nick black
dbbbc162ce
extract tinfo definition into termdesc.h
2021-05-26 18:04:29 -04:00
nick black
ee140a24e2
ncplane_as_rgba: nil geometry is any non-positive geometry
2021-05-25 16:53:21 -04:00
Daniel Eklöf
84f417aa41
Emit rmkx on exit
...
notcurses_core_init() does `smkx`, so let’s undo that in
notcurses_stop_minimal().
2021-05-23 07:18:29 -04:00
nick black
577ff0e545
progbar_create: safe 32-bit diagnostic
2021-05-23 04:41:56 -04:00
nick black
cd6236976a
[ffmpeg] convert loaded frames to RGBA in decode #1680
2021-05-23 03:56:42 -04:00
nick black
264e2cd3a1
ffmpeg_decode: remove obsolete FIXME
2021-05-23 03:56:42 -04:00
nick black
071000af4b
sixel: rebuild auxvecs on a new frame #1642
2021-05-23 02:03:43 -04:00
nick black
50693fb812
add a section on hardware cursor to notcurses_init.3 #1681
2021-05-22 23:19:58 -04:00
nick black
8ff2499b44
ncdirectf_geom: approximate rcell{y,x} #1665
2021-05-22 21:03:26 -04:00
nick black
f344c0d978
strengthen ImageChildScaling test #1675
2021-05-22 20:49:35 -04:00
nick black
51bd8b7c40
kill rotator PoC; it's covered by visual PoC
2021-05-22 18:26:03 -04:00
nick black
b26730a7e0
ensure we're exercising renderer in visual unit tests
2021-05-22 18:22:22 -04:00
nick black
41a31b0352
predicate ImageFileChildScaling unit test on ability to open media #1675
2021-05-22 18:13:56 -04:00
nick black
68e44d4c8b
align to 64B in ncvisual_from_bgra() #1675
2021-05-22 18:01:12 -04:00
nick black
1622beeac4
ncvisual_from_rgba: align suitably for ffmpeg (64B) #1675
2021-05-22 17:28:15 -04:00
nick black
20ea3a3345
new unit test, ImageFileChildScaling #1675
2021-05-22 17:27:42 -04:00
nick black
6969652031
add ncinput_nomod_p()
2021-05-21 20:06:36 -04:00
nick black
08e6fefb25
rgba_trans_q: replace illegal type punning with memcpy
2021-05-21 19:09:03 -04:00
nick black
21c0d0a215
kitty: rebuild auxvector when decoding a new frame #1605
2021-05-20 04:22:28 -04:00
nick black
580fe2d660
OIIO: comment about beg{x,y} and len{x,y} #1661
2021-05-20 00:54:52 -04:00
nick black
def4f5fd17
directmode render: update outy following a scaling #1673
2021-05-20 00:54:52 -04:00
nick black
3475a9d59b
initialize blitterags leny/lenx from ncvisual
2021-05-20 00:54:52 -04:00
nick black
dc9343714d
ffmpeg: scale from computed srcleny/srclenx #1661
2021-05-20 00:54:52 -04:00
nick black
937bf98473
nctabbed: spelling (alocate -> allocate)
2021-05-20 00:54:52 -04:00
nick black
6a982799a3
respect leny/lenx in cell rendering #1661
2021-05-20 00:54:52 -04:00
nick black
22e7fbf4c9
ncvgeom: explicitly set rcelly/rcellx to -1 until filled
2021-05-20 00:54:52 -04:00
nick black
a0bf28645f
unit test for visuals with partial limit + offset #1661
2021-05-20 00:54:52 -04:00
nick black
69adacf3f5
add Visual::Partial unit test for #1661
2021-05-20 00:54:52 -04:00
nick black
ce24efaaf8
vizdirect: exercise direct render restrictions #1661
2021-05-18 03:36:27 -04:00
nick black
42f26fcb1e
ncls: update to prep_image() maxy/maxx #1661
2021-05-18 03:36:27 -04:00
nick black
0e593502d4
directmode: honor xmax/ymax when rendering images #1661
2021-05-18 03:36:27 -04:00
nick black
0b197fe19b
is_test_tty: check for /dev/tty #1668
2021-05-17 19:16:52 -04:00
nick black
a903f32cd6
Robustify detect_cursor_inversion()
...
When we're doing cursor querying, whether for detection
of inversion or just straight up localizing ourselves,
we need to talk to a real terminal, or else there's not
much point. When detecting cursor inversion, we need
move the cursor, *and have it reflected in the terminal
feedback*, which means we need write directly to the
terminal (if one exists). This requires ctermfd over
ttyfp, which we now hardcode. Fixes cursor crap when
redirected away from the terminal #1668 .
2021-05-17 19:16:52 -04:00
nick black
a7fe43654b
wrap cursor tests in is_test_tty() #1668
2021-05-17 19:16:52 -04:00
nick black
6d1b7e7571
add is_test_tty() for notcurses-tester
2021-05-17 19:16:52 -04:00
nick black
65c3aa6653
drop_signals: return 0 even if we don't own the atomic
2021-05-17 19:16:52 -04:00
nick black
d8238da8c6
if we aren't setting signal handlers, don't try to take ownership of signal atomic #1666
2021-05-16 22:03:28 -04:00
nick black
c49749a1bd
add unit tests to check cursor following render #1664
2021-05-16 18:28:06 -04:00
nick black
8df01c2ab8
beef up directmode directf tests #1664
2021-05-16 18:24:15 -04:00
nick black
8729eccf06
SprixelGeom test: validate that scale{x,y} == cdim{x,y} #1659
2021-05-16 14:04:40 -04:00
nick black
2ef759f7a9
correct ncvisual_blitset_geom() for ncdirect case #1659
2021-05-16 14:01:07 -04:00
nick black
94cd3b60f1
basic unit testing of ncdirectf_geom() #1659
2021-05-16 12:58:24 -04:00
nick black
445ead70da
basic unit testing of ncdirectf_geom() #1659
2021-05-16 12:58:24 -04:00
nick black
646f57312e
first pass at ncdirecf_geom() #1659
2021-05-16 12:58:24 -04:00
nick black
c42fab1564
implement ncdirectf passthroughs #1659
2021-05-16 12:58:24 -04:00
nick black
b8cdd29a63
ffmpeg_details_destroy: use av_freep, not av_frame_free() #1658
2021-05-16 08:31:58 -04:00
nick black
ec5509b9be
use av_image_alloc() in ffmpeg_resize() #1658
2021-05-16 08:14:59 -04:00
nick black
3ae7ed6ed3
fix bitmapmaximize unit test to not use standard plane #1658
2021-05-16 08:14:59 -04:00
nick black
39afbd75c4
bitmap tests: remove useless garbage
2021-05-16 08:14:59 -04:00
nick black
b9e941e51e
tester: interpret any -l as -l8
2021-05-16 08:14:59 -04:00
nick black
194c739038
add new unit test SprixelMaximize #1658
2021-05-16 08:14:59 -04:00
nick black
014a88a09c
always enable 8bpc RGB for kitty, alacritty, and foot #1641
2021-05-14 06:02:06 -04:00
nick black
346512ccdf
eliminate type-2 gclusters, sprixels no longer interact with fb #1656
2021-05-14 01:39:04 -04:00
nick black
b87407eb36
remove unused cell_sprixel_id() #1656
2021-05-14 01:15:38 -04:00
nick black
f64b1deeb7
dump unused sprixel_by_id() #1656
2021-05-14 01:13:57 -04:00
nick black
ce2f2c6509
ncplane_dup: don't dup sprixcells #1654
2021-05-13 21:09:30 -04:00
nick black
8bd73378cf
add NCSCALE_INFLATE
2021-05-12 13:07:23 -04:00
nick black
9ce8222d36
drop "available" output from reel demo
2021-05-12 13:02:14 -04:00
Daniel Eklöf
632cbcc881
fetch: add artix to distro info
2021-05-11 11:56:22 -04:00
nick black
29b161f1c0
[box] place ships underneath grid #1639
2021-05-10 04:45:57 -04:00
nick black
a39b5f9347
[box] add some spaceships #1639
2021-05-10 04:45:57 -04:00
nick black
d80df651b3
textplay: expose more of the source material
2021-05-10 01:20:59 -04:00
nick black
d441dd4d0d
fix up compilation on freebsd #1644
2021-05-09 23:18:15 -04:00
nick black
af1641be4e
empty implementation of nctree_goto() #1643
2021-05-09 23:09:09 -04:00
nick black
fd7a1a5d6d
sixel_destroy: be more precise with damage #1616
2021-05-08 21:31:18 -04:00
nick black
19006b4988
account for margins in sixel/kitty_destroy() #1588
2021-05-08 20:53:21 -04:00
nick black
ee638b9a96
nccell_width() return -1 on utf8_egc_len() error #1627
2021-05-08 18:05:31 -04:00
nick black
e0e747837e
kitty: must damage cells underneath a sprixel when hiding #1562
2021-05-08 17:13:59 -04:00
nick black
8f6879ab7f
Fix sixel reload cached wipe display #1557
...
In Sixel, we must supply a value for P2; essentially, 1
means that there are transparent pixels, while 0 means
there are not, or that we don't care what's already
present (P2=0 is implemented faster by some terminals).
We set P2=1 upon encountering a transparent pixel, or
after wiping a cell, but we weren't doing so when we
reloaded a bitmap and prewiped due to cached ANNIHILATION
values in the TAM. Do so. This fixes up the flickering
we saw in the yield demo, as we no longer printed over
the text. Furthermore, we can now properly return 0 from
sixel_wipe() on a cached wipe, eliminating a great many
invalidations and redraws. Move the ANNIHILATION check
into the shared code of sprite_wipe(), removing it from
sixel_wipe() and kitty_wipe().
Oh, what a happy, happy, happy day!
2021-05-08 16:57:33 -04:00
nick black
3f908d43a2
sprixel_debug: show glyph length
2021-05-08 16:57:33 -04:00
nick black
022c6350e2
use ncplane_erase_region() in wipebitmap PoC
2021-05-08 16:57:33 -04:00
nick black
f080e1502b
add ncplane_erase_region()
2021-05-08 16:57:33 -04:00
nick black
e4a1b44ffa
sixel: restore bad 1 on cached wipe
2021-05-08 16:57:33 -04:00
nick black
f067f03832
wipebitmap PoC: more close-in testing
2021-05-08 16:57:33 -04:00
nick black
88936490bb
further wipebitmap PoC flushwork
2021-05-08 16:57:33 -04:00
nick black
0d70d73100
Write Requires.private in pc files based off discovered TERMINFO_LIBRARIES #1635
2021-05-08 13:48:14 -04:00
nick black
84c7aca04e
add ncblit_rgb_packed(), ncblit_rgb_loose() #1634
2021-05-07 17:34:02 -04:00
nick black
3a29fb7991
sixel_wipe: fix off-by-one in bounds computations #1628
2021-05-07 05:54:04 -04:00
nick black
05f5a479c1
revert #1628 fix until crash is resolved
2021-05-07 05:20:19 -04:00
nick black
ace36638d6
[sixel] completely wipe cells when height % 6 == 1 #1628
2021-05-06 23:54:40 -04:00
nick black
2d7019c726
deal with possible endianness problems in bitmap tests #1627
2021-05-06 10:10:03 -04:00
nick black
6a2ed461df
deal with possible endianness problems in bitmap tests #1627
2021-05-06 10:09:20 -04:00
nick black
73fc4ea935
demo: change up the order a bit, moving zoo before outro
2021-05-05 05:47:33 -04:00
nick black
c61eafbbf4
[ncdirect] use '\v' for cursor down, not '\n'
...
With '\v' (vertical tab), we don't need force raw mode.
This saves us system calls, and makes the entire affair
more reliable (no race between setting up termios and
emitting '\n'; no chance for second tcsetattr to fail).
Thanks once more to @dnkl on #1625 .
2021-05-05 05:09:48 -04:00
nick black
36a2d00fb3
ncdirect: move down with raw-mode newlines
...
The cud capability to move the cursor down doesn't
scroll (and shouldn't be used on the last row). We
have no reliable knowledge of whether we're on the
last row or not, so instead switch to raw mode, emit
the newlines, and switch back to whatever mode we
were in. This method is due to @dnkl aka Daniel Eklöf,
a gentleman and scholar who absolutely knows his shit.
Closes #1625 .
2021-05-05 04:49:02 -04:00
nick black
96491e42df
tighten up state machine, only move to INVALIDATED from QUIESCENT #1631
2021-05-05 04:24:33 -04:00
nick black
d574dee3fe
kitty: fix mask in triplet_alpha1() #1631
2021-05-05 03:07:40 -04:00
nick black
1d06c5bd5a
invalidate sprixel following rebuild #1631
2021-05-05 02:44:12 -04:00
nick black
757d12b9ad
wipebitmap poc -- more tests
2021-05-05 02:44:12 -04:00
nick black
99675db255
wipebitmap PoC: test transparent cells atop bitmaps
2021-05-05 01:25:15 -04:00
nick black
d5e3624f30
[sixel] *really* correct wipe_color() assert #1630
2021-05-05 01:15:44 -04:00
nick black
e65f4f2e7c
sprite_rebuild: don't assert on missing auxvec in SPRIXCELL_ANNIHILATED_TRANS #1629
2021-05-05 01:06:52 -04:00
nick black
ad265fe530
[sixel] fix up assert to properly bound xoff #1629
2021-05-05 00:16:37 -04:00
nick black
05f5f70ee2
lift SPRIXEL_HIDE check out of spirxel_wipe()
2021-05-04 22:49:38 -04:00
nick black
e0a53be471
textplay: purge debugging cruft
2021-05-04 20:23:27 -04:00
nick black
578f8eb45c
bitmaps: cap to screen size, fix bitmap childplane tests #1603
2021-05-04 19:08:55 -04:00
nick black
e8f0ff0f30
NCVISUAL_OPTION_CHILDPLANE unit tests for bitmap path #1603
2021-05-04 19:08:55 -04:00
nick black
d144d606f7
implement NCVISUAL_OPTION_CHILDPLANE on cell path #1603
2021-05-04 19:08:55 -04:00
nick black
763a69ea41
unit tests for NCVISUAL_OPTION_CHILDPLANE #1603
2021-05-04 19:08:55 -04:00
nick black
c93f9371b3
[dirlines] throw in a newline at the end
2021-05-04 19:08:55 -04:00
nick black
d1ab898cfe
dirlines PoC: ncdirect_stop() on all error paths
2021-05-04 19:08:55 -04:00
nick black
4283fc038d
[textplay] work for arbitrary UTF-8 input
2021-05-04 18:00:26 -04:00
nick black
9a5b719627
ncvisual_set_data: handle incoming data equivalent to existing data
2021-05-03 02:48:44 -04:00
nick black
584f394071
[ncplayer] block SIGWINCH from the beginning #1624
2021-05-03 02:19:13 -04:00
nick black
af093d397c
[directmode] don't leak sprixel after printing
2021-05-03 02:05:46 -04:00
nick black
172b9adfab
kitty graphics nonce space is 24 bits only #1578
2021-05-03 01:46:52 -04:00
nick black
a19e6a52de
Use different kitty nonces for different runs
...
If we always start with kitty graphics id 1, successive
runs of ncplayer -bpixel -k will erase any previously-
printed graphics. Initialize it with random() in
sprite_init(). Break graphics erasure out from sprite_init()
into new interface sprite_clear_all(), defined only for kitty.
The latter is now guarded by NCOPTION_NO_CLEAR_BITMAPS.
Closes #1578 .
2021-05-03 01:42:31 -04:00
nick black
a2b5a6dc03
[xray] tighten cleanup a bit
2021-05-03 01:13:31 -04:00
nick black
87f5952ace
restore av_frame_free()
2021-05-03 00:32:25 -04:00
nick black
95f8023d04
drop stdio.h from visual-details.h
2021-05-03 00:32:25 -04:00
nick black
0f018c2fc4
[ffmpeg] don't double-free
2021-05-03 00:32:25 -04:00
nick black
15fa0345bd
[ffmpeg] eliminate the despised oframe #1594
2021-05-03 00:32:25 -04:00
nick black
75d0549250
[intro] use a plane rather than ncvisual_resize()
2021-05-03 00:32:25 -04:00
nick black
dcef593670
[ffmpeg] properly seed following rotation #1594
2021-05-03 00:32:25 -04:00
nick black
3dd8f24937
[sixel] must use P2=1 if we added transparent rows #1560
2021-05-02 20:48:11 -04:00
nick black
629a16ca69
bounce onwards, with scaling #1560
2021-05-02 20:20:05 -04:00
nick black
c02467bb84
direct: bounce, bounce, bounce somewhere else #1560
2021-05-02 20:20:05 -04:00
nick black
f19368c61f
oiio: fix header
2021-05-02 20:20:05 -04:00
nick black
297617a12e
better color on demo postchecks
2021-05-02 20:20:05 -04:00
nick black
2375f48789
ncvisual_blit: chop out leny/lenx args for now #1560
2021-05-02 20:20:05 -04:00
nick black
252608b0cc
write_sixel: write output geometry to sixel escape #1560
2021-05-02 20:20:05 -04:00
nick black
6627c9c3d3
direct: adapt pixel blitting to the New Way #1560
2021-05-02 20:20:05 -04:00
nick black
707d3634eb
sprixel_load: guard against bad args #1560
2021-05-02 20:20:05 -04:00
nick black
2e444a7a23
bitmap unit tests: adapt to proper sixel scaling #1560
2021-05-02 20:20:05 -04:00
nick black
36c2eef914
render_pixel: use output geometry where applicable #1560
2021-05-02 20:20:05 -04:00
nick black
00782a0ee7
sixel: use output geometry #1560
2021-05-02 20:20:05 -04:00
nick black
52828cff07
plane_blit_sprixel: eliminate unnecessary length checks #1560
2021-05-02 20:20:05 -04:00
nick black
16d54497fa
bitmap unit tests: exercise resize to 1,1 #1594
2021-05-02 20:20:05 -04:00
nick black
5f51e15d7c
sprixel_load: sanity-check pixel geometry #1560
2021-05-02 20:20:05 -04:00
nick black
fedcd94502
separate output from scaled geometry #1560
2021-05-02 20:20:05 -04:00
nick black
9c2aef0ff7
factor out make_sprixel_plane() #1560
2021-05-02 20:20:05 -04:00
nick black
6e75998cf2
ncvisual_render_pixels: rename disprows/dispcols -> disppixy/disppixx #1560
2021-05-02 20:20:05 -04:00
nick black
e3d4bffd28
demo: no newline chars in diags, stupid asshole #1622
2021-05-02 03:47:31 -04:00
nick black
f4e4806ed9
intro: reduce highgradient area #1622
2021-05-02 03:35:29 -04:00
nick black
5b84197321
kitty: calculate damage out properly #1618
2021-05-02 03:35:29 -04:00
nick black
a6501057c5
demo: spruce up pixel/mosue checks a bit
2021-05-02 03:15:09 -04:00
nick black
c2b865a31d
demo: print initialization strings within notcurses context
2021-05-02 01:30:20 -04:00
nick black
3c574b5866
remove placey/placex from pixel chain #1560
2021-05-02 01:01:37 -04:00
nick black
1242e06d23
fd tests: don't introduce c++ locks #1538
2021-05-01 22:20:58 -04:00
nick black
1218fbddf9
fd tests: move inline_cancelled out of file scope
2021-05-01 22:11:09 -04:00
nick black
5c85070345
ncsubproc_destroy: call pthread_mutex_destroy() #1538
2021-05-01 21:37:51 -04:00
nick black
5b926d311c
egcpool unit tests: use nccell_width() throughout
2021-05-01 20:12:50 -04:00
nick black
8e0173cce3
cell unit tests: use nccell_width()
2021-05-01 20:04:46 -04:00
nick black
55837bcb55
add nccell_width() to avoid calling utf8_egc_len externally
2021-05-01 20:04:26 -04:00
nick black
4a10801bb5
render: improve some diagnostics
2021-05-01 19:33:33 -04:00
nick black
c792b2e972
[demo] place hud down and in center
2021-05-01 18:59:31 -04:00
nick black
745cbfb41b
intro: animate following orca move, not before #1616
2021-05-01 18:43:07 -04:00
nick black
6944dd5bf8
sprixel: remove x/y fields, as we now shrink the plane to fit #1612
2021-05-01 17:37:48 -04:00
nick black
70357f7173
notcurses_init: bad signal registration is once again an error, huzzah
2021-05-01 17:35:03 -04:00
nick black
1f55d2e398
exception tests: explicitly stop context
2021-05-01 17:32:24 -04:00
nick black
fb1bc236b4
signals: improve diagnostics
2021-05-01 17:31:50 -04:00
nick black
476d180797
sixel tests: notcurses_stop() on early exit
2021-05-01 17:28:19 -04:00
nick black
eb04a7872a
[ncplayer] name the rendered plane for debug
2021-05-01 16:38:28 -04:00
nick black
ad4763127e
ncplane_reparent: destroy old empty piles #1614
2021-05-01 16:17:35 -04:00
nick black
7c53072803
[xray] clean up last sprixel plane
2021-04-30 16:44:36 -04:00
nick black
f701271c27
migrate sprixels across sprixelcaches when reparenting across piles #1608
2021-04-30 16:44:36 -04:00
nick black
b557db381a
[xray] kick the living shit out of this #1607
2021-04-30 16:44:36 -04:00
nick black
d1f67dcddf
[xray] kill off cancelled global
2021-04-30 16:44:36 -04:00
nick black
5e1247051f
xray: more threading work #1607
2021-04-30 16:44:36 -04:00
nick black
5947f3d4d2
experimental threaded xray #1607
2021-04-30 16:44:36 -04:00
nick black
9a1499bd02
[sprixel] kill FIXME, make sprixelid_nonce atomic
2021-04-30 16:44:36 -04:00
nick black
23b966d4a3
[textplay] drop loglevel back
2021-04-30 09:40:28 -04:00
nick black
89c17b7b91
[textplay] put some flair on the leader
2021-04-30 09:39:29 -04:00
nick black
467c8d0e72
textplay: need render to a new plane
2021-04-30 09:33:29 -04:00
nick black
e21f3585dc
ncplane_reparent: add some diagnostics
2021-04-30 05:38:51 -04:00
nick black
58b8c528fc
intro: base orca movement off screen width
2021-04-29 07:47:42 -04:00
nick black
7f1310f4d1
ncplane_move_yx: don't invoke sprixel_move on no movement
2021-04-29 07:47:42 -04:00
nick black
069084d435
auxvec: unite memory release in sprite_rebuild() #1440
2021-04-29 07:47:42 -04:00
nick black
a6766c3bd4
[sixel] use transparency vector + auxvecs #1440
2021-04-29 07:47:42 -04:00
nick black
effb1d4613
[sixel] get last column in wipes
2021-04-29 07:47:42 -04:00
nick black
505571e43f
[sixel] implement wipe_color #1440
2021-04-29 07:47:42 -04:00
nick black
f4ff9beb50
[sixel] flip it and reverse it #1440
2021-04-29 07:47:42 -04:00
nick black
a34714ca68
implement sixel_reblit() #1440
2021-04-29 07:47:42 -04:00
nick black
fe719a6c39
[sixel] attach the sixelmap to the sprixel post-load
2021-04-29 07:47:42 -04:00
nick black
322ee8309d
ncplayer: use a different plane for each file
2021-04-29 07:47:42 -04:00
nick black
9c472a5d5e
free auxvectors at ncplane free time, not sixel hide time #1440
2021-04-29 07:47:42 -04:00
nick black
6ad7fcc7a9
factor out write_sixel_payload for rematerialization #1440
2021-04-29 07:47:42 -04:00
nick black
5799c92415
Third Idea: raw sixel-based sixelmap #1440
2021-04-29 07:47:42 -04:00
nick black
262550c5ea
[sixel] create sixelmap for rematerialization #1440
2021-04-29 07:47:42 -04:00
nick black
eb5c9185e5
pixel: shrink BYOP to match sprixel ("crop to content")
2021-04-29 07:47:42 -04:00
nick black
03bc0163ac
player: expand on misleading diagnostic
2021-04-29 07:47:42 -04:00
nick black
8cef88b251
properly bound paint_sprixel on sprixel geom #1598
2021-04-29 07:47:42 -04:00
nick black
dd4eb3e5c2
write_sixel_data: allow direct reprodution of palette #1440
2021-04-29 07:47:42 -04:00
nick black
624d6a1390
sixel: start in on sixel_update() to unify wipe+rebuild #1440
2021-04-29 07:47:42 -04:00
nick black
1442e8abd4
move rebuild's free() of auxvec into callback
2021-04-29 07:47:42 -04:00
nick black
37d64d96ec
kill off sprixel_kitty_p(), hurrah
2021-04-29 07:47:42 -04:00
nick black
9c03fdcfb5
sprite_wipe: check for ANNIHILATED_TRANS and return 0
2021-04-29 07:47:42 -04:00
nick black
e05ea90760
introduce ANNIHILATED_TRANS, special-case O(1) conversion from TRANSPARENT #1587
2021-04-29 07:47:42 -04:00
nick black
3eb004b61d
s/channels/ncchannels/g #1570
2021-04-29 01:32:08 -04:00
nick black
decb36a9fd
let that big bitch riiiiiiiiiiiiiiide
2021-04-28 00:11:42 -04:00
nick black
d8cc3569ac
Block some signals while writing
...
Writing a partial escape can easily lock up a terminal. This
is especially relevant when working with bitmaps, as they're
thousands or even millions of times longer than a typical
escape. Immediately before writing, block SIGINT, SIGQUIT, and
SIGTERM in the writing thread, and unblock them upon emerging
(at which point we'll immediately see any queued signal
get delivered). Don't block signals like SIGSEGV that would
seem indicative of actual problems. For this to actually work,
all other threads must also have the signals masked; we thus
now add them to the signal mask of notcurses_getc(), rather
than deleting them. Closes #1416 .
2021-04-27 16:53:44 -04:00
nick black
e43a9955cd
channel_* functions -> ncchannel_* #1570
2021-04-27 14:10:41 -04:00
nick black
25afcbe49d
cherry-pick auxvector release fix #1598
2021-04-26 11:45:21 -04:00
nick black
921311999d
blitter PoC: don't render to standard plane #1595
2021-04-26 11:40:11 -04:00
nick black
7bb23a994b
update cell unit tests for freebsd 13
2021-04-26 07:37:03 -03:00
nick black
b3b47cd81f
don't mix c and c++-style initializers
2021-04-26 07:36:52 -03:00
nick black
e84b6a4378
yield: speed up bitmap solution #1596
2021-04-26 03:50:35 -04:00
nick black
a7ca2be9e6
kitty: special-case O(1) rebuild for SPRIXCELL_TRANSPARENT #1440
2021-04-26 02:43:48 -04:00
nick black
d435d6e083
kitty: set MIXED when appropriate on rebuild #1440
2021-04-26 02:43:48 -04:00
nick black
1d9ae4082f
kitty: fix b64idx(), fixing rebuilding #1440
2021-04-26 02:43:48 -04:00
nick black
20aeccfbb6
kitty_restore: properly restore A in triplet #1440
2021-04-26 02:43:48 -04:00
nick black
f0910ab398
[kitty] first go at kitty_rebuild() #1440
2021-04-26 02:43:48 -04:00
nick black
5eafafa652
kitty: build out auxvec in wipe #1440
2021-04-26 02:43:48 -04:00
nick black
41c5df3336
kitty: set up auxiliary vector #1440
2021-04-26 02:43:48 -04:00
nick black
a19b945ec6
kitty_null: only null out alphas, not RGB #1440
2021-04-26 02:43:48 -04:00
nick black
b075ecd383
add kitty_restore()
2021-04-26 02:43:48 -04:00
nick black
49e94830d2
superstructure for kitty anastasis
2021-04-26 02:43:48 -04:00
nick black
dd85c7042b
add auxiliary vector to TAM #1440
2021-04-26 02:43:48 -04:00
nick black
3e0783593d
add sprixel_rebuild interface, kitty + sixel skeletons #1440
2021-04-26 02:43:48 -04:00
nick black
7c69a17752
identify annihilation recovery #1440
2021-04-26 02:43:48 -04:00
nick black
ba64d36543
don't warn on bsd about unused sprixel_debug()
2021-04-25 17:11:19 -03:00
Nick Black
da6b8281d5
[OIIO] seed details, synthesize RGB spec #1593
2021-04-25 16:10:11 -04:00
Nick Black
6f07ecb556
bitmap unit tests: use SCALE to work ona ll geoms
2021-04-25 16:10:11 -04:00
nick black
725ca9a040
textplay: make the textplane transparent by default #1425
2021-04-25 05:18:17 -04:00
nick black
e9ef4d50f4
break up opaque/mixed into sixel and kitty states
2021-04-25 04:57:27 -04:00
nick black
8eafcaee5b
textplay: add video border
2021-04-25 04:57:27 -04:00
nick black
2978a5194d
textplay: better colorization
2021-04-25 04:57:27 -04:00
nick black
2695addd5f
textplay: colorize
2021-04-25 04:57:27 -04:00
nick black
0d81fb25c7
textplay: read stdin, play to plane with ncplane_puttext()
2021-04-25 04:57:27 -04:00
Nick Black
2c5d938cbd
Paint sprixels bottom-to-top ( #1589 )
...
* Paint sprixels in order, bottom-to-top
We don't want to have to track sprixel order whenever someone
moves an ncplane, so just keep a list growing backwards as we
pass top-to-bottom in notcurses_render_internal(). Each time
we hit a sprixel plane, splice it out of the sprixel list, and
add it to the front of our temporary list. When we hit the
bottom, stick this temporary list on the end of our existing
list (any such planes are to be deleted, which comes before
drawing). Closes #1575 .
* reorder collected sprixellist; solves kitty but breaks sixel =/ #1575
* remove debugging cruft
* [rust] fix up mergedown mutability
2021-04-24 13:08:09 -04:00
nick black
0c2749707c
sprixel stacking unit test #1575
2021-04-24 10:10:20 -04:00
nick black
787b180fa9
ncvisual_blitset_geom: deliver on y/x contract #1588
2021-04-24 09:35:40 -04:00
nick black
da2db080c9
[yield] work for all blitters/geometries #1588
2021-04-24 09:33:54 -04:00
nick black
375a51b55b
keller: check ncvisual_blitter_geom() return value #1588
2021-04-24 09:02:58 -04:00
nick black
1a16d34b5c
view: move pic-in-pic to row 1 from top #1577
2021-04-24 07:38:44 -04:00
nick black
5fd6177c17
ncplane_resize_internal(): no work necessary when old pos+size are the same #1588
2021-04-24 06:59:17 -04:00
nick black
96981c8e75
extract paint_sprixel() as single loop #1587
2021-04-24 06:36:06 -04:00
nick black
d8e94429c2
rename sixel/kitty_delete -> destroy to match sprixel_destroy()
2021-04-24 06:17:03 -04:00
nick black
e29701cac3
notcurses-tester: accept -l to enable all logging
2021-04-24 05:18:04 -04:00
nick black
dc87bd7c79
ncvisual_blitset_geom: no pixel size checks for scale/stretch #1572
2021-04-24 05:16:18 -04:00
nick black
311fbfa8e8
ncblit_pixel plane size checks: scale geom #1572
2021-04-24 04:55:04 -04:00
nick black
95072d0f5c
No glyph emission on sprixelated planes
...
Guard against attempts to output glyphs to a sprixelated
plane in ncplane_putc_yx(), the lowest-level common end
of all ncplane_put*() functions. Add unit test #1572 .
2021-04-24 04:47:05 -04:00
nick black
5a72383cb0
reject sprixels larger than plane, add unit test #1572
2021-04-24 04:41:23 -04:00
nick black
dc347c99d7
no resizing of sprixelated planes #1572
2021-04-24 03:26:53 -04:00
nick black
a926fe70f8
intro: render the orce only after our first frame
2021-04-24 03:23:47 -04:00
nick black
d3877cbe44
NCBLIT_PIXEL restrictions for planes
...
Go ahead and allow the standard plane to be used with
NCBLIT_PIXEL, but enforce placement at the origin with
any provided plane. Implement this in ncvisual_blitter_geom()
so that it applies everywhere #1572 .
2021-04-24 03:22:23 -04:00
nick black
ea809345e3
kill tacachey/tacachex in ncplane #1572
2021-04-24 03:10:12 -04:00
Nick Black
ba6088578d
Sixel unit tests #1580 ( #1586 )
...
Two unit tests on Sixel round trips, one with wipes #1580 .
2021-04-24 01:51:26 -04:00
nick black
4cceb01acf
fix inputs to sws_getCachedContext for ffmpeg #1559
2021-04-23 19:41:55 -04:00
nick black
b58919f145
[sixel] correct deepclean #1580
2021-04-23 14:57:45 -04:00
nick black
b54ab84b5b
yield: properly size legend plane for final 100%
2021-04-22 23:58:48 -04:00
nick black
6dcb3229e4
unit test for sixel deepclean #1580
2021-04-22 19:54:24 -04:00
Nick Black
c8680255be
palette256 -> ncpalette #1570 ( #1573 )
...
everything prefixed with palette256 is now prefixed with ncpalette
2021-04-22 04:11:06 -04:00
nick black
5e6862f34c
per-ncpile sprixel list #1462
2021-04-22 03:26:15 -04:00
nick black
d1a01e8fe8
bitmaps: never allow the last row to be used #1571
2021-04-22 01:18:33 -04:00
nick black
41d129c1d2
[view] name all planes for debug
2021-04-22 00:41:18 -04:00
nick black
c7d284a9af
demo: make debug plane 81 wide, with transparent last column
2021-04-22 00:38:05 -04:00
nick black
f4aa419a31
add notcurses_canhalfblock()/notcurses_canquadrant() #1575
2021-04-22 00:10:55 -04:00
nick black
9b38fe515c
ncdirect_stream: need to call new pixel_remove #1537
2021-04-21 20:31:33 -04:00
nick black
f665828712
sixel: deepclean on any draw
...
Whether a draw is due to a move or a simple invalidation,
we need to go ahead and apply any outstanding deepclean to
the sixel beforehand. This eliminates the last bit of
flicker in the intro demo, at the orca's first location.
Also, never emit a '-$' sequence when deepcleaning a sixel.
Closes #1574 . Closes #1568 .
2021-04-21 19:25:49 -04:00
nick black
1b7ea2037a
kitty_delete: always damage if s->n link is broken on hide #1562
2021-04-21 18:47:50 -04:00
nick black
0cddfdde7b
sprixel_debug: print plane location
2021-04-21 17:22:48 -04:00
nick black
d8004ef508
kitty: return -1 on failed fprintf in kitty_delete
2021-04-21 17:22:48 -04:00
nick black
4d0ea5e6b5
notcurses_debug: emit no more than 79 columns per line
2021-04-21 17:22:48 -04:00
nick black
31ee680ea8
demo: destroy debug window at end #1569
2021-04-21 17:22:47 -04:00
nick black
ee6c3579db
stats: catch sprixel emission in rasterize_sprixels() #1566
2021-04-21 12:01:16 -04:00
nick black
ac72c982d7
stats: count up sprixel elisions/emissions #1566
2021-04-21 11:51:46 -04:00
nick black
6c7b40debf
add stats for sprixel emissions/elisions #1563
2021-04-21 11:43:10 -04:00
nick black
71c7432e46
[intro] manually resize greatscott to always hit cell boundary
2021-04-20 06:11:12 -04:00
nick black
16c47430d6
[view] add a sweet little picture-in-a-picture when pixel blitting is available
2021-04-20 05:55:55 -04:00
Nick Black
05662e54c2
Deepclean sixel on move ( #1567 )
...
Normally, we don't bother to edit Sixels in-place upon annihilation, since you can just print the character over them and be done with it. If we move one, however, we need to cut the annihilated pixels out of the Sixel. Failure to do so was leading to flicker around the base of the orca's Segway in the intro demo. This was a bit of a struggle, but it seems to work beautifully (though a bit slower than I would care for -- we'll do something about that). Closes #1555 .
2021-04-20 05:23:56 -04:00
nick black
c05b0683ec
[sixel] don't emit $ prior to - #1565
2021-04-20 03:32:28 -04:00
nick black
60f5e8a210
stats: don't post failed_renders from update_render_bytes
2021-04-20 01:34:32 -04:00
nick black
3203139ac7
[kitty] damage moved/annihilated cells on delete
2021-04-19 23:34:08 -04:00
nick black
31dfa86725
clamp Sixel at a multiple of 6 #1560
2021-04-19 21:47:38 -04:00
nick black
debd9e3578
reinitialize cells to OPAQUE when reloading sprixels
2021-04-19 17:39:48 -04:00
nick black
b3c91ca4dd
sprixel_state: deal with margins #1561
2021-04-18 16:10:51 -04:00
nick black
0a4b46a804
account for margins in sixel_state() #1561
2021-04-18 15:48:36 -04:00
nick black
c008d50b03
sixel_debug() for #1561
2021-04-18 15:48:36 -04:00
nick black
c0af379683
restore deprecated cell_extended_gcluster to ABI
2021-04-18 13:21:32 -04:00
nick black
c3c5b397a3
run ncvisual_resize() in bitmap tests #1559
2021-04-18 12:12:27 -04:00
nick black
2f59fc7282
turn on sextants and quadrants for foot terminal emulator
2021-04-18 10:57:31 -04:00
nick black
67bac13f67
kill off-by-one in pixel scaling #1558
2021-04-18 10:37:28 -04:00
nick black
6a509328fa
sprite_wipe_cell -> sprite_wipe
2021-04-18 10:37:28 -04:00
nick black
f19c6c88ff
add BitmapStretch unit test #1558
2021-04-18 10:37:28 -04:00
nick black
0ff59e5a95
visual: take placey into account for row calculation
2021-04-18 10:37:27 -04:00
nick black
17bde9ffa4
[kitty] clean all non-opaque on delete #1527
2021-04-18 08:10:12 -04:00
nick black
74744abc89
[sixel] don't damage on delete just because new sprixel is mixed #1553
2021-04-18 07:12:12 -04:00
nick black
7d61457b37
ncvisual_inflate: call ncvisual_seed_details() #1546
2021-04-18 06:52:21 -04:00
nick black
3bdd5ce142
scrub TAM boundaries in sixel+kitty #1553
2021-04-18 04:45:34 -04:00
nick black
74862a32b8
kitty: partial sprixcells cannot be opaque #1553
2021-04-18 04:12:19 -04:00
nick black
8a4bd09d9b
demo: stop input on error path before notcurses_stop()
2021-04-18 04:07:56 -04:00
nick black
dd327a381f
[intro] leave greatscott up while fading main
2021-04-18 03:37:13 -04:00
nick black
1f0edcb60f
demo: always move hud/fps off-pile to hide #1552
2021-04-18 03:11:41 -04:00
nick black
317cbb3fdb
sixel_draw: break out of loop faster #1527
2021-04-18 02:57:08 -04:00
nick black
c875eb4544
clamp Sixel to max supported size #1550
2021-04-18 02:48:20 -04:00
nick black
266ed71c0b
ncdirect_stream: fix c++ wrapper's error guard
2021-04-18 01:28:11 -04:00
nick black
1722714ee6
tighten up visual unit tests
2021-04-18 01:12:28 -04:00
nick black
2b5b62c110
ncvisual_blitset_geom: tighten tests on len and vertical alignment
2021-04-18 01:12:28 -04:00
nick black
2ebe209c7f
implement ncvisual_inflate(), add unit test #1546
2021-04-18 01:12:28 -04:00
nick black
2d73ba79e4
Detach sprixel from ncvisual
...
The ncvisual can't own the sprixel -- we could very well
blit it twice to two different planes, wipe cells from one
and not the other, and not want those shared. Instead, it's
owned by the plane. This clears up the ownership/lifetime
story quite a bit, and closes #1548 , where only the most
recent of several blittings of a sprixel was visible.
2021-04-17 23:49:01 -04:00
Nick Black
8c6cd6a630
Further work on opacity optimizations ( #1549 )
...
* [bitmap] on move, clear old OPAQUE cells #1527
* update ncvisual_blitter_geom() documentation #1547
* replace some ncvisual_blitter_geom with NCVISUAL_OPTION_VERALIGNED
* [normal] replace ncvisual_blitter_geom with NCVISUAL_OPTION_VERALIGNED
* [intro] use ncvisual_blitter_geom() correctly #1547
* ncvisual_blitter_geom: only set *blitter on success
2021-04-17 23:11:11 -04:00
nick black
b1317ddf7e
Revert "[bitmap] on move, clear old OPAQUE cells #1527 "
...
This reverts commit 416806c42c
.
2021-04-16 10:45:17 -04:00
nick black
416806c42c
[bitmap] on move, clear old OPAQUE cells #1527
2021-04-16 09:35:24 -04:00
nick black
c9cf30c31a
intro: always let our orca reach the far side
2021-04-16 09:33:56 -04:00
nick black
420c967605
[postpaint_cell] don't damage cells hidden by sprixel #1527
2021-04-16 08:08:11 -04:00
nick black
5a702512c5
[bitmaps] be less aggressive about third phase
...
When we scribble underneath a TRANSPARENT or ANNIHILATED
sprixcell, or even an OPAQUE or MIXED one in Kitty, we
needn't invalidate the sprixel. Perform these checks for
less aggressive invalidation, eliminating the flicker we
were seeing in xray using Kitty. Closes #1522 .
2021-04-16 07:23:26 -04:00
nick black
333b4414d9
note ECMA-48's NUL escape #1416
2021-04-16 07:23:26 -04:00
nick black
0dce453461
[direct] don't print sprixels to the last line
2021-04-16 07:23:12 -04:00
nick black
c975bc85fd
ncvisual: or 0x1000000 tp transcolor when NCVISUAL_OPTION_ADDALPHA is used
2021-04-16 02:45:13 -04:00
nick black
d4e2598c9e
[ncplayer] direct mode support for chromakey #1515
2021-04-16 02:45:13 -04:00
nick black
feab25bd7d
ncdirect_render_visual: account for bitmap overhang #1515
2021-04-16 02:45:13 -04:00
nick black
0de734cb02
ncplayer has 9 log levels, not 10
2021-04-16 02:45:13 -04:00
nick black
2c7034f1e3
[ncplayer] fix margins in direct mode #1515
2021-04-16 02:45:13 -04:00
nick black
9f8d938fad
[ncplayer] disable cursor in direct mode #1515
2021-04-16 02:45:13 -04:00
nick black
5507bbbd3e
[ncplayer] get margins working with direct mode once more #1515
2021-04-16 02:45:13 -04:00
nick black
ef69abe0fc
ncdirect_stream: save and restore cursor position before each frame #1515
2021-04-16 02:45:13 -04:00
nick black
53f92760dd
ncplayer: support multiframe in direct mode via streamfile #1515
2021-04-16 02:45:13 -04:00
nick black
3555257afb
kitty: use supplied alpha value directly
...
In Sixel, we map the alpha value to either 0 or 255, as
it has no alpha concept. Kitty can freely reproduce eight
bits of alpha, so go ahead and use them. Improves image
quality of translucent bitmaps in Kitty at the expense of
some behavioral divergence depending on bitmap backend.
2021-04-16 01:12:48 -04:00
nick black
4442a9fea9
rgba_trans_p: any non-zero alpha must be displayed #1540
2021-04-16 01:03:46 -04:00
nick black
b070b69eb2
get last remaining cell_ functions -> nccell_ #1532
2021-04-15 22:29:53 -04:00
nick black
7ad5219fa2
convert another crop of cell_ to nccell_ #1532
2021-04-15 22:20:16 -04:00
nick black
89fb48a30b
sprixcells: tense agreement in comment
2021-04-15 01:31:12 -04:00
nick black
30cb74428f
work on the sprixel state machine
...
Sixel: detect SPRIXCELL_TRANSPARENT cells and mark them as such.
sprixel_invalidate: fix copy-and-paste, want both TRANSPARENT and
ANNIHILATED to block progression to INVALIDATED. add gigantic
comment detailing the state machine. #1537 , #1522 , #1527 , #1483 .
2021-04-15 01:07:22 -04:00
nick black
93a08edb23
render: extract stats functions to stats.c
2021-04-15 00:13:44 -04:00
nick black
d2394f9c63
c++ wrapper for direct-mode streaming #1515
2021-04-14 18:48:53 -04:00
nick black
529972d16b
Elide unnecessary sprixel invalidations
...
When the damaged cell of a sprixel is actually entirely
transparent (or annihilated), there's no need to invalidate
it. Check for this in the TAM in sprixel_invalidate(). Good
optimization, and eliminates a lot of the flicker in `xray`
on Kitty described in #1522 .
2021-04-14 16:38:09 -04:00
nick black
9d516d8c8c
summarize_stats: don't divide by 0 writeouts
2021-04-14 11:40:14 -04:00
nick black
32500239ac
cell_extract() -> nccell_extract()
2021-04-14 10:30:22 -04:00
nick black
da2a897544
fix unintended cell abi breakage #1532
...
cell_release() and cell_duplicate() were deprecated in 2.2.6,
but replaced with static inlines. this breaks the abi, forcing
recompiles from client programs. restore them as exported
functions.
2021-04-14 10:04:28 -04:00
nick black
76bcb8f0af
zaxis test: update to api3
2021-04-14 09:36:00 -04:00
nick black
96ac640733
cell->nccell
2021-04-14 09:31:50 -04:00
nick black
657ed15632
cell_on_styles -> nccell_on_styles() #1532
2021-04-14 09:05:00 -04:00
nick black
15c330c580
[sixel_shutdown] don't disable sixel scrolling on shutdown #1533
2021-04-14 08:26:27 -04:00
nick black
81370ba311
[sixel_delete] don't scribble beyond pile rendering vector #1534
2021-04-14 08:23:17 -04:00
Nick Black
e591ec2e98
cell -> nccell throughout much of remaining API ( #1535 )
...
cell -> nccell throughout much of the API #1532
2021-04-14 06:42:14 -04:00
nick black
e9b5388dde
[sixel] clear debugging cruft #1533
2021-04-14 05:21:23 -04:00
nick black
b794dbc848
[sixel] clear sixel scrolling private mode on exit #1533
2021-04-14 05:20:59 -04:00
nick black
89678ed412
[render] only invalidate glyphs when wipe fails
2021-04-14 03:35:31 -04:00
nick black
11f79dfd31
visual_render_pixels: don't use last line of visual area #1479
2021-04-14 03:25:28 -04:00
nick black
f5d16e1e89
sprite_wipe_cell: purge unnecessary fxn check
2021-04-14 00:50:05 -04:00
nick black
282830e31c
define sixel_wipe
2021-04-14 00:48:36 -04:00
nick black
39335bc210
[sixel_wipe] set SIXEL_P2_TRANS #1527
2021-04-14 00:48:16 -04:00
nick black
567c351b8f
[sprixcell] kill unused TAM enums for now
2021-04-13 21:03:58 -04:00
nick black
53485eabc3
[paint] extract paint_sprixel()
2021-04-13 18:47:24 -04:00
nick black
3474134f23
[nctree] eliminate tautological pointer compare
2021-04-13 18:44:52 -04:00
nick black
46d70602c5
always set SIXEL_P2_TRANS on transparent pixels #1527
2021-04-13 16:42:00 -04:00
nick black
c54198a992
Emit P2=0 when sixel is entirely opaque
...
Some terminals (foot makes this claim explicitly) can draw
sixels more quickly when P2 is 0 than when P2 is 1. Since
we're already detecting transparency for the TAM matrix, do
the same globally, and prepare a sixel_p2_e value-result
parameter based on the results. If there are no transparent
pixels, emit P2=0 #1527 .
2021-04-13 15:45:50 -04:00
nick black
2f8efe53a6
[demo] shrink the fps graph horizontally a little
2021-04-13 11:36:16 -04:00
nick black
162248fcaa
[ncplayer] put blitter changes into effect at media's end #1529
2021-04-13 11:30:00 -04:00
nick black
77e8697be9
get a richer blue in banner RGB
2021-04-12 08:04:17 -04:00
nick black
cfd47c26b6
ncvisual_render_pixels: reject negative placex/placey on alignment #1526
2021-04-12 04:22:31 -04:00
nick black
669bc5fa33
[mlterm] sixel cursor hack
...
At least mlterm unhides the cursor after emitting a
Sixel, even if it was hidden beforehand. Track this
behavior using 'sprixel_cursor_hack' in the tinfo cache.
Set this based on an "mlterm" TERM heuristic match.
When it is set, supply the 'civis' capability as
cursor_hack in blitterargs, and emit it at the end of
the sixel in sixel_blit() #1524 .
2021-04-12 04:02:23 -04:00
nick black
7e08e40bff
notcurses_stop: don't treat drop_signals() as an error
2021-04-12 03:32:32 -04:00
nick black
e301ef34ae
disable alacritty sixel until ayosec/graphics is merged #1430
2021-04-12 03:25:49 -04:00
nick black
084d5d6673
notcurses_init: free memstream on error paths
2021-04-12 03:23:55 -04:00
Daniel Eklöf
013ac94cd5
[sixel]: re-enable Set Raster Attributes, and fix the ‘pad’ parameter
...
Now that we explicitly set P2=1, we can safely emit a "Set Raster
Attributes" command, to tell the terminal the final size of the image
up front.
Also fix the ‘pad’ parameter (horizontal aspect ratio); XTerm rejects
sixels with pan or pad set to 0.
2021-04-12 02:44:36 -04:00
Daniel Eklöf
8b7fa78be1
[sixel]: set P2=1
...
This indicates that empty pixels should "remain at their current
color". I.e. it makes them transparent.
This is in contrast to P2=0|2, where empty pixels are filled with the
"current background color" (which is either sixel color register #0 ,
or the current ANSI background color, depending on terminal and its
sixel implementation).
Note that due to what is most likely a bug, XTerm will behave as if
P2=1 if P2 is either left unset, or explicitly set to 0 or 2, as long
as we do *not* emit a "Set Raster Attributes" command.
2021-04-12 02:44:36 -04:00
nick black
9c7fa38187
mlterm: enable quadrants (no sextants as of 3.9.0)
2021-04-12 02:25:21 -04:00
nick black
c7fca301e8
sixel: set a huge default max geom
2021-04-12 02:17:06 -04:00
nick black
e7ca10804d
xtsmgraphics reply: always allow 'S' to terminate #1523
2021-04-12 02:14:15 -04:00
nick black
430e328df6
[query_sixel] tighten sixel check state machine #1523
2021-04-12 02:03:17 -04:00
nick black
96ca5e79cb
xray: use alpha channel for sprixel
2021-04-12 01:12:37 -04:00
nick black
2e254d29e0
ncvisual_blitset_geom: fix unknown flag diagnostic
2021-04-12 00:53:42 -04:00
nick black
f8f2784a22
[alacritty] did they disable XTSMGRAPHICS again? wtf?
2021-04-10 13:39:29 -04:00
nick black
fada4148b5
[ncplayer] add -a option for alpha channel #1518
2021-04-10 12:02:58 -04:00
nick black
76241f81d2
[rust] adapt pixel-cell.rs
2021-04-10 12:02:58 -04:00
nick black
34bcbb505b
[xray] put streaming plane back above scrolling #1518
2021-04-10 12:02:58 -04:00
nick black
bac7d634d9
[visual] pipe transcolor through, use it everywhere #1518
2021-04-10 12:02:58 -04:00
nick black
0c566cd74a
[ncvisual] pipe transcolor through #1518
2021-04-10 12:02:58 -04:00
nick black
ff76dba6ed
cell_strdup -> nccell_strdup
2021-04-10 09:21:52 -04:00
nick black
d504e972cc
cell_release -> nccell_release
2021-04-10 09:09:56 -04:00
nick black
9dbcef9969
stop exporting lookup_blitset()
...
the media code that makes up non-core libnotcurses called
into lookup_rgba(). instead, have them use the new
funtion ncvisual_blitter_geom() to access the actual blitter
being used. we can then hide lookup_blitset(), which ought
never have been exported. closes #1519 .
2021-04-10 08:56:59 -04:00
nick black
d4fff6a921
check wcwidth('⣿') for braille support
2021-04-10 07:56:56 -04:00
nick black
1f67f540e6
[stacking] guard tests for quadrants
2021-04-10 06:58:08 -04:00
nick black
1720457467
[rotate] fix unit tests for odd number of columns
2021-04-10 06:52:39 -04:00
nick black
17a27427ec
[visual] guard quadblitter tests with check
2021-04-10 06:37:05 -04:00
nick black
7488a84121
[xray] bring slider plane to top #1518
2021-04-10 06:23:48 -04:00
nick black
80d93fdfb6
disable quadrants except where whitelisted #1517
...
Require a known-good TERM heuristic match to enable
quadrants (NCBLIT_2x2); they otherwise decay to halves
(NCBLIT_2x1). The only terminal that supports quadrants
but does not support sextants is the Linux console, where
we program quadrants directly into the font table,
like a beast. Closes #1517 , and #1298 if we're lucky.
2021-04-10 05:12:45 -04:00
nick black
62242f0e41
[terminfo] add alacritty hack for sixel #1430
2021-04-10 04:41:14 -04:00
nick black
53894caccb
add ncdirect_stream #1346
2021-04-10 04:41:14 -04:00
Nick Black
04b1ba8ed2
Dankamongmen/unify geom ( #1514 )
...
deprecate ncvisual_geom() in favor of new ncvisual_blitter_geom(), which allows caller to get the blitter used. replace the checks and calculations in ncvisual_render() with a call to ncvisual_blitter_geom(), unifying the two paths (and eliminating several bugs in the unloved ncvisual_geom()).
2021-04-10 04:04:02 -04:00
nick black
35e44d81c5
caps-rendered: differentiate sixel v kitty
2021-04-10 00:48:24 -04:00
nick black
1f33ada62e
[cffi] update for ncplane_as_rgba()
2021-04-10 00:47:03 -04:00
nick black
582bdebbc3
lol remove notcurses_debug() from notcurses_render()
2021-04-10 00:39:07 -04:00
nick black
f294c6bb0b
add ncplane_pixelgeom() #1507
2021-04-10 00:34:38 -04:00
nick black
d153ccb8f4
[ncvisual] properly size created plane
...
if we go into ncvisual_render() looking to render a number
of rows not evenly divisible by the scaling factor, we need
to get an extra row (duh). correct ncvisual_render_cell() to
reflect this. the blitters already know to fill this line in
with transparency wherever the image is not defined. fix up
rotation unit tests to reflect this. closes #1513 .
2021-04-09 23:27:06 -04:00
nick black
94839c2958
[ncdirect_stream] kill unused variable warnings
2021-04-09 18:08:23 -04:00
nick black
05082fc277
ncplane_as_rgba(), returns pixel geometry along with bitmap #1508
2021-04-08 04:12:11 -04:00
nick black
694a0c133f
[terminfo] only interrogate for sixel when pixel geometry is defined #1511 #1506
2021-04-08 01:15:18 -04:00
nick black
217453780e
[terminfo] remove alacritty hacks #1506 #1430
2021-04-08 01:06:38 -04:00
nick black
b1baa5e88a
[demo] print that we're checking for pixel support #1506
2021-04-08 00:55:25 -04:00
nick black
cc3cddf40b
[sprixel] don't yet enable sixel on alacritty
2021-04-07 19:53:14 -04:00
nick black
0febe3428f
[sprixels] simplify query_sixel()
2021-04-07 18:47:20 -04:00
nick black
9dad70568b
[plot] drop inline from update_sample
2021-04-07 12:29:00 -04:00
joseLuís
fce6c6873f
fix typos
2021-04-07 15:00:48 +02:00
nick black
8db054ede7
kill off get_controlling_tty in favor of get_tty_fd #1504
2021-04-04 16:42:19 -04:00
nick black
7865539505
query_sixel: support alacritty's ugh decisions #1430
2021-04-04 05:37:19 -04:00
nick black
0c2e3d6e35
[sixel] make some sixeltable args const
2021-04-04 05:29:19 -04:00
Nick Black
7e78690597
[bitmaps] new unit test LoadVideoPixelScaleDifferentPlanes ( #1502 )
2021-04-04 05:19:36 -04:00
nick black
7c35d94a9b
paint: referene crender, not rvec #1482
2021-04-04 04:18:09 -04:00
nick black
0dbd3cf830
ncvisual_render_pixels: hide any old sprixels
2021-04-04 04:17:34 -04:00
nick black
2f47d9adef
[bitmaps] new unit test LoadVideoPixelScaleDifferentPlanes
2021-04-04 04:16:55 -04:00
nick black
656b3221af
refresh: initialize with init_rvec, not memset()
2021-04-04 00:07:18 -04:00
nick black
123447183c
[jungle] fix invalid access on some window geometries
2021-04-03 21:35:54 -04:00
nick black
3d3d235abb
[xray] update frame count for new video
2021-04-03 21:21:21 -04:00
nick black
998ebf8254
[ncplayer] meaningless timespec dealloc
2021-04-03 21:13:36 -04:00
nick black
ee2f150058
[sprixels] move destruction into free_plane() from ncplane_destroy()
2021-04-03 21:03:25 -04:00
nick black
16b7910b57
[sprixels] plug two memory leaks
2021-04-03 17:54:09 -04:00
nick black
94b073dd3d
ncvisual_render_pixels: zorch reuse on either invalid ncv or n sprixel
2021-04-02 10:35:11 -04:00
nick black
cbd92e5180
sprixel_recycle: use the valid sprixel link
2021-04-02 10:33:34 -04:00
nick black
d7408cf5aa
[bitmap] check p_beats_sprixel, use text phase 2 when set #1496
2021-04-02 04:34:33 -04:00
nick black
3c4d25a092
[ncvisual] detach from sprite in ncvisual_destroy()
2021-04-02 03:08:40 -04:00
nick black
89734a2dc7
[bitmap] proper parameters for tacache TAM2 #1495
2021-04-02 01:21:58 -04:00
nick black
ad3322e4db
erp
2021-04-02 00:55:02 -04:00
nick black
6a1e74feae
[bitmaps] clear out ncvisual link on hide
2021-04-02 00:54:45 -04:00
nick black
f968ba7774
[plots] free up title in destructor
2021-04-02 00:07:49 -04:00
nick black
021fc052fc
[render] end kitty flicker #1493
2021-04-01 22:37:48 -04:00
nick black
631697e9e2
eliminate sixel flicker #1493
2021-04-01 22:37:48 -04:00
nick black
83296b4688
Revert "eliminate sixel flicker #1493 "
...
This reverts commit aa80af8f87
.
2021-04-01 20:11:44 -04:00
nick black
aa80af8f87
eliminate sixel flicker #1493
2021-04-01 20:01:04 -04:00
nick black
d4883d30f2
[tests] add directmode bitmap test
2021-04-01 18:23:01 -04:00
nick black
c0dadcd5d7
[normal] don't use expired ncplane 'n' #1492
2021-04-01 11:49:38 -04:00
nick black
b6a9b59f9d
notcurses_plane.3: add BUGS about bitmap graphics and ncplane_at_yx()
2021-04-01 11:26:23 -04:00
nick black
fbe16935f3
[sixel] clean up sprixels on move #1449
2021-04-01 11:26:23 -04:00