From 4a9ce6e2555dfaf9155fa279f25667350377f688 Mon Sep 17 00:00:00 2001 From: Daniil Rozanov Date: Sat, 15 Mar 2025 18:03:23 +0400 Subject: feat: chtype wrap --- include/ncurses/acs.hpp | 164 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 include/ncurses/acs.hpp (limited to 'include/ncurses/acs.hpp') diff --git a/include/ncurses/acs.hpp b/include/ncurses/acs.hpp new file mode 100644 index 0000000..5686385 --- /dev/null +++ b/include/ncurses/acs.hpp @@ -0,0 +1,164 @@ +#ifndef INCLUDE_NCURSES_ACS_HPP_ +#define INCLUDE_NCURSES_ACS_HPP_ + +#include + +namespace NCURSES_CPP_NAMESPACE { + +template class acs_type { +public: + operator chtype() const NCURSES_CPP_NOEXCEPT { return NCURSES_ACS(U); } +}; + +namespace acs { + +static const auto ulcorner = acs_type<'l'>(); +static const auto llcorner = acs_type<'m'>(); +static const auto urcorner = acs_type<'k'>(); +static const auto lrcorner = acs_type<'j'>(); +static const auto ltee = acs_type<'t'>(); +static const auto rtee = acs_type<'u'>(); +static const auto btee = acs_type<'v'>(); +static const auto ttee = acs_type<'w'>(); +static const auto hline = acs_type<'q'>(); +static const auto vline = acs_type<'x'>(); +static const auto plus = acs_type<'n'>(); +static const auto s1 = acs_type<'o'>(); +static const auto s9 = acs_type<'s'>(); +static const auto diamond = acs_type<'`'>(); +static const auto ckboard = acs_type<'a'>(); +static const auto degree = acs_type<'f'>(); +static const auto plminus = acs_type<'g'>(); +static const auto bullet = acs_type<'~'>(); +static const auto larrow = acs_type<','>(); +static const auto rarrow = acs_type<'+'>(); +static const auto darrow = acs_type<'.'>(); +static const auto uarrow = acs_type<'-'>(); +static const auto board = acs_type<'h'>(); +static const auto lantern = acs_type<'i'>(); +static const auto block = acs_type<'0'>(); +static const auto s3 = acs_type<'p'>(); +static const auto s7 = acs_type<'r'>(); +static const auto lequal = acs_type<'y'>(); +static const auto gequal = acs_type<'z'>(); +static const auto pi = acs_type<'{'>(); +static const auto nequal = acs_type<'|'>(); +static const auto sterling = acs_type<'}'>(); + +}; // namespace acs + +template class wacs_type { +public: + // TODO: maybe not const, maybe smart ptr + operator const cchar_t *() const NCURSES_CPP_NOEXCEPT { + return NCURSES_WACS(U); + } +}; + +namespace wacs { + +static const auto bssb = wacs_type<'l'>(); +static const auto ssbb = wacs_type<'m'>(); +static const auto bbss = wacs_type<'k'>(); +static const auto sbbs = wacs_type<'j'>(); +static const auto sbss = wacs_type<'u'>(); +static const auto sssb = wacs_type<'t'>(); +static const auto ssbs = wacs_type<'v'>(); +static const auto bsss = wacs_type<'w'>(); +static const auto bsbs = wacs_type<'q'>(); +static const auto sbsb = wacs_type<'x'>(); +static const auto ssss = wacs_type<'n'>(); + +static const auto ulcorner = bssb; +static const auto llcorner = ssbb; +static const auto urcorner = bbss; +static const auto lrcorner = sbbs; +static const auto rtee = sbss; +static const auto ltee = sssb; +static const auto btee = ssbs; +static const auto ttee = bsss; +static const auto hline = bsbs; +static const auto vline = sbsb; +static const auto plus = ssss; + +static const auto s1 = wacs_type<'o'>(); +static const auto s9 = wacs_type<'s'>(); +static const auto diamond = wacs_type<'`'>(); +static const auto ckboard = wacs_type<'a'>(); +static const auto degree = wacs_type<'f'>(); +static const auto plminus = wacs_type<'g'>(); +static const auto bullet = wacs_type<'~'>(); + +/* Teletype 5410v1 symbols */ +static const auto larrow = wacs_type<','>(); +static const auto rarrow = wacs_type<'+'>(); +static const auto darrow = wacs_type<'.'>(); +static const auto uarrow = wacs_type<'-'>(); +static const auto board = wacs_type<'h'>(); +static const auto lantern = wacs_type<'i'>(); +static const auto block = wacs_type<'0'>(); + +/* ncurses extensions */ +static const auto s3 = wacs_type<'p'>(); +static const auto s7 = wacs_type<'r'>(); +static const auto lequal = wacs_type<'y'>(); +static const auto gequal = wacs_type<'z'>(); +static const auto pi = wacs_type<'{'>(); +static const auto nequal = wacs_type<'|'>(); +static const auto sterling = wacs_type<'}'>(); + +/* double lines */ +static const auto bddb = wacs_type<'C'>(); +static const auto ddbb = wacs_type<'D'>(); +static const auto bbdd = wacs_type<'B'>(); +static const auto dbbd = wacs_type<'A'>(); +static const auto dbdd = wacs_type<'G'>(); +static const auto dddb = wacs_type<'F'>(); +static const auto ddbd = wacs_type<'H'>(); +static const auto bddd = wacs_type<'I'>(); +static const auto bdbd = wacs_type<'R'>(); +static const auto dbdb = wacs_type<'Y'>(); +static const auto dddd = wacs_type<'E'>(); + +static const auto d_ulcorner = bddb; +static const auto d_llcorner = ddbb; +static const auto d_urcorner = bbdd; +static const auto d_lrcorner = dbbd; +static const auto d_rtee = dbdd; +static const auto d_ltee = dddb; +static const auto d_btee = ddbd; +static const auto d_ttee = bddd; +static const auto d_hline = bdbd; +static const auto d_vline = dbdb; +static const auto d_plus = dddd; + +/* thick lines */ +static const auto bttb = wacs_type<'L'>(); +static const auto ttbb = wacs_type<'M'>(); +static const auto bbtt = wacs_type<'K'>(); +static const auto tbbt = wacs_type<'J'>(); +static const auto tbtt = wacs_type<'U'>(); +static const auto tttb = wacs_type<'T'>(); +static const auto ttbt = wacs_type<'V'>(); +static const auto bttt = wacs_type<'W'>(); +static const auto btbt = wacs_type<'Q'>(); +static const auto tbtb = wacs_type<'X'>(); +static const auto tttt = wacs_type<'N'>(); + +static const auto t_ulcorner = bttb; +static const auto t_llcorner = ttbb; +static const auto t_urcorner = bbtt; +static const auto t_lrcorner = tbbt; +static const auto t_rtee = tbtt; +static const auto t_ltee = tttb; +static const auto t_btee = ttbt; +static const auto t_ttee = bttt; +static const auto t_hline = btbt; +static const auto t_vline = tbtb; +static const auto t_plus = tttt; + +} // namespace wacs + +} // namespace NCURSES_CPP_NAMESPACE + +#endif // INCLUDE_NCURSES_ACS_HPP_ -- cgit v1.2.3