rtcRenderNode.cpp
Go to the documentation of this file.
00001 /*
00002 * Copyright (C) 2007
00003 * Robert Bosch Corporation
00004 * Research and Technology Center North America
00005 * Palo Alto, California
00006 *
00007 * All rights reserved.
00008 */
00009 
00010 /*--------------------------------------------------------------------
00011 * project ....: PUMA: Probablistic Unsupervised Model Acquisition
00012 * file .......: RenderNode.cpp
00013 * authors ....: Benjamin Pitzer
00014 * organization: Bosch, RTC
00015 * creation ...: 16.04.2007
00016 * revisions ..: $Id: RenderNode.cpp,v 1.2 2007/05/08 18:54:45 prb2pal Exp $
00017 */
00018 
00019 //== INCLUDES =================================================================
00020 #include "rtc/rtcRenderer.h"
00021 #include <GL/gl.h>
00022 #include "rtc/rtcRenderNode.h"
00023 
00024 //== NAMESPACES ===============================================================
00025 
00026 namespace rtc {
00027 
00028 //== IMPLEMENTATION ==========================================================
00029 
00030 // --------------------------------------------------
00031 // RenderNode::Parameters
00032 // --------------------------------------------------
00033 
00034 // default constructor
00035 RenderNode::Parameters::Parameters()
00036 {
00037   draw_faces = true;
00038   draw_vertices = false;
00039   draw_wireframe = false;
00040   use_vertex_colors = false;
00041   color_mode = NO_COLOR;
00042   highlite = false;
00043 }
00044 
00045 // copy constructor
00046 RenderNode::Parameters::Parameters(const Parameters& other)
00047 {
00048   copy(other);
00049 }
00050 
00051 // destructor
00052 RenderNode::Parameters::~Parameters()
00053 {
00054 }
00055 
00056 // copy member
00057 RenderNode::Parameters&
00058   RenderNode::Parameters::copy(const Parameters& other)
00059 {
00060   draw_faces = other.draw_faces;
00061   draw_vertices = other.draw_vertices;
00062   draw_wireframe = other.draw_wireframe;
00063   use_vertex_colors = other.use_vertex_colors;
00064   color_mode = other.color_mode;
00065   highlite = other.highlite;
00066   return *this;
00067 }
00068 
00069 // alias for copy member
00070 RenderNode::Parameters&
00071   RenderNode::Parameters::operator=(const Parameters& other)
00072 {
00073   return copy(other);
00074 }
00075 
00076 // clone member
00077 RenderNode::Parameters*
00078   RenderNode::Parameters::clone() const
00079 {
00080   return new Parameters(*this);
00081 }
00082 
00083 /*
00084 * read the RenderNode parameters
00085 */
00086 bool RenderNode::Parameters::read(std::istream& is)
00087 {
00088   return true;
00089 }
00090 
00091 /*
00092 * write the RenderNode parameters
00093 */
00094 bool RenderNode::Parameters::write(std::ostream& os) const
00095 {
00096   return true;
00097 }
00098 
00099 // --------------------------------------------------
00100 // RenderNode
00101 // --------------------------------------------------
00102 
00103 // constructor
00104 RenderNode::RenderNode(Renderer* renderer)
00105 {
00106   m_params = new Parameters();
00107   m_is_initialized = false;
00108   m_renderer = renderer;
00109 }
00110 
00111 // destructor
00112 RenderNode::~RenderNode()
00113 {
00114   if(m_params) delete m_params;
00115 }
00116 
00117 /* sets the Renderer's Parameters.
00118 The Renderer keeps its own copy of the given Parameters.*/
00119 bool RenderNode::setParameters(const RenderNode::Parameters& theParams)
00120 {
00121   if(m_params) delete m_params;
00122   m_params = 0;
00123   m_params = theParams.clone();
00124   return true;
00125 }
00126 
00127 /*
00128 * returns current Parameters.
00129 */
00130 const RenderNode::Parameters& RenderNode::getParameters() const
00131 {
00132   return *m_params;
00133 }
00134 
00135 /*
00136 * returns current Parameters.
00137 */
00138 RenderNode::Parameters& RenderNode::getParameters()
00139 {
00140   return *m_params;
00141 }
00142 
00143 void RenderNode::initialize()
00144 {
00145 }
00146 
00147 void RenderNode::rebuild()
00148 {
00149   clear();
00150   initialize();
00151 }
00152 
00153 void RenderNode::clear()
00154 {
00155 }
00156 
00157 void RenderNode::render()
00158 {
00159 }
00160 
00161 void RenderNode::preRender()
00162 {
00163   // apply transform
00164   glPushMatrix();
00165   Transformf t(m_transform.transposed());
00166   glMultMatrixf(&t.x[0]);
00167 
00168   if(m_params->highlite)
00169     glColor3f(1.0,1.0,0.0); // yellow
00170   else {
00171     switch(m_params->color_mode)
00172     {
00173     case Parameters::NO_COLOR:
00174       break;
00175     case Parameters::VERTEX_COLOR:
00176       //glColor3f(0.705f, 0.976f, 0.270f); // greenish
00177       glColor3f(1.0,1.0,1.0); // white
00178       break;
00179     case Parameters::TEXTURE_COLOR:
00180       glColor3f(1,1,1);
00181       break;
00182     default:
00183       glColor3f(1,1,1);
00184       break;
00185     }
00186   }
00187 
00188 }
00189 
00190 void RenderNode::postRender()
00191 {
00192   // reset transformation matrix
00193   glPopMatrix();
00194 }
00195 
00196 
00197 void RenderNode::setTransform(Transformf transform)
00198 {
00199   m_transform = transform;
00200 }
00201 
00202 const Transformf& RenderNode::getTransform()
00203 {
00204   return m_transform;
00205 }
00206 
00207 eRenderMode RenderNode::getRenderMode()
00208 {
00209   return m_renderer->getRenderMode();
00210 }
00211 
00212 void RenderNode::displayFaces(bool b)
00213 {
00214   m_params->draw_faces = b;
00215 }
00216 
00217 void RenderNode::displayVertices(bool b)
00218 {
00219   m_params->draw_vertices = b;
00220 }
00221 
00222 void RenderNode::displayWireframe(bool b)
00223 {
00224   m_params->draw_wireframe = b;
00225 }
00226 
00227 void RenderNode::setColorMode(Parameters::ColorMode b)
00228 {
00229   m_params->color_mode = b;
00230 }
00231 
00232 void RenderNode::setHighlite(bool b)
00233 {
00234   m_params->highlite = b;
00235 }
00236 
00237 
00238 //=============================================================================
00239 } // namespace puma
00240 //=============================================================================


rtc
Author(s): Benjamin Pitzer
autogenerated on Thu Jan 2 2014 11:04:53