Fix fmt/color.h

This commit is contained in:
Victor Zverovich 2020-11-08 07:24:07 -08:00
parent 10ebe6cb48
commit 8c6215f5de

View File

@ -261,32 +261,12 @@ class text_style {
} }
FMT_DEPRECATED FMT_CONSTEXPR text_style& operator&=(const text_style& rhs) { FMT_DEPRECATED FMT_CONSTEXPR text_style& operator&=(const text_style& rhs) {
if (!set_foreground_color) { return and_assign(rhs);
set_foreground_color = rhs.set_foreground_color;
foreground_color = rhs.foreground_color;
} else if (rhs.set_foreground_color) {
if (!foreground_color.is_rgb || !rhs.foreground_color.is_rgb)
FMT_THROW(format_error("can't AND a terminal color"));
foreground_color.value.rgb_color &= rhs.foreground_color.value.rgb_color;
}
if (!set_background_color) {
set_background_color = rhs.set_background_color;
background_color = rhs.background_color;
} else if (rhs.set_background_color) {
if (!background_color.is_rgb || !rhs.background_color.is_rgb)
FMT_THROW(format_error("can't AND a terminal color"));
background_color.value.rgb_color &= rhs.background_color.value.rgb_color;
}
ems = static_cast<emphasis>(static_cast<uint8_t>(ems) &
static_cast<uint8_t>(rhs.ems));
return *this;
} }
FMT_DEPRECATED friend FMT_CONSTEXPR text_style FMT_DEPRECATED friend FMT_CONSTEXPR text_style
operator&(text_style lhs, const text_style& rhs) { operator&(text_style lhs, const text_style& rhs) {
return lhs &= rhs; return lhs.and_assign(rhs);
} }
FMT_CONSTEXPR bool has_foreground() const FMT_NOEXCEPT { FMT_CONSTEXPR bool has_foreground() const FMT_NOEXCEPT {
@ -326,17 +306,36 @@ class text_style {
} }
} }
/** Creates a text style from the foreground (text) color. */ // DEPRECATED!
friend FMT_CONSTEXPR_DECL text_style fg(detail::color_type foreground) FMT_CONSTEXPR text_style& and_assign(const text_style& rhs) {
FMT_NOEXCEPT { if (!set_foreground_color) {
return text_style(true, foreground); set_foreground_color = rhs.set_foreground_color;
foreground_color = rhs.foreground_color;
} else if (rhs.set_foreground_color) {
if (!foreground_color.is_rgb || !rhs.foreground_color.is_rgb)
FMT_THROW(format_error("can't AND a terminal color"));
foreground_color.value.rgb_color &= rhs.foreground_color.value.rgb_color;
}
if (!set_background_color) {
set_background_color = rhs.set_background_color;
background_color = rhs.background_color;
} else if (rhs.set_background_color) {
if (!background_color.is_rgb || !rhs.background_color.is_rgb)
FMT_THROW(format_error("can't AND a terminal color"));
background_color.value.rgb_color &= rhs.background_color.value.rgb_color;
}
ems = static_cast<emphasis>(static_cast<uint8_t>(ems) &
static_cast<uint8_t>(rhs.ems));
return *this;
} }
/** Creates a text style from the background color. */ friend FMT_CONSTEXPR_DECL text_style fg(detail::color_type foreground)
FMT_NOEXCEPT;
friend FMT_CONSTEXPR_DECL text_style bg(detail::color_type background) friend FMT_CONSTEXPR_DECL text_style bg(detail::color_type background)
FMT_NOEXCEPT { FMT_NOEXCEPT;
return text_style(false, background);
}
detail::color_type foreground_color; detail::color_type foreground_color;
detail::color_type background_color; detail::color_type background_color;
@ -345,6 +344,16 @@ class text_style {
emphasis ems; emphasis ems;
}; };
/** Creates a text style from the foreground (text) color. */
FMT_CONSTEXPR text_style fg(detail::color_type foreground) FMT_NOEXCEPT {
return text_style(true, foreground);
}
/** Creates a text style from the background color. */
FMT_CONSTEXPR text_style bg(detail::color_type background) FMT_NOEXCEPT {
return text_style(false, background);
}
FMT_CONSTEXPR text_style operator|(emphasis lhs, emphasis rhs) FMT_NOEXCEPT { FMT_CONSTEXPR text_style operator|(emphasis lhs, emphasis rhs) FMT_NOEXCEPT {
return text_style(lhs) | rhs; return text_style(lhs) | rhs;
} }