void onHit(ObjectID id) { // First see whether it's a feature: FeatureIndex* index = Registry::objectIndex()->get<FeatureIndex>( id ); Feature* feature = index ? index->getFeature( id ) : 0L; if ( feature ) { s_fidLabel->setText( Stringify() << "Feature ID = " << feature->getFID() << " (oid = " << id << ")" ); s_nameLabel->setText( Stringify() << "Name = " << feature->getString("name") ); } else { // Check whether it's an annotation: AnnotationNode* anno = Registry::objectIndex()->get<AnnotationNode>( id ); if ( anno ) { s_fidLabel->setText( Stringify() << "ObjectID = " << id ); s_nameLabel->setName( Stringify() << "Name = " << anno->getName() ); } // None of the above.. clear. else { s_fidLabel->setText( Stringify() << "oid = " << id ); s_nameLabel->setText( "Name = " ); } } s_highlightUniform->set( id ); }
void onHit(ObjectID id) { FeatureIndex* index = Registry::objectIndex()->get<FeatureIndex>( id ); Feature* feature = index ? index->getFeature( id ) : 0L; if ( feature && feature->getFID() != _lastFID ) { _grid->clearControls(); unsigned r=0; _grid->setControl( 0, r, new LabelControl("FID", Color::Red) ); _grid->setControl( 1, r, new LabelControl(Stringify()<<feature->getFID(), Color::White) ); ++r; const AttributeTable& attrs = feature->getAttrs(); for( AttributeTable::const_iterator i = attrs.begin(); i != attrs.end(); ++i, ++r ) { _grid->setControl( 0, r, new LabelControl(i->first, 14.0f, Color::Yellow) ); _grid->setControl( 1, r, new LabelControl(i->second.getString(), 14.0f, Color::White) ); } if ( !_grid->visible() ) _grid->setVisible( true ); _lastFID = feature->getFID(); } }