Example #1
0
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);
    }
}