doc ncchannels_channels() and ncchannels_set_channels()

This commit is contained in:
nick black 2022-01-23 21:45:06 -05:00
parent 1af32a63a6
commit 4985bf1f3f
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC
3 changed files with 30 additions and 0 deletions

View File

@ -3156,6 +3156,21 @@ ncchannel_set_default(uint32_t* channel){
return *channel &= ~NC_BGDEFAULT_MASK; return *channel &= ~NC_BGDEFAULT_MASK;
} }
// Extract the background alpha and coloring bits from a 64-bit channel pair.
static inline uint64_t
ncchannels_channels(uint64_t channels){
return ncchannels_bchannel(channels) |
((uint64_t)ncchannels_fchannel(channels) << 32u);
}
// Set the alpha and coloring bits of a channel pair from another channel pair.
static inline uint64_t
ncchannels_set_channels(uint64_t* dst, uint64_t channels){
ncchannels_set_bchannel(dst, channels & 0xffffffffull);
ncchannels_set_fchannel(dst, (channels >> 32u) & 0xffffffffull);
return *dst;
}
// Extract the background alpha and coloring bits from a 64-bit channel // Extract the background alpha and coloring bits from a 64-bit channel
// pair as a single 32-bit value. // pair as a single 32-bit value.
static inline unsigned static inline unsigned

View File

@ -78,10 +78,14 @@ typedef struct nccell {
**char* nccell_extract(const struct ncplane* ***n***, const nccell* ***c***, uint16_t* ***stylemask***, uint64_t* ***channels***);** **char* nccell_extract(const struct ncplane* ***n***, const nccell* ***c***, uint16_t* ***stylemask***, uint64_t* ***channels***);**
**uint64_t nccell_channels(const nccell* ***c***);**
**uint32_t nccell_bchannel(const nccell* ***c***);** **uint32_t nccell_bchannel(const nccell* ***c***);**
**uint32_t nccell_fchannel(const nccell* ***c***);** **uint32_t nccell_fchannel(const nccell* ***c***);**
**uint64_t nccell_set_channels(nccell* ***c***, uint64_t ***channels***);**
**uint64_t nccell_set_bchannel(nccell* ***c***, uint32_t ***channel***);** **uint64_t nccell_set_bchannel(nccell* ***c***, uint32_t ***channel***);**
**uint64_t nccell_set_fchannel(nccell* ***c***, uint32_t ***channel***);** **uint64_t nccell_set_fchannel(nccell* ***c***, uint32_t ***channel***);**

View File

@ -89,10 +89,21 @@ notcurses_channels - operations on notcurses channels
**int ncchannels_set_bg_palindex(uint64_t* ***channels***, unsigned ***idx***);** **int ncchannels_set_bg_palindex(uint64_t* ***channels***, unsigned ***idx***);**
**uint64_t ncchannels_set_channels(uint64_t* ***dst***, uint64_t ***channels***);**
**uint64_t ncchannels_channels(uint64_t ***channels***);**
**uint64_t ncchannels_combine(uint32_t ***fchan***, uint32_t ***bchan***);** **uint64_t ncchannels_combine(uint32_t ***fchan***, uint32_t ***bchan***);**
# DESCRIPTION # DESCRIPTION
Channels ought not be manually manipulated. They contain several bits used
"behind the scenes", and e.g. direct assignment is likely to lead to strange
and infrequent failures. To assign one channel pair to another, use
**ncchannels_set_channels**. To assign a channel to a channel pair's
foreground, use **ncchannels_set_fchannel**. To assign a channel to a channel
pair's background, use **ncchannels_set_bchannel**.
**ncchannel_palindex** extracts the palette index from a channel. The channel **ncchannel_palindex** extracts the palette index from a channel. The channel
must be palette-indexed, or the return value is meaningless. Verify palette must be palette-indexed, or the return value is meaningless. Verify palette
indexing with **ncchannel_palindex_p**. A channel can be set to palette indexing with **ncchannel_palindex_p**. A channel can be set to palette