コード例 #1
0
ファイル: audicle_ui_coding.cpp プロジェクト: ccrma/audicle
void
CodeRevision::draw() { 
    //assume we are a scale of 1
    glPushMatrix();
    glPushName(_id);

        UIButton rev;

        switch ( _status ) { 
            case rev_PARSED     : rev.setCols( UI_BASE, Color4D( 1.0,0.85,0.85,1.0 ), Color4D(0,0,0,1.0)); break;
            case rev_TYPED      : rev.setCols( UI_BASE, Color4D( 1.0,0.92,0.85,1.0 ), Color4D(0,0,0,1.0));  break;
            case rev_COMPILED   : rev.setCols( UI_BASE, Color4D( 1.0,1.0,0.85,1.0 ), Color4D(0,0,0,1.0));  break;
            case rev_READY	    :
            case rev_RUNNING    : rev.setCols( UI_BASE, Color4D( 0.85,1.0,0.85,1.0 ), Color4D(0,0,0,1.0));  break;
            case rev_EDITED     : rev.setCols( UI_BASE, Color4D( 0.9,0.9,1.0,1.0 ), Color4D(0,0,0,1.0));  break;
            default             : rev.setCols( UI_BASE, Color4D( 1.0,1.0,1.0,1.0 ), Color4D(0,0,0,1.0));  break;
        }

        rev.seth( 1.0 );
        rev.setLabel( (char*)_buffer->filename().c_str() );
        rev.fitXLabel( 0.75 );
        rev.draw(0.75);

        if ( _selected ) { 
            _killButton->moveto( rev.left()-_killButton->w(), rev.top() - 0.5* ( rev.h()-_killButton->h() )  );
            _killButton->drawNamed(0.75);
            _sporkButton->moveto( rev.right(), rev.top() - 0.5* ( rev.h()-_sporkButton->h() ) );
            _sporkButton->drawNamed( 0.75 );
        }
        

        glTranslated ( 0, -1.0 , 0 );
        rev.seth ( ( size() - 1 )  );
        glColor4d(0.8, 1.0, 0.9, 0.3);
        glBegin(GL_POLYGON);
        rev.roundVerts();
        glEnd();

        glTranslated ( 1.0, 0 , 0 );
        for ( int i=0; i < _shreds.size() ; i++ ) { 
			ShredInstance * s = _shreds[i];
			if ( s->stat == NULL ) { 
				EM_log( CK_LOG_WARNING, "CodeRevision::draw: (%s) shred stat is NULL (%d)!", (char*)_buffer->filename().c_str(), _shreds[i]->procID); 
				s->stat = Chuck_Stats::instance()->get_shred( s->procID );
				if ( !s->stat ) { 
					EM_log( CK_LOG_WARNING, "CodeRevision::draw: adding as dead(%d)!", (char*)_buffer->filename().c_str(), _shreds[i]->procID); 
					s->stat = new Shred_Stat();
					s->stat->state = shred_KILLED;
				}
				if ( s->stat && !s->stat->data )  {
					AudicleFaceShredder::initialize_stat_data ( s->stat );
				}
			} else {
	            s->draw();
	            glTranslated ( 0, -1.0 , 0 );
			}
        }
        glTranslated ( -1.0, 0, 0);

        glPopName();
        glPopMatrix();
}