Console_State::Console_State() : m_virtual_screen(Point2f(0.0f, 0.0f), Point2f(float(get_Window().get_width() * 600.0f / get_Window().get_height()), 600.0f)), m_projector(m_virtual_screen), m_bg(Vertex2f_Color(Point2f(0.0f, 0.0f), get_Colors()["console_border"]), Vertex2f_Color(Point2f(0.0f, 54.0f + 7.0f * get_Fonts()["system_36_x600"].get_text_height()), get_Colors()["console_border"]), Vertex2f_Color(Point2f(m_virtual_screen.second.x, 54.0f + 7.0f * get_Fonts()["system_36_x600"].get_text_height()), get_Colors()["console_border"]), Vertex2f_Color(Point2f(m_virtual_screen.second.x, 0.0f), get_Colors()["console_border"])), m_log(Point2f(18.0f, 18.0f), Point2f(m_virtual_screen.second.x - 18.0f, 18.0f + 6.0f * get_Fonts()["system_36_x600"].get_text_height()), "system_36_x600", "", get_Colors()["console_foreground"], false), m_prompt(Point2f(18.0f, 36.0f + 6.0f * get_Fonts()["system_36_x600"].get_text_height()), Point2f(m_virtual_screen.second.x - 18.0f, 36.0f + 7.0f * get_Fonts()["system_36_x600"].get_text_height()), "system_36_x600", "", get_Colors()["console_foreground"], true), m_log_dirty(false), m_child(0) { m_functions["args"] = new Console_Function; m_log.give_BG_Renderer(new Widget_Renderer_Color(get_Colors()["console_background"])); m_prompt.give_BG_Renderer(new Widget_Renderer_Color(get_Colors()["console_background"])); }
void Logo::create_thick_line(const Point2f &p0, const Point2f &p1, const float &thickness, const Color &color) { const Vector3f n = (vector_k % (Vector3f(p1.x, p1.y, 0.0f) - Vector3f(p0.x, p0.y, 0.0f))).normalized() * thickness; Quadrilateral<Vertex2f_Color> q( (Vertex2f_Color(Point2f(p0.x - n.x, p0.y - n.y), color)) , (Vertex2f_Color(Point2f(p0.x + n.x, p0.y + n.y), color)) , (Vertex2f_Color(Point2f(p1.x + n.x, p1.y + n.y), color)) , (Vertex2f_Color(Point2f(p1.x - n.x, p1.y - n.y), color)) ); Material m("", color); q.fax_Material(&m); m_vbo->fax_quadrilateral(&q); }
void Logo::create_circle(const Point2f &p, const float &radius, const Color &color, const size_t &segments, const size_t &begin, const size_t &end) { const float arc = 2.0f * pi / segments; Triangle<Vertex2f_Color> t(Vertex2f_Color(p, color), Vertex2f_Color(Point2f(), color), Vertex2f_Color(Point2f(), color)); Material m("", color); t.fax_Material(&m); for(size_t i = begin; i != segments && i != end; ++i) { t.b.position.x = p.x - radius * sin(arc * i); t.b.position.y = p.y - radius * cos(arc * i); t.c.position.x = p.x - radius * sin(arc * (i + 1)); t.c.position.y = p.y - radius * cos(arc * (i + 1)); m_vbo->fax_triangle(&t); } }
void Logo::create_hollow_ellipse(const Point2f &p, const Point2f &inner_radius, const Point2f &outer_radius, const Color &color, const size_t &segments, const size_t &begin, const size_t &end) { const float arc = 2.0f * pi / segments; Quadrilateral<Vertex2f_Color> q(Vertex2f_Color(p, color), Vertex2f_Color(p, color), Vertex2f_Color(p, color), Vertex2f_Color(p, color)); Material m("", color); q.fax_Material(&m); for(size_t i = begin; i != segments && i != end; ++i) { q.a.position.x = p.x - inner_radius.x * sin(arc * i); q.a.position.y = p.y - inner_radius.y * cos(arc * i); q.b.position.x = p.x - outer_radius.x * sin(arc * i); q.b.position.y = p.y - outer_radius.y * cos(arc * i); q.c.position.x = p.x - outer_radius.x * sin(arc * (i + 1)); q.c.position.y = p.y - outer_radius.y * cos(arc * (i + 1)); q.d.position.x = p.x - inner_radius.x * sin(arc * (i + 1)); q.d.position.y = p.y - inner_radius.y * cos(arc * (i + 1)); m_vbo->fax_quadrilateral(&q); } }