本文整理汇总了C++中KStarsData::updateNum方法的典型用法代码示例。如果您正苦于以下问题:C++ KStarsData::updateNum方法的具体用法?C++ KStarsData::updateNum怎么用?C++ KStarsData::updateNum使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KStarsData
的用法示例。
在下文中一共展示了KStarsData::updateNum方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: update
void CatalogComponent::update( KSNumbers * ) {
if ( selected() ) {
KStarsData *data = KStarsData::Instance();
foreach ( SkyObject *obj, m_ObjectList ) {
DeepSkyObject *dso = dynamic_cast< DeepSkyObject * >( obj );
StarObject *so = dynamic_cast< StarObject *>( obj );
Q_ASSERT( dso || so ); // We either have stars, or deep sky objects
if( dso ) {
// Update the deep sky object if need be
if ( dso->updateID != data->updateID() ) {
dso->updateID = data->updateID();
if ( dso->updateNumID != data->updateNumID() ) {
dso->updateCoords( data->updateNum() );
}
dso->EquatorialToHorizontal( data->lst(), data->geo()->lat() );
}
}
else {
// Do exactly the same thing for stars
if ( so->updateID != data->updateID() ) {
so->updateID = data->updateID();
if ( so->updateNumID != data->updateNumID() ) {
so->updateCoords( data->updateNum() );
}
so->EquatorialToHorizontal( data->lst(), data->geo()->lat() );
}
}
}
this->updateID = data->updateID();
}
示例2: draw
//Reimplement draw function so that we have control over the order of
//elements, and we can add object labels
//
//The order in which components are drawn naturally determines the
//z-ordering (the layering) of the components. Objects which
//should appear "behind" others should be drawn first.
void SkyMapComposite::draw( SkyPainter *skyp )
{
SkyMap *map = SkyMap::Instance();
KStarsData *data = KStarsData::Instance();
// We delay one draw cycle before re-indexing
// we MUST ensure CLines do not get re-indexed while we use DRAW_BUF
// so we do it here.
m_CLines->reindex( &m_reindexNum );
// This queues re-indexing for the next draw cycle
m_reindexNum = KSNumbers( data->updateNum()->julianDay() );
// This ensures that the JIT updates are synchronized for the entire draw
// cycle so the sky moves as a single sheet. May not be needed.
data->syncUpdateIDs();
// prepare the aperture
// FIXME_FOV: We may want to rejigger this to allow
// wide-angle views --hdevalence
float radius = map->projector()->fov();
if ( radius > 180.0 )
radius = 180.0;
if ( m_skyMesh->inDraw() ) {
printf("Warning: aborting concurrent SkyMapComposite::draw()\n");
return;
}
m_skyMesh->inDraw( true );
SkyPoint* focus = map->focus();
m_skyMesh->aperture( focus, radius + 1.0, DRAW_BUF ); // divide by 2 for testing
// create the no-precess aperture if needed
if ( Options::showEquatorialGrid() || Options::showHorizontalGrid() || Options::showCBounds() || Options::showEquator() ) {
m_skyMesh->index( focus, radius + 1.0, NO_PRECESS_BUF );
}
// clear marks from old labels and prep fonts
m_skyLabeler->reset( map );
m_skyLabeler->useStdFont();
// info boxes have highest label priority
// FIXME: REGRESSION. Labeler now know nothing about infoboxes
// map->infoBoxes()->reserveBoxes( psky );
if( KStars::Instance() ) {
const QList<SkyObject*> obsList = KStarsData::Instance()->observingList()->sessionList();
if( Options::obsListText() )
foreach( SkyObject* obj, obsList ) {
SkyLabeler::AddLabel( obj, SkyLabeler::RUDE_LABEL );
}
}
示例3: draw
void StarComponent::draw( SkyPainter *skyp )
{
if( !selected() )
return;
SkyMap *map = SkyMap::Instance();
const Projector *proj = map->projector();
KStarsData* data = KStarsData::Instance();
UpdateID updateID = data->updateID();
bool checkSlewing = ( map->isSlewing() && Options::hideOnSlew() );
m_hideLabels = checkSlewing || !( Options::showStarMagnitudes() || Options::showStarNames() );
//shortcuts to inform whether to draw different objects
bool hideFaintStars = checkSlewing && Options::hideStars();
double hideStarsMag = Options::magLimitHideStar();
reindex( data->updateNum() );
double lgmin = log10(MINZOOM);
double lgmax = log10(MAXZOOM);
double lgz = log10(Options::zoomFactor());
double maglim;
m_zoomMagLimit = maglim = zoomMagnitudeLimit();
double labelMagLim = Options::starLabelDensity() / 5.0;
labelMagLim += ( 12.0 - labelMagLim ) * ( lgz - lgmin) / (lgmax - lgmin );
if( labelMagLim > 8.0 )
labelMagLim = 8.0;
//Calculate sizeMagLim
// Old formula:
// float sizeMagLim = ( 2.000 + 2.444 * Options::memUsage() / 10.0 ) * ( lgz - lgmin ) + 5.8;
// Using the maglim to compute the sizes of stars reduces
// discernability between brighter and fainter stars at high zoom
// levels. To fix that, we use an "arbitrary" constant in place of
// the variable star density.
// Not using this formula now.
// float sizeMagLim = 4.444 * ( lgz - lgmin ) + 5.0;
float sizeMagLim = zoomMagnitudeLimit();
if( sizeMagLim > faintMagnitude() * ( 1 - 1.5/16 ) )
sizeMagLim = faintMagnitude() * ( 1 - 1.5/16 );
skyp->setSizeMagLimit(sizeMagLim);
//Loop for drawing star images
MeshIterator region(m_skyMesh, DRAW_BUF);
magLim = maglim;
// If we are hiding faint stars, then maglim is really the brighter of hideStarsMag and maglim
if( hideFaintStars && maglim > hideStarsMag )
maglim = hideStarsMag;
m_StarBlockFactory->drawID = m_skyMesh->drawID();
int nTrixels = 0;
while( region.hasNext() ) {
++nTrixels;
Trixel currentRegion = region.next();
StarList* starList = m_starIndex->at( currentRegion );
for (int i=0; i < starList->size(); ++i) {
StarObject *curStar = starList->at( i );
if( !curStar )
continue;
float mag = curStar->mag();
// break loop if maglim is reached
if ( mag > maglim )
break;
if ( curStar->updateID != updateID )
curStar->JITupdate();
bool drawn = skyp->drawPointSource( curStar, mag, curStar->spchar() );
//FIXME_SKYPAINTER: find a better way to do this.
if ( drawn && !(m_hideLabels || mag > labelMagLim) )
addLabel( proj->toScreen(curStar), curStar );
}
}
// Draw focusStar if not null
if( focusStar ) {
if ( focusStar->updateID != updateID )
focusStar->JITupdate();
float mag = focusStar->mag();
skyp->drawPointSource(focusStar, mag, focusStar->spchar() );
}
// Now draw each of our DeepStarComponents
for( int i =0; i < m_DeepStarComponents.size(); ++i ) {
m_DeepStarComponents.at( i )->draw( skyp );
}
}