diff options
| author | Stijn Buys <ingar@osirion.org> | 2008-10-05 20:37:47 +0000 | 
|---|---|---|
| committer | Stijn Buys <ingar@osirion.org> | 2008-10-05 20:37:47 +0000 | 
| commit | aaf2809dbb28fdd6dd7c09adf5c79c12f6f4926a (patch) | |
| tree | 6652b50c5db6f863c746263528fed3db61bf7f32 /src | |
| parent | cd5832676aa34e693ebc0391cd0994f8e60c7120 (diff) | |
adds render primitives for the user interface
Diffstat (limited to 'src')
| -rw-r--r-- | src/render/primitives.cc | 19 | ||||
| -rw-r--r-- | src/render/primitives.h | 96 | 
2 files changed, 115 insertions, 0 deletions
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__  | 
