1515#include " cpp-terminal/private/conversion.hpp"
1616#include " cpp-terminal/private/unicode.hpp"
1717#include " cpp-terminal/prompt.hpp"
18+ #include " cpp-terminal/screen.hpp"
19+ #include " cpp-terminal/size.hpp"
1820#include " cpp-terminal/terminal.hpp"
1921#include " cpp-terminal/terminfo.hpp"
2022
21- #include < cstddef>
22-
2323namespace Term
2424{
2525
26- Term::Window::Window (const std::size_t & columns, const std::size_t & rows) : m_size({rows, columns}) { clear (); }
26+ Term::Window::Window (const Term::Size& size) : m_size(size) { clear (); }
27+
28+ Term::Window::Window (const Term::Screen& screen) : m_size({screen.rows (), screen.columns ()}) { clear (); }
2729
2830char32_t Term::Window::get_char (const std::size_t & column, const std::size_t & row) { return m_chars[index (column, row)]; }
2931
@@ -37,9 +39,9 @@ Term::Color Term::Window::get_bg(const std::size_t& column, const std::size_t& r
3739
3840Term::Style Term::Window::get_style (const std::size_t & column, const std::size_t & row) { return m_style[index (column, row)]; }
3941
40- std:: size_t Term::Window::get_w () const { return m_size.columns (); }
42+ const Columns& Term::Window::columns () const noexcept { return m_size.columns (); }
4143
42- std:: size_t Term::Window::get_h () const { return m_size.rows (); }
44+ const Rows& Term::Window::rows () const noexcept { return m_size.rows (); }
4345
4446void Term::Window::set_char (const std::size_t & column, const std::size_t & row, const char32_t & character)
4547{
@@ -87,7 +89,7 @@ void Term::Window::set_h(const std::size_t& new_h)
8789 m_fg.insert (m_fg.end (), dc, {0 , 0 , 0 });
8890 m_bg.insert (m_bg.end (), dc, {0 , 0 , 0 });
8991 m_style.insert (m_style.end (), dc, Style::Reset);
90- m_size = {m_size.columns (), new_h};
92+ m_size = {Term::Columns ( m_size.columns ()), Term::Rows ( new_h) };
9193 }
9294 else { throw Term::Exception (" Shrinking height not supported." ); }
9395}
@@ -186,13 +188,12 @@ void Term::Window::print_rect(const std::size_t& x1, const std::size_t& y1, cons
186188
187189void Term::Window::clear ()
188190{
189- const std::size_t area{m_size.rows () * m_size.columns ()};
190- m_style.assign (area, Style::Reset);
191- m_bg_reset.assign (area, true );
192- m_bg.assign (area, Term::Color::Name::Default);
193- m_fg_reset.assign (area, true );
194- m_fg.assign (area, Term::Color::Name::Default);
195- m_chars.assign (area, ' ' );
191+ m_style.assign (m_size.area (), Style::Reset);
192+ m_bg_reset.assign (m_size.area (), true );
193+ m_bg.assign (m_size.area (), Term::Color::Name::Default);
194+ m_fg_reset.assign (m_size.area (), true );
195+ m_fg.assign (m_size.area (), Term::Color::Name::Default);
196+ m_chars.assign (m_size.area (), ' ' );
196197}
197198
198199std::string Term::Window::render (const std::size_t & x0, const std::size_t & y0, bool term)
0 commit comments