Merge branch 'release/3.5.0'
This commit is contained in:
commit
11d1c2c5c7
@ -35,8 +35,8 @@ class rgba {
|
||||
uint8_t blue_i() const;
|
||||
|
||||
bool has_color() const;
|
||||
rgba apply_alpha(rgba other) const;
|
||||
rgba try_apply_alpha(rgba other) const;
|
||||
rgba apply_alpha_to(rgba other) const;
|
||||
rgba try_apply_alpha_to(rgba other) const;
|
||||
|
||||
private:
|
||||
/**
|
||||
|
@ -205,11 +205,7 @@ bar::bar(connection& conn, signal_emitter& emitter, const config& config, const
|
||||
* These are the base colors of the bar and cannot be alpha only
|
||||
* In that case, we just use the alpha channel on the default value.
|
||||
*/
|
||||
if (color.type() == rgba::ALPHA_ONLY) {
|
||||
return def.apply_alpha(color);
|
||||
} else {
|
||||
return color;
|
||||
}
|
||||
return color.try_apply_alpha_to(def);
|
||||
} catch (const exception& err) {
|
||||
throw application_error(sstream() << "Failed to set " << key << " (reason: " << err.what() << ")");
|
||||
}
|
||||
|
@ -259,7 +259,7 @@ void builder::font_close() {
|
||||
* Insert tag to alter the current background color
|
||||
*/
|
||||
void builder::background(rgba color) {
|
||||
color = m_bar.background.try_apply_alpha(color);
|
||||
color = color.try_apply_alpha_to(m_bar.background);
|
||||
|
||||
auto hex = color_util::simplify_hex(color);
|
||||
m_colors[syntaxtag::B] = hex;
|
||||
@ -278,7 +278,7 @@ void builder::background_close() {
|
||||
* Insert tag to alter the current foreground color
|
||||
*/
|
||||
void builder::color(rgba color) {
|
||||
color = m_bar.foreground.try_apply_alpha(color);
|
||||
color = color.try_apply_alpha_to(m_bar.foreground);
|
||||
|
||||
auto hex = color_util::simplify_hex(color);
|
||||
m_colors[syntaxtag::F] = hex;
|
||||
|
@ -140,21 +140,22 @@ bool rgba::has_color() const {
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces the current alpha channel with the alpha channel of the other color
|
||||
*
|
||||
* Useful for ALPHA_ONLY colors
|
||||
* Applies the alpha channel of this color to the given color.
|
||||
*/
|
||||
rgba rgba::apply_alpha(rgba other) const {
|
||||
uint32_t val = (m_value & 0x00FFFFFF) | (((uint32_t)other.alpha_i()) << 24);
|
||||
rgba rgba::apply_alpha_to(rgba other) const {
|
||||
uint32_t val = (other.value() & 0x00FFFFFF) | (((uint32_t)alpha_i()) << 24);
|
||||
return rgba(val, m_type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls apply_alpha, if the given color is ALPHA_ONLY.
|
||||
* If this is an ALPHA_ONLY color, applies this alpha channel to the other
|
||||
* color, otherwise just returns this.
|
||||
*
|
||||
* \returns the new color if this is ALPHA_ONLY or a copy of this otherwise.
|
||||
*/
|
||||
rgba rgba::try_apply_alpha(rgba other) const {
|
||||
if (other.type() == ALPHA_ONLY) {
|
||||
return apply_alpha(other);
|
||||
rgba rgba::try_apply_alpha_to(rgba other) const {
|
||||
if (m_type == ALPHA_ONLY) {
|
||||
return apply_alpha_to(other);
|
||||
}
|
||||
|
||||
return *this;
|
||||
|
@ -96,16 +96,26 @@ TEST(Rgba, channel) {
|
||||
EXPECT_EQ(0x99 / 255.0, rgba{0x88449933}.green_d());
|
||||
}
|
||||
|
||||
TEST(Rgba, applyAlpha) {
|
||||
rgba v{0xCC123456};
|
||||
rgba modified = v.apply_alpha(rgba{0xAA000000, rgba::ALPHA_ONLY});
|
||||
TEST(Rgba, applyAlphaTo) {
|
||||
rgba v{0xAA000000, rgba::ALPHA_ONLY};
|
||||
rgba modified = v.apply_alpha_to(rgba{0xCC123456, rgba::ALPHA_ONLY});
|
||||
EXPECT_EQ(0xAA123456, modified.value());
|
||||
|
||||
v = rgba{0x00123456};
|
||||
modified = v.apply_alpha(rgba{0xCC999999});
|
||||
v = rgba{0xCC999999};
|
||||
modified = v.apply_alpha_to(rgba{0x00123456});
|
||||
EXPECT_EQ(0xCC123456, modified.value());
|
||||
}
|
||||
|
||||
TEST(Rgba, tryApplyAlphaTo) {
|
||||
rgba v{0xAA000000, rgba::ALPHA_ONLY};
|
||||
rgba modified = v.try_apply_alpha_to(rgba{0xCC123456, rgba::ALPHA_ONLY});
|
||||
EXPECT_EQ(0xAA123456, modified.value());
|
||||
|
||||
v = rgba{0xCC999999};
|
||||
modified = v.try_apply_alpha_to(rgba{0x00123456});
|
||||
EXPECT_EQ(0xCC999999, modified.value());
|
||||
}
|
||||
|
||||
TEST(ColorUtil, simplify) {
|
||||
EXPECT_EQ("#111", color_util::simplify_hex("#FF111111"));
|
||||
EXPECT_EQ("#234", color_util::simplify_hex("#ff223344"));
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Polybar version information
|
||||
# Update this on every release
|
||||
# This is used to create the version string if a git repo is not available
|
||||
3.4.0
|
||||
3.5.0
|
||||
|
Loading…
Reference in New Issue
Block a user