mirror of
https://github.com/dankamongmen/notcurses
synced 2025-03-09 17:19:03 -04:00
s/CELL_ALPHA_/NCCELL_ALPHA_/g
This commit is contained in:
parent
fc2bbca1ca
commit
cadd4aefee
4
NEWS.md
4
NEWS.md
@ -1,6 +1,10 @@
|
|||||||
This document attempts to list user-visible changes and any major internal
|
This document attempts to list user-visible changes and any major internal
|
||||||
rearrangements of Notcurses.
|
rearrangements of Notcurses.
|
||||||
|
|
||||||
|
* 2.3.5 (not yet released)
|
||||||
|
* `CELL_ALPHA_*` macros are now `NCALPHA_*`. The former will remain
|
||||||
|
`#define`d until ABI3.
|
||||||
|
|
||||||
* 2.3.4 (2021-06-12)
|
* 2.3.4 (2021-06-12)
|
||||||
* Added the flag `NCVISUAL_OPTION_NOINTERPOLATE` to use non-interpolative
|
* Added the flag `NCVISUAL_OPTION_NOINTERPOLATE` to use non-interpolative
|
||||||
scaling in `ncvisual_render()`. `ncvisual_render()` without a multimedia
|
scaling in `ncvisual_render()`. `ncvisual_render()` without a multimedia
|
||||||
|
14
USAGE.md
14
USAGE.md
@ -1832,10 +1832,10 @@ typedef struct nccell {
|
|||||||
#define CELL_BG_PALETTE 0x0000000008000000ull
|
#define CELL_BG_PALETTE 0x0000000008000000ull
|
||||||
#define CELL_FG_PALETTE (CELL_BG_PALETTE << 32u)
|
#define CELL_FG_PALETTE (CELL_BG_PALETTE << 32u)
|
||||||
#define NCCHANNEL_ALPHA_MASK 0x30000000ull
|
#define NCCHANNEL_ALPHA_MASK 0x30000000ull
|
||||||
#define CELL_ALPHA_HIGHCONTRAST 0x30000000ull
|
#define NCALPHA_HIGHCONTRAST 0x30000000ull
|
||||||
#define CELL_ALPHA_TRANSPARENT 0x20000000ull
|
#define NCALPHA_TRANSPARENT 0x20000000ull
|
||||||
#define CELL_ALPHA_BLEND 0x10000000ull
|
#define NCALPHA_BLEND 0x10000000ull
|
||||||
#define CELL_ALPHA_OPAQUE 0x00000000ull
|
#define NCALPHA_OPAQUE 0x00000000ull
|
||||||
```
|
```
|
||||||
|
|
||||||
`nccell`s must be initialized with an initialization macro or `nccell_init()`
|
`nccell`s must be initialized with an initialization macro or `nccell_init()`
|
||||||
@ -2888,7 +2888,7 @@ channel_set_alpha(unsigned* channel, unsigned alpha){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*channel = alpha | (*channel & ~CHANNEL_ALPHA_MASK);
|
*channel = alpha | (*channel & ~CHANNEL_ALPHA_MASK);
|
||||||
if(alpha != CELL_ALPHA_OPAQUE){
|
if(alpha != NCALPHA_OPAQUE){
|
||||||
*channel |= CELL_BGDEFAULT_MASK;
|
*channel |= CELL_BGDEFAULT_MASK;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -3013,7 +3013,7 @@ ncchannels_set_fg_alpha(uint64_t* channels, unsigned alpha){
|
|||||||
// Set the 2-bit alpha component of the background channel.
|
// Set the 2-bit alpha component of the background channel.
|
||||||
static inline int
|
static inline int
|
||||||
ncchannels_set_bg_alpha(uint64_t* channels, unsigned alpha){
|
ncchannels_set_bg_alpha(uint64_t* channels, unsigned alpha){
|
||||||
if(alpha == CELL_ALPHA_HIGHCONTRAST){ // forbidden for background alpha
|
if(alpha == NCALPHA_HIGHCONTRAST){ // forbidden for background alpha
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
unsigned channel = ncchannels_bchannel(*channels);
|
unsigned channel = ncchannels_bchannel(*channels);
|
||||||
@ -3185,7 +3185,7 @@ int notcurses_lex_blitter(const char* op, ncblitter_e* blitter);
|
|||||||
const char* notcurses_str_blitter(ncblitter_e blitter);
|
const char* notcurses_str_blitter(ncblitter_e blitter);
|
||||||
|
|
||||||
#define NCVISUAL_OPTION_NODEGRADE 0x0001ull // fail rather than degrade
|
#define NCVISUAL_OPTION_NODEGRADE 0x0001ull // fail rather than degrade
|
||||||
#define NCVISUAL_OPTION_BLEND 0x0002ull // use CELL_ALPHA_BLEND
|
#define NCVISUAL_OPTION_BLEND 0x0002ull // use NCALPHA_BLEND
|
||||||
#define NCVISUAL_OPTION_HORALIGNED 0x0004ull // x is an alignment, not abs
|
#define NCVISUAL_OPTION_HORALIGNED 0x0004ull // x is an alignment, not abs
|
||||||
#define NCVISUAL_OPTION_VERALIGNED 0x0008ull // y is an alignment, not abs
|
#define NCVISUAL_OPTION_VERALIGNED 0x0008ull // y is an alignment, not abs
|
||||||
#define NCVISUAL_OPTION_ADDALPHA 0x0010ull // transcolor is in effect
|
#define NCVISUAL_OPTION_ADDALPHA 0x0010ull // transcolor is in effect
|
||||||
|
@ -193,7 +193,7 @@ there is no resize step between rasterizing and writing, writing deals with
|
|||||||
the same geometries as rasterization, so we ignore it.
|
the same geometries as rasterization, so we ignore it.
|
||||||
|
|
||||||
Rasterization can be split into two virtual phases: *postpaint* and *rastering*.
|
Rasterization can be split into two virtual phases: *postpaint* and *rastering*.
|
||||||
*postpaint* corrects for `CELL_ALPHA_HIGHCONTRAST`, performs damage detection,
|
*postpaint* corrects for `NCALPHA_HIGHCONTRAST`, performs damage detection,
|
||||||
and copies any necessary EGCs from their source pools to the common pool
|
and copies any necessary EGCs from their source pools to the common pool
|
||||||
(copying these EGCs is why a pile cannot be modified between rendering and
|
(copying these EGCs is why a pile cannot be modified between rendering and
|
||||||
rasterizing--such modifications might invalidate the EGC references). The
|
rasterizing--such modifications might invalidate the EGC references). The
|
||||||
|
@ -34,10 +34,10 @@ typedef struct nccell {
|
|||||||
#define CELL_BG_PALETTE 0x0000000008000000ull
|
#define CELL_BG_PALETTE 0x0000000008000000ull
|
||||||
#define CELL_FG_PALETTE (CELL_BG_PALETTE << 32u)
|
#define CELL_FG_PALETTE (CELL_BG_PALETTE << 32u)
|
||||||
#define CHANNEL_ALPHA_MASK 0x30000000ull
|
#define CHANNEL_ALPHA_MASK 0x30000000ull
|
||||||
#define CELL_ALPHA_HIGHCONTRAST 0x30000000ull
|
#define NCALPHA_HIGHCONTRAST 0x30000000ull
|
||||||
#define CELL_ALPHA_TRANSPARENT 0x20000000ull
|
#define NCALPHA_TRANSPARENT 0x20000000ull
|
||||||
#define CELL_ALPHA_BLEND 0x10000000ull
|
#define NCALPHA_BLEND 0x10000000ull
|
||||||
#define CELL_ALPHA_OPAQUE 0x00000000ull
|
#define NCALPHA_OPAQUE 0x00000000ull
|
||||||
```
|
```
|
||||||
|
|
||||||
**void nccell_init(nccell* ***c***);**
|
**void nccell_init(nccell* ***c***);**
|
||||||
|
@ -85,8 +85,8 @@ At each plane **P**, we consider a cell **C**. This cell is the intersecting cel
|
|||||||
unless that cell has no EGC. In that case, **C** is the plane's default cell.
|
unless that cell has no EGC. In that case, **C** is the plane's default cell.
|
||||||
|
|
||||||
* If we have not yet determined an EGC, and **C** has a non-zero EGC, use the EGC and style of **C**.
|
* If we have not yet determined an EGC, and **C** has a non-zero EGC, use the EGC and style of **C**.
|
||||||
* If we have not yet locked in a foreground color, and **C** is not foreground-transparent, use the foreground color of **C** (see [BUGS][] below). If **C** is **CELL_ALPHA_OPAQUE**, lock the color in.
|
* If we have not yet locked in a foreground color, and **C** is not foreground-transparent, use the foreground color of **C** (see [BUGS][] below). If **C** is **NCALPHA_OPAQUE**, lock the color in.
|
||||||
* If we have not yet locked in a background color, and **C** is not background-transparent, use the background color of **C** (see [BUGS][] below). If **C** is **CELL_ALPHA_OPAQUE**, lock the color in.
|
* If we have not yet locked in a background color, and **C** is not background-transparent, use the background color of **C** (see [BUGS][] below). If **C** is **NCALPHA_OPAQUE**, lock the color in.
|
||||||
|
|
||||||
If the algorithm concludes without an EGC, the cell is rendered with no glyph
|
If the algorithm concludes without an EGC, the cell is rendered with no glyph
|
||||||
and a default background. If the algorithm concludes without a color locked in,
|
and a default background. If the algorithm concludes without a color locked in,
|
||||||
|
@ -150,7 +150,7 @@ subsection of the **ncvisual** to render, while ***leny***/***lenx*** specify th
|
|||||||
geometry of same. ***flags*** is a bitfield over:
|
geometry of same. ***flags*** is a bitfield over:
|
||||||
|
|
||||||
* **NCVISUAL_OPTION_NODEGRADE** If the specified blitter is not available, fail rather than degrading.
|
* **NCVISUAL_OPTION_NODEGRADE** If the specified blitter is not available, fail rather than degrading.
|
||||||
* **NCVISUAL_OPTION_BLEND**: Render with **CELL_ALPHA_BLEND**. Not available with
|
* **NCVISUAL_OPTION_BLEND**: Render with **NCALPHA_BLEND**. Not available with
|
||||||
**NCBLIT_PIXEL** when using Sixel graphics. When used with **NCBLIT_PIXEL** when
|
**NCBLIT_PIXEL** when using Sixel graphics. When used with **NCBLIT_PIXEL** when
|
||||||
using Kitty graphics, the alpha channel is divided by 2 for each pixel.
|
using Kitty graphics, the alpha channel is divided by 2 for each pixel.
|
||||||
* **NCVISUAL_OPTION_HORALIGNED**: Interpret ***x*** as an **ncalign_e**.
|
* **NCVISUAL_OPTION_HORALIGNED**: Interpret ***x*** as an **ncalign_e**.
|
||||||
|
@ -113,10 +113,10 @@ API int notcurses_ucs32_to_utf8(const char32_t* ucs32, unsigned ucs32count,
|
|||||||
unsigned char* resultbuf, size_t buflen);
|
unsigned char* resultbuf, size_t buflen);
|
||||||
|
|
||||||
// background cannot be highcontrast, only foreground
|
// background cannot be highcontrast, only foreground
|
||||||
#define CELL_ALPHA_HIGHCONTRAST 0x30000000ull
|
#define NCALPHA_HIGHCONTRAST 0x30000000ull
|
||||||
#define CELL_ALPHA_TRANSPARENT 0x20000000ull
|
#define NCALPHA_TRANSPARENT 0x20000000ull
|
||||||
#define CELL_ALPHA_BLEND 0x10000000ull
|
#define NCALPHA_BLEND 0x10000000ull
|
||||||
#define CELL_ALPHA_OPAQUE 0x00000000ull
|
#define NCALPHA_OPAQUE 0x00000000ull
|
||||||
|
|
||||||
// if this bit is set, we are *not* using the default background color
|
// if this bit is set, we are *not* using the default background color
|
||||||
#define CELL_BGDEFAULT_MASK 0x0000000040000000ull
|
#define CELL_BGDEFAULT_MASK 0x0000000040000000ull
|
||||||
@ -248,7 +248,7 @@ ncchannel_set_alpha(unsigned* channel, unsigned alpha){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*channel = alpha | (*channel & ~CELL_BG_ALPHA_MASK);
|
*channel = alpha | (*channel & ~CELL_BG_ALPHA_MASK);
|
||||||
if(alpha != CELL_ALPHA_OPAQUE){
|
if(alpha != NCALPHA_OPAQUE){
|
||||||
*channel |= CELL_BGDEFAULT_MASK;
|
*channel |= CELL_BGDEFAULT_MASK;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -261,7 +261,7 @@ ncchannel_set_palindex(uint32_t* channel, int idx){
|
|||||||
}
|
}
|
||||||
*channel |= CELL_BGDEFAULT_MASK;
|
*channel |= CELL_BGDEFAULT_MASK;
|
||||||
*channel |= CELL_BG_PALETTE;
|
*channel |= CELL_BG_PALETTE;
|
||||||
ncchannel_set_alpha(channel, CELL_ALPHA_OPAQUE);
|
ncchannel_set_alpha(channel, NCALPHA_OPAQUE);
|
||||||
*channel &= 0xff000000ull;
|
*channel &= 0xff000000ull;
|
||||||
*channel |= idx;
|
*channel |= idx;
|
||||||
return 0;
|
return 0;
|
||||||
@ -282,7 +282,7 @@ ncchannel_palindex_p(unsigned channel){
|
|||||||
// Mark the channel as using its default color, which also marks it opaque.
|
// Mark the channel as using its default color, which also marks it opaque.
|
||||||
static inline unsigned
|
static inline unsigned
|
||||||
ncchannel_set_default(unsigned* channel){
|
ncchannel_set_default(unsigned* channel){
|
||||||
return *channel &= ~(CELL_BGDEFAULT_MASK | CELL_ALPHA_HIGHCONTRAST);
|
return *channel &= ~(CELL_BGDEFAULT_MASK | NCALPHA_HIGHCONTRAST);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract the 32-bit background channel from a channel pair.
|
// Extract the 32-bit background channel from a channel pair.
|
||||||
@ -438,7 +438,7 @@ ncchannels_set_bg_rgb8_clipped(uint64_t* channels, int r, int g, int b){
|
|||||||
// Set the 2-bit alpha component of the background channel.
|
// Set the 2-bit alpha component of the background channel.
|
||||||
static inline int
|
static inline int
|
||||||
ncchannels_set_bg_alpha(uint64_t* channels, unsigned alpha){
|
ncchannels_set_bg_alpha(uint64_t* channels, unsigned alpha){
|
||||||
if(alpha == CELL_ALPHA_HIGHCONTRAST){ // forbidden for background alpha
|
if(alpha == NCALPHA_HIGHCONTRAST){ // forbidden for background alpha
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
uint32_t channel = ncchannels_bchannel(*channels);
|
uint32_t channel = ncchannels_bchannel(*channels);
|
||||||
@ -2480,7 +2480,7 @@ API ALLOC struct ncvisual* ncvisual_from_plane(const struct ncplane* n,
|
|||||||
int leny, int lenx);
|
int leny, int lenx);
|
||||||
|
|
||||||
#define NCVISUAL_OPTION_NODEGRADE 0x0001ull // fail rather than degrade
|
#define NCVISUAL_OPTION_NODEGRADE 0x0001ull // fail rather than degrade
|
||||||
#define NCVISUAL_OPTION_BLEND 0x0002ull // use CELL_ALPHA_BLEND with visual
|
#define NCVISUAL_OPTION_BLEND 0x0002ull // use NCALPHA_BLEND with visual
|
||||||
#define NCVISUAL_OPTION_HORALIGNED 0x0004ull // x is an alignment, not absolute
|
#define NCVISUAL_OPTION_HORALIGNED 0x0004ull // x is an alignment, not absolute
|
||||||
#define NCVISUAL_OPTION_VERALIGNED 0x0008ull // y is an alignment, not absolute
|
#define NCVISUAL_OPTION_VERALIGNED 0x0008ull // y is an alignment, not absolute
|
||||||
#define NCVISUAL_OPTION_ADDALPHA 0x0010ull // transcolor is in effect
|
#define NCVISUAL_OPTION_ADDALPHA 0x0010ull // transcolor is in effect
|
||||||
@ -4316,6 +4316,11 @@ typedef ncpalette palette256;
|
|||||||
|
|
||||||
typedef nccell cell; // FIXME backwards-compat, remove in ABI3
|
typedef nccell cell; // FIXME backwards-compat, remove in ABI3
|
||||||
|
|
||||||
|
#define CELL_ALPHA_HIGHCONTRAST NCALPHA_HIGHCONTRAST
|
||||||
|
#define CELL_ALPHA_TRANSPARENT NCALPHA_TRANSPARENT
|
||||||
|
#define CELL_ALPHA_BLEND NCALPHA_BLEND
|
||||||
|
#define CELL_ALPHA_OPAQUE NCALPHA_OPAQUE
|
||||||
|
|
||||||
#undef ALLOC
|
#undef ALLOC
|
||||||
#undef API
|
#undef API
|
||||||
|
|
||||||
|
@ -40,10 +40,10 @@ pub use ffi::{
|
|||||||
// cell,
|
// cell,
|
||||||
//
|
//
|
||||||
// // constants
|
// // constants
|
||||||
// CELL_ALPHA_BLEND,
|
// NCALPHA_BLEND,
|
||||||
// CELL_ALPHA_HIGHCONTRAST,
|
// NCALPHA_HIGHCONTRAST,
|
||||||
// CELL_ALPHA_OPAQUE,
|
// NCALPHA_OPAQUE,
|
||||||
// CELL_ALPHA_TRANSPARENT,
|
// NCALPHA_TRANSPARENT,
|
||||||
// CELL_BGDEFAULT_MASK,
|
// CELL_BGDEFAULT_MASK,
|
||||||
// CELL_BG_ALPHA_MASK,
|
// CELL_BG_ALPHA_MASK,
|
||||||
// CELL_BG_PALETTE,
|
// CELL_BG_PALETTE,
|
||||||
|
@ -227,7 +227,7 @@ impl NcCell {
|
|||||||
/// Sets the background [NcPaletteIndex].
|
/// Sets the background [NcPaletteIndex].
|
||||||
///
|
///
|
||||||
/// Also sets [NCCELL_BG_PALETTE][crate::NCCELL_BG_PALETTE] and
|
/// Also sets [NCCELL_BG_PALETTE][crate::NCCELL_BG_PALETTE] and
|
||||||
/// [NCCELL_ALPHA_OPAQUE][crate::NCCELL_ALPHA_OPAQUE], and clears out
|
/// [NCNCALPHA_OPAQUE][crate::NCNCALPHA_OPAQUE], and clears out
|
||||||
/// [NCCELL_BGDEFAULT_MASK][crate::NCCELL_BGDEFAULT_MASK].
|
/// [NCCELL_BGDEFAULT_MASK][crate::NCCELL_BGDEFAULT_MASK].
|
||||||
///
|
///
|
||||||
/// *C style function: [nccell_set_bg_palindex()][crate::nccell_set_bg_palindex].*
|
/// *C style function: [nccell_set_bg_palindex()][crate::nccell_set_bg_palindex].*
|
||||||
@ -267,7 +267,7 @@ impl NcCell {
|
|||||||
/// Sets the foreground [NcPaletteIndex].
|
/// Sets the foreground [NcPaletteIndex].
|
||||||
///
|
///
|
||||||
/// Also sets [NCCELL_FG_PALETTE][crate::NCCELL_FG_PALETTE] and
|
/// Also sets [NCCELL_FG_PALETTE][crate::NCCELL_FG_PALETTE] and
|
||||||
/// [NCCELL_ALPHA_OPAQUE][crate::NCCELL_ALPHA_OPAQUE], and clears out
|
/// [NCNCALPHA_OPAQUE][crate::NCNCALPHA_OPAQUE], and clears out
|
||||||
/// [NCCELL_BGDEFAULT_MASK][crate::NCCELL_BGDEFAULT_MASK].
|
/// [NCCELL_BGDEFAULT_MASK][crate::NCCELL_BGDEFAULT_MASK].
|
||||||
///
|
///
|
||||||
/// *C style function: [nccell_set_fg_palindex()][crate::nccell_set_fg_palindex].*
|
/// *C style function: [nccell_set_fg_palindex()][crate::nccell_set_fg_palindex].*
|
||||||
|
@ -161,19 +161,19 @@ pub use reimplemented::*;
|
|||||||
/// have two bits of inverted alpha. The actual grapheme written to a cell is
|
/// have two bits of inverted alpha. The actual grapheme written to a cell is
|
||||||
/// the topmost non-zero grapheme.
|
/// the topmost non-zero grapheme.
|
||||||
///
|
///
|
||||||
/// - If its alpha is 00 ([`NCCELL_ALPHA_OPAQUE`]) its foreground color is used unchanged.
|
/// - If its alpha is 00 ([`NCNCALPHA_OPAQUE`]) its foreground color is used unchanged.
|
||||||
///
|
///
|
||||||
/// - If its alpha is 10 ([`NCCELL_ALPHA_TRANSPARENT`]) its foreground color is derived
|
/// - If its alpha is 10 ([`NCNCALPHA_TRANSPARENT`]) its foreground color is derived
|
||||||
/// entirely from cells underneath it.
|
/// entirely from cells underneath it.
|
||||||
///
|
///
|
||||||
/// - If its alpha is 01 ([`NCCELL_ALPHA_BLEND`]) the result will be a composite.
|
/// - If its alpha is 01 ([`NCNCALPHA_BLEND`]) the result will be a composite.
|
||||||
///
|
///
|
||||||
/// Likewise for the background. If the bottom of a coordinate's zbuffer is
|
/// Likewise for the background. If the bottom of a coordinate's zbuffer is
|
||||||
/// reached with a cumulative alpha of zero, the default is used. In this way,
|
/// reached with a cumulative alpha of zero, the default is used. In this way,
|
||||||
/// a terminal configured with transparent background can be supported through
|
/// a terminal configured with transparent background can be supported through
|
||||||
/// multiple occluding ncplanes.
|
/// multiple occluding ncplanes.
|
||||||
///
|
///
|
||||||
/// A foreground alpha of 11 ([`NCCELL_ALPHA_HIGHCONTRAST`]) requests high-contrast
|
/// A foreground alpha of 11 ([`NCNCALPHA_HIGHCONTRAST`]) requests high-contrast
|
||||||
/// text (relative to the computed background).
|
/// text (relative to the computed background).
|
||||||
/// A background alpha of 11 is currently forbidden.
|
/// A background alpha of 11 is currently forbidden.
|
||||||
///
|
///
|
||||||
@ -206,21 +206,21 @@ use crate::{NcAlphaBits, NcChannel, NcPlane};
|
|||||||
/// [`NcAlphaBits`] bits indicating
|
/// [`NcAlphaBits`] bits indicating
|
||||||
/// [`NcCell`]'s foreground or background color will be a composite between
|
/// [`NcCell`]'s foreground or background color will be a composite between
|
||||||
/// its color and the `NcCell`s' corresponding colors underneath it
|
/// its color and the `NcCell`s' corresponding colors underneath it
|
||||||
pub const NCCELL_ALPHA_BLEND: u32 = crate::bindings::ffi::CELL_ALPHA_BLEND;
|
pub const NCNCALPHA_BLEND: u32 = crate::bindings::ffi::NCALPHA_BLEND;
|
||||||
|
|
||||||
/// [`NcAlphaBits`] bits indicating
|
/// [`NcAlphaBits`] bits indicating
|
||||||
/// [`NcCell`]'s foreground color will be high-contrast (relative to the
|
/// [`NcCell`]'s foreground color will be high-contrast (relative to the
|
||||||
/// computed background). Background cannot be highcontrast
|
/// computed background). Background cannot be highcontrast
|
||||||
pub const NCCELL_ALPHA_HIGHCONTRAST: u32 = crate::bindings::ffi::CELL_ALPHA_HIGHCONTRAST;
|
pub const NCNCALPHA_HIGHCONTRAST: u32 = crate::bindings::ffi::NCALPHA_HIGHCONTRAST;
|
||||||
|
|
||||||
/// [`NcAlphaBits`] bits indicating
|
/// [`NcAlphaBits`] bits indicating
|
||||||
/// [`NcCell`]'s foreground or background color is used unchanged
|
/// [`NcCell`]'s foreground or background color is used unchanged
|
||||||
pub const NCCELL_ALPHA_OPAQUE: u32 = crate::bindings::ffi::CELL_ALPHA_OPAQUE;
|
pub const NCNCALPHA_OPAQUE: u32 = crate::bindings::ffi::NCALPHA_OPAQUE;
|
||||||
|
|
||||||
/// [`NcAlphaBits`] bits indicating
|
/// [`NcAlphaBits`] bits indicating
|
||||||
/// [`NcCell`]'s foreground or background color is derived entirely from the
|
/// [`NcCell`]'s foreground or background color is derived entirely from the
|
||||||
/// `NcCell`s underneath it
|
/// `NcCell`s underneath it
|
||||||
pub const NCCELL_ALPHA_TRANSPARENT: u32 = crate::bindings::ffi::CELL_ALPHA_TRANSPARENT;
|
pub const NCNCALPHA_TRANSPARENT: u32 = crate::bindings::ffi::NCALPHA_TRANSPARENT;
|
||||||
|
|
||||||
/// If this bit is set, we are *not* using the default background color
|
/// If this bit is set, we are *not* using the default background color
|
||||||
///
|
///
|
||||||
|
@ -4,7 +4,7 @@ use libc::strcmp;
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cstring, nccell_release, NcAlphaBits, NcCell, NcChannel, NcChannelPair, NcColor, NcEgc,
|
cstring, nccell_release, NcAlphaBits, NcCell, NcChannel, NcChannelPair, NcColor, NcEgc,
|
||||||
NcIntResult, NcPaletteIndex, NcPlane, NcRgb, NcStyleMask, NCCELL_ALPHA_OPAQUE,
|
NcIntResult, NcPaletteIndex, NcPlane, NcRgb, NcStyleMask, NCNCALPHA_OPAQUE,
|
||||||
NCCELL_BGDEFAULT_MASK, NCCELL_BG_PALETTE, NCCELL_FGDEFAULT_MASK, NCCELL_FG_PALETTE,
|
NCCELL_BGDEFAULT_MASK, NCCELL_BG_PALETTE, NCCELL_FGDEFAULT_MASK, NCCELL_FG_PALETTE,
|
||||||
NCRESULT_ERR, NCRESULT_OK, NCSTYLE_MASK,
|
NCRESULT_ERR, NCRESULT_OK, NCSTYLE_MASK,
|
||||||
};
|
};
|
||||||
@ -208,7 +208,7 @@ pub const fn nccell_bg_palindex(cell: &NcCell) -> NcPaletteIndex {
|
|||||||
|
|
||||||
/// Sets an [NcCell]'s foreground [NcPaletteIndex].
|
/// Sets an [NcCell]'s foreground [NcPaletteIndex].
|
||||||
///
|
///
|
||||||
/// Also sets [NCCELL_FG_PALETTE] and [NCCELL_ALPHA_OPAQUE],
|
/// Also sets [NCCELL_FG_PALETTE] and [NCNCALPHA_OPAQUE],
|
||||||
/// and clears out [NCCELL_FGDEFAULT_MASK].
|
/// and clears out [NCCELL_FGDEFAULT_MASK].
|
||||||
///
|
///
|
||||||
/// *Method: NcCell.[set_fg_palindex()][NcCell#method.set_fg_palindex].*
|
/// *Method: NcCell.[set_fg_palindex()][NcCell#method.set_fg_palindex].*
|
||||||
@ -219,14 +219,14 @@ pub const fn nccell_bg_palindex(cell: &NcCell) -> NcPaletteIndex {
|
|||||||
pub fn nccell_set_fg_palindex(cell: &mut NcCell, index: NcPaletteIndex) {
|
pub fn nccell_set_fg_palindex(cell: &mut NcCell, index: NcPaletteIndex) {
|
||||||
cell.channels |= NCCELL_FGDEFAULT_MASK;
|
cell.channels |= NCCELL_FGDEFAULT_MASK;
|
||||||
cell.channels |= NCCELL_FG_PALETTE;
|
cell.channels |= NCCELL_FG_PALETTE;
|
||||||
nccell_set_fg_alpha(cell, NCCELL_ALPHA_OPAQUE);
|
nccell_set_fg_alpha(cell, NCNCALPHA_OPAQUE);
|
||||||
cell.channels &= 0xff000000ffffffff as NcChannelPair;
|
cell.channels &= 0xff000000ffffffff as NcChannelPair;
|
||||||
cell.channels |= (index as NcChannelPair) << 32;
|
cell.channels |= (index as NcChannelPair) << 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets an [NcCell]'s background [NcPaletteIndex].
|
/// Sets an [NcCell]'s background [NcPaletteIndex].
|
||||||
///
|
///
|
||||||
/// Also sets [NCCELL_BG_PALETTE] and [NCCELL_ALPHA_OPAQUE],
|
/// Also sets [NCCELL_BG_PALETTE] and [NCNCALPHA_OPAQUE],
|
||||||
/// and clears out [NCCELL_BGDEFAULT_MASK].
|
/// and clears out [NCCELL_BGDEFAULT_MASK].
|
||||||
///
|
///
|
||||||
/// *Method: NcCell.[set_bg_palindex()][NcCell#method.set_bg_palindex].*
|
/// *Method: NcCell.[set_bg_palindex()][NcCell#method.set_bg_palindex].*
|
||||||
@ -236,7 +236,7 @@ pub fn nccell_set_fg_palindex(cell: &mut NcCell, index: NcPaletteIndex) {
|
|||||||
pub fn nccell_set_bg_palindex(cell: &mut NcCell, index: NcPaletteIndex) {
|
pub fn nccell_set_bg_palindex(cell: &mut NcCell, index: NcPaletteIndex) {
|
||||||
cell.channels |= NCCELL_BGDEFAULT_MASK as NcChannelPair;
|
cell.channels |= NCCELL_BGDEFAULT_MASK as NcChannelPair;
|
||||||
cell.channels |= NCCELL_BG_PALETTE as NcChannelPair;
|
cell.channels |= NCCELL_BG_PALETTE as NcChannelPair;
|
||||||
nccell_set_bg_alpha(cell, NCCELL_ALPHA_OPAQUE);
|
nccell_set_bg_alpha(cell, NCNCALPHA_OPAQUE);
|
||||||
cell.channels &= 0xffffffffff000000;
|
cell.channels &= 0xffffffffff000000;
|
||||||
cell.channels |= index as NcChannelPair;
|
cell.channels |= index as NcChannelPair;
|
||||||
}
|
}
|
||||||
|
@ -41,11 +41,11 @@ fn alpha() {
|
|||||||
assert_eq![0, crate::nccell_fg_alpha(&c1)];
|
assert_eq![0, crate::nccell_fg_alpha(&c1)];
|
||||||
assert_eq![0, crate::nccell_bg_alpha(&c1)];
|
assert_eq![0, crate::nccell_bg_alpha(&c1)];
|
||||||
|
|
||||||
crate::nccell_set_fg_alpha(&mut c1, crate::NCCELL_ALPHA_TRANSPARENT);
|
crate::nccell_set_fg_alpha(&mut c1, crate::NCNCALPHA_TRANSPARENT);
|
||||||
assert_eq![crate::NCCELL_ALPHA_TRANSPARENT, crate::nccell_fg_alpha(&c1)];
|
assert_eq![crate::NCNCALPHA_TRANSPARENT, crate::nccell_fg_alpha(&c1)];
|
||||||
|
|
||||||
crate::nccell_set_bg_alpha(&mut c1, crate::NCCELL_ALPHA_BLEND);
|
crate::nccell_set_bg_alpha(&mut c1, crate::NCNCALPHA_BLEND);
|
||||||
assert_eq![crate::NCCELL_ALPHA_BLEND, crate::nccell_bg_alpha(&c1)];
|
assert_eq![crate::NCNCALPHA_BLEND, crate::nccell_bg_alpha(&c1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
NcAlphaBits, NcChannel, NcChannelPair, NcColor, NcPaletteIndex, NcRgb,
|
NcAlphaBits, NcChannel, NcChannelPair, NcColor, NcPaletteIndex, NcRgb,
|
||||||
NCCELL_ALPHA_HIGHCONTRAST, NCCELL_ALPHA_OPAQUE, NCCELL_BGDEFAULT_MASK, NCCELL_BG_PALETTE,
|
NCNCALPHA_HIGHCONTRAST, NCNCALPHA_OPAQUE, NCCELL_BGDEFAULT_MASK, NCCELL_BG_PALETTE,
|
||||||
NCCELL_BG_RGB_MASK, NCCELL_FGDEFAULT_MASK, NCCELL_FG_PALETTE, NCCHANNEL_ALPHA_MASK,
|
NCCELL_BG_RGB_MASK, NCCELL_FGDEFAULT_MASK, NCCELL_FG_PALETTE, NCCHANNEL_ALPHA_MASK,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ pub fn ncchannel_set_alpha(channel: &mut NcChannel, alpha: NcAlphaBits) {
|
|||||||
let alpha_clean = alpha & NCCHANNEL_ALPHA_MASK;
|
let alpha_clean = alpha & NCCHANNEL_ALPHA_MASK;
|
||||||
*channel = alpha_clean | (*channel & !NCCHANNEL_ALPHA_MASK);
|
*channel = alpha_clean | (*channel & !NCCHANNEL_ALPHA_MASK);
|
||||||
|
|
||||||
if alpha != NCCELL_ALPHA_OPAQUE {
|
if alpha != NCNCALPHA_OPAQUE {
|
||||||
// indicate that we are *not* using the default background color
|
// indicate that we are *not* using the default background color
|
||||||
*channel |= NCCELL_BGDEFAULT_MASK;
|
*channel |= NCCELL_BGDEFAULT_MASK;
|
||||||
}
|
}
|
||||||
@ -62,9 +62,9 @@ pub fn ncchannels_set_fg_alpha(channels: &mut NcChannelPair, alpha: NcAlphaBits)
|
|||||||
#[inline]
|
#[inline]
|
||||||
pub fn ncchannels_set_bg_alpha(channels: &mut NcChannelPair, alpha: NcAlphaBits) {
|
pub fn ncchannels_set_bg_alpha(channels: &mut NcChannelPair, alpha: NcAlphaBits) {
|
||||||
let mut alpha_clean = alpha;
|
let mut alpha_clean = alpha;
|
||||||
if alpha == NCCELL_ALPHA_HIGHCONTRAST {
|
if alpha == NCNCALPHA_HIGHCONTRAST {
|
||||||
// forbidden for background alpha, so makes it opaque
|
// forbidden for background alpha, so makes it opaque
|
||||||
alpha_clean = NCCELL_ALPHA_OPAQUE;
|
alpha_clean = NCNCALPHA_OPAQUE;
|
||||||
}
|
}
|
||||||
let mut channel = ncchannels_bchannel(*channels);
|
let mut channel = ncchannels_bchannel(*channels);
|
||||||
ncchannel_set_alpha(&mut channel, alpha_clean);
|
ncchannel_set_alpha(&mut channel, alpha_clean);
|
||||||
@ -345,7 +345,7 @@ pub const fn ncchannel_default_p(channel: NcChannel) -> bool {
|
|||||||
/// *Method: NcChannel.[set_default()][NcChannel#method.set_default]*
|
/// *Method: NcChannel.[set_default()][NcChannel#method.set_default]*
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn ncchannel_set_default(channel: &mut NcChannel) -> NcChannel {
|
pub fn ncchannel_set_default(channel: &mut NcChannel) -> NcChannel {
|
||||||
*channel &= !(NCCELL_BGDEFAULT_MASK | NCCELL_ALPHA_HIGHCONTRAST);
|
*channel &= !(NCCELL_BGDEFAULT_MASK | NCNCALPHA_HIGHCONTRAST);
|
||||||
*channel
|
*channel
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -491,7 +491,7 @@ pub fn ncchannels_bg_palindex_p(channels: NcChannelPair) -> bool {
|
|||||||
pub fn ncchannels_set_fg_palindex(channels: &mut NcChannelPair, index: NcPaletteIndex) {
|
pub fn ncchannels_set_fg_palindex(channels: &mut NcChannelPair, index: NcPaletteIndex) {
|
||||||
*channels |= NCCELL_FGDEFAULT_MASK;
|
*channels |= NCCELL_FGDEFAULT_MASK;
|
||||||
*channels |= NCCELL_FG_PALETTE as NcChannelPair;
|
*channels |= NCCELL_FG_PALETTE as NcChannelPair;
|
||||||
ncchannels_set_fg_alpha(channels, NCCELL_ALPHA_OPAQUE);
|
ncchannels_set_fg_alpha(channels, NCNCALPHA_OPAQUE);
|
||||||
*channels &= 0xff000000ffffffff as NcChannelPair;
|
*channels &= 0xff000000ffffffff as NcChannelPair;
|
||||||
*channels |= (index as NcChannelPair) << 32;
|
*channels |= (index as NcChannelPair) << 32;
|
||||||
}
|
}
|
||||||
@ -504,7 +504,7 @@ pub fn ncchannels_set_fg_palindex(channels: &mut NcChannelPair, index: NcPalette
|
|||||||
pub fn ncchannels_set_bg_palindex(channels: &mut NcChannelPair, index: NcPaletteIndex) {
|
pub fn ncchannels_set_bg_palindex(channels: &mut NcChannelPair, index: NcPaletteIndex) {
|
||||||
*channels |= NCCELL_BGDEFAULT_MASK as NcChannelPair;
|
*channels |= NCCELL_BGDEFAULT_MASK as NcChannelPair;
|
||||||
*channels |= NCCELL_BG_PALETTE as NcChannelPair;
|
*channels |= NCCELL_BG_PALETTE as NcChannelPair;
|
||||||
ncchannels_set_bg_alpha(channels, NCCELL_ALPHA_OPAQUE);
|
ncchannels_set_bg_alpha(channels, NCNCALPHA_OPAQUE);
|
||||||
*channels &= 0xffffffffff000000;
|
*channels &= 0xffffffffff000000;
|
||||||
*channels |= index as NcChannelPair;
|
*channels |= index as NcChannelPair;
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
use serial_test::serial;
|
use serial_test::serial;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
NcChannel, NcChannelPair, NCCELL_ALPHA_BLEND, NCCELL_ALPHA_HIGHCONTRAST, NCCELL_ALPHA_OPAQUE,
|
NcChannel, NcChannelPair, NCNCALPHA_BLEND, NCNCALPHA_HIGHCONTRAST, NCNCALPHA_OPAQUE,
|
||||||
NCCELL_ALPHA_TRANSPARENT,
|
NCNCALPHA_TRANSPARENT,
|
||||||
};
|
};
|
||||||
|
|
||||||
// NcChannel tests -------------------------------------------------------------
|
// NcChannel tests -------------------------------------------------------------
|
||||||
@ -89,10 +89,10 @@ fn channel_set() {
|
|||||||
#[serial]
|
#[serial]
|
||||||
fn channel_alpha() {
|
fn channel_alpha() {
|
||||||
let c: NcChannel = 0x112233;
|
let c: NcChannel = 0x112233;
|
||||||
assert_ne!(crate::ncchannel_alpha(c), NCCELL_ALPHA_TRANSPARENT);
|
assert_ne!(crate::ncchannel_alpha(c), NCNCALPHA_TRANSPARENT);
|
||||||
|
|
||||||
let c: NcChannel = 0x112233 | NCCELL_ALPHA_TRANSPARENT;
|
let c: NcChannel = 0x112233 | NCNCALPHA_TRANSPARENT;
|
||||||
assert_eq!(crate::ncchannel_alpha(c), NCCELL_ALPHA_TRANSPARENT);
|
assert_eq!(crate::ncchannel_alpha(c), NCNCALPHA_TRANSPARENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// sets the alpha component
|
/// sets the alpha component
|
||||||
@ -100,17 +100,17 @@ fn channel_alpha() {
|
|||||||
#[serial]
|
#[serial]
|
||||||
fn channel_set_alpha() {
|
fn channel_set_alpha() {
|
||||||
let mut c: NcChannel = 0x112233;
|
let mut c: NcChannel = 0x112233;
|
||||||
crate::ncchannel_set_alpha(&mut c, NCCELL_ALPHA_HIGHCONTRAST);
|
crate::ncchannel_set_alpha(&mut c, NCNCALPHA_HIGHCONTRAST);
|
||||||
assert_eq!(NCCELL_ALPHA_HIGHCONTRAST, crate::ncchannel_alpha(c));
|
assert_eq!(NCNCALPHA_HIGHCONTRAST, crate::ncchannel_alpha(c));
|
||||||
|
|
||||||
crate::ncchannel_set_alpha(&mut c, NCCELL_ALPHA_TRANSPARENT);
|
crate::ncchannel_set_alpha(&mut c, NCNCALPHA_TRANSPARENT);
|
||||||
assert_eq!(NCCELL_ALPHA_TRANSPARENT, crate::ncchannel_alpha(c));
|
assert_eq!(NCNCALPHA_TRANSPARENT, crate::ncchannel_alpha(c));
|
||||||
|
|
||||||
crate::ncchannel_set_alpha(&mut c, NCCELL_ALPHA_BLEND);
|
crate::ncchannel_set_alpha(&mut c, NCNCALPHA_BLEND);
|
||||||
assert_eq!(NCCELL_ALPHA_BLEND, crate::ncchannel_alpha(c));
|
assert_eq!(NCNCALPHA_BLEND, crate::ncchannel_alpha(c));
|
||||||
|
|
||||||
crate::ncchannel_set_alpha(&mut c, NCCELL_ALPHA_OPAQUE);
|
crate::ncchannel_set_alpha(&mut c, NCNCALPHA_OPAQUE);
|
||||||
assert_eq!(NCCELL_ALPHA_OPAQUE, crate::ncchannel_alpha(c));
|
assert_eq!(NCNCALPHA_OPAQUE, crate::ncchannel_alpha(c));
|
||||||
// TODO: CHECK for NCCELL_BGDEFAULT_MASK
|
// TODO: CHECK for NCCELL_BGDEFAULT_MASK
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ fn channel_set_default() {
|
|||||||
assert_eq!(true, crate::ncchannel_default_p(channel));
|
assert_eq!(true, crate::ncchannel_default_p(channel));
|
||||||
|
|
||||||
// If we change it from being opaque...
|
// If we change it from being opaque...
|
||||||
let mut channel_transp = channel | NCCELL_ALPHA_TRANSPARENT;
|
let mut channel_transp = channel | NCNCALPHA_TRANSPARENT;
|
||||||
assert_eq!(0x_20_112233, channel_transp); // the transparent bit is now set
|
assert_eq!(0x_20_112233, channel_transp); // the transparent bit is now set
|
||||||
|
|
||||||
crate::ncchannel_set_not_default(&mut channel_transp);
|
crate::ncchannel_set_not_default(&mut channel_transp);
|
||||||
@ -162,7 +162,7 @@ fn channel_default_p() {
|
|||||||
let mut c: NcChannel = 0x112233;
|
let mut c: NcChannel = 0x112233;
|
||||||
assert_eq!(true, crate::ncchannel_default_p(c));
|
assert_eq!(true, crate::ncchannel_default_p(c));
|
||||||
|
|
||||||
let _ = crate::ncchannel_set_alpha(&mut c, NCCELL_ALPHA_OPAQUE);
|
let _ = crate::ncchannel_set_alpha(&mut c, NCNCALPHA_OPAQUE);
|
||||||
assert_eq!(true, crate::ncchannel_default_p(c));
|
assert_eq!(true, crate::ncchannel_default_p(c));
|
||||||
|
|
||||||
crate::ncchannel_set(&mut c, 0x112233);
|
crate::ncchannel_set(&mut c, 0x112233);
|
||||||
|
@ -134,7 +134,7 @@ pub type NcRgba = u32;
|
|||||||
/// Treats as transparent the color specified in the `transcolor` field.
|
/// Treats as transparent the color specified in the `transcolor` field.
|
||||||
pub const NCVISUAL_OPTION_ADDALPHA: u32 = crate::bindings::ffi::NCVISUAL_OPTION_ADDALPHA;
|
pub const NCVISUAL_OPTION_ADDALPHA: u32 = crate::bindings::ffi::NCVISUAL_OPTION_ADDALPHA;
|
||||||
|
|
||||||
/// Uses [`NCCELL_ALPHA_BLEND`][crate::NCCELL_ALPHA_BLEND] with visual.
|
/// Uses [`NCNCALPHA_BLEND`][crate::NCNCALPHA_BLEND] with visual.
|
||||||
pub const NCVISUAL_OPTION_BLEND: u32 = crate::bindings::ffi::NCVISUAL_OPTION_BLEND;
|
pub const NCVISUAL_OPTION_BLEND: u32 = crate::bindings::ffi::NCVISUAL_OPTION_BLEND;
|
||||||
|
|
||||||
/// allows you to indicate that the n field of ncvisual_options refers not to
|
/// allows you to indicate that the n field of ncvisual_options refers not to
|
||||||
|
@ -165,8 +165,8 @@ int box_demo(struct notcurses* nc){
|
|||||||
struct ncplane* n = notcurses_stddim_yx(nc, &ylen, &xlen);
|
struct ncplane* n = notcurses_stddim_yx(nc, &ylen, &xlen);
|
||||||
ncplane_erase(n);
|
ncplane_erase(n);
|
||||||
uint64_t transchan = 0;
|
uint64_t transchan = 0;
|
||||||
ncchannels_set_bg_alpha(&transchan, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&transchan, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_fg_alpha(&transchan, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&transchan, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(n, "", 0, transchan);
|
ncplane_set_base(n, "", 0, transchan);
|
||||||
nccell ul = CELL_TRIVIAL_INITIALIZER, ll = CELL_TRIVIAL_INITIALIZER;
|
nccell ul = CELL_TRIVIAL_INITIALIZER, ll = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell lr = CELL_TRIVIAL_INITIALIZER, ur = CELL_TRIVIAL_INITIALIZER;
|
nccell lr = CELL_TRIVIAL_INITIALIZER, ur = CELL_TRIVIAL_INITIALIZER;
|
||||||
|
@ -52,8 +52,8 @@ int chunli_demo(struct notcurses* nc){
|
|||||||
int ret, dimx, dimy;
|
int ret, dimx, dimy;
|
||||||
notcurses_refresh(nc, &dimy, &dimx);
|
notcurses_refresh(nc, &dimy, &dimx);
|
||||||
nccell b = CELL_TRIVIAL_INITIALIZER;
|
nccell b = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell_set_fg_alpha(&b, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&b, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&b, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&b, NCALPHA_TRANSPARENT);
|
||||||
if( (ret = chunli_draw(nc, "bmp", CHUNS, &b)) ){
|
if( (ret = chunli_draw(nc, "bmp", CHUNS, &b)) ){
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -116,8 +116,8 @@ zoom_map(struct notcurses* nc, const char* map, int* ret){
|
|||||||
static int
|
static int
|
||||||
draw_eagle(struct ncplane* n, const char* sprite){
|
draw_eagle(struct ncplane* n, const char* sprite){
|
||||||
nccell bgc = CELL_TRIVIAL_INITIALIZER;
|
nccell bgc = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell_set_fg_alpha(&bgc, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&bgc, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&bgc, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&bgc, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base_cell(n, &bgc);
|
ncplane_set_base_cell(n, &bgc);
|
||||||
nccell_release(n, &bgc);
|
nccell_release(n, &bgc);
|
||||||
size_t s;
|
size_t s;
|
||||||
|
@ -75,7 +75,7 @@ int highcontrast_demo(struct notcurses* nc){
|
|||||||
}
|
}
|
||||||
const char motto[] = " high contrast text is evaluated relative to the solved background";
|
const char motto[] = " high contrast text is evaluated relative to the solved background";
|
||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_HIGHCONTRAST);
|
nccell_set_fg_alpha(&c, NCALPHA_HIGHCONTRAST);
|
||||||
unsigned total = 0, r = 0, g = 0, b = 0;
|
unsigned total = 0, r = 0, g = 0, b = 0;
|
||||||
for(int out = 0 ; out < totcells ; ++out){ // build up the initial screen
|
for(int out = 0 ; out < totcells ; ++out){ // build up the initial screen
|
||||||
scrcolors[out] = generate_next_color(&total, &r, &g, &b, STEP);
|
scrcolors[out] = generate_next_color(&total, &r, &g, &b, STEP);
|
||||||
@ -99,20 +99,20 @@ int highcontrast_demo(struct notcurses* nc){
|
|||||||
uint64_t iterns = totalns / (totcells / 2);
|
uint64_t iterns = totalns / (totcells / 2);
|
||||||
do{
|
do{
|
||||||
if(offset){
|
if(offset){
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_OPAQUE);
|
nccell_set_fg_alpha(&c, NCALPHA_OPAQUE);
|
||||||
const int f = offset - 1 + dimx;
|
const int f = offset - 1 + dimx;
|
||||||
const int l = totcells + dimx - offset;
|
const int l = totcells + dimx - offset;
|
||||||
ncplane_at_yx_cell(n, f / dimx, f % dimx, &c);
|
ncplane_at_yx_cell(n, f / dimx, f % dimx, &c);
|
||||||
nccell_set_fg_rgb(&c, 0x004000 + (16 * offset));
|
nccell_set_fg_rgb(&c, 0x004000 + (16 * offset));
|
||||||
nccell_set_bg_rgb(&c, 0);
|
nccell_set_bg_rgb(&c, 0);
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_OPAQUE);
|
nccell_set_fg_alpha(&c, NCALPHA_OPAQUE);
|
||||||
if(ncplane_putc_yx(n, f / dimx, f % dimx, &c) < 0){
|
if(ncplane_putc_yx(n, f / dimx, f % dimx, &c) < 0){
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
ncplane_at_yx_cell(n, l / dimx, l % dimx, &c);
|
ncplane_at_yx_cell(n, l / dimx, l % dimx, &c);
|
||||||
nccell_set_fg_rgb(&c, 0x004000 + (16 * offset));
|
nccell_set_fg_rgb(&c, 0x004000 + (16 * offset));
|
||||||
nccell_set_bg_rgb(&c, 0);
|
nccell_set_bg_rgb(&c, 0);
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_OPAQUE);
|
nccell_set_fg_alpha(&c, NCALPHA_OPAQUE);
|
||||||
if(ncplane_putc_yx(n, l / dimx, l % dimx, &c) < 0){
|
if(ncplane_putc_yx(n, l / dimx, l % dimx, &c) < 0){
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
@ -56,9 +56,9 @@ static struct ncplane* debug; // "debug info" modal popup
|
|||||||
static int
|
static int
|
||||||
hud_standard_bg_rgb(struct ncplane* n){
|
hud_standard_bg_rgb(struct ncplane* n){
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_rgb8(&channels, 0x80, 0x80, 0x80);
|
ncchannels_set_fg_rgb8(&channels, 0x80, 0x80, 0x80);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_rgb8(&channels, 0x80, 0x80, 0x80);
|
ncchannels_set_bg_rgb8(&channels, 0x80, 0x80, 0x80);
|
||||||
if(ncplane_set_base(n, "", 0, channels) >= 0){
|
if(ncplane_set_base(n, "", 0, channels) >= 0){
|
||||||
return -1;
|
return -1;
|
||||||
@ -114,7 +114,7 @@ debug_toggle(struct notcurses* nc){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_rgb(&channels, 0xffffe5);
|
ncchannels_set_bg_rgb(&channels, 0xffffe5);
|
||||||
ncplane_set_base(n, " ", 0, channels);
|
ncplane_set_base(n, " ", 0, channels);
|
||||||
ncplane_set_scrolling(n, true);
|
ncplane_set_scrolling(n, true);
|
||||||
@ -127,8 +127,8 @@ debug_toggle(struct notcurses* nc){
|
|||||||
}
|
}
|
||||||
for(int y = 0 ; y < ncplane_dim_y(n) ; ++y){
|
for(int y = 0 ; y < ncplane_dim_y(n) ; ++y){
|
||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
ncplane_putc_yx(n, y, ncplane_dim_x(n) - 1, &c);
|
ncplane_putc_yx(n, y, ncplane_dim_x(n) - 1, &c);
|
||||||
nccell_release(n, &c);
|
nccell_release(n, &c);
|
||||||
}
|
}
|
||||||
@ -159,14 +159,14 @@ about_toggle(struct notcurses* nc){
|
|||||||
struct ncplane* n = ncplane_create(notcurses_stdplane(nc), &nopts);
|
struct ncplane* n = ncplane_create(notcurses_stdplane(nc), &nopts);
|
||||||
// let the glyphs below show through, but only dimly
|
// let the glyphs below show through, but only dimly
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_rgb8(&channels, 0x0, 0x0, 0x0);
|
ncchannels_set_fg_rgb8(&channels, 0x0, 0x0, 0x0);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_rgb8(&channels, 0x0, 0x0, 0x0);
|
ncchannels_set_bg_rgb8(&channels, 0x0, 0x0, 0x0);
|
||||||
if(ncplane_set_base(n, "", 0, channels) >= 0){
|
if(ncplane_set_base(n, "", 0, channels) >= 0){
|
||||||
ncplane_set_fg_rgb(n, 0x11ffff);
|
ncplane_set_fg_rgb(n, 0x11ffff);
|
||||||
ncplane_set_bg_rgb(n, 0);
|
ncplane_set_bg_rgb(n, 0);
|
||||||
ncplane_set_bg_alpha(n, CELL_ALPHA_BLEND);
|
ncplane_set_bg_alpha(n, NCALPHA_BLEND);
|
||||||
ncplane_printf_aligned(n, 1, NCALIGN_CENTER, "notcurses-demo %s", notcurses_version());
|
ncplane_printf_aligned(n, 1, NCALIGN_CENTER, "notcurses-demo %s", notcurses_version());
|
||||||
ncplane_printf_aligned(n, 3, NCALIGN_LEFT, " P toggle plot");
|
ncplane_printf_aligned(n, 3, NCALIGN_LEFT, " P toggle plot");
|
||||||
ncplane_printf_aligned(n, 3, NCALIGN_RIGHT, "toggle help Ctrl+U ");
|
ncplane_printf_aligned(n, 3, NCALIGN_RIGHT, "toggle help Ctrl+U ");
|
||||||
@ -318,11 +318,11 @@ struct ncmenu* menu_create(struct notcurses* nc){
|
|||||||
uint64_t sectionchannels = 0;
|
uint64_t sectionchannels = 0;
|
||||||
ncchannels_set_fg_rgb(§ionchannels, 0xffffff);
|
ncchannels_set_fg_rgb(§ionchannels, 0xffffff);
|
||||||
ncchannels_set_bg_rgb(§ionchannels, 0x000000);
|
ncchannels_set_bg_rgb(§ionchannels, 0x000000);
|
||||||
ncchannels_set_fg_alpha(§ionchannels, CELL_ALPHA_HIGHCONTRAST);
|
ncchannels_set_fg_alpha(§ionchannels, NCALPHA_HIGHCONTRAST);
|
||||||
ncchannels_set_bg_alpha(§ionchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(§ionchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_rgb(&headerchannels, 0xffffff);
|
ncchannels_set_fg_rgb(&headerchannels, 0xffffff);
|
||||||
ncchannels_set_bg_rgb(&headerchannels, 0x7f347f);
|
ncchannels_set_bg_rgb(&headerchannels, 0x7f347f);
|
||||||
ncchannels_set_bg_alpha(&headerchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&headerchannels, NCALPHA_BLEND);
|
||||||
const ncmenu_options mopts = {
|
const ncmenu_options mopts = {
|
||||||
.sections = sections,
|
.sections = sections,
|
||||||
.sectioncount = sizeof(sections) / sizeof(*sections),
|
.sectioncount = sizeof(sections) / sizeof(*sections),
|
||||||
@ -349,12 +349,12 @@ hud_refresh(struct ncplane* n){
|
|||||||
lr.channels = CHANNELS_RGB_INITIALIZER(0xf0, 0xc0, 0xc0, 0, 0, 0);
|
lr.channels = CHANNELS_RGB_INITIALIZER(0xf0, 0xc0, 0xc0, 0, 0, 0);
|
||||||
hl.channels = CHANNELS_RGB_INITIALIZER(0xf0, 0xc0, 0xc0, 0, 0, 0);
|
hl.channels = CHANNELS_RGB_INITIALIZER(0xf0, 0xc0, 0xc0, 0, 0, 0);
|
||||||
vl.channels = CHANNELS_RGB_INITIALIZER(0xf0, 0xc0, 0xc0, 0, 0, 0);
|
vl.channels = CHANNELS_RGB_INITIALIZER(0xf0, 0xc0, 0xc0, 0, 0, 0);
|
||||||
nccell_set_bg_alpha(&ul, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(&ul, NCALPHA_BLEND);
|
||||||
nccell_set_bg_alpha(&ur, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(&ur, NCALPHA_BLEND);
|
||||||
nccell_set_bg_alpha(&ll, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(&ll, NCALPHA_BLEND);
|
||||||
nccell_set_bg_alpha(&lr, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(&lr, NCALPHA_BLEND);
|
||||||
nccell_set_bg_alpha(&hl, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(&hl, NCALPHA_BLEND);
|
||||||
nccell_set_bg_alpha(&vl, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(&vl, NCALPHA_BLEND);
|
||||||
if(ncplane_perimeter(n, &ul, &ur, &ll, &lr, &hl, &vl, 0)){
|
if(ncplane_perimeter(n, &ul, &ur, &ll, &lr, &hl, &vl, 0)){
|
||||||
nccell_release(n, &ul); nccell_release(n, &ur); nccell_release(n, &hl);
|
nccell_release(n, &ul); nccell_release(n, &ur); nccell_release(n, &hl);
|
||||||
nccell_release(n, &ll); nccell_release(n, &lr); nccell_release(n, &vl);
|
nccell_release(n, &ll); nccell_release(n, &lr); nccell_release(n, &vl);
|
||||||
@ -385,9 +385,9 @@ hud_print_finished(elem* list){
|
|||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
ncplane_base(hud, &c);
|
ncplane_base(hud, &c);
|
||||||
ncplane_set_bg_rgb(hud, nccell_bg_rgb(&c));
|
ncplane_set_bg_rgb(hud, nccell_bg_rgb(&c));
|
||||||
ncplane_set_bg_alpha(hud, CELL_ALPHA_BLEND);
|
ncplane_set_bg_alpha(hud, NCALPHA_BLEND);
|
||||||
ncplane_set_fg_rgb(hud, 0xffffff);
|
ncplane_set_fg_rgb(hud, 0xffffff);
|
||||||
ncplane_set_fg_alpha(hud, CELL_ALPHA_OPAQUE);
|
ncplane_set_fg_alpha(hud, NCALPHA_OPAQUE);
|
||||||
nccell_release(hud, &c);
|
nccell_release(hud, &c);
|
||||||
if(ncplane_printf_yx(hud, line, 1, "%d", e->frames) < 0){
|
if(ncplane_printf_yx(hud, line, 1, "%d", e->frames) < 0){
|
||||||
return -1;
|
return -1;
|
||||||
@ -430,7 +430,7 @@ struct ncplane* hud_create(struct notcurses* nc){
|
|||||||
hud_refresh(n);
|
hud_refresh(n);
|
||||||
ncplane_set_fg_rgb(n, 0xffffff);
|
ncplane_set_fg_rgb(n, 0xffffff);
|
||||||
ncplane_set_bg_rgb(n, 0);
|
ncplane_set_bg_rgb(n, 0);
|
||||||
ncplane_set_bg_alpha(n, CELL_ALPHA_BLEND);
|
ncplane_set_bg_alpha(n, NCALPHA_BLEND);
|
||||||
if(hud_hidden){
|
if(hud_hidden){
|
||||||
ncplane_reparent(n, n);
|
ncplane_reparent(n, n);
|
||||||
}
|
}
|
||||||
@ -598,9 +598,9 @@ int demo_render(struct notcurses* nc){
|
|||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
ncplane_base(hud, &c);
|
ncplane_base(hud, &c);
|
||||||
ncplane_set_bg_rgb(hud, nccell_bg_rgb(&c));
|
ncplane_set_bg_rgb(hud, nccell_bg_rgb(&c));
|
||||||
ncplane_set_bg_alpha(hud, CELL_ALPHA_BLEND);
|
ncplane_set_bg_alpha(hud, NCALPHA_BLEND);
|
||||||
ncplane_set_fg_rgb(hud, 0x80d0ff);
|
ncplane_set_fg_rgb(hud, 0x80d0ff);
|
||||||
ncplane_set_fg_alpha(hud, CELL_ALPHA_OPAQUE);
|
ncplane_set_fg_alpha(hud, NCALPHA_OPAQUE);
|
||||||
nccell_release(hud, &c);
|
nccell_release(hud, &c);
|
||||||
ncplane_on_styles(hud, NCSTYLE_BOLD);
|
ncplane_on_styles(hud, NCSTYLE_BOLD);
|
||||||
if(ncplane_printf_yx(hud, 1, 1, "%d", elems->frames) < 0){
|
if(ncplane_printf_yx(hud, 1, 1, "%d", elems->frames) < 0){
|
||||||
@ -648,9 +648,9 @@ int fpsgraph_init(struct notcurses* nc){
|
|||||||
}
|
}
|
||||||
uint32_t style = 0;
|
uint32_t style = 0;
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_rgb(&channels, 0x201020);
|
ncchannels_set_fg_rgb(&channels, 0x201020);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_rgb(&channels, 0x201020);
|
ncchannels_set_bg_rgb(&channels, 0x201020);
|
||||||
ncplane_set_base(newp, "", style, channels);
|
ncplane_set_base(newp, "", style, channels);
|
||||||
ncplot_options opts;
|
ncplot_options opts;
|
||||||
@ -663,10 +663,10 @@ int fpsgraph_init(struct notcurses* nc){
|
|||||||
opts.title = "frames per semisecond";
|
opts.title = "frames per semisecond";
|
||||||
ncchannels_set_fg_rgb8(&opts.minchannels, 0x80, 0x80, 0xff);
|
ncchannels_set_fg_rgb8(&opts.minchannels, 0x80, 0x80, 0xff);
|
||||||
ncchannels_set_bg_rgb(&opts.minchannels, 0x201020);
|
ncchannels_set_bg_rgb(&opts.minchannels, 0x201020);
|
||||||
ncchannels_set_bg_alpha(&opts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&opts.minchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_rgb8(&opts.maxchannels, 0x80, 0xff, 0x80);
|
ncchannels_set_fg_rgb8(&opts.maxchannels, 0x80, 0xff, 0x80);
|
||||||
ncchannels_set_bg_rgb(&opts.maxchannels, 0x201020);
|
ncchannels_set_bg_rgb(&opts.maxchannels, 0x201020);
|
||||||
ncchannels_set_bg_alpha(&opts.maxchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&opts.maxchannels, NCALPHA_BLEND);
|
||||||
// takes ownership of newp on all paths
|
// takes ownership of newp on all paths
|
||||||
struct ncuplot* fpsplot = ncuplot_create(newp, &opts, 0, 0);
|
struct ncuplot* fpsplot = ncuplot_create(newp, &opts, 0, 0);
|
||||||
if(!fpsplot){
|
if(!fpsplot){
|
||||||
|
@ -18,8 +18,8 @@ visualize(struct notcurses* nc, struct ncvisual* ncv){
|
|||||||
ncplane_set_bg_rgb(stdn, 0);
|
ncplane_set_bg_rgb(stdn, 0);
|
||||||
ncplane_set_styles(stdn, NCSTYLE_BOLD);
|
ncplane_set_styles(stdn, NCSTYLE_BOLD);
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(stdn, "", 0, channels);
|
ncplane_set_base(stdn, "", 0, channels);
|
||||||
for(size_t i = 0 ; i < sizeof(bs) / sizeof(*bs) ; ++i){
|
for(size_t i = 0 ; i < sizeof(bs) / sizeof(*bs) ; ++i){
|
||||||
struct ncvisual_options vopts = {
|
struct ncvisual_options vopts = {
|
||||||
|
@ -112,8 +112,8 @@ static const char* luigis[] = {
|
|||||||
static int
|
static int
|
||||||
draw_luigi(struct ncplane* n, const char* sprite){
|
draw_luigi(struct ncplane* n, const char* sprite){
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(n, "", 0, channels);
|
ncplane_set_base(n, "", 0, channels);
|
||||||
size_t s;
|
size_t s;
|
||||||
int sbytes;
|
int sbytes;
|
||||||
@ -197,8 +197,8 @@ int luigi_demo(struct notcurses* nc){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
struct ncplane* wmplane = ncvisual_render(nc, wmncv, NULL);
|
struct ncplane* wmplane = ncvisual_render(nc, wmncv, NULL);
|
||||||
if(wmplane == NULL){
|
if(wmplane == NULL){
|
||||||
ncvisual_destroy(wmncv);
|
ncvisual_destroy(wmncv);
|
||||||
|
@ -95,8 +95,8 @@ videothread(void* vnc){
|
|||||||
return PTHREAD_CANCELED;
|
return PTHREAD_CANCELED;
|
||||||
}
|
}
|
||||||
uint64_t trans_channel = 0;
|
uint64_t trans_channel = 0;
|
||||||
ncchannels_set_bg_alpha(&trans_channel, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&trans_channel, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_fg_alpha(&trans_channel, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&trans_channel, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(apiap, "", 0, trans_channel);
|
ncplane_set_base(apiap, "", 0, trans_channel);
|
||||||
ncplane_set_fg_rgb8(apiap, 0xc0, 0x40, 0x80);
|
ncplane_set_fg_rgb8(apiap, 0xc0, 0x40, 0x80);
|
||||||
ncplane_set_bg_rgb8(apiap, 0, 0, 0);
|
ncplane_set_bg_rgb8(apiap, 0, 0, 0);
|
||||||
@ -138,7 +138,7 @@ outro_message(struct notcurses* nc, int* rows, int* cols){
|
|||||||
ncplane_dim_yx(non, rows, cols);
|
ncplane_dim_yx(non, rows, cols);
|
||||||
int ybase = 0;
|
int ybase = 0;
|
||||||
// bevel the upper corners
|
// bevel the upper corners
|
||||||
if(ncplane_set_bg_alpha(non, CELL_ALPHA_TRANSPARENT)){
|
if(ncplane_set_bg_alpha(non, NCALPHA_TRANSPARENT)){
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if(ncplane_putchar_yx(non, ybase, 0, ' ') < 0 || ncplane_putchar(non, ' ') < 0){
|
if(ncplane_putchar_yx(non, ybase, 0, ' ') < 0 || ncplane_putchar(non, ' ') < 0){
|
||||||
@ -160,7 +160,7 @@ outro_message(struct notcurses* nc, int* rows, int* cols){
|
|||||||
if(ncplane_set_bg_rgb8(non, 0, 180, 180)){
|
if(ncplane_set_bg_rgb8(non, 0, 180, 180)){
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if(ncplane_set_bg_alpha(non, CELL_ALPHA_BLEND)){
|
if(ncplane_set_bg_alpha(non, NCALPHA_BLEND)){
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ncplane_on_styles(non, NCSTYLE_BOLD);
|
ncplane_on_styles(non, NCSTYLE_BOLD);
|
||||||
|
@ -219,11 +219,11 @@ ncreel_demo_core(struct notcurses* nc){
|
|||||||
ncchannels_set_fg_rgb8(&popts.borderchan, 136, 23, 152);
|
ncchannels_set_fg_rgb8(&popts.borderchan, 136, 23, 152);
|
||||||
ncchannels_set_bg_rgb8(&popts.borderchan, 0, 0, 0);
|
ncchannels_set_bg_rgb8(&popts.borderchan, 0, 0, 0);
|
||||||
uint64_t bgchannels = 0;
|
uint64_t bgchannels = 0;
|
||||||
if(ncchannels_set_fg_alpha(&bgchannels, CELL_ALPHA_TRANSPARENT)){
|
if(ncchannels_set_fg_alpha(&bgchannels, NCALPHA_TRANSPARENT)){
|
||||||
ncplane_destroy(n);
|
ncplane_destroy(n);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if(ncchannels_set_bg_alpha(&bgchannels, CELL_ALPHA_TRANSPARENT)){
|
if(ncchannels_set_bg_alpha(&bgchannels, NCALPHA_TRANSPARENT)){
|
||||||
ncplane_destroy(n);
|
ncplane_destroy(n);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -41,8 +41,8 @@ legend(struct notcurses* nc, const char* msg){
|
|||||||
}
|
}
|
||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell_set_fg_rgb8(&c, 0, 0, 0); // darken surrounding characters by half
|
nccell_set_fg_rgb8(&c, 0, 0, 0); // darken surrounding characters by half
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_BLEND);
|
nccell_set_fg_alpha(&c, NCALPHA_BLEND);
|
||||||
nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT); // don't touch background
|
nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT); // don't touch background
|
||||||
if(ncplane_set_base_cell(n, &c)){
|
if(ncplane_set_base_cell(n, &c)){
|
||||||
ncplane_destroy(n);
|
ncplane_destroy(n);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -150,7 +150,7 @@ slidepanel(struct notcurses* nc, struct ncplane* stdn){
|
|||||||
|
|
||||||
// Next, we set our foreground transparent, allowing characters underneath to
|
// Next, we set our foreground transparent, allowing characters underneath to
|
||||||
// be seen in their natural colors. Our background remains opaque+default.
|
// be seen in their natural colors. Our background remains opaque+default.
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base_cell(n, &c);
|
ncplane_set_base_cell(n, &c);
|
||||||
clock_gettime(CLOCK_MONOTONIC, &cur);
|
clock_gettime(CLOCK_MONOTONIC, &cur);
|
||||||
deadlinens = timespec_to_ns(&cur) + timespec_to_ns(&demodelay);
|
deadlinens = timespec_to_ns(&cur) + timespec_to_ns(&demodelay);
|
||||||
@ -165,7 +165,7 @@ slidepanel(struct notcurses* nc, struct ncplane* stdn){
|
|||||||
// Set the foreground color, setting it to blend. We should get the underlying
|
// Set the foreground color, setting it to blend. We should get the underlying
|
||||||
// glyphs in a blended color, with the default background color.
|
// glyphs in a blended color, with the default background color.
|
||||||
nccell_set_fg_rgb(&c, 0x80c080);
|
nccell_set_fg_rgb(&c, 0x80c080);
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_BLEND);
|
nccell_set_fg_alpha(&c, NCALPHA_BLEND);
|
||||||
ncplane_set_base_cell(n, &c);
|
ncplane_set_base_cell(n, &c);
|
||||||
clock_gettime(CLOCK_MONOTONIC, &cur);
|
clock_gettime(CLOCK_MONOTONIC, &cur);
|
||||||
l = legend(nc, "default background, fg blended, no glyph");
|
l = legend(nc, "default background, fg blended, no glyph");
|
||||||
@ -180,7 +180,7 @@ slidepanel(struct notcurses* nc, struct ncplane* stdn){
|
|||||||
// Opaque foreground color. This produces underlying glyphs in the specified,
|
// Opaque foreground color. This produces underlying glyphs in the specified,
|
||||||
// fixed color, with the default background color.
|
// fixed color, with the default background color.
|
||||||
nccell_set_fg_rgb(&c, 0x80c080);
|
nccell_set_fg_rgb(&c, 0x80c080);
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_OPAQUE);
|
nccell_set_fg_alpha(&c, NCALPHA_OPAQUE);
|
||||||
ncplane_set_base_cell(n, &c);
|
ncplane_set_base_cell(n, &c);
|
||||||
clock_gettime(CLOCK_MONOTONIC, &cur);
|
clock_gettime(CLOCK_MONOTONIC, &cur);
|
||||||
l = legend(nc, "default background, fg colored opaque, no glyph");
|
l = legend(nc, "default background, fg colored opaque, no glyph");
|
||||||
@ -196,8 +196,8 @@ slidepanel(struct notcurses* nc, struct ncplane* stdn){
|
|||||||
// Our background color remains opaque default.
|
// Our background color remains opaque default.
|
||||||
nccell_load_char(n, &c, 'X');
|
nccell_load_char(n, &c, 'X');
|
||||||
nccell_set_fg_default(&c);
|
nccell_set_fg_default(&c);
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&c, CELL_ALPHA_OPAQUE);
|
nccell_set_bg_alpha(&c, NCALPHA_OPAQUE);
|
||||||
ncplane_set_base_cell(n, &c);
|
ncplane_set_base_cell(n, &c);
|
||||||
clock_gettime(CLOCK_MONOTONIC, &cur);
|
clock_gettime(CLOCK_MONOTONIC, &cur);
|
||||||
l = legend(nc, "default colors, fg transparent, print glyph");
|
l = legend(nc, "default colors, fg transparent, print glyph");
|
||||||
@ -211,8 +211,8 @@ slidepanel(struct notcurses* nc, struct ncplane* stdn){
|
|||||||
|
|
||||||
// Now we replace the characters with X's, but draw the foreground and
|
// Now we replace the characters with X's, but draw the foreground and
|
||||||
// background color from below us.
|
// background color from below us.
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base_cell(n, &c);
|
ncplane_set_base_cell(n, &c);
|
||||||
clock_gettime(CLOCK_MONOTONIC, &cur);
|
clock_gettime(CLOCK_MONOTONIC, &cur);
|
||||||
l = legend(nc, "all transparent, print glyph");
|
l = legend(nc, "all transparent, print glyph");
|
||||||
@ -226,8 +226,8 @@ slidepanel(struct notcurses* nc, struct ncplane* stdn){
|
|||||||
|
|
||||||
// Finally, we populate the plane for the first time with non-transparent
|
// Finally, we populate the plane for the first time with non-transparent
|
||||||
// characters. We blend, however, to show the underlying color in our glyphs.
|
// characters. We blend, however, to show the underlying color in our glyphs.
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_BLEND);
|
nccell_set_fg_alpha(&c, NCALPHA_BLEND);
|
||||||
nccell_set_bg_alpha(&c, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(&c, NCALPHA_BLEND);
|
||||||
nccell_set_fg_rgb(&c, 0x80c080);
|
nccell_set_fg_rgb(&c, 0x80c080);
|
||||||
nccell_set_bg_rgb(&c, 0x204080);
|
nccell_set_bg_rgb(&c, 0x204080);
|
||||||
ncplane_set_base_cell(n, &c);
|
ncplane_set_base_cell(n, &c);
|
||||||
|
@ -72,10 +72,10 @@ draw_block(struct ncplane* nn, uint32_t blockstart){
|
|||||||
nccell ll = CELL_TRIVIAL_INITIALIZER, lr = CELL_TRIVIAL_INITIALIZER;
|
nccell ll = CELL_TRIVIAL_INITIALIZER, lr = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell hl = CELL_TRIVIAL_INITIALIZER, vl = CELL_TRIVIAL_INITIALIZER;
|
nccell hl = CELL_TRIVIAL_INITIALIZER, vl = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccells_rounded_box(nn, 0, 0, &ul, &ur, &ll, &lr, &hl, &vl);
|
nccells_rounded_box(nn, 0, 0, &ul, &ur, &ll, &lr, &hl, &vl);
|
||||||
nccell_set_bg_alpha(&ul, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&ul, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&ur, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&ur, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&ll, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&ll, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&lr, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&lr, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_fg_rgb8(&ul, 0xea, 0xaa, 0x00);
|
nccell_set_fg_rgb8(&ul, 0xea, 0xaa, 0x00);
|
||||||
nccell_set_fg_rgb8(&ur, 0x00, 0x30, 0x57);
|
nccell_set_fg_rgb8(&ur, 0x00, 0x30, 0x57);
|
||||||
nccell_set_fg_rgb8(&ll, 0x00, 0x30, 0x57);
|
nccell_set_fg_rgb8(&ll, 0x00, 0x30, 0x57);
|
||||||
@ -248,7 +248,7 @@ int unicodeblocks_demo(struct notcurses* nc){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_rgb(&channels, 0x004000);
|
ncchannels_set_fg_rgb(&channels, 0x004000);
|
||||||
ncchannels_set_bg_rgb(&channels, 0x0);
|
ncchannels_set_bg_rgb(&channels, 0x0);
|
||||||
ncplane_set_base(header, "", 0, channels);
|
ncplane_set_base(header, "", 0, channels);
|
||||||
|
@ -70,13 +70,13 @@ legend(struct ncplane* stdn, int dimy, int dimx){
|
|||||||
.name = "lgd",
|
.name = "lgd",
|
||||||
};
|
};
|
||||||
struct ncplane* n = ncplane_create(stdn, &nopts);
|
struct ncplane* n = ncplane_create(stdn, &nopts);
|
||||||
ncplane_set_bg_alpha(n, CELL_ALPHA_TRANSPARENT);
|
ncplane_set_bg_alpha(n, NCALPHA_TRANSPARENT);
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(n, " ", 0, channels);
|
ncplane_set_base(n, " ", 0, channels);
|
||||||
ncplane_set_styles(n, NCSTYLE_BOLD);
|
ncplane_set_styles(n, NCSTYLE_BOLD);
|
||||||
ncplane_set_fg_rgb8(n, 0xff, 0xff, 0xff);
|
ncplane_set_fg_rgb8(n, 0xff, 0xff, 0xff);
|
||||||
ncplane_set_fg_alpha(n, CELL_ALPHA_HIGHCONTRAST);
|
ncplane_set_fg_alpha(n, NCALPHA_HIGHCONTRAST);
|
||||||
if(ncplane_putstr_aligned(n, 0, NCALIGN_CENTER, "target launch") <= 0){
|
if(ncplane_putstr_aligned(n, 0, NCALIGN_CENTER, "target launch") <= 0){
|
||||||
ncplane_destroy(n);
|
ncplane_destroy(n);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -136,8 +136,8 @@ view_images(struct notcurses* nc, struct ncplane* nstd, int dimy, int dimx){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(dsplane, "", 0, channels);
|
ncplane_set_base(dsplane, "", 0, channels);
|
||||||
ncvisual_destroy(ncv2);
|
ncvisual_destroy(ncv2);
|
||||||
demo_render(nc);
|
demo_render(nc);
|
||||||
|
@ -27,8 +27,8 @@ mathplane(struct notcurses* nc){
|
|||||||
struct ncplane* n = ncplane_create(stdn, &nopts);
|
struct ncplane* n = ncplane_create(stdn, &nopts);
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_rgb(&channels, 0x2b50c8); // metallic gold, inverted
|
ncchannels_set_fg_rgb(&channels, 0x2b50c8); // metallic gold, inverted
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(n, "", 0, channels);
|
ncplane_set_base(n, "", 0, channels);
|
||||||
ncplane_set_fg_rgb(n, 0xd4af37); // metallic gold
|
ncplane_set_fg_rgb(n, 0xd4af37); // metallic gold
|
||||||
ncplane_set_bg_rgb(n, 0x0);
|
ncplane_set_bg_rgb(n, 0x0);
|
||||||
@ -168,8 +168,8 @@ static int
|
|||||||
message(struct ncplane* n, int maxy, int maxx, int num, int total,
|
message(struct ncplane* n, int maxy, int maxx, int num, int total,
|
||||||
int bytes_out, int egs_out, int cols_out){
|
int bytes_out, int egs_out, int cols_out){
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(n, "", 0, channels);
|
ncplane_set_base(n, "", 0, channels);
|
||||||
ncplane_set_fg_rgb8(n, 255, 255, 255);
|
ncplane_set_fg_rgb8(n, 255, 255, 255);
|
||||||
ncplane_set_bg_rgb8(n, 32, 64, 32);
|
ncplane_set_bg_rgb8(n, 32, 64, 32);
|
||||||
|
@ -31,14 +31,14 @@ make_slider(struct notcurses* nc, int dimx){
|
|||||||
};
|
};
|
||||||
struct ncplane* n = ncplane_create(notcurses_stdplane(nc), &nopts);
|
struct ncplane* n = ncplane_create(notcurses_stdplane(nc), &nopts);
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(n, " ", 0, channels);
|
ncplane_set_base(n, " ", 0, channels);
|
||||||
ncplane_set_scrolling(n, true);
|
ncplane_set_scrolling(n, true);
|
||||||
int r = 0x5f;
|
int r = 0x5f;
|
||||||
int g = 0xaf;
|
int g = 0xaf;
|
||||||
int b = 0x84;
|
int b = 0x84;
|
||||||
ncplane_set_bg_alpha(n, CELL_ALPHA_TRANSPARENT);
|
ncplane_set_bg_alpha(n, NCALPHA_TRANSPARENT);
|
||||||
for(int x = 0 ; x < REPS ; ++x){
|
for(int x = 0 ; x < REPS ; ++x){
|
||||||
for(size_t l = 0 ; l < sizeof(leg) / sizeof(*leg) ; ++l){
|
for(size_t l = 0 ; l < sizeof(leg) / sizeof(*leg) ; ++l){
|
||||||
ncplane_set_fg_rgb8_clipped(n, r + 0x8 * l, g + 0x8 * l, b + 0x8 * l);
|
ncplane_set_fg_rgb8_clipped(n, r + 0x8 * l, g + 0x8 * l, b + 0x8 * l);
|
||||||
@ -169,8 +169,8 @@ int xray_demo(struct notcurses* nc){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
uint64_t stdc = 0;
|
uint64_t stdc = 0;
|
||||||
ncchannels_set_fg_alpha(&stdc, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&stdc, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&stdc, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&stdc, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(notcurses_stdplane(nc), "", 0, stdc);
|
ncplane_set_base(notcurses_stdplane(nc), "", 0, stdc);
|
||||||
// returns non-zero if the selected blitter isn't available
|
// returns non-zero if the selected blitter isn't available
|
||||||
if(notcurses_check_pixel_support(nc) < 1){
|
if(notcurses_check_pixel_support(nc) < 1){
|
||||||
|
@ -67,10 +67,10 @@ int yield_demo(struct notcurses* nc){
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
uint64_t basechan = 0;
|
uint64_t basechan = 0;
|
||||||
ncchannels_set_bg_alpha(&basechan, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&basechan, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_fg_alpha(&basechan, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&basechan, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(label, "", 0, basechan);
|
ncplane_set_base(label, "", 0, basechan);
|
||||||
ncplane_set_bg_alpha(label, CELL_ALPHA_TRANSPARENT);
|
ncplane_set_bg_alpha(label, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_fg_rgb8(label, 0xff, 0xff, 0xff);
|
ncplane_set_fg_rgb8(label, 0xff, 0xff, 0xff);
|
||||||
ncplane_set_styles(label, NCSTYLE_BOLD);
|
ncplane_set_styles(label, NCSTYLE_BOLD);
|
||||||
ncplane_printf_aligned(label, 0, NCALIGN_CENTER, "Yield: %03.1f%%", ((double)tfilled * 100) / threshold_painted);
|
ncplane_printf_aligned(label, 0, NCALIGN_CENTER, "Yield: %03.1f%%", ((double)tfilled * 100) / threshold_painted);
|
||||||
|
@ -75,8 +75,8 @@ multiselector_demo(struct ncplane* n, struct ncplane* under, int y){
|
|||||||
.titlechannels = CHANNELS_RGB_INITIALIZER(0x80, 0x80, 0xff, 0, 0, 0x20),
|
.titlechannels = CHANNELS_RGB_INITIALIZER(0x80, 0x80, 0xff, 0, 0, 0x20),
|
||||||
};
|
};
|
||||||
uint64_t bgchannels = CHANNELS_RGB_INITIALIZER(0, 0x40, 0, 0, 0x40, 0);
|
uint64_t bgchannels = CHANNELS_RGB_INITIALIZER(0, 0x40, 0, 0, 0x40, 0);
|
||||||
ncchannels_set_fg_alpha(&bgchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&bgchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_alpha(&bgchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&bgchannels, NCALPHA_BLEND);
|
||||||
struct ncplane_options nopts = {
|
struct ncplane_options nopts = {
|
||||||
.y = y,
|
.y = y,
|
||||||
.x = 0,
|
.x = 0,
|
||||||
@ -112,8 +112,8 @@ selector_demo(struct ncplane* n, struct ncplane* under, int dimx, int y){
|
|||||||
.titlechannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0x80, 0, 0, 0x20),
|
.titlechannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0x80, 0, 0, 0x20),
|
||||||
};
|
};
|
||||||
uint64_t bgchannels = CHANNELS_RGB_INITIALIZER(0, 0, 0x40, 0, 0, 0x40);
|
uint64_t bgchannels = CHANNELS_RGB_INITIALIZER(0, 0, 0x40, 0, 0, 0x40);
|
||||||
ncchannels_set_fg_alpha(&bgchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&bgchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_alpha(&bgchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&bgchannels, NCALPHA_BLEND);
|
||||||
struct ncplane_options nopts = {
|
struct ncplane_options nopts = {
|
||||||
.y = y,
|
.y = y,
|
||||||
.x = dimx,
|
.x = dimx,
|
||||||
@ -392,8 +392,8 @@ reader_demo(struct notcurses* nc){
|
|||||||
}
|
}
|
||||||
ncplane_set_fg_rgb8(rp, 0x20, 0xe0, 0xe0);
|
ncplane_set_fg_rgb8(rp, 0x20, 0xe0, 0xe0);
|
||||||
uint64_t echannels = 0;
|
uint64_t echannels = 0;
|
||||||
ncchannels_set_fg_alpha(&echannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&echannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_alpha(&echannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&echannels, NCALPHA_BLEND);
|
||||||
ncplane_set_base(rp, "", 0, echannels);
|
ncplane_set_base(rp, "", 0, echannels);
|
||||||
ncplane_set_scrolling(rp, true);
|
ncplane_set_scrolling(rp, true);
|
||||||
// Bring the selector left across the top, while raising the exposition
|
// Bring the selector left across the top, while raising the exposition
|
||||||
|
@ -71,12 +71,12 @@ tria_blit_ascii(ncplane* nc, int linesize, const void* data,
|
|||||||
c->channels = 0;
|
c->channels = 0;
|
||||||
c->stylemask = 0;
|
c->stylemask = 0;
|
||||||
if(blendcolors){
|
if(blendcolors){
|
||||||
nccell_set_bg_alpha(c, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(c, NCALPHA_BLEND);
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_BLEND);
|
nccell_set_fg_alpha(c, NCALPHA_BLEND);
|
||||||
}
|
}
|
||||||
if(rgba_trans_q(rgbbase_up, bargs->transcolor)){
|
if(rgba_trans_q(rgbbase_up, bargs->transcolor)){
|
||||||
nccell_set_bg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
cell_set_blitquadrants(c, 0, 0, 0, 0);
|
cell_set_blitquadrants(c, 0, 0, 0, 0);
|
||||||
}else{
|
}else{
|
||||||
nccell_set_fg_rgb8(c, rgbbase_up[0], rgbbase_up[1], rgbbase_up[2]);
|
nccell_set_fg_rgb8(c, rgbbase_up[0], rgbbase_up[1], rgbbase_up[2]);
|
||||||
@ -130,13 +130,13 @@ tria_blit(ncplane* nc, int linesize, const void* data, int leny, int lenx,
|
|||||||
c->channels = 0;
|
c->channels = 0;
|
||||||
c->stylemask = 0;
|
c->stylemask = 0;
|
||||||
if(blendcolors){
|
if(blendcolors){
|
||||||
nccell_set_bg_alpha(c, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(c, NCALPHA_BLEND);
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_BLEND);
|
nccell_set_fg_alpha(c, NCALPHA_BLEND);
|
||||||
}
|
}
|
||||||
if(rgba_trans_q(rgbbase_up, transcolor) || rgba_trans_q(rgbbase_down, transcolor)){
|
if(rgba_trans_q(rgbbase_up, transcolor) || rgba_trans_q(rgbbase_down, transcolor)){
|
||||||
nccell_set_bg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
if(rgba_trans_q(rgbbase_up, transcolor) && rgba_trans_q(rgbbase_down, transcolor)){
|
if(rgba_trans_q(rgbbase_up, transcolor) && rgba_trans_q(rgbbase_down, transcolor)){
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
}else if(rgba_trans_q(rgbbase_up, transcolor)){ // down has the color
|
}else if(rgba_trans_q(rgbbase_up, transcolor)){ // down has the color
|
||||||
if(pool_blit_direct(&nc->pool, c, "\u2584", strlen("\u2584"), 1) <= 0){
|
if(pool_blit_direct(&nc->pool, c, "\u2584", strlen("\u2584"), 1) <= 0){
|
||||||
return -1;
|
return -1;
|
||||||
@ -412,11 +412,11 @@ qtrans_check(nccell* c, unsigned blendcolors,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert(egc);
|
assert(egc);
|
||||||
nccell_set_bg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
if(*egc == '\0'){
|
if(*egc == '\0'){
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
}else if(blendcolors){
|
}else if(blendcolors){
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_BLEND);
|
nccell_set_fg_alpha(c, NCALPHA_BLEND);
|
||||||
}
|
}
|
||||||
//fprintf(stderr, "QBQ: 0x%x\n", cell_blittedquadrants(c));
|
//fprintf(stderr, "QBQ: 0x%x\n", cell_blittedquadrants(c));
|
||||||
return egc;
|
return egc;
|
||||||
@ -479,8 +479,8 @@ quadrant_blit(ncplane* nc, int linesize, const void* data, int leny, int lenx,
|
|||||||
cell_set_fchannel(c, fg);
|
cell_set_fchannel(c, fg);
|
||||||
cell_set_bchannel(c, bg);
|
cell_set_bchannel(c, bg);
|
||||||
if(blendcolors){
|
if(blendcolors){
|
||||||
nccell_set_bg_alpha(c, CELL_ALPHA_BLEND);
|
nccell_set_bg_alpha(c, NCALPHA_BLEND);
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_BLEND);
|
nccell_set_fg_alpha(c, NCALPHA_BLEND);
|
||||||
}
|
}
|
||||||
cell_set_blitquadrants(c, 1, 1, 1, 1);
|
cell_set_blitquadrants(c, 1, 1, 1, 1);
|
||||||
}
|
}
|
||||||
@ -590,8 +590,8 @@ sex_solver(const uint32_t rgbas[6], uint64_t* channels, unsigned blendcolors){
|
|||||||
//fprintf(stderr, "solved for best: %d (%u)\n", best, mindiff);
|
//fprintf(stderr, "solved for best: %d (%u)\n", best, mindiff);
|
||||||
assert(best >= 0 && best < 32);
|
assert(best >= 0 && best < 32);
|
||||||
if(blendcolors){
|
if(blendcolors){
|
||||||
ncchannels_set_fg_alpha(channels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_alpha(channels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(channels, NCALPHA_BLEND);
|
||||||
}
|
}
|
||||||
return sex[best];
|
return sex[best];
|
||||||
}
|
}
|
||||||
@ -629,20 +629,20 @@ sex_trans_check(cell* c, const uint32_t rgbas[6], unsigned blendcolors,
|
|||||||
if(transstring == 0){ // there was no transparency
|
if(transstring == 0){ // there was no transparency
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
nccell_set_bg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
// there were some transparent pixels. since they get priority, the foreground
|
// there were some transparent pixels. since they get priority, the foreground
|
||||||
// is just a general lerp across non-transparent pixels.
|
// is just a general lerp across non-transparent pixels.
|
||||||
const char* egc = sex[transstring];
|
const char* egc = sex[transstring];
|
||||||
nccell_set_bg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
//fprintf(stderr, "transtring: %u egc: %s\n", transtring, egc);
|
//fprintf(stderr, "transtring: %u egc: %s\n", transtring, egc);
|
||||||
if(*egc == ' '){ // entirely transparent
|
if(*egc == ' '){ // entirely transparent
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
return "";
|
return "";
|
||||||
}else{ // partially transparent, thus div >= 1
|
}else{ // partially transparent, thus div >= 1
|
||||||
//fprintf(stderr, "div: %u r: %u g: %u b: %u\n", div, r, g, b);
|
//fprintf(stderr, "div: %u r: %u g: %u b: %u\n", div, r, g, b);
|
||||||
cell_set_fchannel(c, generalerp(r, g, b, div));
|
cell_set_fchannel(c, generalerp(r, g, b, div));
|
||||||
if(blendcolors){
|
if(blendcolors){
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_BLEND);
|
nccell_set_fg_alpha(c, NCALPHA_BLEND);
|
||||||
}
|
}
|
||||||
cell_set_blitquadrants(c, !(transstring & 5u), !(transstring & 10u),
|
cell_set_blitquadrants(c, !(transstring & 5u), !(transstring & 10u),
|
||||||
!(transstring & 20u), !(transstring & 40u));
|
!(transstring & 20u), !(transstring & 40u));
|
||||||
@ -821,14 +821,14 @@ braille_blit(ncplane* nc, int linesize, const void* data, int leny, int lenx,
|
|||||||
c->channels = 0;
|
c->channels = 0;
|
||||||
c->stylemask = 0;
|
c->stylemask = 0;
|
||||||
if(blendcolors){
|
if(blendcolors){
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_BLEND);
|
nccell_set_fg_alpha(c, NCALPHA_BLEND);
|
||||||
}
|
}
|
||||||
// FIXME for now, we just sample, color-wise, and always draw crap.
|
// FIXME for now, we just sample, color-wise, and always draw crap.
|
||||||
// more complicated to do optimally than quadrants, for sure. ideally,
|
// more complicated to do optimally than quadrants, for sure. ideally,
|
||||||
// we only get one color in an area.
|
// we only get one color in an area.
|
||||||
nccell_set_bg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
if(!egcidx){
|
if(!egcidx){
|
||||||
nccell_set_fg_alpha(c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(c, NCALPHA_TRANSPARENT);
|
||||||
// FIXME else look for pairs of transparency!
|
// FIXME else look for pairs of transparency!
|
||||||
}else{
|
}else{
|
||||||
if(blends){
|
if(blends){
|
||||||
|
@ -26,9 +26,6 @@ tinfo_debug_caps(const tinfo* ti, FILE* debugfp, int rows, int cols,
|
|||||||
capyn(get_escape(ti, ESCAPE_BGOP)));
|
capyn(get_escape(ti, ESCAPE_BGOP)));
|
||||||
fprintf(debugfp, "%srows: %u cols: %u rpx: %u cpx: %u (%dx%d)\n",
|
fprintf(debugfp, "%srows: %u cols: %u rpx: %u cpx: %u (%dx%d)\n",
|
||||||
indent, rows, cols, ti->cellpixy, ti->cellpixx, rows * ti->cellpixy, cols * ti->cellpixx);
|
indent, rows, cols, ti->cellpixy, ti->cellpixx, rows * ti->cellpixy, cols * ti->cellpixx);
|
||||||
if(!ti->pixel_query_done){
|
|
||||||
fprintf(debugfp, "%sno bitmap graphics information yet\n", indent);
|
|
||||||
}else{
|
|
||||||
if(!ti->bitmap_supported){
|
if(!ti->bitmap_supported){
|
||||||
fprintf(debugfp, "%sdidn't detect bitmap graphics support\n", indent);
|
fprintf(debugfp, "%sdidn't detect bitmap graphics support\n", indent);
|
||||||
}else if(ti->sixel_maxy || ti->color_registers){
|
}else if(ti->sixel_maxy || ti->color_registers){
|
||||||
@ -37,7 +34,6 @@ tinfo_debug_caps(const tinfo* ti, FILE* debugfp, int rows, int cols,
|
|||||||
}else{
|
}else{
|
||||||
fprintf(debugfp, "%sRGBA pixel graphics supported\n", indent);
|
fprintf(debugfp, "%sRGBA pixel graphics supported\n", indent);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
fprintf(debugfp, "%sUTF8: %c quad: %c sex: %c braille: %c images: %c videos: %c\n",
|
fprintf(debugfp, "%sUTF8: %c quad: %c sex: %c braille: %c images: %c videos: %c\n",
|
||||||
indent, capbool(ti->utf8), capbool(ti->quadrants),
|
indent, capbool(ti->utf8), capbool(ti->quadrants),
|
||||||
capbool(ti->sextants), capbool(ti->braille),
|
capbool(ti->sextants), capbool(ti->braille),
|
||||||
|
@ -495,12 +495,12 @@ ncdirect_dump_plane(ncdirect* n, const ncplane* np, int xoff){
|
|||||||
if(egc == NULL){
|
if(egc == NULL){
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if(ncchannels_fg_alpha(channels) == CELL_ALPHA_TRANSPARENT){
|
if(ncchannels_fg_alpha(channels) == NCALPHA_TRANSPARENT){
|
||||||
ncdirect_set_fg_default(n);
|
ncdirect_set_fg_default(n);
|
||||||
}else{
|
}else{
|
||||||
ncdirect_set_fg_rgb(n, ncchannels_fg_rgb(channels));
|
ncdirect_set_fg_rgb(n, ncchannels_fg_rgb(channels));
|
||||||
}
|
}
|
||||||
if(ncchannels_bg_alpha(channels) == CELL_ALPHA_TRANSPARENT){
|
if(ncchannels_bg_alpha(channels) == NCALPHA_TRANSPARENT){
|
||||||
ncdirect_set_bg_default(n);
|
ncdirect_set_bg_default(n);
|
||||||
}else{
|
}else{
|
||||||
ncdirect_set_bg_rgb(n, ncchannels_bg_rgb(channels));
|
ncdirect_set_bg_rgb(n, ncchannels_bg_rgb(channels));
|
||||||
@ -1278,9 +1278,6 @@ int ncdirect_flush(const ncdirect* nc){
|
|||||||
}
|
}
|
||||||
|
|
||||||
int ncdirect_check_pixel_support(ncdirect* n){
|
int ncdirect_check_pixel_support(ncdirect* n){
|
||||||
if(query_term(&n->tcache, n->ctermfd)){
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(n->tcache.bitmap_supported){
|
if(n->tcache.bitmap_supported){
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -436,7 +436,7 @@ struct crender {
|
|||||||
// take this into account when solving the background color.
|
// take this into account when solving the background color.
|
||||||
unsigned blittedquads: 4;
|
unsigned blittedquads: 4;
|
||||||
unsigned damaged: 1; // only used in rasterization
|
unsigned damaged: 1; // only used in rasterization
|
||||||
// if CELL_ALPHA_HIGHCONTRAST is in play, we apply the HSV flip once the
|
// if NCALPHA_HIGHCONTRAST is in play, we apply the HSV flip once the
|
||||||
// background is locked in. set highcontrast to indicate this.
|
// background is locked in. set highcontrast to indicate this.
|
||||||
unsigned highcontrast: 1;
|
unsigned highcontrast: 1;
|
||||||
unsigned fgblends: 8;
|
unsigned fgblends: 8;
|
||||||
@ -606,11 +606,6 @@ int reset_term_attributes(const tinfo* ti, FILE* fp);
|
|||||||
|
|
||||||
void free_terminfo_cache(tinfo* ti);
|
void free_terminfo_cache(tinfo* ti);
|
||||||
|
|
||||||
// perform queries that require writing to the terminal, and reading a
|
|
||||||
// response, rather than simply reading the terminfo database. can result
|
|
||||||
// in a lengthy delay or even block if the terminal doesn't respond.
|
|
||||||
int query_term(tinfo* ti, int fd);
|
|
||||||
|
|
||||||
// if there were missing elements we wanted from terminfo, bitch about them here
|
// if there were missing elements we wanted from terminfo, bitch about them here
|
||||||
void warn_terminfo(const notcurses* nc, const tinfo* ti);
|
void warn_terminfo(const notcurses* nc, const tinfo* ti);
|
||||||
|
|
||||||
@ -1337,7 +1332,7 @@ cell_set_fchannel(nccell* cl, uint32_t channel){
|
|||||||
// Palette-indexed colors do not blend. Do not pass me palette-indexed channels!
|
// Palette-indexed colors do not blend. Do not pass me palette-indexed channels!
|
||||||
static inline unsigned
|
static inline unsigned
|
||||||
channels_blend(unsigned c1, unsigned c2, unsigned* blends){
|
channels_blend(unsigned c1, unsigned c2, unsigned* blends){
|
||||||
if(ncchannel_alpha(c2) == CELL_ALPHA_TRANSPARENT){
|
if(ncchannel_alpha(c2) == NCALPHA_TRANSPARENT){
|
||||||
return c1; // do *not* increment *blends
|
return c1; // do *not* increment *blends
|
||||||
}
|
}
|
||||||
bool c2default = ncchannel_default_p(c2);
|
bool c2default = ncchannel_default_p(c2);
|
||||||
|
@ -383,8 +383,8 @@ ncmenu* ncmenu_create(ncplane* n, const ncmenu_options* opts){
|
|||||||
ret->disablechannels = ret->sectionchannels;
|
ret->disablechannels = ret->sectionchannels;
|
||||||
ncchannels_set_fg_rgb(&ret->disablechannels, 0xdddddd);
|
ncchannels_set_fg_rgb(&ret->disablechannels, 0xdddddd);
|
||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base_cell(ret->ncp, &c);
|
ncplane_set_base_cell(ret->ncp, &c);
|
||||||
nccell_release(ret->ncp, &c);
|
nccell_release(ret->ncp, &c);
|
||||||
if(write_header(ret) == 0){
|
if(write_header(ret) == 0){
|
||||||
|
@ -983,9 +983,6 @@ recursive_lock_init(pthread_mutex_t *lock){
|
|||||||
}
|
}
|
||||||
|
|
||||||
int notcurses_check_pixel_support(notcurses* nc){
|
int notcurses_check_pixel_support(notcurses* nc){
|
||||||
if(query_term(&nc->tcache, nc->ttyfd)){
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(nc->tcache.bitmap_supported){
|
if(nc->tcache.bitmap_supported){
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -1311,7 +1308,7 @@ int ncplane_set_fg_palindex(ncplane* n, int idx){
|
|||||||
}
|
}
|
||||||
n->channels |= CELL_FGDEFAULT_MASK;
|
n->channels |= CELL_FGDEFAULT_MASK;
|
||||||
n->channels |= CELL_FG_PALETTE;
|
n->channels |= CELL_FG_PALETTE;
|
||||||
ncchannels_set_fg_alpha(&n->channels, CELL_ALPHA_OPAQUE);
|
ncchannels_set_fg_alpha(&n->channels, NCALPHA_OPAQUE);
|
||||||
n->stylemask &= 0xffff00ff;
|
n->stylemask &= 0xffff00ff;
|
||||||
n->stylemask |= (idx << 8u);
|
n->stylemask |= (idx << 8u);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1323,7 +1320,7 @@ int ncplane_set_bg_palindex(ncplane* n, int idx){
|
|||||||
}
|
}
|
||||||
n->channels |= CELL_BGDEFAULT_MASK;
|
n->channels |= CELL_BGDEFAULT_MASK;
|
||||||
n->channels |= CELL_BG_PALETTE;
|
n->channels |= CELL_BG_PALETTE;
|
||||||
ncchannels_set_bg_alpha(&n->channels, CELL_ALPHA_OPAQUE);
|
ncchannels_set_bg_alpha(&n->channels, NCALPHA_OPAQUE);
|
||||||
n->stylemask &= 0xffffff00;
|
n->stylemask &= 0xffffff00;
|
||||||
n->stylemask |= idx;
|
n->stylemask |= idx;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -242,17 +242,17 @@ paint(ncplane* p, struct crender* rvec, int dstleny, int dstlenx,
|
|||||||
}
|
}
|
||||||
const nccell* vis = &p->fb[nfbcellidx(p, y, x)];
|
const nccell* vis = &p->fb[nfbcellidx(p, y, x)];
|
||||||
|
|
||||||
if(nccell_fg_alpha(targc) > CELL_ALPHA_OPAQUE){
|
if(nccell_fg_alpha(targc) > NCALPHA_OPAQUE){
|
||||||
vis = &p->fb[nfbcellidx(p, y, x)];
|
vis = &p->fb[nfbcellidx(p, y, x)];
|
||||||
if(nccell_fg_default_p(vis)){
|
if(nccell_fg_default_p(vis)){
|
||||||
vis = &p->basecell;
|
vis = &p->basecell;
|
||||||
}
|
}
|
||||||
if(nccell_fg_palindex_p(vis)){
|
if(nccell_fg_palindex_p(vis)){
|
||||||
if(nccell_fg_alpha(targc) == CELL_ALPHA_TRANSPARENT){
|
if(nccell_fg_alpha(targc) == NCALPHA_TRANSPARENT){
|
||||||
nccell_set_fg_palindex(targc, nccell_fg_palindex(vis));
|
nccell_set_fg_palindex(targc, nccell_fg_palindex(vis));
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if(nccell_fg_alpha(vis) == CELL_ALPHA_HIGHCONTRAST){
|
if(nccell_fg_alpha(vis) == NCALPHA_HIGHCONTRAST){
|
||||||
crender->s.highcontrast = true;
|
crender->s.highcontrast = true;
|
||||||
crender->s.hcfgblends = crender->s.fgblends;
|
crender->s.hcfgblends = crender->s.fgblends;
|
||||||
crender->hcfg = cell_fchannel(targc);
|
crender->hcfg = cell_fchannel(targc);
|
||||||
@ -262,9 +262,9 @@ paint(ncplane* p, struct crender* rvec, int dstleny, int dstlenx,
|
|||||||
crender->s.fgblends = fgblends;
|
crender->s.fgblends = fgblends;
|
||||||
// crender->highcontrast can only be true if we just set it, since we're
|
// crender->highcontrast can only be true if we just set it, since we're
|
||||||
// about to set targc opaque based on crender->highcontrast (and this
|
// about to set targc opaque based on crender->highcontrast (and this
|
||||||
// entire stanza is conditional on targc not being CELL_ALPHA_OPAQUE).
|
// entire stanza is conditional on targc not being NCALPHA_OPAQUE).
|
||||||
if(crender->s.highcontrast){
|
if(crender->s.highcontrast){
|
||||||
nccell_set_fg_alpha(targc, CELL_ALPHA_OPAQUE);
|
nccell_set_fg_alpha(targc, NCALPHA_OPAQUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -274,7 +274,7 @@ paint(ncplane* p, struct crender* rvec, int dstleny, int dstlenx,
|
|||||||
// If it's transparent, it has no effect. Otherwise, update the
|
// If it's transparent, it has no effect. Otherwise, update the
|
||||||
// background channel and balpha.
|
// background channel and balpha.
|
||||||
// Evaluate the background first, in case we have HIGHCONTRAST fg text.
|
// Evaluate the background first, in case we have HIGHCONTRAST fg text.
|
||||||
if(nccell_bg_alpha(targc) > CELL_ALPHA_OPAQUE){
|
if(nccell_bg_alpha(targc) > NCALPHA_OPAQUE){
|
||||||
vis = &p->fb[nfbcellidx(p, y, x)];
|
vis = &p->fb[nfbcellidx(p, y, x)];
|
||||||
// to be on the blitter stacking path, we need
|
// to be on the blitter stacking path, we need
|
||||||
// 1) crender->s.blittedquads to be non-zero (we're below semigraphics)
|
// 1) crender->s.blittedquads to be non-zero (we're below semigraphics)
|
||||||
@ -285,7 +285,7 @@ paint(ncplane* p, struct crender* rvec, int dstleny, int dstlenx,
|
|||||||
vis = &p->basecell;
|
vis = &p->basecell;
|
||||||
}
|
}
|
||||||
if(nccell_bg_palindex_p(vis)){
|
if(nccell_bg_palindex_p(vis)){
|
||||||
if(nccell_bg_alpha(targc) == CELL_ALPHA_TRANSPARENT){
|
if(nccell_bg_alpha(targc) == NCALPHA_TRANSPARENT){
|
||||||
nccell_set_bg_palindex(targc, nccell_bg_palindex(vis));
|
nccell_set_bg_palindex(targc, nccell_bg_palindex(vis));
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
@ -298,7 +298,7 @@ paint(ncplane* p, struct crender* rvec, int dstleny, int dstlenx,
|
|||||||
vis = &p->basecell;
|
vis = &p->basecell;
|
||||||
}
|
}
|
||||||
if(nccell_fg_palindex_p(vis)){
|
if(nccell_fg_palindex_p(vis)){
|
||||||
if(nccell_bg_alpha(targc) == CELL_ALPHA_TRANSPARENT){
|
if(nccell_bg_alpha(targc) == NCALPHA_TRANSPARENT){
|
||||||
nccell_set_bg_palindex(targc, nccell_fg_palindex(vis));
|
nccell_set_bg_palindex(targc, nccell_fg_palindex(vis));
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
@ -360,13 +360,13 @@ paint(ncplane* p, struct crender* rvec, int dstleny, int dstlenx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// it's not a pure memset(), because CELL_ALPHA_OPAQUE is the zero value, and
|
// it's not a pure memset(), because NCALPHA_OPAQUE is the zero value, and
|
||||||
// we need CELL_ALPHA_TRANSPARENT
|
// we need NCALPHA_TRANSPARENT
|
||||||
static inline void
|
static inline void
|
||||||
init_rvec(struct crender* rvec, int totalcells){
|
init_rvec(struct crender* rvec, int totalcells){
|
||||||
struct crender c = {};
|
struct crender c = {};
|
||||||
nccell_set_fg_alpha(&c.c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&c.c, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&c.c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&c.c, NCALPHA_TRANSPARENT);
|
||||||
for(int t = 0 ; t < totalcells ; ++t){
|
for(int t = 0 ; t < totalcells ; ++t){
|
||||||
memcpy(&rvec[t], &c, sizeof(c));
|
memcpy(&rvec[t], &c, sizeof(c));
|
||||||
}
|
}
|
||||||
@ -377,10 +377,10 @@ init_rvec(struct crender* rvec, int totalcells){
|
|||||||
// against the real background.
|
// against the real background.
|
||||||
static inline void
|
static inline void
|
||||||
lock_in_highcontrast(nccell* targc, struct crender* crender){
|
lock_in_highcontrast(nccell* targc, struct crender* crender){
|
||||||
if(nccell_fg_alpha(targc) == CELL_ALPHA_TRANSPARENT){
|
if(nccell_fg_alpha(targc) == NCALPHA_TRANSPARENT){
|
||||||
nccell_set_fg_default(targc);
|
nccell_set_fg_default(targc);
|
||||||
}
|
}
|
||||||
if(nccell_bg_alpha(targc) == CELL_ALPHA_TRANSPARENT){
|
if(nccell_bg_alpha(targc) == NCALPHA_TRANSPARENT){
|
||||||
nccell_set_bg_default(targc);
|
nccell_set_bg_default(targc);
|
||||||
}
|
}
|
||||||
if(crender->s.highcontrast){
|
if(crender->s.highcontrast){
|
||||||
@ -443,7 +443,7 @@ postpaint_cell(nccell* lastframe, int dimx, struct crender* crender,
|
|||||||
|
|
||||||
|
|
||||||
// iterate over the rendered frame, adjusting the foreground colors for any
|
// iterate over the rendered frame, adjusting the foreground colors for any
|
||||||
// cells marked CELL_ALPHA_HIGHCONTRAST, and clearing any cell covered by a
|
// cells marked NCALPHA_HIGHCONTRAST, and clearing any cell covered by a
|
||||||
// wide glyph to its left.
|
// wide glyph to its left.
|
||||||
//
|
//
|
||||||
// FIXME this cannot be performed at render time (we don't yet know the
|
// FIXME this cannot be performed at render time (we don't yet know the
|
||||||
|
@ -70,8 +70,8 @@ static int
|
|||||||
ncselector_draw(ncselector* n){
|
ncselector_draw(ncselector* n){
|
||||||
ncplane_erase(n->ncp);
|
ncplane_erase(n->ncp);
|
||||||
nccell transchar = CELL_TRIVIAL_INITIALIZER;
|
nccell transchar = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell_set_fg_alpha(&transchar, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&transchar, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&transchar, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&transchar, NCALPHA_TRANSPARENT);
|
||||||
// if we have a title, we'll draw a riser. the riser is two rows tall, and
|
// if we have a title, we'll draw a riser. the riser is two rows tall, and
|
||||||
// exactly four columns longer than the title, and aligned to the right. we
|
// exactly four columns longer than the title, and aligned to the right. we
|
||||||
// draw a rounded box. the body will blow part or all of the bottom away.
|
// draw a rounded box. the body will blow part or all of the bottom away.
|
||||||
@ -564,8 +564,8 @@ static int
|
|||||||
ncmultiselector_draw(ncmultiselector* n){
|
ncmultiselector_draw(ncmultiselector* n){
|
||||||
ncplane_erase(n->ncp);
|
ncplane_erase(n->ncp);
|
||||||
nccell transchar = CELL_TRIVIAL_INITIALIZER;
|
nccell transchar = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell_set_fg_alpha(&transchar, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&transchar, NCALPHA_TRANSPARENT);
|
||||||
nccell_set_bg_alpha(&transchar, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&transchar, NCALPHA_TRANSPARENT);
|
||||||
// if we have a title, we'll draw a riser. the riser is two rows tall, and
|
// if we have a title, we'll draw a riser. the riser is two rows tall, and
|
||||||
// exactly four columns longer than the title, and aligned to the right. we
|
// exactly four columns longer than the title, and aligned to the right. we
|
||||||
// draw a rounded box. the body will blow part or all of the bottom away.
|
// draw a rounded box. the body will blow part or all of the bottom away.
|
||||||
|
@ -93,7 +93,6 @@ apply_term_heuristics(tinfo* ti, const char* termname, int fd){
|
|||||||
ti->bg_collides_default = 0x1000000;
|
ti->bg_collides_default = 0x1000000;
|
||||||
ti->sextants = true; // work since bugfix in 0.19.3
|
ti->sextants = true; // work since bugfix in 0.19.3
|
||||||
ti->quadrants = true;
|
ti->quadrants = true;
|
||||||
ti->pixel_query_done = true;
|
|
||||||
ti->RGBflag = true;
|
ti->RGBflag = true;
|
||||||
setup_kitty_bitmaps(ti, fd);
|
setup_kitty_bitmaps(ti, fd);
|
||||||
}else if(strstr(termname, "alacritty")){
|
}else if(strstr(termname, "alacritty")){
|
||||||
@ -156,7 +155,6 @@ apply_term_heuristics(tinfo* ti, const char* termname, int fd){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void free_terminfo_cache(tinfo* ti){
|
void free_terminfo_cache(tinfo* ti){
|
||||||
pthread_mutex_destroy(&ti->pixel_query);
|
|
||||||
free(ti->esctable);
|
free(ti->esctable);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,9 +199,59 @@ init_terminfo_esc(tinfo* ti, const char* name, escape_e idx,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Device Attributes; replies with (depending on decTerminalID resource):
|
||||||
|
// ⇒ CSI ? 1 ; 2 c ("VT100 with Advanced Video Option")
|
||||||
|
// ⇒ CSI ? 1 ; 0 c ("VT101 with No Options")
|
||||||
|
// ⇒ CSI ? 4 ; 6 c ("VT132 with Advanced Video and Graphics")
|
||||||
|
// ⇒ CSI ? 6 c ("VT102")
|
||||||
|
// ⇒ CSI ? 7 c ("VT131")
|
||||||
|
// ⇒ CSI ? 1 2 ; Ps c ("VT125")
|
||||||
|
// ⇒ CSI ? 6 2 ; Ps c ("VT220")
|
||||||
|
// ⇒ CSI ? 6 3 ; Ps c ("VT320")
|
||||||
|
// ⇒ CSI ? 6 4 ; Ps c ("VT420")
|
||||||
|
#define ESC_DA "\e[c"
|
||||||
|
|
||||||
|
/*
|
||||||
|
// query for Sixel details including the number of color registers and, one day
|
||||||
|
// perhaps, maximum geometry. xterm binds its return by the current geometry,
|
||||||
|
// making it useless for a one-time query.
|
||||||
|
static int
|
||||||
|
query_sixel_details(tinfo* ti, int fd){
|
||||||
|
if(query_xtsmgraphics(fd, "\x1b[?2;1;0S" ESC_DA, &ti->sixel_maxx, &ti->sixel_maxy)){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if(query_xtsmgraphics(fd, "\x1b[?1;1;0S" ESC_DA, &ti->color_registers, NULL)){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
//fprintf(stderr, "Sixel ColorRegs: %d Max_x: %d Max_y: %d\n", ti->color_registers, ti->sixel_maxx, ti->sixel_maxy);
|
||||||
|
if(ti->color_registers < 64){ // FIXME try to drive it higher
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// we send an XTSMGRAPHICS to set up 256 color registers (the most we can
|
||||||
|
// currently take advantage of; we need at least 64 to use sixel at all.
|
||||||
|
// maybe that works, maybe it doesn't. then query both color registers
|
||||||
|
// and geometry.
|
||||||
|
static int
|
||||||
|
send_initial_queries(int fd){
|
||||||
|
const char queries[] = "\x1b[?1;3;256S\x1b[?2;1;0S\x1b[?1;1;0S" ESC_DA;
|
||||||
|
if(blocking_write(fd, queries, strlen(queries))){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// termname is just the TERM environment variable. some details are not
|
// termname is just the TERM environment variable. some details are not
|
||||||
// exposed via terminfo, and we must make heuristic decisions based on
|
// exposed via terminfo, and we must make heuristic decisions based on
|
||||||
// the detected terminal type, yuck :/.
|
// the detected terminal type, yuck :/.
|
||||||
|
// the first thing we do is fire off any queries we have (XTSMGRAPHICS, etc.)
|
||||||
|
// with a trailing Device Attributes. all known terminals will reply to a
|
||||||
|
// Device Attributes, allowing us to get a negative response if our queries
|
||||||
|
// aren't supported by the terminal. we fire it off early because we have a
|
||||||
|
// full round trip before getting the reply, which is likely to pace init.
|
||||||
int interrogate_terminfo(tinfo* ti, int fd, const char* termname, unsigned utf8,
|
int interrogate_terminfo(tinfo* ti, int fd, const char* termname, unsigned utf8,
|
||||||
unsigned noaltscreen, unsigned nocbreak){
|
unsigned noaltscreen, unsigned nocbreak){
|
||||||
memset(ti, 0, sizeof(*ti));
|
memset(ti, 0, sizeof(*ti));
|
||||||
@ -213,6 +261,10 @@ int interrogate_terminfo(tinfo* ti, int fd, const char* termname, unsigned utf8,
|
|||||||
fprintf(stderr, "Couldn't preserve terminal state for %d (%s)\n", fd, strerror(errno));
|
fprintf(stderr, "Couldn't preserve terminal state for %d (%s)\n", fd, strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if(send_initial_queries(fd)){
|
||||||
|
fprintf(stderr, "Error issuing terminal queries on %d\n", fd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(ncinputlayer_init(&ti->input, stdin)){
|
if(ncinputlayer_init(&ti->input, stdin)){
|
||||||
return -1;
|
return -1;
|
||||||
@ -371,10 +423,7 @@ int interrogate_terminfo(tinfo* ti, int fd, const char* termname, unsigned utf8,
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pthread_mutex_init(&ti->pixel_query, NULL);
|
|
||||||
ti->pixel_query_done = false;
|
|
||||||
if(apply_term_heuristics(ti, termname, fd)){
|
if(apply_term_heuristics(ti, termname, fd)){
|
||||||
pthread_mutex_destroy(&ti->pixel_query);
|
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -384,6 +433,7 @@ err:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
// FIXME need unit tests on this
|
// FIXME need unit tests on this
|
||||||
// FIXME can read a character not intended for it
|
// FIXME can read a character not intended for it
|
||||||
// we'll get a trailing Device Attributes response, because we write
|
// we'll get a trailing Device Attributes response, because we write
|
||||||
@ -490,36 +540,6 @@ query_xtsmgraphics(int fd, const char* seq, int* val, int* val2){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Device Attributes; replies with (depending on decTerminalID resource):
|
|
||||||
// ⇒ CSI ? 1 ; 2 c ("VT100 with Advanced Video Option")
|
|
||||||
// ⇒ CSI ? 1 ; 0 c ("VT101 with No Options")
|
|
||||||
// ⇒ CSI ? 4 ; 6 c ("VT132 with Advanced Video and Graphics")
|
|
||||||
// ⇒ CSI ? 6 c ("VT102")
|
|
||||||
// ⇒ CSI ? 7 c ("VT131")
|
|
||||||
// ⇒ CSI ? 1 2 ; Ps c ("VT125")
|
|
||||||
// ⇒ CSI ? 6 2 ; Ps c ("VT220")
|
|
||||||
// ⇒ CSI ? 6 3 ; Ps c ("VT320")
|
|
||||||
// ⇒ CSI ? 6 4 ; Ps c ("VT420")
|
|
||||||
#define ESC_DA "\e[c"
|
|
||||||
|
|
||||||
// query for Sixel details including the number of color registers and, one day
|
|
||||||
// perhaps, maximum geometry. xterm binds its return by the current geometry,
|
|
||||||
// making it useless for a one-time query.
|
|
||||||
static int
|
|
||||||
query_sixel_details(tinfo* ti, int fd){
|
|
||||||
if(query_xtsmgraphics(fd, "\x1b[?2;1;0S" ESC_DA, &ti->sixel_maxx, &ti->sixel_maxy)){
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if(query_xtsmgraphics(fd, "\x1b[?1;1;0S" ESC_DA, &ti->color_registers, NULL)){
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
//fprintf(stderr, "Sixel ColorRegs: %d Max_x: %d Max_y: %d\n", ti->color_registers, ti->sixel_maxx, ti->sixel_maxy);
|
|
||||||
if(ti->color_registers < 64){ // FIXME try to drive it higher
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// query for Sixel support
|
// query for Sixel support
|
||||||
static int
|
static int
|
||||||
query_sixel(tinfo* ti, int fd){
|
query_sixel(tinfo* ti, int fd){
|
||||||
@ -597,46 +617,10 @@ query_sixel(tinfo* ti, int fd){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(ti->bitmap_supported){
|
if(ti->bitmap_supported){
|
||||||
if(query_sixel_details(ti, fd)){
|
if(ti->color_registers < 64){
|
||||||
ti->bitmap_supported = false;
|
ti->bitmap_supported = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
// fd must be a real terminal. uses the query lock of |ti| to only act once.
|
|
||||||
// we ought already have performed a TIOCGWINSZ ioctl() to verify that the
|
|
||||||
// terminal reports cell area in pixels, as that's necessary for our use of
|
|
||||||
// sixel (or any other bitmap protocol).
|
|
||||||
int query_term(tinfo* ti, int fd){
|
|
||||||
if(fd < 0){
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int flags = fcntl(fd, F_GETFL, 0);
|
|
||||||
if(flags < 0){
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int ret = 0;
|
|
||||||
pthread_mutex_lock(&ti->pixel_query);
|
|
||||||
if(!ti->pixel_query_done){
|
|
||||||
// if the terminal reported 0 pixels for cell dimensions, bypass any
|
|
||||||
// interrogation, and assume no bitmap support.
|
|
||||||
if(!ti->cellpixx || !ti->cellpixy){
|
|
||||||
ti->pixel_query_done = true;
|
|
||||||
}else{
|
|
||||||
if(flags & O_NONBLOCK){
|
|
||||||
fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
|
|
||||||
}
|
|
||||||
ret = query_sixel(ti, fd);
|
|
||||||
ti->pixel_query_done = true;
|
|
||||||
if(ti->bitmap_supported){
|
|
||||||
ti->pixel_init(fd);
|
|
||||||
}
|
|
||||||
if(flags & O_NONBLOCK){
|
|
||||||
fcntl(fd, F_SETFL, flags);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pthread_mutex_unlock(&ti->pixel_query);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
@ -102,7 +102,6 @@ typedef struct tinfo {
|
|||||||
// which we support sixel and kitty. the kitty protocol is used based
|
// which we support sixel and kitty. the kitty protocol is used based
|
||||||
// on TERM heuristics. otherwise, we attempt to detect sixel support, and
|
// on TERM heuristics. otherwise, we attempt to detect sixel support, and
|
||||||
// query the details of the implementation.
|
// query the details of the implementation.
|
||||||
pthread_mutex_t pixel_query; // only query for pixel support once
|
|
||||||
int color_registers; // sixel color registers (post pixel_query_done)
|
int color_registers; // sixel color registers (post pixel_query_done)
|
||||||
int sixel_maxx, sixel_maxy; // sixel size maxima (post pixel_query_done)
|
int sixel_maxx, sixel_maxy; // sixel size maxima (post pixel_query_done)
|
||||||
int (*pixel_destroy)(const struct notcurses* nc, const struct ncpile* p, FILE* out, struct sprixel* s);
|
int (*pixel_destroy)(const struct notcurses* nc, const struct ncpile* p, FILE* out, struct sprixel* s);
|
||||||
@ -123,7 +122,6 @@ typedef struct tinfo {
|
|||||||
ncinputlayer input; // input layer
|
ncinputlayer input; // input layer
|
||||||
bool bitmap_supported; // do we support bitmaps (post pixel_query_done)?
|
bool bitmap_supported; // do we support bitmaps (post pixel_query_done)?
|
||||||
bool bitmap_lowest_line; // can we render pixels to the bottom row?
|
bool bitmap_lowest_line; // can we render pixels to the bottom row?
|
||||||
bool pixel_query_done; // have we yet performed pixel query?
|
|
||||||
bool RGBflag; // "RGB" flag for 24bpc truecolor
|
bool RGBflag; // "RGB" flag for 24bpc truecolor
|
||||||
bool CCCflag; // "CCC" flag for palette set capability
|
bool CCCflag; // "CCC" flag for palette set capability
|
||||||
bool BCEflag; // "BCE" flag for erases with background color
|
bool BCEflag; // "BCE" flag for erases with background color
|
||||||
|
@ -62,12 +62,12 @@ auto handle_subtitle(char* subtitle, struct marshal* marsh,
|
|||||||
};
|
};
|
||||||
marsh->subtitle_plane = ncplane_create(vopts->n, &nopts);
|
marsh->subtitle_plane = ncplane_create(vopts->n, &nopts);
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(marsh->subtitle_plane, "", 0, channels);
|
ncplane_set_base(marsh->subtitle_plane, "", 0, channels);
|
||||||
ncplane_set_fg_rgb(marsh->subtitle_plane, 0x00ffff);
|
ncplane_set_fg_rgb(marsh->subtitle_plane, 0x00ffff);
|
||||||
ncplane_set_fg_alpha(marsh->subtitle_plane, CELL_ALPHA_HIGHCONTRAST);
|
ncplane_set_fg_alpha(marsh->subtitle_plane, NCALPHA_HIGHCONTRAST);
|
||||||
ncplane_set_bg_alpha(marsh->subtitle_plane, CELL_ALPHA_TRANSPARENT);
|
ncplane_set_bg_alpha(marsh->subtitle_plane, NCALPHA_TRANSPARENT);
|
||||||
}else{
|
}else{
|
||||||
ncplane_erase(marsh->subtitle_plane);
|
ncplane_erase(marsh->subtitle_plane);
|
||||||
}
|
}
|
||||||
@ -378,8 +378,8 @@ int rendered_mode_player_inner(NotCurses& nc, int argc, char** argv,
|
|||||||
int dimy, dimx;
|
int dimy, dimx;
|
||||||
std::unique_ptr<Plane> stdn(nc.get_stdplane(&dimy, &dimx));
|
std::unique_ptr<Plane> stdn(nc.get_stdplane(&dimy, &dimx));
|
||||||
uint64_t transchan = 0;
|
uint64_t transchan = 0;
|
||||||
ncchannels_set_fg_alpha(&transchan, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&transchan, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&transchan, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&transchan, NCALPHA_TRANSPARENT);
|
||||||
stdn->set_base("", 0, transchan);
|
stdn->set_base("", 0, transchan);
|
||||||
struct ncplane_options nopts{};
|
struct ncplane_options nopts{};
|
||||||
nopts.name = "play";
|
nopts.name = "play";
|
||||||
|
@ -86,8 +86,8 @@ int main(void){
|
|||||||
sopts.footchannels = CHANNELS_RGB_INITIALIZER(0xe0, 0, 0x40, 0x20, 0x20, 0);
|
sopts.footchannels = CHANNELS_RGB_INITIALIZER(0xe0, 0, 0x40, 0x20, 0x20, 0);
|
||||||
sopts.titlechannels = CHANNELS_RGB_INITIALIZER(0x20, 0xff, 0xff, 0, 0, 0x20);
|
sopts.titlechannels = CHANNELS_RGB_INITIALIZER(0x20, 0xff, 0xff, 0, 0, 0x20);
|
||||||
uint64_t bgchannels = CHANNELS_RGB_INITIALIZER(0, 0x20, 0, 0, 0x20, 0);
|
uint64_t bgchannels = CHANNELS_RGB_INITIALIZER(0, 0x20, 0, 0, 0x20, 0);
|
||||||
ncchannels_set_fg_alpha(&bgchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&bgchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_alpha(&bgchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&bgchannels, NCALPHA_BLEND);
|
||||||
struct ncplane* n = notcurses_stdplane(nc);
|
struct ncplane* n = notcurses_stdplane(nc);
|
||||||
|
|
||||||
if(notcurses_canopen_images(nc)){
|
if(notcurses_canopen_images(nc)){
|
||||||
|
@ -77,8 +77,8 @@ int main(void){
|
|||||||
sopts.footchannels = CHANNELS_RGB_INITIALIZER(0xe0, 0, 0x40, 0x20, 0, 0);
|
sopts.footchannels = CHANNELS_RGB_INITIALIZER(0xe0, 0, 0x40, 0x20, 0, 0);
|
||||||
sopts.titlechannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0x80, 0, 0, 0x20);
|
sopts.titlechannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0x80, 0, 0, 0x20);
|
||||||
uint64_t bgchannels = CHANNELS_RGB_INITIALIZER(0, 0x20, 0, 0, 0x20, 0);
|
uint64_t bgchannels = CHANNELS_RGB_INITIALIZER(0, 0x20, 0, 0, 0x20, 0);
|
||||||
ncchannels_set_fg_alpha(&bgchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&bgchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_alpha(&bgchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&bgchannels, NCALPHA_BLEND);
|
||||||
struct ncplane* n = notcurses_stdplane(nc);
|
struct ncplane* n = notcurses_stdplane(nc);
|
||||||
|
|
||||||
if(notcurses_canopen_images(nc)){
|
if(notcurses_canopen_images(nc)){
|
||||||
|
@ -192,8 +192,8 @@ textplane(struct notcurses* nc){
|
|||||||
};
|
};
|
||||||
struct ncplane* n = ncplane_create(stdn, &nopts);
|
struct ncplane* n = ncplane_create(stdn, &nopts);
|
||||||
uint64_t channels = CHANNELS_RGB_INITIALIZER(0, 0, 0, 0x22, 0x22, 0x22);
|
uint64_t channels = CHANNELS_RGB_INITIALIZER(0, 0, 0, 0x22, 0x22, 0x22);
|
||||||
/*ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
/*ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);*/
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);*/
|
||||||
if(n){
|
if(n){
|
||||||
ncplane_set_base(n, "", 0, channels);
|
ncplane_set_base(n, "", 0, channels);
|
||||||
}
|
}
|
||||||
|
@ -44,8 +44,8 @@ wipebitmap(struct notcurses* nc){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncplane_set_base(notcurses_stdplane(nc), "", 0, channels);
|
ncplane_set_base(notcurses_stdplane(nc), "", 0, channels);
|
||||||
ncplane_move_top(notcurses_stdplane(nc));
|
ncplane_move_top(notcurses_stdplane(nc));
|
||||||
emit(notcurses_stdplane(nc), "Ought see 16 *s");
|
emit(notcurses_stdplane(nc), "Ought see 16 *s");
|
||||||
|
@ -636,8 +636,8 @@ TEST_CASE("Bitmaps") {
|
|||||||
#ifdef NOTCURSES_USE_MULTIMEDIA
|
#ifdef NOTCURSES_USE_MULTIMEDIA
|
||||||
SUBCASE("PixelWipeImage") {
|
SUBCASE("PixelWipeImage") {
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
CHECK(0 == ncplane_set_base(n_, "", 0, channels));
|
CHECK(0 == ncplane_set_base(n_, "", 0, channels));
|
||||||
auto ncv = ncvisual_from_file(find_data("worldmap.png").get());
|
auto ncv = ncvisual_from_file(find_data("worldmap.png").get());
|
||||||
REQUIRE(ncv);
|
REQUIRE(ncv);
|
||||||
|
@ -125,12 +125,12 @@ TEST_CASE("Cell") {
|
|||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
CHECK(0 > nccell_set_fg_alpha(&c, -1));
|
CHECK(0 > nccell_set_fg_alpha(&c, -1));
|
||||||
CHECK(0 > nccell_set_fg_alpha(&c, 4));
|
CHECK(0 > nccell_set_fg_alpha(&c, 4));
|
||||||
CHECK(0 == nccell_set_fg_alpha(&c, CELL_ALPHA_OPAQUE));
|
CHECK(0 == nccell_set_fg_alpha(&c, NCALPHA_OPAQUE));
|
||||||
CHECK(nccell_fg_default_p(&c));
|
CHECK(nccell_fg_default_p(&c));
|
||||||
CHECK(nccell_bg_default_p(&c));
|
CHECK(nccell_bg_default_p(&c));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == nccell_fg_alpha(&c));
|
CHECK(NCALPHA_OPAQUE == nccell_fg_alpha(&c));
|
||||||
CHECK(0 == nccell_set_fg_alpha(&c, CELL_ALPHA_HIGHCONTRAST));
|
CHECK(0 == nccell_set_fg_alpha(&c, NCALPHA_HIGHCONTRAST));
|
||||||
CHECK(CELL_ALPHA_HIGHCONTRAST == nccell_fg_alpha(&c));
|
CHECK(NCALPHA_HIGHCONTRAST == nccell_fg_alpha(&c));
|
||||||
CHECK(!nccell_fg_default_p(&c));
|
CHECK(!nccell_fg_default_p(&c));
|
||||||
CHECK(nccell_bg_default_p(&c));
|
CHECK(nccell_bg_default_p(&c));
|
||||||
}
|
}
|
||||||
@ -139,11 +139,11 @@ TEST_CASE("Cell") {
|
|||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
CHECK(0 > nccell_set_bg_alpha(&c, -1));
|
CHECK(0 > nccell_set_bg_alpha(&c, -1));
|
||||||
CHECK(0 > nccell_set_bg_alpha(&c, 4));
|
CHECK(0 > nccell_set_bg_alpha(&c, 4));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_OPAQUE));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_OPAQUE));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == nccell_bg_alpha(&c));
|
CHECK(NCALPHA_OPAQUE == nccell_bg_alpha(&c));
|
||||||
CHECK(0 != nccell_set_bg_alpha(&c, CELL_ALPHA_HIGHCONTRAST));
|
CHECK(0 != nccell_set_bg_alpha(&c, NCALPHA_HIGHCONTRAST));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT));
|
||||||
CHECK(CELL_ALPHA_TRANSPARENT == nccell_bg_alpha(&c));
|
CHECK(NCALPHA_TRANSPARENT == nccell_bg_alpha(&c));
|
||||||
CHECK(nccell_fg_default_p(&c));
|
CHECK(nccell_fg_default_p(&c));
|
||||||
CHECK(!nccell_bg_default_p(&c));
|
CHECK(!nccell_bg_default_p(&c));
|
||||||
}
|
}
|
||||||
@ -152,8 +152,8 @@ TEST_CASE("Cell") {
|
|||||||
SUBCASE("HighContrastWhiteOnBlackBackground"){
|
SUBCASE("HighContrastWhiteOnBlackBackground"){
|
||||||
nccell c = CELL_CHAR_INITIALIZER('+');
|
nccell c = CELL_CHAR_INITIALIZER('+');
|
||||||
CHECK(0 == nccell_set_fg_rgb8(&c, 0xff, 0xff, 0xff));
|
CHECK(0 == nccell_set_fg_rgb8(&c, 0xff, 0xff, 0xff));
|
||||||
CHECK(0 == nccell_set_fg_alpha(&c, CELL_ALPHA_HIGHCONTRAST));
|
CHECK(0 == nccell_set_fg_alpha(&c, NCALPHA_HIGHCONTRAST));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT));
|
||||||
struct ncplane_options nopts = {
|
struct ncplane_options nopts = {
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.x = 0,
|
.x = 0,
|
||||||
@ -170,7 +170,7 @@ TEST_CASE("Cell") {
|
|||||||
CHECK(1 == ncplane_putc(np, &c));
|
CHECK(1 == ncplane_putc(np, &c));
|
||||||
nccell_load_char(np, &c, '*');
|
nccell_load_char(np, &c, '*');
|
||||||
CHECK(0 == nccell_set_bg_rgb8(&c, 0x0, 0x0, 0x0));
|
CHECK(0 == nccell_set_bg_rgb8(&c, 0x0, 0x0, 0x0));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_OPAQUE));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_OPAQUE));
|
||||||
CHECK(1 == ncplane_putc(n_, &c));
|
CHECK(1 == ncplane_putc(n_, &c));
|
||||||
CHECK(0 == notcurses_render(nc_));
|
CHECK(0 == notcurses_render(nc_));
|
||||||
uint64_t channels, underchannels, overchannels;
|
uint64_t channels, underchannels, overchannels;
|
||||||
@ -192,8 +192,8 @@ TEST_CASE("Cell") {
|
|||||||
SUBCASE("HighContrastWhiteOnWhiteBackground"){
|
SUBCASE("HighContrastWhiteOnWhiteBackground"){
|
||||||
nccell c = CELL_CHAR_INITIALIZER('+');
|
nccell c = CELL_CHAR_INITIALIZER('+');
|
||||||
CHECK(0 == nccell_set_fg_rgb8(&c, 0xff, 0xff, 0xff));
|
CHECK(0 == nccell_set_fg_rgb8(&c, 0xff, 0xff, 0xff));
|
||||||
CHECK(0 == nccell_set_fg_alpha(&c, CELL_ALPHA_HIGHCONTRAST));
|
CHECK(0 == nccell_set_fg_alpha(&c, NCALPHA_HIGHCONTRAST));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT));
|
||||||
struct ncplane_options nopts = {
|
struct ncplane_options nopts = {
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.x = 0,
|
.x = 0,
|
||||||
@ -210,7 +210,7 @@ TEST_CASE("Cell") {
|
|||||||
CHECK(1 == ncplane_putc(np, &c));
|
CHECK(1 == ncplane_putc(np, &c));
|
||||||
nccell_load_char(np, &c, '*');
|
nccell_load_char(np, &c, '*');
|
||||||
CHECK(0 == nccell_set_bg_rgb8(&c, 0xff, 0xff, 0xff));
|
CHECK(0 == nccell_set_bg_rgb8(&c, 0xff, 0xff, 0xff));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_OPAQUE));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_OPAQUE));
|
||||||
CHECK(1 == ncplane_putc(n_, &c));
|
CHECK(1 == ncplane_putc(n_, &c));
|
||||||
CHECK(0 == notcurses_render(nc_));
|
CHECK(0 == notcurses_render(nc_));
|
||||||
uint64_t channels, underchannels, overchannels;
|
uint64_t channels, underchannels, overchannels;
|
||||||
@ -232,8 +232,8 @@ TEST_CASE("Cell") {
|
|||||||
SUBCASE("HighContrastBlackOnBlackBackground"){
|
SUBCASE("HighContrastBlackOnBlackBackground"){
|
||||||
nccell c = CELL_CHAR_INITIALIZER('+');
|
nccell c = CELL_CHAR_INITIALIZER('+');
|
||||||
CHECK(0 == nccell_set_fg_rgb8(&c, 0x0, 0x0, 0x0));
|
CHECK(0 == nccell_set_fg_rgb8(&c, 0x0, 0x0, 0x0));
|
||||||
CHECK(0 == nccell_set_fg_alpha(&c, CELL_ALPHA_HIGHCONTRAST));
|
CHECK(0 == nccell_set_fg_alpha(&c, NCALPHA_HIGHCONTRAST));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT));
|
||||||
struct ncplane_options nopts = {
|
struct ncplane_options nopts = {
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.x = 0,
|
.x = 0,
|
||||||
@ -250,7 +250,7 @@ TEST_CASE("Cell") {
|
|||||||
CHECK(1 == ncplane_putc(np, &c));
|
CHECK(1 == ncplane_putc(np, &c));
|
||||||
nccell_load_char(np, &c, '*');
|
nccell_load_char(np, &c, '*');
|
||||||
CHECK(0 == nccell_set_bg_rgb8(&c, 0x0, 0x0, 0x0));
|
CHECK(0 == nccell_set_bg_rgb8(&c, 0x0, 0x0, 0x0));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_OPAQUE));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_OPAQUE));
|
||||||
CHECK(1 == ncplane_putc(n_, &c));
|
CHECK(1 == ncplane_putc(n_, &c));
|
||||||
CHECK(0 == notcurses_render(nc_));
|
CHECK(0 == notcurses_render(nc_));
|
||||||
uint64_t channels, underchannels, overchannels;
|
uint64_t channels, underchannels, overchannels;
|
||||||
@ -272,8 +272,8 @@ TEST_CASE("Cell") {
|
|||||||
SUBCASE("HighContrastBlackOnWhiteBackground"){
|
SUBCASE("HighContrastBlackOnWhiteBackground"){
|
||||||
nccell c = CELL_CHAR_INITIALIZER('+');
|
nccell c = CELL_CHAR_INITIALIZER('+');
|
||||||
CHECK(0 == nccell_set_fg_rgb8(&c, 0x0, 0x0, 0x0));
|
CHECK(0 == nccell_set_fg_rgb8(&c, 0x0, 0x0, 0x0));
|
||||||
CHECK(0 == nccell_set_fg_alpha(&c, CELL_ALPHA_HIGHCONTRAST));
|
CHECK(0 == nccell_set_fg_alpha(&c, NCALPHA_HIGHCONTRAST));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT));
|
||||||
struct ncplane_options nopts = {
|
struct ncplane_options nopts = {
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.x = 0,
|
.x = 0,
|
||||||
@ -290,7 +290,7 @@ TEST_CASE("Cell") {
|
|||||||
CHECK(1 == ncplane_putc(np, &c));
|
CHECK(1 == ncplane_putc(np, &c));
|
||||||
nccell_load_char(np, &c, '*');
|
nccell_load_char(np, &c, '*');
|
||||||
CHECK(0 == nccell_set_bg_rgb8(&c, 0xff, 0xff, 0xff));
|
CHECK(0 == nccell_set_bg_rgb8(&c, 0xff, 0xff, 0xff));
|
||||||
CHECK(0 == nccell_set_bg_alpha(&c, CELL_ALPHA_OPAQUE));
|
CHECK(0 == nccell_set_bg_alpha(&c, NCALPHA_OPAQUE));
|
||||||
CHECK(1 == ncplane_putc(n_, &c));
|
CHECK(1 == ncplane_putc(n_, &c));
|
||||||
CHECK(0 == notcurses_render(nc_));
|
CHECK(0 == notcurses_render(nc_));
|
||||||
uint64_t channels, underchannels, overchannels;
|
uint64_t channels, underchannels, overchannels;
|
||||||
@ -314,7 +314,7 @@ TEST_CASE("Cell") {
|
|||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
// top has a background of white
|
// top has a background of white
|
||||||
CHECK(0 == nccell_set_bg_rgb8(&c, 0xff, 0xff, 0xff));
|
CHECK(0 == nccell_set_bg_rgb8(&c, 0xff, 0xff, 0xff));
|
||||||
CHECK(0 == nccell_set_fg_alpha(&c, CELL_ALPHA_TRANSPARENT));
|
CHECK(0 == nccell_set_fg_alpha(&c, NCALPHA_TRANSPARENT));
|
||||||
struct ncplane_options nopts = {
|
struct ncplane_options nopts = {
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.x = 0,
|
.x = 0,
|
||||||
@ -332,7 +332,7 @@ TEST_CASE("Cell") {
|
|||||||
nccell_load_char(n_, &c, '*');
|
nccell_load_char(n_, &c, '*');
|
||||||
// bottom has white foreground + HIGHCONTRAST, should remain white
|
// bottom has white foreground + HIGHCONTRAST, should remain white
|
||||||
CHECK(0 == nccell_set_fg_rgb8(&c, 0xff, 0x0, 0xff));
|
CHECK(0 == nccell_set_fg_rgb8(&c, 0xff, 0x0, 0xff));
|
||||||
CHECK(0 == nccell_set_fg_alpha(&c, CELL_ALPHA_HIGHCONTRAST));
|
CHECK(0 == nccell_set_fg_alpha(&c, NCALPHA_HIGHCONTRAST));
|
||||||
nccell_set_bg_default(&c);
|
nccell_set_bg_default(&c);
|
||||||
CHECK(1 == ncplane_putc(n_, &c));
|
CHECK(1 == ncplane_putc(n_, &c));
|
||||||
CHECK(0 == notcurses_render(nc_));
|
CHECK(0 == notcurses_render(nc_));
|
||||||
|
@ -27,12 +27,12 @@ TEST_CASE("ChannelGetAlpha") {
|
|||||||
uint32_t channel;
|
uint32_t channel;
|
||||||
int a;
|
int a;
|
||||||
} test[] = {
|
} test[] = {
|
||||||
{ .channel = 0x00000000, .a = CELL_ALPHA_OPAQUE, },
|
{ .channel = 0x00000000, .a = NCALPHA_OPAQUE, },
|
||||||
{ .channel = 0x10808080, .a = CELL_ALPHA_BLEND, },
|
{ .channel = 0x10808080, .a = NCALPHA_BLEND, },
|
||||||
{ .channel = 0x20080808, .a = CELL_ALPHA_TRANSPARENT, },
|
{ .channel = 0x20080808, .a = NCALPHA_TRANSPARENT, },
|
||||||
{ .channel = 0xe0080808, .a = CELL_ALPHA_TRANSPARENT, },
|
{ .channel = 0xe0080808, .a = NCALPHA_TRANSPARENT, },
|
||||||
{ .channel = 0x3fffffff, .a = CELL_ALPHA_HIGHCONTRAST, },
|
{ .channel = 0x3fffffff, .a = NCALPHA_HIGHCONTRAST, },
|
||||||
{ .channel = 0xffffffff, .a = CELL_ALPHA_HIGHCONTRAST, },
|
{ .channel = 0xffffffff, .a = NCALPHA_HIGHCONTRAST, },
|
||||||
};
|
};
|
||||||
for(auto i = 0u ; i < sizeof(test) / sizeof(*test) ; ++i){
|
for(auto i = 0u ; i < sizeof(test) / sizeof(*test) ; ++i){
|
||||||
CHECK(test[i].a == ncchannel_alpha(test[i].channel));
|
CHECK(test[i].a == ncchannel_alpha(test[i].channel));
|
||||||
|
@ -105,12 +105,12 @@ TEST_CASE("NotcursesBase") {
|
|||||||
uint64_t channel = 0;
|
uint64_t channel = 0;
|
||||||
CHECK(0 > ncchannels_set_fg_alpha(&channel, -1));
|
CHECK(0 > ncchannels_set_fg_alpha(&channel, -1));
|
||||||
CHECK(0 > ncchannels_set_fg_alpha(&channel, 4));
|
CHECK(0 > ncchannels_set_fg_alpha(&channel, 4));
|
||||||
CHECK(0 == ncchannels_set_fg_alpha(&channel, CELL_ALPHA_OPAQUE));
|
CHECK(0 == ncchannels_set_fg_alpha(&channel, NCALPHA_OPAQUE));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == ncchannels_fg_alpha(channel));
|
CHECK(NCALPHA_OPAQUE == ncchannels_fg_alpha(channel));
|
||||||
CHECK(ncchannels_fg_default_p(channel));
|
CHECK(ncchannels_fg_default_p(channel));
|
||||||
CHECK(ncchannels_bg_default_p(channel));
|
CHECK(ncchannels_bg_default_p(channel));
|
||||||
CHECK(0 == ncchannels_set_fg_alpha(&channel, CELL_ALPHA_HIGHCONTRAST));
|
CHECK(0 == ncchannels_set_fg_alpha(&channel, NCALPHA_HIGHCONTRAST));
|
||||||
CHECK(CELL_ALPHA_HIGHCONTRAST == ncchannels_fg_alpha(channel));
|
CHECK(NCALPHA_HIGHCONTRAST == ncchannels_fg_alpha(channel));
|
||||||
CHECK(!ncchannels_fg_default_p(channel));
|
CHECK(!ncchannels_fg_default_p(channel));
|
||||||
CHECK(ncchannels_bg_default_p(channel));
|
CHECK(ncchannels_bg_default_p(channel));
|
||||||
}
|
}
|
||||||
@ -119,11 +119,11 @@ TEST_CASE("NotcursesBase") {
|
|||||||
uint64_t channel = 0;
|
uint64_t channel = 0;
|
||||||
CHECK(0 > ncchannels_set_bg_alpha(&channel, -1));
|
CHECK(0 > ncchannels_set_bg_alpha(&channel, -1));
|
||||||
CHECK(0 > ncchannels_set_bg_alpha(&channel, 4));
|
CHECK(0 > ncchannels_set_bg_alpha(&channel, 4));
|
||||||
CHECK(0 == ncchannels_set_bg_alpha(&channel, CELL_ALPHA_OPAQUE));
|
CHECK(0 == ncchannels_set_bg_alpha(&channel, NCALPHA_OPAQUE));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == ncchannels_bg_alpha(channel));
|
CHECK(NCALPHA_OPAQUE == ncchannels_bg_alpha(channel));
|
||||||
CHECK(0 == ncchannels_set_bg_alpha(&channel, CELL_ALPHA_TRANSPARENT));
|
CHECK(0 == ncchannels_set_bg_alpha(&channel, NCALPHA_TRANSPARENT));
|
||||||
CHECK(0 > ncchannels_set_bg_alpha(&channel, CELL_ALPHA_HIGHCONTRAST));
|
CHECK(0 > ncchannels_set_bg_alpha(&channel, NCALPHA_HIGHCONTRAST));
|
||||||
CHECK(CELL_ALPHA_TRANSPARENT == ncchannels_bg_alpha(channel));
|
CHECK(NCALPHA_TRANSPARENT == ncchannels_bg_alpha(channel));
|
||||||
CHECK(ncchannels_fg_default_p(channel));
|
CHECK(ncchannels_fg_default_p(channel));
|
||||||
CHECK(!ncchannels_bg_default_p(channel));
|
CHECK(!ncchannels_bg_default_p(channel));
|
||||||
}
|
}
|
||||||
|
@ -42,22 +42,22 @@ TEST_CASE("Palette256") {
|
|||||||
SUBCASE("FAttributes") {
|
SUBCASE("FAttributes") {
|
||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
CHECK(nccell_fg_default_p(&c));
|
CHECK(nccell_fg_default_p(&c));
|
||||||
nccell_set_fg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_fg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
CHECK(0 == nccell_set_fg_palindex(&c, 0x20));
|
CHECK(0 == nccell_set_fg_palindex(&c, 0x20));
|
||||||
CHECK(!nccell_fg_default_p(&c));
|
CHECK(!nccell_fg_default_p(&c));
|
||||||
CHECK(nccell_fg_palindex_p(&c));
|
CHECK(nccell_fg_palindex_p(&c));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == nccell_fg_alpha(&c));
|
CHECK(NCALPHA_OPAQUE == nccell_fg_alpha(&c));
|
||||||
CHECK(0x20 == nccell_fg_palindex(&c));
|
CHECK(0x20 == nccell_fg_palindex(&c));
|
||||||
}
|
}
|
||||||
|
|
||||||
SUBCASE("BAttributes") {
|
SUBCASE("BAttributes") {
|
||||||
nccell c = CELL_TRIVIAL_INITIALIZER;
|
nccell c = CELL_TRIVIAL_INITIALIZER;
|
||||||
CHECK(nccell_bg_default_p(&c));
|
CHECK(nccell_bg_default_p(&c));
|
||||||
nccell_set_bg_alpha(&c, CELL_ALPHA_TRANSPARENT);
|
nccell_set_bg_alpha(&c, NCALPHA_TRANSPARENT);
|
||||||
CHECK(0 == nccell_set_bg_palindex(&c, 0x20));
|
CHECK(0 == nccell_set_bg_palindex(&c, 0x20));
|
||||||
CHECK(!nccell_bg_default_p(&c));
|
CHECK(!nccell_bg_default_p(&c));
|
||||||
CHECK(nccell_bg_palindex_p(&c));
|
CHECK(nccell_bg_palindex_p(&c));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == nccell_bg_alpha(&c));
|
CHECK(NCALPHA_OPAQUE == nccell_bg_alpha(&c));
|
||||||
CHECK(0x20 == nccell_bg_palindex(&c));
|
CHECK(0x20 == nccell_bg_palindex(&c));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,8 +73,8 @@ TEST_CASE("Palette256") {
|
|||||||
CHECK(0 < ncplane_at_yx_cell(n_, 0, 0, &r));
|
CHECK(0 < ncplane_at_yx_cell(n_, 0, 0, &r));
|
||||||
CHECK(nccell_fg_palindex_p(&r));
|
CHECK(nccell_fg_palindex_p(&r));
|
||||||
CHECK(nccell_bg_palindex_p(&r));
|
CHECK(nccell_bg_palindex_p(&r));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == nccell_fg_alpha(&r));
|
CHECK(NCALPHA_OPAQUE == nccell_fg_alpha(&r));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == nccell_bg_alpha(&r));
|
CHECK(NCALPHA_OPAQUE == nccell_bg_alpha(&r));
|
||||||
CHECK(0x20 == nccell_fg_palindex(&r));
|
CHECK(0x20 == nccell_fg_palindex(&r));
|
||||||
CHECK(0x40 == nccell_bg_palindex(&r));
|
CHECK(0x40 == nccell_bg_palindex(&r));
|
||||||
nccell_release(n_, &r);
|
nccell_release(n_, &r);
|
||||||
@ -94,8 +94,8 @@ TEST_CASE("Palette256") {
|
|||||||
CHECK(nullptr != notcurses_at_yx(nc_, 0, 0, &r.stylemask, &r.channels));
|
CHECK(nullptr != notcurses_at_yx(nc_, 0, 0, &r.stylemask, &r.channels));
|
||||||
CHECK(nccell_fg_palindex_p(&r));
|
CHECK(nccell_fg_palindex_p(&r));
|
||||||
CHECK(nccell_bg_palindex_p(&r));
|
CHECK(nccell_bg_palindex_p(&r));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == nccell_fg_alpha(&r));
|
CHECK(NCALPHA_OPAQUE == nccell_fg_alpha(&r));
|
||||||
CHECK(CELL_ALPHA_OPAQUE == nccell_bg_alpha(&r));
|
CHECK(NCALPHA_OPAQUE == nccell_bg_alpha(&r));
|
||||||
CHECK(0x20 == nccell_fg_palindex(&r));
|
CHECK(0x20 == nccell_fg_palindex(&r));
|
||||||
CHECK(0x40 == nccell_bg_palindex(&r));
|
CHECK(0x40 == nccell_bg_palindex(&r));
|
||||||
nccell_release(n_, &r);
|
nccell_release(n_, &r);
|
||||||
|
@ -158,8 +158,8 @@ TEST_CASE("Plot") {
|
|||||||
memset(&popts, 0, sizeof(popts));
|
memset(&popts, 0, sizeof(popts));
|
||||||
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
||||||
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
||||||
ncchannels_set_bg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
popts.gridtype = NCBLIT_BRAILLE;
|
popts.gridtype = NCBLIT_BRAILLE;
|
||||||
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
||||||
REQUIRE(p);
|
REQUIRE(p);
|
||||||
@ -189,8 +189,8 @@ TEST_CASE("Plot") {
|
|||||||
memset(&popts, 0, sizeof(popts));
|
memset(&popts, 0, sizeof(popts));
|
||||||
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
||||||
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
||||||
ncchannels_set_bg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
popts.gridtype = NCBLIT_2x2;
|
popts.gridtype = NCBLIT_2x2;
|
||||||
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
||||||
REQUIRE(p);
|
REQUIRE(p);
|
||||||
@ -216,8 +216,8 @@ TEST_CASE("Plot") {
|
|||||||
memset(&popts, 0, sizeof(popts));
|
memset(&popts, 0, sizeof(popts));
|
||||||
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
||||||
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
||||||
ncchannels_set_bg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
popts.gridtype = NCBLIT_8x1;
|
popts.gridtype = NCBLIT_8x1;
|
||||||
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
||||||
REQUIRE(p);
|
REQUIRE(p);
|
||||||
@ -240,8 +240,8 @@ TEST_CASE("Plot") {
|
|||||||
memset(&popts, 0, sizeof(popts));
|
memset(&popts, 0, sizeof(popts));
|
||||||
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
||||||
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
||||||
ncchannels_set_bg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
popts.gridtype = NCBLIT_3x2;
|
popts.gridtype = NCBLIT_3x2;
|
||||||
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
||||||
REQUIRE(p);
|
REQUIRE(p);
|
||||||
@ -267,8 +267,8 @@ TEST_CASE("Plot") {
|
|||||||
memset(&popts, 0, sizeof(popts));
|
memset(&popts, 0, sizeof(popts));
|
||||||
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
popts.maxchannels = CHANNELS_RGB_INITIALIZER(0xff, 0xff, 0xff, 0, 0, 0);
|
||||||
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
popts.minchannels = CHANNELS_RGB_INITIALIZER(0, 0xff, 0, 0, 0, 0);
|
||||||
ncchannels_set_bg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
ncchannels_set_fg_alpha(&popts.minchannels, CELL_ALPHA_BLEND);
|
ncchannels_set_fg_alpha(&popts.minchannels, NCALPHA_BLEND);
|
||||||
popts.gridtype = NCBLIT_BRAILLE;
|
popts.gridtype = NCBLIT_BRAILLE;
|
||||||
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
auto p = ncuplot_create(ncp, &popts, 0, 0);
|
||||||
REQUIRE(p);
|
REQUIRE(p);
|
||||||
|
@ -289,7 +289,7 @@ TEST_CASE("Reels") {
|
|||||||
int dimy, dimx;
|
int dimy, dimx;
|
||||||
notcurses_term_dim_yx(nc_, &dimy, &dimx);
|
notcurses_term_dim_yx(nc_, &dimy, &dimx);
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
struct ncplane_options nopts = {
|
struct ncplane_options nopts = {
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.x = 0,
|
.x = 0,
|
||||||
|
@ -64,8 +64,8 @@ TEST_CASE("Rotate") {
|
|||||||
};
|
};
|
||||||
struct ncplane* testn = ncplane_create(n_, &nopts);
|
struct ncplane* testn = ncplane_create(n_, &nopts);
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
CHECK(0 == ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT));
|
CHECK(0 == ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT));
|
||||||
CHECK(0 == ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT));
|
CHECK(0 == ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT));
|
||||||
REQUIRE(0 >= ncplane_set_base(testn, "", 0, channels));
|
REQUIRE(0 >= ncplane_set_base(testn, "", 0, channels));
|
||||||
nccell tl = CELL_TRIVIAL_INITIALIZER, tr = CELL_TRIVIAL_INITIALIZER;
|
nccell tl = CELL_TRIVIAL_INITIALIZER, tr = CELL_TRIVIAL_INITIALIZER;
|
||||||
nccell bl = CELL_TRIVIAL_INITIALIZER, br = CELL_TRIVIAL_INITIALIZER;
|
nccell bl = CELL_TRIVIAL_INITIALIZER, br = CELL_TRIVIAL_INITIALIZER;
|
||||||
|
@ -416,7 +416,7 @@ TEST_CASE("Wide") {
|
|||||||
int sbytes;
|
int sbytes;
|
||||||
CHECK(2 == ncplane_putegc_yx(n_, 1, 1, "六", &sbytes));
|
CHECK(2 == ncplane_putegc_yx(n_, 1, 1, "六", &sbytes));
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_BLEND);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_BLEND);
|
||||||
ncchannels_set_bg_rgb8(&channels, 0x80, 0xf0, 0x10);
|
ncchannels_set_bg_rgb8(&channels, 0x80, 0xf0, 0x10);
|
||||||
CHECK(1 == ncplane_set_base(p, " ", 0, channels));
|
CHECK(1 == ncplane_set_base(p, " ", 0, channels));
|
||||||
CHECK(0 == notcurses_render(nc_));
|
CHECK(0 == notcurses_render(nc_));
|
||||||
|
@ -19,16 +19,16 @@ void DrawBoard() { // draw all fixed components of the game
|
|||||||
board_top_y_, x / 2 - (BOARD_WIDTH + 1));
|
board_top_y_, x / 2 - (BOARD_WIDTH + 1));
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_fg_rgb(&channels, 0x00b040);
|
ncchannels_set_fg_rgb(&channels, 0x00b040);
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
board_->double_box(0, channels, BOARD_HEIGHT - 1, BOARD_WIDTH * 2 - 1, NCBOXMASK_TOP);
|
board_->double_box(0, channels, BOARD_HEIGHT - 1, BOARD_WIDTH * 2 - 1, NCBOXMASK_TOP);
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
board_->set_base("", 0, channels);
|
board_->set_base("", 0, channels);
|
||||||
scoreplane_ = std::make_unique<ncpp::Plane>(2, 30, y - BOARD_HEIGHT, 2, nullptr);
|
scoreplane_ = std::make_unique<ncpp::Plane>(2, 30, y - BOARD_HEIGHT, 2, nullptr);
|
||||||
uint64_t scorechan = 0;
|
uint64_t scorechan = 0;
|
||||||
ncchannels_set_bg_alpha(&scorechan, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&scorechan, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_fg_alpha(&scorechan, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&scorechan, NCALPHA_TRANSPARENT);
|
||||||
scoreplane_->set_base("", 0, scorechan);
|
scoreplane_->set_base("", 0, scorechan);
|
||||||
scoreplane_->set_bg_alpha(CELL_ALPHA_TRANSPARENT);
|
scoreplane_->set_bg_alpha(NCALPHA_TRANSPARENT);
|
||||||
scoreplane_->set_fg_rgb(0xd040d0);
|
scoreplane_->set_fg_rgb(0xd040d0);
|
||||||
scoreplane_->printf(0, 1, "%s", getpwuid(geteuid())->pw_name);
|
scoreplane_->printf(0, 1, "%s", getpwuid(geteuid())->pw_name);
|
||||||
scoreplane_->set_fg_rgb(0x00d0a0);
|
scoreplane_->set_fg_rgb(0x00d0a0);
|
||||||
|
@ -19,10 +19,10 @@ std::unique_ptr<ncpp::Plane> NewPiece() {
|
|||||||
std::unique_ptr<ncpp::Plane> n = std::make_unique<ncpp::Plane>(2, cols, board_top_y_ - 1, xoff, nullptr);
|
std::unique_ptr<ncpp::Plane> n = std::make_unique<ncpp::Plane>(2, cols, board_top_y_ - 1, xoff, nullptr);
|
||||||
if(n){
|
if(n){
|
||||||
uint64_t channels = 0;
|
uint64_t channels = 0;
|
||||||
ncchannels_set_bg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_bg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
ncchannels_set_fg_alpha(&channels, CELL_ALPHA_TRANSPARENT);
|
ncchannels_set_fg_alpha(&channels, NCALPHA_TRANSPARENT);
|
||||||
n->set_fg_rgb(t->color);
|
n->set_fg_rgb(t->color);
|
||||||
n->set_bg_alpha(CELL_ALPHA_TRANSPARENT);
|
n->set_bg_alpha(NCALPHA_TRANSPARENT);
|
||||||
n->set_base("", 0, channels);
|
n->set_base("", 0, channels);
|
||||||
y = 0; x = 0;
|
y = 0; x = 0;
|
||||||
for(size_t i = 0 ; i < strlen(t->texture) ; ++i){
|
for(size_t i = 0 ; i < strlen(t->texture) ; ++i){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user