From 9c13827b62029c1c51e08ab69c7a66635a9e5bf8 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Thu, 22 Dec 2016 16:16:53 +0100 Subject: [PATCH] Remove Format::None --- src/curses/window.cpp | 37 ++++++++++++++++++++----------------- src/curses/window.h | 1 - 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/curses/window.cpp b/src/curses/window.cpp index a58c6b8f..5a7dea14 100644 --- a/src/curses/window.cpp +++ b/src/curses/window.cpp @@ -1267,40 +1267,43 @@ Window &Window::operator<<(const Color &c) Window &Window::operator<<(Format format) { + auto increase_flag = [](Window &w, int &flag, auto set) { + ++flag; + (w.*set)(true); + }; + auto decrease_flag = [](Window &w, int &flag, auto set) { + if (flag > 0) + { + --flag; + if (flag == 0) + (w.*set)(false); + } + }; switch (format) { - case Format::None: - bold((m_bold_counter = 0)); - reverse((m_reverse_counter = 0)); - altCharset((m_alt_charset_counter = 0)); - break; case Format::Bold: - bold(++m_bold_counter); + increase_flag(*this, m_bold_counter, &Window::bold); break; case Format::NoBold: - if (--m_bold_counter <= 0) - bold((m_bold_counter = 0)); + decrease_flag(*this, m_bold_counter, &Window::bold); break; case Format::Underline: - underline(++m_underline_counter); + increase_flag(*this, m_underline_counter, &Window::underline); break; case Format::NoUnderline: - if (--m_underline_counter <= 0) - underline((m_underline_counter = 0)); + decrease_flag(*this, m_underline_counter, &Window::underline); break; case Format::Reverse: - reverse(++m_reverse_counter); + increase_flag(*this, m_reverse_counter, &Window::reverse); break; case Format::NoReverse: - if (--m_reverse_counter <= 0) - reverse((m_reverse_counter = 0)); + decrease_flag(*this, m_reverse_counter, &Window::reverse); break; case Format::AltCharset: - altCharset(++m_alt_charset_counter); + increase_flag(*this, m_alt_charset_counter, &Window::altCharset); break; case Format::NoAltCharset: - if (--m_alt_charset_counter <= 0) - altCharset((m_alt_charset_counter = 0)); + decrease_flag(*this, m_alt_charset_counter, &Window::altCharset); break; } return *this; diff --git a/src/curses/window.h b/src/curses/window.h index ed51001c..207e3cfa 100644 --- a/src/curses/window.h +++ b/src/curses/window.h @@ -195,7 +195,6 @@ enum class TermManip { ClearToEOL }; /// Format flags used by NCurses enum class Format { - None, Bold, NoBold, Underline, NoUnderline, Reverse, NoReverse,