Merge branch 'release/3.5.0'
This commit is contained in:
commit
11d1c2c5c7
@ -35,8 +35,8 @@ class rgba {
|
|||||||
uint8_t blue_i() const;
|
uint8_t blue_i() const;
|
||||||
|
|
||||||
bool has_color() const;
|
bool has_color() const;
|
||||||
rgba apply_alpha(rgba other) const;
|
rgba apply_alpha_to(rgba other) const;
|
||||||
rgba try_apply_alpha(rgba other) const;
|
rgba try_apply_alpha_to(rgba other) const;
|
||||||
|
|
||||||
private:
|
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
|
* 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.
|
* In that case, we just use the alpha channel on the default value.
|
||||||
*/
|
*/
|
||||||
if (color.type() == rgba::ALPHA_ONLY) {
|
return color.try_apply_alpha_to(def);
|
||||||
return def.apply_alpha(color);
|
|
||||||
} else {
|
|
||||||
return color;
|
|
||||||
}
|
|
||||||
} catch (const exception& err) {
|
} catch (const exception& err) {
|
||||||
throw application_error(sstream() << "Failed to set " << key << " (reason: " << err.what() << ")");
|
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
|
* Insert tag to alter the current background color
|
||||||
*/
|
*/
|
||||||
void builder::background(rgba 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);
|
auto hex = color_util::simplify_hex(color);
|
||||||
m_colors[syntaxtag::B] = hex;
|
m_colors[syntaxtag::B] = hex;
|
||||||
@ -278,7 +278,7 @@ void builder::background_close() {
|
|||||||
* Insert tag to alter the current foreground color
|
* Insert tag to alter the current foreground color
|
||||||
*/
|
*/
|
||||||
void builder::color(rgba 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);
|
auto hex = color_util::simplify_hex(color);
|
||||||
m_colors[syntaxtag::F] = hex;
|
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
|
* Applies the alpha channel of this color to the given color.
|
||||||
*
|
|
||||||
* Useful for ALPHA_ONLY colors
|
|
||||||
*/
|
*/
|
||||||
rgba rgba::apply_alpha(rgba other) const {
|
rgba rgba::apply_alpha_to(rgba other) const {
|
||||||
uint32_t val = (m_value & 0x00FFFFFF) | (((uint32_t)other.alpha_i()) << 24);
|
uint32_t val = (other.value() & 0x00FFFFFF) | (((uint32_t)alpha_i()) << 24);
|
||||||
return rgba(val, m_type);
|
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 {
|
rgba rgba::try_apply_alpha_to(rgba other) const {
|
||||||
if (other.type() == ALPHA_ONLY) {
|
if (m_type == ALPHA_ONLY) {
|
||||||
return apply_alpha(other);
|
return apply_alpha_to(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -96,16 +96,26 @@ TEST(Rgba, channel) {
|
|||||||
EXPECT_EQ(0x99 / 255.0, rgba{0x88449933}.green_d());
|
EXPECT_EQ(0x99 / 255.0, rgba{0x88449933}.green_d());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(Rgba, applyAlpha) {
|
TEST(Rgba, applyAlphaTo) {
|
||||||
rgba v{0xCC123456};
|
rgba v{0xAA000000, rgba::ALPHA_ONLY};
|
||||||
rgba modified = v.apply_alpha(rgba{0xAA000000, rgba::ALPHA_ONLY});
|
rgba modified = v.apply_alpha_to(rgba{0xCC123456, rgba::ALPHA_ONLY});
|
||||||
EXPECT_EQ(0xAA123456, modified.value());
|
EXPECT_EQ(0xAA123456, modified.value());
|
||||||
|
|
||||||
v = rgba{0x00123456};
|
v = rgba{0xCC999999};
|
||||||
modified = v.apply_alpha(rgba{0xCC999999});
|
modified = v.apply_alpha_to(rgba{0x00123456});
|
||||||
EXPECT_EQ(0xCC123456, modified.value());
|
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) {
|
TEST(ColorUtil, simplify) {
|
||||||
EXPECT_EQ("#111", color_util::simplify_hex("#FF111111"));
|
EXPECT_EQ("#111", color_util::simplify_hex("#FF111111"));
|
||||||
EXPECT_EQ("#234", color_util::simplify_hex("#ff223344"));
|
EXPECT_EQ("#234", color_util::simplify_hex("#ff223344"));
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Polybar version information
|
# Polybar version information
|
||||||
# Update this on every release
|
# Update this on every release
|
||||||
# This is used to create the version string if a git repo is not available
|
# 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