Commit Graph

157 Commits (9402d7e927b78f5e3882ea7c75341730db5cf221)

Author SHA1 Message Date
nick black 712c7a16eb fuck yeah 5 years ago
nick black 7ab6febbf9 viewdemo: add a legend. baller as fuck 5 years ago
nick black 6532ea858b start eagle demo #167 5 years ago
nick black 4a7409ebda
sprite-enhalfen tool 5 years ago
nick black 97ecbdb0e5
sigh, probably gotta kill DMCA lure 5 years ago
Nick Black 957549105b
Wide character rigor (#117) (#157)
* unidamage PoC
* add cell_load_simple()
* clear CELL_WIDEASIAN_MASK in cell_load()
* split out render code
* add CELL_SIMPLE_INITIALIZER
* widecolor: fix message plane
* widecolor: simplify color increments
* document wide character handling
* unit tests for wide obliteration #117
* widechar obliteration hardening #117
* widecolor -> widechomper, update man page
5 years ago
nick black 040607c6f9
fix up linear interpolations 5 years ago
Nick Black dfc7623119
Implement notcurses_refresh() #150 (#156)
* boxdemo: clean up colors
* Fix crash on certain resizes due to corruption of damage map #152
* Rewrite ncplane_move_yx(), throwing out ~25 line of code
* implement notcurses_refresh() #150
5 years ago
nick black c30bd1b531 pass up damage when changing z-axis #146 5 years ago
nick black 041e6438e3
quantize to ansi256, atrociously #4 5 years ago
nick black f9ac7a7737
image in README 5 years ago
Nick Black 2de07f8a48
Per-line damage map, ~50% increase in FPS on notcurses-demo (#144)
Implement a fairly conservative, line-granularity, two-level damage map. One on the overall notcurses object is dirtied by planar moves, creations, deletions, and resizes. One on each ncplane is dirtied by glyph output, media rendering, fades, and erasure. #83 This has some definite false positives: a hidden plane which moves will damage a bunch of lines unnecessarily. For now, don't do things like that :D.

Extra byte per line per plane, shouldn't be a problem.

Two new stats for cell elisions and emissions

Allow keypress to interrupt view-demo

ncvisual_stream() now allows a callback per frame

Allow ncvisual_open() to create its own, perfectly-sized, ncplane #128

Typical performance prior to this PR:

4655 renders, 18.3s total (0.000305s min, 0.196s max, 0.0039s avg 253.9 fps)
401046.505KB total (9.688KB min, 139.697KB max, 86.15KB avg)
Emits/elides: def 1082115/116196 fg 10547624/7236460 bg 10602717/6208644
 Elide rates: 9.70% 40.69% 36.93%
4680 renders, 18.4s total (0.000285s min, 0.15s max, 0.0039s avg 255.0 fps)
403078.188KB total (9.688KB min, 139.697KB max, 86.13KB avg)
Emits/elides: def 1088994/116196 fg 10604983/7267750 bg 10655426/6237472
 Elide rates: 9.64% 40.66% 36.92%
4699 renders, 17.8s total (0.000227s min, 0.192s max, 0.0038s avg 263.8 fps)
403266.907KB total (9.688KB min, 139.697KB max, 85.82KB avg)
Emits/elides: def 1086511/116196 fg 10601709/7359116 bg 10661910/6326744
 Elide rates: 9.66% 40.97% 37.24%

After this PR:

5625 renders, 15s total (9.36e-05s min, 0.187s max, 0.0027s avg 375.2 fps)
168365.640KB total (0.930KB min, 139.600KB max, 29.93KB avg)
Emits/elides: def 310575/116196 fg 4486002/4473416 bg 4116835/4630666
 Elide rates: 27.23% 49.93% 52.94%
Cells emitted; 9928000 elided: 12572000 (55.88%)
5642 renders, 14.2s total (9.17e-05s min, 0.154s max, 0.0025s avg 397.0 fps)
168669.009KB total (0.605KB min, 139.600KB max, 29.90KB avg)
Emits/elides: def 310819/116196 fg 4499833/4482134 bg 4118562/4652470
 Elide rates: 27.21% 49.90% 53.04%
Cells emitted; 9962160 elided: 12605840 (55.86%)
5650 renders, 14.3s total (0.000118s min, 0.143s max, 0.0025s avg 395.7 fps)
169461.884KB total (0.860KB min, 139.600KB max, 29.99KB avg)
Emits/elides: def 305431/116196 fg 4515396/4456376 bg 4149967/4613668
 Elide rates: 27.56% 49.67% 52.65%
Cells emitted; 9945200 elided: 12654800 (55.99%)

on netcurses-demo, we're eliding about half of the total cells via this damage map. that's pretty fucking sweet! FPS increase of about 50% -- I'll take that any day of the fuckin' week, boyo. w00t!

https://www.youtube.com/watch?v=XbGs_qK2PQA
5 years ago
nick black 5deb896696
panelreel-demo: two tablets to start with 5 years ago
Nick Black 8bd8055f72
Distinct fg/bg alpha channels #139 (#141)
* improved alpha macros
* demo: use new alpha macros
* add ncplane_set_*_alpha()
* explicitly set fg for uniblock
* outro: background is a space #139
* distinct alpha channels for fg/bg #139
* rename 'background' cell to 'default' #142
* doc palette fades
5 years ago
Nick Black ff463d464e
Channels API sanity #119 (#138)
* orthogonalize channel/channels/cells APIs #119
* sync README.md with new ncplane channels api #119
5 years ago
nick black 54eb41cf3a
panelreel-demo: done after demodelay * 5 #135 5 years ago
nick black 88163325fa
widecolor: proceed without keypress #135 5 years ago
nick black a9c21526a7
add history 5 years ago
nick black 7c72b0ce83
emoji unit test 5 years ago
nick black 1821867e35
move outfp out of notcurses_options #130 5 years ago
nick black 21c4a9a2eb
demos: use ncalign_center throughout 5 years ago
nick black 7d2b0938e5
uniblock-demo: vastly improved via hook->fade 5 years ago
nick black d20da07fe0
widecolor: maintain a single background in message 5 years ago
nick black 8de3696268
add ncplane_putwstr_aligned(), update docs #102 5 years ago
nick black de595380b6
ncplane_putstr_aligned(), use it in intro #102 5 years ago
nick black c0b10a8f32
enable sgr/sgr0 #73 5 years ago
nick black c7c52f21d5
luigi: just use the three frames in a loop 5 years ago
nick black ad4c8ac58a
luigi: set sprite background so we can elide more 5 years ago
nick black 7eafdd6772
fix up unit testing sanity 5 years ago
Nick Black 0d2c43603b
Luigi in Mega Man world (#127)
* uniblock-demo: reset background to black
* warning about quantization
* some luigi love
* update cell documentation
* add unit test for move of stdplane
* MoveToLowerRight unit test
* ncplane_move_yx(): error to move stdscr
* better box permutations test
* luigi in megaman2 world
* stats: don't print 'em if we haven't got 'em
5 years ago
nick black fdc4325929 widecolor: make message its own plane #110 5 years ago
nick black 66fa8854f3 outro effects 5 years ago
nick black 5e5abd7cbd extract outro 5 years ago
nick black 3a6551ab4d
uniblock-demo: scroll the blocks right-to-left #104 5 years ago
nick black 93231c26eb input: use SPUA-B for special keys #118 5 years ago
nick black 065d44001c
change demo order 5 years ago
nick black ea10d80eec
remove duplicate macro define 5 years ago
nick black 0c5c696084
boxdemo: center target grid 5 years ago
Nick Black 38a10d9065
Transparency via alpha channels (#122)
* outro: bevel message window's corners
* egcspool: use full 25 bits available for 32MB pools
* render: remove unused inheritance mask
* interfaces + unit tests for 2-bit alpha
* notcurses_*g_alpha() acccessors
* cell alpha + unit tests
* panelreel: support a background channel
* notcurses: transparency via alpha channel
* remove unused CELL_ALPHA_MASK
5 years ago
nick black 7566af57e3
introduce ncplane_set_[fb]g 5 years ago
nick black 98b323e9a0
demo: only print 'unknown demo' msg when appropriate 5 years ago
nick black 8afcd04446
sync cell/ncplane fg/bg API naming 5 years ago
nick black 3bd43c871d
widecolor: maintain color across resizes 5 years ago
nick black ee4c3d217b
widecolor: detect and inhibit wide spaces 5 years ago
nick black df93b67b4e
fix up subject of libav test 5 years ago
nick black 6248714cd0
widecolor: oh what fun 5 years ago
nick black 065f8170ef
Merge branch 'master' of github.com:dankamongmen/notcurses 5 years ago
nick black cb5b0e2968
א guy #110 5 years ago
nick black bf12ea3c59
panelreel-demo: no general border 5 years ago
nick black 52f5bd1612
widecolors: allow all characters 5 years ago
nick black 638cc5903b
fix up usage message 5 years ago
nick black 541f9304df
widecolor-demo: move snake more quickly #110 5 years ago
nick black 6c5bd5d263
outro: fade background, but not foreground 5 years ago
nick black 3cda04e6ab
panelreel-demo: black background on border 5 years ago
nick black bacc69380a
uniblock: restore backgrounds 5 years ago
nick black 3c93030177
notcurses_*_default_prep() 5 years ago
nick black 56cad83a4b
widecolor-demo: improve background colors 5 years ago
nick black 774f8e5a23
summary: fix minima trackers 5 years ago
nick black 6e73e3b72f
widecolor-demo: friendly snake 🐍 #110 5 years ago
nick black 7e5e6bc545
slider-demo: force more squarish appearance 5 years ago
nick black af7ca02f36 Decode input escape sequences to special keys #78
Add the necessary input buffer, non-blocking reads, escape trie,
and unit tests to support extended keys, including arrow keys.
Update notcurses-input to print Unicode Control Glyphs instead of
a blank space for control chars.
5 years ago
nick black 37b0e416c0 get everything prepped for reliable keyboard escapes #78 5 years ago
Nick Black c0a1ee0f31
Spruce up slider demo, fix up uniblock demo #66 #72 (#112)
Slider demo: paint chunks in a pattern, then shuffle them up #72
Right-to-left unit tests #66
Fix up damage to uniblock demo using cup explicit cursor move #66
5 years ago
nick black f6b422f668
widecolor demo: bottom handle with stats 5 years ago
nick black c5db91e247
widecolor-demo: fix up summary box 5 years ago
nick black a55e02836b ncplane_box: accept ctlword (#42) 5 years ago
nick black c5ecc28ca1 remove resize check from demo core #105 5 years ago
nick black 82c5b96f92
remove obsolete assert from panelreels #91 5 years ago
nick black f0e81ea814
widecolors: make everything a bit more visible on small screens 5 years ago
Nick Black 8e8cb92c54
Improved cell API #97 (#103)
* cell/ncplane: simplify box API (#97)
* widecolor: use new box api (#97)
* uniblock: use new box API #97
* intro: use new box api #97
* panelreel: use new box api
* boxdemo: use new box API #97
* sliding: use new box API #97
* maxcolor: use new box api #97
* factor out notcurses_channel_prep() #97
* maxcolor: use new channel API #97
* sliding: use new channel API #97
* intro: use new channel API #97
* new output functions with no need for a cell
* add ncplane_putegc() and ncplane_putsimple(). the former takes an EGC, the latter a simple char less than 0x80. (#97)
* cell_prime: directly load all parts of a cell with immediates
* widecolor: use new output API #97
* boxdemo: properly initialize cells
* slider: total time cap of 5 * delaydemo
* maxcolor: use new output API #97
5 years ago
nick black e21594b4e9
ncplane_*_box_cells() -> cells_*_box() #97 5 years ago
nick black 35badf8ae7
panelreel: fix some NULL dereferences
ncurses getbegy() and friends, as it turns out, check for
a NULL input and return -1. we've been blindly passing
NULL in a few places on the ncurses side--with its own
problems--but that rapidly led to crashes here.
5 years ago
nick black c70bc7b2a4
slider-demo: work atop a background 5 years ago
nick black 415e238b3d transparent planes #10 5 years ago
nick black 2aadd096c0 lookin' good atl 5 years ago
nick black 738c590bfd
fix up outro 5 years ago
nick black be5ce9051d
outro 5 years ago
nick black 957af8151e view-demo: add video element 5 years ago
nick black 966239747c add ncplane_fadein() #40 5 years ago
nick black 4426ef0574 first go at ncplane_fadeout() #40 5 years ago
nick black 055f49b5fd sliding-demo: animate moves #72 5 years ago
nick black 570b42b78b sliders-demo: factor out move_square() #72 5 years ago
nick black 296663717c
uniblock: erase screen each time 5 years ago
nick black 19e1b3ac94
widecolor-demo: fix up right bar of handle 5 years ago
nick black 78e1a06661
view-demo: do both a jpeg and png test 5 years ago
Nick Black 8b0634527d
Correctly copy in shrink + SIGWINCH (#80) (#93)
* notcurses_resize(): properly set new lenx/leny #80
* ppoll() for SIGWINCH #80
* widecolor-demo: keystroke-driven
5 years ago
Nick Black 0b967ae528
More panelreels work #52 (#92)
* setup_signals: handle SIGSEGV with restore

* wresize(): fix keep parameter to ncplane_resize() #52

* ncplane_resize: set new lenx/leny on keep #80

* hrmrmm

* ncplane_resize(): fix numerous confusions

* panelreel-demo: don't allow us to go off the left edge

* panelreel: place tablets correctly #52

* panelreel: set background on focused element
5 years ago
Nick Black 426f632300
Panelreels port #52 (#90)
Port of panelreels, unit tests, and panelreel-demo from outcurses #52.
Doesn't completely work yet, but is surprisingly close!
5 years ago
nick black a9f54ed483 add viewdemo #86 5 years ago
nick black 684d9f66fe egcpool: fix corruption #59 5 years ago
nick black 3b5aee09a9 widechar-demo: spacing 5 years ago
nick black 8e96c2d78e ncplane backgrounds: render and use i nsliding-demo #69 5 years ago
Nick Black a7d50b557d
ncplane_at_cursor (#76), CCCflag, nonblocking stdin (#78) (#84)
* put stdin into nonblocking mode, retry on short write to stdout #78
* wrap getc_blocking() around a poll #78
* get CCCflag from terminfo. stop clearing the screen in render/startup
* implement ncplane_at_cursor() #76
* ncplane_at_cursor() unit test for simples #76
* PlaneAtCursorComplex unit test #76
* PlaneAtCursorInsane() unit test #76
* nplane_at_cursor: return number of bytes, not just 0/-1
* uniblock-demo: add a bunch of pages from Unicode 12
* demo: make -d delay multiplier a float
* egcpool: check offset against poolsize in check_validity()
* notcurses_init(): set smkx/rmkx to NULL with pass_through_esc
* PlaneAtCursorAttrs unit test #76
* add ncplane_styles() accessor
5 years ago
nick black 5e35e05151 render: don't send unnecessary color change sequences #47 5 years ago
nick black 6a5c21cacd demo: accept -f, open argument for renderfp 5 years ago
nick black e391bfbb81
input: add pass_through_esc option, otherwise run smkx #78 5 years ago
Nick Black 7f9ac490b0
ncplane_resize(), slider demo (#64) (#74)
* sliding: bounding box around puzzle
* slider: make moves, deleting planes #61
* implement z-index move functions
* demo: allow demos to be chosen via command-line option
* allow default bg/fg to be explicitly chosen
* ncplane_resize() unit test #64
* useful links
* slider: use random colors
* use find_above() in ncplace_destroy()
* ncplane_resize() work #64
5 years ago
nick black 374403fdeb
sliding: color up pieces 5 years ago
nick black fe14403f9e
ncplane_double_box_cells(), used in sliding-demo #67 5 years ago
nick black ad183a6322
shuffle: color and label pieces #67 5 years ago