Revision: 6941 http://playerstage.svn.sourceforge.net/playerstage/?rev=6941&view=rev Author: jeremy_asher Date: 2008-08-01 19:48:20 +0000 (Fri, 01 Aug 2008)
Log Message: ----------- stage: restored speech bubble octagons Modified Paths: -------------- code/stage/trunk/libstage/model.cc Modified: code/stage/trunk/libstage/model.cc =================================================================== --- code/stage/trunk/libstage/model.cc 2008-08-01 19:04:51 UTC (rev 6940) +++ code/stage/trunk/libstage/model.cc 2008-08-01 19:48:20 UTC (rev 6941) @@ -1020,9 +1020,6 @@ float robotAngle = -rtod(pose.a); glPushMatrix(); - //TODO ask jeremy to fancy up the octagons - //const float m = 4; // margin - float w = gl_width( this->say_string ); // scaled text width float h = gl_height(); // scaled text height @@ -1041,33 +1038,50 @@ GLboolean valid; glGetBooleanv( GL_CURRENT_RASTER_POSITION_VALID, &valid ); if( valid == true ) { + GLdouble wx, wy, wz; + int viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); - { - GLdouble wx, wy, wz; - int viewport[4]; - glGetIntegerv(GL_VIEWPORT, viewport); - - GLdouble modelview[16]; - glGetDoublev(GL_MODELVIEW_MATRIX, modelview); - - GLdouble projection[16]; - glGetDoublev(GL_PROJECTION_MATRIX, projection); - - //get width and height in world coords - gluUnProject( pos[0] + w, pos[1], pos[2], modelview, projection, viewport, &wx, &wy, &wz ); - w = wx; - gluUnProject( pos[0], pos[1] + h, pos[2], modelview, projection, viewport, &wx, &wy, &wz ); - h = wy; - } + GLdouble modelview[16]; + glGetDoublev(GL_MODELVIEW_MATRIX, modelview); - glColor3f( 1, 0.8, 1 ); - gl_draw_octagon( w, h, 0 ); + GLdouble projection[16]; + glGetDoublev(GL_PROJECTION_MATRIX, projection); - glColor3f( 0, 0, 0 ); - //position text ontop of string (might be problematic if too large in perspective mode) - glTranslatef( 0, 0, 0.003 ); - gl_draw_string( 0, 0, 0.0, this->say_string ); + //get width and height in world coords + gluUnProject( pos[0] + w, pos[1], pos[2], modelview, projection, viewport, &wx, &wy, &wz ); + w = wx; + gluUnProject( pos[0], pos[1] + h, pos[2], modelview, projection, viewport, &wx, &wy, &wz ); + h = wy; + + // calculate speech bubble margin + const float m = h/10; + + // draw inside of bubble + PushColor( BUBBLE_FILL ); + glPushAttrib( GL_POLYGON_BIT | GL_LINE_BIT ); + glPolygonMode( GL_FRONT, GL_FILL ); + glEnable( GL_POLYGON_OFFSET_FILL ); + glPolygonOffset( 1.0, 1.0 ); + gl_draw_octagon( w, h, m ); + glDisable( GL_POLYGON_OFFSET_FILL ); + PopColor(); + + // draw outline of bubble + PushColor( BUBBLE_BORDER ); + glLineWidth( 1 ); + glEnable( GL_LINE_SMOOTH ); + glPolygonMode( GL_FRONT, GL_LINE ); + gl_draw_octagon( w, h, m ); + glPopAttrib(); + PopColor(); + + PushColor( BUBBLE_TEXT ); + // draw text inside the bubble + gl_draw_string( 2*m, 2*m, 0, this->say_string ); + PopColor(); + glPopMatrix(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Playerstage-commit mailing list Playerstage-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/playerstage-commit