Commit Graph

3838 Commits

Author SHA1 Message Date
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