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.
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.
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.
* [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