From aaf2809dbb28fdd6dd7c09adf5c79c12f6f4926a Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 5 Oct 2008 20:37:47 +0000 Subject: adds render primitives for the user interface --- src/render/primitives.cc | 19 ++++++++++ src/render/primitives.h | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 src/render/primitives.cc create mode 100644 src/render/primitives.h (limited to 'src/render') diff --git a/src/render/primitives.cc b/src/render/primitives.cc new file mode 100644 index 0000000..b790c70 --- /dev/null +++ b/src/render/primitives.cc @@ -0,0 +1,19 @@ +/* + render/primitives.cc + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + + +#include "render/primitives.h" + +namespace render +{ + +namespace primitives +{ + +} + +} + diff --git a/src/render/primitives.h b/src/render/primitives.h new file mode 100644 index 0000000..fa03c3c --- /dev/null +++ b/src/render/primitives.h @@ -0,0 +1,96 @@ +/* + render/primitives.h + This file is part of the Osirion project and is distributed under + the terms of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_RENDER_PRIMITIVES_H__ +#define __INCLUDED_RENDER_PRIMITIVES_H__ + +#include "auxiliary/functions.h" +#include "math/vector2f.h" +#include "render/gl.h" +#include "render/text.h" +#include "render/textures.h" + +namespace render +{ + +/// drawing primitives for the user interface +namespace primitives +{ + +/// draw a border +inline void border(math::Vector2f const &location, math::Vector2f const &size) +{ + using namespace render::gl; + + begin(LineLoop); + vertex(location.x +1 , location.y); + vertex(location.x + size.x, location.y); + vertex(location.x + size.x, location.y + size.y -1); + vertex(location.x +1, location.y + size.y - 1); + end(); +} + +/// draw a rectangle +inline void rectangle(math::Vector2f const &location, math::Vector2f const &size) +{ + using namespace render::gl; + + begin(Quads); + vertex(location.x +1 , location.y); + vertex(location.x + size.x, location.y); + vertex(location.x + size.x, location.y + size.y -1); + vertex(location.x +1, location.y + size.y - 1); + end(); +} + +/// draw a rectangular bitmap +inline void bitmap(math::Vector2f const &location, math::Vector2f const &size, std::string const &texture) +{ + + using namespace render::gl; + + render::Textures::bind(texture); + gl::enable(GL_TEXTURE_2D); + + begin(Quads); + + glTexCoord2f(0.0f, 0.0f); + vertex(location.x +1 , location.y); + + glTexCoord2f(1.0f, 0.0f); + vertex(location.x + size.x, location.y); + + glTexCoord2f(1.0f, 1.0f); + vertex(location.x + size.x, location.y + size.y -1); + + glTexCoord2f(0.0f, 1.0f); + vertex(location.x +1, location.y + size.y - 1); + end(); + + gl::disable(GL_TEXTURE_2D); +} + +/// draw one line of centered text +inline void text_centered(math::Vector2f const &location, math::Vector2f const &size, std::string const &text) +{ + Text::setfont("gui", 14, 24); + gl::enable(GL_TEXTURE_2D); + + math::Vector2f v(location); + + v.x += (size.x - aux::text_strip(text).size() * Text::fontwidth()) /2.0f; + v.y += (size.y - Text::fontheight()) / 2.0f; + + Text::draw(v.x, v.y, text); + + gl::disable(GL_TEXTURE_2D); +} + +} + +} + +#endif // __INCLUDED_RENDER_PRIMITIVES_H__ -- cgit v1.2.3