ncchannels_bchannel: operate only on alpha+coloring bits #2571

pull/2576/head
nick black 2 years ago
parent 9890346769
commit 860d06384d
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -2,7 +2,11 @@ This document attempts to list user-visible changes and any major internal
rearrangements of Notcurses.
* 3.0.6 (not yet released)
* Remove the unsafe `ncplane_set_bchannel()` and `ncplane_set_fchannel()`.
* `ncplane_set_[fb]channel()`, `ncplane_[fb]channel()`,
`ncplane_channels()`, `ncplane_set_channels()`,
`ncchannels_set_[fb]channel()`, and `ncchannels_[fb]channel()` now
function only on the 28 alpha + coloring bits of their respective
channels, which is almost certainly what you wanted in the first place.
* 3.0.5 (2022-01-21)
* The Hyper and Super modifiers are now supported. CapsLock and NumLock

@ -3124,13 +3124,16 @@ ncchannel_set_default(uint32_t* channel){
return *channel &= ~NC_BGDEFAULT_MASK;
}
// Extract the 32-bit background channel from a channel pair.
// Extract the background alpha and coloring bits from a 64-bit channel
// pair as a single 32-bit value.
static inline unsigned
ncchannels_bchannel(uint64_t channels){
return channels & 0xfffffffflu;
return channels & (NC_BG_RGB_MASK | NC_BG_PALETTE |
NC_BGDEFAULT_MASK | NC_BG_ALPHA_MASK);
}
// Extract the 32-bit foreground channel from a channel pair.
// Extract the foreground alpha and coloring bits from a 64-bit channel
// pair as a single 32-bit value.
static inline uint32_t
ncchannels_fchannel(uint64_t channels){
return ncchannels_bchannel(channels >> 32u);

@ -296,13 +296,16 @@ ncchannel_set_rgb8_clipped(uint32_t* channel, int r, int g, int b){
*channel = (*channel & ~(NC_BG_RGB_MASK | NC_BG_PALETTE)) | NC_BGDEFAULT_MASK | c;
}
// Extract the 32-bit background channel from a channel pair.
// Extract the background alpha and coloring bits from a 64-bit channel
// pair as a single 32-bit value.
static inline uint32_t
ncchannels_bchannel(uint64_t channels){
return channels & 0xfffffffflu;
return channels & (NC_BG_RGB_MASK | NC_BG_PALETTE |
NC_BGDEFAULT_MASK | NC_BG_ALPHA_MASK);
}
// Extract the 32-bit foreground channel from a channel pair.
// Extract the foreground alpha and coloring bits from a 64-bit channel
// pair as a single 32-bit value.
static inline uint32_t
ncchannels_fchannel(uint64_t channels){
return ncchannels_bchannel(channels >> 32u);

Loading…
Cancel
Save