Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "GraphicsManager.h"
- #ifdef CYGWIN
- # include <ncurses/curses.h>
- #else
- # include <curses.h>
- #endif
- GraphicsManager::GraphicsManager(){
- }
- //Get instance.
- GraphicsManager& GraphicsManager::getInstance(){
- static GraphicsManager graphicsManager;
- return graphicsManager;
- }
- //Get terminal ready. Return 0: OK, NEGATIVE NUMBER: Otherwise.
- int GraphicsManager::startUp(){
- /*if (initscr() == ERR)
- return -1;*/
- GraphicsManager::buffer1 = initscr();
- //Making buffer window for drawing
- GraphicsManager::buffer2 = newwin(0, 0, 0, 0);
- GraphicsManager::pBuffer = GraphicsManager::buffer1;
- //Clearing buffer
- if (werase(GraphicsManager::buffer1) != OK)
- return -2;
- if (werase(GraphicsManager::buffer2) != OK)
- return -3;
- //Leave cursor where it is after refresh.
- if (leaveok(GraphicsManager::buffer1, TRUE) != OK);
- return -4;
- if (leaveok(GraphicsManager::buffer2, TRUE) != OK);
- return -5;
- //If terminal supports color
- if (has_colors() == TRUE){
- //Enable color mode.
- start_color();
- //Setup color pairs prior to use.
- //init_pair(num, fg, bg)
- init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK);
- init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
- init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
- init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
- init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
- init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
- init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK);
- }
- //Make characters bold
- if (wattron(GraphicsManager::buffer1, A_BOLD) != OK);
- return -6;
- if (wattron(GraphicsManager::buffer2, A_BOLD) != OK);
- return -7;
- // Getting max width and height
- int maxX = 0;
- int maxY = 0;
- getmaxyx(stdscr, maxY, maxX); //MACRO
- //Make next refresh redraw window completely.
- if (clearok(GraphicsManager::buffer1, TRUE) != OK)
- return -8;
- if (clearok(GraphicsManager::buffer2, TRUE) != OK)
- return -9;
- Manager::startUp();
- return 0;
- }
- //Revert back to normal terminal.
- void GraphicsManager::shutDown(){
- endwin();
- Manager::shutDown();
- }
- //Draw character at screen location (x, y) with color. Return 0: OK, -1: Otherwise.
- int GraphicsManager::drawCharacter(Position worldPosition, char character, int color) const{
- WINDOW* window = GraphicsManager::getCurrentBuffer();
- if (wattron(window, COLOR_PAIR(color)) != OK)
- return -1;
- if (mvwaddch(window, worldPosition.getY(), worldPosition.getX(), character) != OK)
- return -1;
- //Drawing string;
- //mvwaddstr(window, y, x, std::string.c_str()
- if (wattroff(window, COLOR_PAIR(color)) != OK)
- return -1;
- return 0;
- }
- //Return display's horizontal max.
- int GraphicsManager::getHorizontal() const{
- }
- //Return display's vertical max.
- int GraphicsManager::getVertical() const{
- }
- //Render current display buffer. Return 0: OK, -1: Otherwise.
- int GraphicsManager::swapBuffers(){
- wrefresh(GraphicsManager::pBuffer);
- if (pBuffer == GraphicsManager::buffer1)
- pBuffer = GraphicsManager::buffer2;
- else
- pBuffer = GraphicsManager::buffer1;
- swapBuffers();
- }
- //Return curses window that has been most recently drawn/refreshed.
- WINDOW* GraphicsManager::getPreviousBuffer() const{
- if (pBuffer == GraphicsManager::buffer1)
- return GraphicsManager::buffer2;
- return GraphicsManager::buffer1;
- }
- //Return curses window that is being drawn, but not yet refreshed.
- WINDOW* GraphicsManager::getCurrentBuffer() const{
- if (pBuffer == GraphicsManager::buffer1)
- return GraphicsManager::buffer1;
- return GraphicsManager::buffer2;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement