Merge branch 'release/3.5.0'

This commit is contained in:
patrick96 2020-12-02 18:12:53 +01:00
commit 11d1c2c5c7
No known key found for this signature in database
GPG Key ID: 521E5E03AEBCA1A7
6 changed files with 31 additions and 24 deletions

View File

@ -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:
/**

View File

@ -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() << ")");
}

View File

@ -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;

View File

@ -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;

View File

@ -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"));

View File

@ -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