Commit Graph

273 Commits (afe724ee1da00edf1144b7cc3589d3c228b66a52)

Author SHA1 Message Date
nick black 039a390877
ncmenu: print item shortcut aligned right #179 4 years ago
nick black 79a92fcfb1
ncmenu: highlight shortcut keys for menu items 4 years ago
nick black 3821b66bc7
menu: highlight (bold+uline) section shortcuts 4 years ago
nick black 5cf1bba5f5
menu: unit test with section #179 4 years ago
nick black ee6eb1a37b
ncmenu: support iteration within a section 4 years ago
nick black fa88f9b525
ncmenu: nextsection/prevsection 4 years ago
nick black 4586dd7e19 ncmenu: properly place unrolled menu #179 4 years ago
nick black 31a07dab33
menu: extend across width of screen #179 4 years ago
nick black fdc541c6e5 copy over menu elements #179 4 years ago
nick black 54c57b3487 s/CELL_STYLE/NCSTYLE/ throughout 4 years ago
nick black 8984422f1e basics of menu #179 4 years ago
nick black 6e642f1749 more menu work #179 4 years ago
nick black 2cf3835ddd Add menu_options struct #179 4 years ago
nick black 25ce448889
rgba_blit()/bgrx_blit() #311 4 years ago
nick black c1664170fd
selector: bgchannels only inside the body #302 4 years ago
nick black fad612bd2f
Use column width in selector calculations #302 4 years ago
nick black 5982707f9e
add mbswidth() function, unit tests, docs 4 years ago
nick black 85f042c644
add selector to README #302 4 years ago
nick black d30df23f43
selector: support non-zero default idx #302 4 years ago
nick black 09d2e35372 C++ wrappers: kill Visual::destroy_plane() #299
ncvisual_destroy() already calls ncplane_destroy() when
appropriate. There's never a need for the C++ wrappers
to explicitly free the Visual's underlying Plane. With
this change, valgrind no longer complains upon exiting
notcurses-view(1).
4 years ago
nick black a57f0f234c
selector styling 4 years ago
nick black 3991b3e53a
selector: implement maxdisplay. unit tests! 4 years ago
nick black ac2b951fa9
ncselector_selected(), unit tests 4 years ago
Nick Black da0283ac25
Selector widget #166, subtitles #95 (#301)
Get rid of annoying empty line in notcurses-view (and ncvisuals at offsets in general)
Implement most of the Selector widget. Need to add styling and scrolling still. #166
Reenable ubuntu focal build
Subtitles! We decode them, and display them in notcurses-view. If ncvisual_simple_streamer() is provided an extra ncplane, it will use it to display subtitles. #95
We now build Python by default, as things are working much better.
ncplane_set_base() now takes channel, attrword, and EGC, so you can usually avoid having to set up and release a cell. ncplane_set_base_cell() takes over duty from ncplane_set_base() for ease of conversion.
notcurses-demo and notcurses-view now both accept a 0 for delay multiplier, meaning 'go as fast as you possibly can'. Very small multipliers (e.g. 0.00001) no longer cause floating point exceptions.
fading routines no longer cause floating point exceptions on very small timescales.
4 years ago
Marek Habersack cd6d1e16d1 Properly clean up when NotCurses instance is destructed
We need to set `_instance` to `nullptr` or we'll leave a dangling
pointer.
5 years ago
nick black 1fd0563093
Direct mode with its own type #77
Introduce the new type 'ncdirect', a stripped-down 'notcurses'
suitable for inline modification of regular output. Used the new
type because otherwise there were going to be if(directmode) checks
everywhere. Direct mode encompasses only colorizing and styling.
Add new man page notcurses_directmode(3). Add new section to README.
Add new PoC using direct mode RGB. Update demo table summary to use
direct mode.
5 years ago
nick black 3d4e157af6 direct-mode coloring #77 5 years ago
nick black 2ea10d4b28 Remove clear_screen_start option
As it turns out, we can't portably load the initial terminal contents
(there are some hacks of various EXTREME nature, but none of them are
worth it for the rather limited benefit). The O(1)-time damage
inference requires knowledge of what was previously present to
inibit unnecessary draws. We would then need some special cell value
indicating "not yet written to" to distinguish a purposeful null
cell from an initial cell. Again, we could do this, but for what value?

Finally, the idea of clearing new area on SIGWINCH was always flawed,
as we can't do that from a signal handler.

With the advent of direct mode #77, the reason for this largely goes
away in any case.
5 years ago
nick black 55699c6a3c
render summary: autoscale all times 5 years ago
Marek Habersack 75a90461dd Add C++ bindings 5 years ago
nick black be3a53f3cf
input: function key defs through kf59 5 years ago
nick black 507c3e1d00
expunge wayward fragment of comment 5 years ago
nick black 4ece4a9075
demo: skip demos which we don't have support for 5 years ago
Nick Black 3d612aebcb
ruins color cycling demo #253 (#287)
* palette_set: update pal256 damage map #230
* drone: use newest builders
* palette: send oc on exit for color reset #285
* palette_new: copy existing palette in #230
* Python: use checkRGB everywhere
* more palette unit testing
* add ncplane_set_*_palindex()
* render fg palindex #230
* palette index color is out of 1000
* jungle demo works #253
5 years ago
nick black 3e9347a339
palette color: unit test for alpha clear 5 years ago
nick black b02acd8631
Curry a void* to fader callbacks #284 5 years ago
nick black 1b01494c79 implement ncplane_greyscale() #280 5 years ago
nick black 08f6fa0e79 implement ncplane_dup() 5 years ago
nick black 209d4f41f4 palette: add necessary predicates #230 5 years ago
nick black 0e70304596 palette indexing: set up attributes #230 5 years ago
nick black 6365fc0917 encode palette index into channels/attr #230 5 years ago
nick black 684bcdcc8c introduce palette256 #230 5 years ago
nick black 67b5a20758 implement ncplane_putwc_yx() 5 years ago
nick black dd7f8eff4b
ncvisual_stream: add timescale param 5 years ago
nick black 23b5078ed1
pulsing text declarations 5 years ago
nick black 56a54b5441
break apart render/rasterize #155 5 years ago
nick black 2ebc3e2bfe blend: conditionally blend in alpha 5 years ago
nick black 3faffaa847 channels_blend() : don't blend in wide status #260 5 years ago
nick black 922c639355 cell: add clipped 5 years ago
nick black 0f60af347d add clipped set functions 5 years ago
nick black 306045116f API: always call complex from static simple 5 years ago
nick black acef43c759
avcodec_parameters_to_context() #215 5 years ago
Nick Black f5c6297902
Chun Li demo (#251)
* chun li demo
* ncvisual_decode: allow multiple renders of the same frame
* add -H to notcurses-demo man page
* update section 1 man page versions
5 years ago
nick black 5dd90f3735 add ncplane_dim_[yx] quick accessors 5 years ago
Nick Black f6975d11d5
Docs/API sweep for 1.0.0 #244 #249 (#250)
* sync up some docs #244
* sync README and man page
* notcurses_output() man page work
* pull attr/channels from output functions #244
* witherworm: clean up explicit moves #244
* still more man page work
* notcurses_lines, last of the man pages i think
* panelreel man page #244
* debian: ruby-ronn->pandoc
* debian: full multiarch compliance
* debian: symbols file
* pandoc: fix syntax for lexgrog
* fm6.mkv: strip audio
* pandoc: fix up apropos man syntax #249
* ncurses_lines man page
5 years ago
nick black 2ada135fc2
add ncplane_resize_simple() 5 years ago
nick black 0de1856e38 accept a loglevel for libav 5 years ago
Nick Black 2fbc94e41c
Higher planes obliterate bisected wide glyphs #158 (#243)
* higher planes stomp wide glyphs
* broken unit test
* develop out widestomp PoC
* fix notcurses_at_yx()
* fix up dig_visible_cell() return value
* refuse wide glyph on last column #242
* set adjacent cell wide when rendering #158
* xray: eliminate weird color flicker
* witherworm: don't eat wide glyphs
* unit test for boxed glyph
* uniblock: no need to emit so many U+200Es
* witherworm: remove wide glyph hack
5 years ago
nick black 35aa7f6e85
move cell_egc_copy() to internal.h 5 years ago
nick black e81e58035e
notcurses_at_yx() added 5 years ago
nick black 2ea4f77875
introduce ncplane_aligned() #237 5 years ago
nick black ed980f1059 pull _get from all accessors 5 years ago
nick black 014afa348b rename ncplane default -> base #236 5 years ago
nick black c21a04137c curry a void* through ncvisual_stream #113 5 years ago
nick black db8b99d594
notcurses_render: simplify using new alpha rules 5 years ago
nick black 924d80f0d5
don't blend default colors #235 5 years ago
nick black 46b1b8e622
notcurses_stats man page #213 5 years ago
nick black 663e7e2eef
setting default also sets opaque #235 5 years ago
nick black daad1c7ea3
more man pages (#213) 5 years ago
nick black 7c5a13e7ac
notcurses_init(3) man page #213 5 years ago
nick black 21c3861804
s/bannner/banner/g, heh 5 years ago
nick black e9890eefc0 general foreground elision #131 5 years ago
nick black 5b322add56 glyph-based background spec elision #131
When we emit a glyph that has no background pixels (i.e.
the U+2588 FULL BLOCK glyph), there's no need to emit a
background color change.

Eagle demo currently has hand-coded elision. Results from
80x70 runs using the `-c` parameter:

No optimization: 12.63MiB
Hand-optimized: 12.48MiB
New scheme, no hand-coded optimization: 12.45MiB

w00t!
5 years ago
nick black 132793211c
capabilities testing for fade/ffmpeg 5 years ago
nick black f1453d106e freebsd: fix attribute ordering 5 years ago
nick black bd034c983a input: handle modifiers+mouse (alt, shift, ctrl) #226 5 years ago
nick black fb0e03fe89 UMOK: fadecb for faders #162 5 years ago
Nick Black 63ada9289c
Implement CELL_ALPHA_BLEND, improve transparency semantics #191 (#219)
* channels_blend() introduced
* implement CELL_ALPHA_BLEND #191
* maxcolor demo: slidingpanel
* much improved transparency semantics #191
* maxcolor: show all transparencies #191
5 years ago
nick black cb2bf16a73 support building sans ffmpeg #153 5 years ago
nick black 452e1d302e
output API enhancements #210 #209
Allow -1 in move specification to remain where we are on that
axis (#210), necessary for context-sensitive aligned output.
Add _aligned forms to printf and vprintf. Invert various output
functions so that simpler form is static inline wrapper around
more complicated form, rather than complicated form being a
static inline composition, facilitating atomic move+output. All
output forms now have a simple form (no alignment, placement at
cursor), an _aligned() form, and a _yx() form.
5 years ago
nick black f742676aee Mouse support using button event tracking #165
Request and parse up mouse messages. We handle up to 11 mouse
buttons, 3 modifiers (currently thrown away), motion while
holding down a button, and loss/gain of focus. I've added twelve
new NCKEYs: one for each button, and one for release. In addition,
I've introduced the 'ncinput' struct, which encodes the nckey plus
extra data. The only extra data thus far is coordinates for mouse
events. It is not necessary to provide a ncinput to all input
functions; NULL can be provided if the caller doesn't care about
details. All demos are updated. notcurses-input has been updated
to decode full information of returned ncinputs.

The primary resource for this work was Dickey at al's "XTerm Control
Sequences", https://invisible-island.net/xterm/ctlseqs/ctlseqs.html.
5 years ago
nick black aceda89261 input: add NCKEY_MOUSEEVENT, match against CSI prefix #165 5 years ago
nick black fc17a104b4
notcurses_options: clear screen on start 5 years ago
nick black ab47ab8976
notcurses_mouse_on()/_off() #165 5 years ago
Nick Black 3ad2124246
Partial visual renders #170 (#193)
* ncvisual_render() accept four bounding dims #175
* ncvisual_render(): partial renders #175
5 years ago
Nick Black 0e0925a84e
Planereel exploration app, panelreel logic fixes (#188)
* planereels tester #180
* suppress_banner in all tests
* tabletcb: start passing back tablet
* properly initialize fbbytes stat
* panelreel: logic fixes #178
* install all testing data
5 years ago
nick black 3f326ee0a8 fix up ncplane_set_{bf}g 5 years ago
nick black 6a9d6fa122
add ncplane_printf_yx() 5 years ago
nick black 5bec85746d
allow banners to be suppressed 5 years ago
nick black 32e9fd0a1d
notcurses_reset_stats() added + test #164 5 years ago
nick black d6bcb3211f eagles level starts at lower-right 5 years ago
nick black 0861b96bde wchar_t -> char32_t in input stack #171 5 years ago
nick black 3cfe88ee0c ncscale_e enumeration for ncvisuals #168 5 years ago
nick black 94722c0f28
Merge branch 'master' of github.com:dankamongmen/notcurses 5 years ago
nick black ddfd5219ed
notcurses_getc() needs return wchar_t #161 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 c5acdaaef0 don't allow moving a plane above/below itself #71 5 years ago
nick black dac4f78ee6 basic unit tests for z-axis #71 5 years ago