add ncchannels_{set_}?channels(), nccell_{set_}?channels() #2571

This commit is contained in:
nick black 2022-01-23 21:45:40 -05:00
parent 4985bf1f3f
commit 66b9e5e70f
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

View File

@ -311,6 +311,13 @@ ncchannels_fchannel(uint64_t channels){
return ncchannels_bchannel(channels >> 32u);
}
// 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);
}
static inline bool
ncchannels_bg_rgb_p(uint64_t channels){
return ncchannel_rgb_p(ncchannels_bchannel(channels));
@ -347,6 +354,14 @@ ncchannels_set_fchannel(uint64_t* channels, uint32_t channel){
return *channels;
}
// 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;
}
// Set the 2-bit alpha component of the background channel.
static inline int
ncchannels_set_bg_alpha(uint64_t* channels, unsigned alpha){
@ -816,6 +831,11 @@ nccell_set_fchannel(nccell* c, uint32_t channel){
return ncchannels_set_fchannel(&c->channels, channel);
}
static inline uint64_t
nccell_set_channels(nccell* c, uint64_t channels){
return ncchannels_set_channels(&c->channels, channels);
}
// Is the cell part of a multicolumn element?
static inline bool
nccell_double_wide_p(const nccell* c){
@ -839,6 +859,11 @@ nccell_wide_left_p(const nccell* c){
API __attribute__ ((returns_nonnull)) const char*
nccell_extended_gcluster(const struct ncplane* n, const nccell* c);
static inline uint64_t
nccell_channels(const nccell* c){
return ncchannels_channels(c->channels);
}
// Extract the background alpha and coloring bits from a cell's channels
// as a single 32-bit value.
static inline uint32_t