You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
KED/ked/ncurses/terminal.h

111 lines
1.6 KiB

#include "main.h"
#ifndef _TEMINAL_H_
#define _TEMINAL_H_
// This calls is used to initilaize ncurses terminal the correct way depending of the terminalk
class Terminal
{
public:
// Constuctor & Destructor
Terminal();
~Terminal();
//Functions
int setup();
void tearDown();
int getKey();
int getXMax();
int getYMax();
void startDraw();
void endDraw();
bool isDone();
void quit();
void draw(int x, int y, const std::string& toDraw);
private:
int xMax, yMax, mouseX, mouseY = 0;
bool m_done = false;
};
Terminal::Terminal()
{
setup();
}
Terminal::~Terminal()
{
tearDown();
}
int Terminal::setup()
{
initscr(); // Inits ncurses screen in memory
raw(); // raw input sor ctrl-c and ctrl-z wont work
noecho(); // don't show the user inputs
curs_set(0); // Cursor won't show up
getmaxyx(stdscr, yMax, xMax);
box(stdscr,0,0);
if(!has_colors()) // If the terminal doesn't have colors
{
tearDown(); // Destroys the mains window
printf("This menu is not supported by terminals without colors\n");
return -1; // Return an error.
}
getyx(stdscr, mouseY, mouseX);
start_color(); // Otherwise init colors
return 0;
}
void Terminal::tearDown()
{
endwin();
}
int Terminal::getKey()
{
return getch();
}
int Terminal::getXMax()
{
return xMax;
}
int Terminal::getYMax()
{
return yMax;
}
void Terminal::startDraw()
{
clear();
}
void Terminal::endDraw()
{
refresh();
}
bool Terminal::isDone()
{
return m_done;
}
void Terminal::quit()
{
m_done = true;
}
void Terminal::draw(int x, int y, const std::string& toDraw)
{
mvprintw(y,x,toDraw.c_str());
}
#endif