Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

/Users/blackie/Documents/myRepository/phobosengine-vc2005/phobosengine/phobosengine/Component.cpp

Go to the documentation of this file.
00001 
00002 
00003 #include "Component.h"
00004 
00005 #include "CoreEngine.h"
00006 #include "Renderer.h"
00007 #include "Texture.h"
00008 
00009 
00010 namespace pge {
00011         namespace gui {
00012 
00013 
00014                 //****************************************************************************
00015                 //
00016                 //
00017                 //
00018                 //****************************************************************************
00019                 Component::Component(int x, int y, int width, int height) {
00020                         m_position = Vector2i(x, y);
00021                         m_dimension = Vector2i(width, height);
00022                         m_backgroundColor = Vector4f(1.0f, 1.0f, 1.0f, 1.0f);
00023                         m_texture = NULL;
00024                         m_textureEnabled = false;
00025 
00026                 }
00027 
00028 
00029                 //****************************************************************************
00030                 //
00031                 //
00032                 //
00033                 //****************************************************************************
00034                 Component::~Component(void) {
00035                 }
00036 
00037 
00038                 //****************************************************************************
00039                 //
00040                 //
00041                 //
00042                 //****************************************************************************
00043                 void Component::render(void) {
00044                         // Render the background of the component
00045 
00046                         // Handle texturing
00047                         if(m_textureEnabled) {
00048                                 renderer::setTexture(m_texture);
00049                         } else {
00050                                 renderer::setTextureUnitEnabled(GL_TEXTURE0, false);
00051                         }
00052 
00053                         // If alpha is not 1.0f, then enable blending
00054                         if(m_backgroundColor.m_v[3] != 1.0f) {
00055                                 renderer::setBlendingEnabled(true);
00056                                 renderer::setBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00057                         }
00058 
00059                         // Render background as colored quad.
00060                         renderer::color4f(m_backgroundColor);
00061 
00062                         if(m_textureEnabled) {
00063                                 glBegin(GL_QUADS);
00064                                 renderer::vertex2i(Component::convertToGLCoords(m_position.m_v[0], m_position.m_v[1]), 0.0f, 0.0f);
00065                                 renderer::vertex2i(Component::convertToGLCoords(m_position.m_v[0], m_position.m_v[1] + m_dimension.m_v[1]),
00066                                         0.0f, 1.0f);
00067                                 renderer::vertex2i(Component::convertToGLCoords(m_position.m_v[0] + m_dimension.m_v[0], m_position.m_v[1]
00068                                 + m_dimension.m_v[1]), 1.0f, 1.0f);
00069                                 renderer::vertex2i(Component::convertToGLCoords(m_position.m_v[0] + m_dimension.m_v[0], m_position.m_v[1]),
00070                                         1.0f, 0.0f);
00071                                 glEnd();
00072                         } else {
00073                                 glBegin(GL_QUADS);
00074                                 renderer::vertex2i(Component::convertToGLCoords(m_position.m_v[0], m_position.m_v[1]));
00075                                 renderer::vertex2i(Component::convertToGLCoords(m_position.m_v[0], m_position.m_v[1] + m_dimension.m_v[1]));
00076                                 renderer::vertex2i(Component::convertToGLCoords(m_position.m_v[0] + m_dimension.m_v[0], m_position.m_v[1]
00077                                 + m_dimension.m_v[1]));
00078                                 renderer::vertex2i(Component::convertToGLCoords(m_position.m_v[0] + m_dimension.m_v[0], m_position.m_v[1]));
00079                                 glEnd();
00080                         }
00081                         if(m_backgroundColor.m_v[3] != 1.0f) {
00082                                 renderer::setBlendingEnabled(false);
00083                                 renderer::color4f(1.0f, 1.0f, 1.0f, 1.0f);
00084                         }
00085                 }
00086 
00087 
00088                 //****************************************************************************
00089                 //
00090                 //
00091                 //
00092                 //****************************************************************************
00093                 void Component::setBackgroundColor(const Vector4f &color) {
00094                         m_backgroundColor = color;
00095                 }
00096 
00097 
00098                 //****************************************************************************
00099                 //
00100                 //
00101                 //
00102                 //****************************************************************************
00103                 Vector4f Component::getBackgroundColor(void) {
00104                         return m_backgroundColor;
00105                 }
00106 
00107 
00108                 //****************************************************************************
00109                 //
00110                 //
00111                 //
00112                 //****************************************************************************
00113                 void Component::setPosition(Vector2i position) {
00114                         m_position = position;
00115                 }
00116 
00117 
00118                 //****************************************************************************
00119                 //
00120                 //
00121                 //
00122                 //****************************************************************************
00123                 Vector2i Component::getPosition(void) {
00124                         return m_position;
00125                 }
00126 
00127 
00128                 //****************************************************************************
00129                 //
00130                 //
00131                 //
00132                 //****************************************************************************
00133                 void Component::setDimension(const Vector2i &dimension) {
00134                         m_dimension = dimension;
00135                 }
00136 
00137 
00138                 //****************************************************************************
00139                 //
00140                 //
00141                 //
00142                 //****************************************************************************
00143                 Vector2i Component::getDimension(void) {
00144                         return m_dimension;
00145                 }
00146 
00147 
00148                 //****************************************************************************
00149                 //
00150                 //
00151                 //
00152                 //****************************************************************************
00153                 void Component::setTextureEnabled(bool texEnabled) {
00154                         m_textureEnabled = texEnabled;
00155                 }
00156 
00157 
00158                 //****************************************************************************
00159                 //
00160                 //
00161                 //
00162                 //****************************************************************************
00163                 bool Component::isTextureEnabled(void) {
00164                         return m_textureEnabled;
00165                 }
00166 
00167 
00168                 //****************************************************************************
00169                 //
00170                 //
00171                 //
00172                 //****************************************************************************
00173                 void Component::setTexture(Texture *texture) {
00174                         m_texture = texture;
00175                 }
00176 
00177 
00178                 //****************************************************************************
00179                 //
00180                 //
00181                 //
00182                 //****************************************************************************
00183                 Vector2i Component::convertToGLCoords(const Vector2i &coords) {
00184                         return Vector2i(coords.m_v[0], CoreEngine::getInstance()->getResolutionHeight() - coords.m_v[1]);
00185                 }
00186 
00187 
00188                 //****************************************************************************
00189                 //
00190                 //
00191                 //
00192                 //****************************************************************************
00193                 Vector2i Component::convertToGLCoords(int x, int y) {
00194                         return Vector2i(x, CoreEngine::getInstance()->getResolutionHeight() - y);
00195                 }
00196         };
00197 };

Generated on Mon Oct 16 12:08:10 2006 for Phobosengine by doxygen 1.3.4