POIPainter.cpp
Go to the documentation of this file.
00001 /*******************************************************************************
00002  *  POIPainter.cpp
00003  *
00004  *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
00005  *           Universitaet Koblenz-Landau
00006  *
00007  *  Additional information:
00008  *  $Id: $
00009  *******************************************************************************/
00010 
00011 #include "POIPainter.h"
00012 
00013 #include "Messages/PointsOfInterestM.h"
00014 
00015 #include <QtOpenGL>
00016 #include <GL/glut.h>
00017 
00018 
00019 #define THIS POIPainter
00020 
00021 THIS::THIS() : PainterPlugin( )
00022 {
00023   setName ( "Points Of Interest" );
00024 }
00025 
00026 
00027 THIS::~THIS()
00028 {
00029 }
00030 
00031 
00032 void THIS::processMessage ( Message* newMessage )
00033 {
00034   PainterPlugin::processMessage ( newMessage );
00035   switch ( newMessage->getType() )
00036   {
00037 
00038     case MessageTypes::POINTS_OF_INTEREST_M:
00039     {
00040       PointsOfInterestM* message = Message::castTo<PointsOfInterestM> ( newMessage );
00041       if ( message )
00042       {
00043         m_Pois = message->getPointsOfInterest();
00044         requestRedraw();
00045       }
00046       break;
00047     }
00048 
00049     default:
00050       break;
00051 
00052   }
00053 }
00054 
00055 void THIS::paint ( float next2DLayer )
00056 {
00057   glTranslatef ( 0.0, 0.0, next2DLayer );
00058   glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
00059 
00060   for ( list<PointOfInterest>::iterator it = m_Pois.begin(); it != m_Pois.end(); it++ )
00061   {
00062     glPushMatrix();
00063 
00064     glTranslatef ( it->x(), it->y(), 0.0 );
00065 
00066     //Draw name
00067     glColor3f ( 1, 1, 1 );
00068     QFont font;
00069     font.setFamily( "Monospace" );
00070     font.setPixelSize( 14 );
00071 
00072     m_ParentWidget->renderText ( 0, 0, 300, QString( it->getName().c_str() ), font );
00073 
00074     glLineWidth( 1.0 );
00075     glBegin( GL_LINES );
00076     glVertex3f( 0.0, 0.0, 0.0 );
00077     glVertex3f( 0.0, 0.0, 260.0 );
00078     glEnd();
00079 
00080     //draw cross
00081     float s=100.0;
00082     glRotatef( 45.0, 0, 0, 1 );
00083     glScalef( s, s, s );
00084 
00085     int color = it->getType() / 100 + 1;
00086     int r = color % 2;
00087     int g = ( color / 2 ) % 2;
00088     int b = ( color / 4 ) % 2;
00089 
00090     //paint white box
00091     glColor3f ( 1, 1, 1 );
00092     glPushMatrix();
00093     glScalef( 1.0, 0.25, .2 );
00094     glutSolidCube( 1.0 );
00095     glPopMatrix();
00096     glPushMatrix();
00097     glScalef( 0.25, 1.0, .2 );
00098     glutSolidCube( 1.0 );
00099     glPopMatrix();
00100 
00101     //paint colored box
00102     glColor3f ( r, g, b );
00103     glPushMatrix();
00104     glScalef( 0.9, 0.2, .25 );
00105     glutSolidCube( 1.0 );
00106     glPopMatrix();
00107     glPushMatrix();
00108     glScalef( 0.2, 0.9, .25 );
00109     glutSolidCube( 1.0 );
00110     glPopMatrix();
00111 
00112     glPopMatrix();
00113   }
00114 }
00115 
00116 #undef THIS


obj_rec_gui
Author(s): AGAS/agas@uni-koblenz.de
autogenerated on Mon Oct 6 2014 02:53:43