Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-10-05 20:37:47 +0000
committerStijn Buys <ingar@osirion.org>2008-10-05 20:37:47 +0000
commitaaf2809dbb28fdd6dd7c09adf5c79c12f6f4926a (patch)
tree6652b50c5db6f863c746263528fed3db61bf7f32 /src
parentcd5832676aa34e693ebc0391cd0994f8e60c7120 (diff)
adds render primitives for the user interface
Diffstat (limited to 'src')
-rw-r--r--src/render/primitives.cc19
-rw-r--r--src/render/primitives.h96
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__