Skip to content

afenkart/cxxcurses

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cxxcurses

Example

Header-only C++ wrapper aiming to provide more friendly interface to the most used (at least by me) functions of ncurses instead of not so fun to use C interface.

#include "cxxcurses/cxxcurses.hpp"

#include <ostream>
#include <string>

class custom_type
{
public:
    friend auto operator<<( std::ostream& os, const custom_type& type ) -> std::ostream&
    {
        return os << "str: " << type.str << " pi: " << type.pi;
    }

private:
    const std::string str { "user defined" };
    const double pi { 3.14 };
};

auto main() -> int
{
    namespace cc = cxxcurses;
    const auto& main_win = cc::terminal::main_win;
    cc::terminal init;

    const auto hello_string { std::string { "Hello, world" } };

    main_win << cc::format( 4 )( "C++ curses centered example" );
    main_win << cc::format( 5, 6 )( "Here comes {rR} {gB} {bB}!!!", "multi", "colored", hello_string );
    main_win << cc::format( 6, 6 )( "Supports {R} types!", custom_type {} );

    auto some_window { cc::widget::window { { 10, 5, 5, 30 }, cc::terminal::main_win } };

    some_window << cc::format( 2, 2 )( "Hello from sub-window!" );
    some_window.get_char();

    return 0;
}

Building with cxxcurses

You need to have ncurses installed on your system (in case of Windows pdcurses) and link it to your project as usual.

About

Header only ncurses wrapper

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 99.9%
  • CMake 0.1%