void RDirNode::calcScreenPos(GLint* viewport, GLdouble* modelview, GLdouble* projection) { static GLdouble screen_x, screen_y, screen_z; gluProject( pos.x, pos.y, 0.0f, modelview, projection, viewport, &screen_x, &screen_y, &screen_z); screen_y = (float)viewport[3] - screen_y; projected_pos.x = screen_x; projected_pos.y = screen_y; gluProject( spos.x, spos.y, 0.0f, modelview, projection, viewport, &screen_x, &screen_y, &screen_z); screen_y = (float)viewport[3] - screen_y; projected_spos.x = screen_x; projected_spos.y = screen_y; static vec2 selected_offset(5.5f, -2.0f); static vec2 unselected_offset(5.5f, -1.0f); if(!gGourceSettings.hide_filenames) { //first pass - calculate positions of names for(std::list<RFile*>::const_iterator it = files.begin(); it!=files.end(); it++) { RFile* f = *it; f->calcScreenPos(viewport, modelview, projection); } } for(std::list<RDirNode*>::const_iterator it = children.begin(); it != children.end(); it++) { RDirNode* node = (*it); node->calcScreenPos(viewport, modelview, projection); } }