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