Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
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
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
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
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
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