void CapturedString::draw() { string temp_str; if (getBorder()) { temp_str = (" " + getViewString() + " "); } else { temp_str = (getViewString()); } //Draw centered at position Position pos = worldToView(getPosition()); GraphicsManager &graphicsmanager = GraphicsManager::getInstance(); graphicsmanager.drawString(pos, temp_str, CENTER_JUSTIFIED, getColor()); if (getBorder()) { string top_border = ""; char side_border = '|'; for (int i = 0; i < temp_str.length(); i++) { top_border += "-"; } Position bottom_pos = Position(pos.getX(), pos.getY() + 1); Position top_pos = Position(pos.getX(), pos.getY() - 1); Position left_border = Position(pos.getX() - temp_str.length()/2 - 1, pos.getY()); Position right_border = Position(pos.getX() + temp_str.length()/2 + 1, pos.getY()); graphicsmanager.drawString(top_pos, top_border, CENTER_JUSTIFIED, getColor()); graphicsmanager.drawString(bottom_pos, top_border, CENTER_JUSTIFIED, getColor()); graphicsmanager.drawCh(left_border, side_border, getColor()); graphicsmanager.drawCh(right_border, side_border, getColor()); } }
int GraphicsManager::drawCh(Position pos, char ch, int color) { Position view_pos = worldToView(pos); wattron(buffer, COLOR_PAIR(color)); mvwaddch(buffer, view_pos.getY(), view_pos.getX() , ch); wattroff(buffer, COLOR_PAIR(color)); return 0; }
Camera::Camera() : m_phi(3.14/2.f), m_theta(3.14/2.f), m_radius(10.f), m_near(0.1f), m_far(1000.f), m_fov(60) { vec4fCopy(m_o, NULLVEC4f); worldToView(); }