本文整理汇总了C++中KStarsData::updateID方法的典型用法代码示例。如果您正苦于以下问题:C++ KStarsData::updateID方法的具体用法?C++ KStarsData::updateID怎么用?C++ KStarsData::updateID使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KStarsData
的用法示例。
在下文中一共展示了KStarsData::updateID方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: JITupdate
// Don't precess the points, just account for the Earth's rotation
void NoPrecessIndex::JITupdate( LineList* lineList )
{
KStarsData *data = KStarsData::Instance();
lineList->updateID = data->updateID();
SkyList* points = lineList->points();
for (int i = 0; i < points->size(); i++ ) {
points->at( i )->EquatorialToHorizontal( data->lst(), data->geo()->lat() );
}
}
示例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 );
}
}
示例4: draw
// TODO: Optimize draw, if it is worth it.
void DeepStarComponent::draw( SkyPainter *skyp ) {
#ifndef KSTARS_LITE
if ( !fileOpened ) return;
#ifdef PROFILE_SINCOS
long trig_calls_here = - dms::trig_function_calls;
long trig_redundancy_here = - dms::redundant_trig_function_calls;
long cachingdms_bad_uses = -CachingDms::cachingdms_bad_uses;
dms::seconds_in_trig = 0.;
#endif
#ifdef PROFILE_UPDATECOORDS
StarObject::updateCoordsCpuTime = 0.;
StarObject::starsUpdated = 0;
#endif
SkyMap *map = SkyMap::Instance();
KStarsData* data = KStarsData::Instance();
UpdateID updateID = data->updateID();
//FIXME_FOV -- maybe not clamp like that...
float radius = map->projector()->fov();
if ( radius > 90.0 ) radius = 90.0;
if ( m_skyMesh != SkyMesh::Instance() && m_skyMesh->inDraw() ) {
printf("Warning: aborting concurrent DeepStarComponent::draw()");
}
bool checkSlewing = ( map->isSlewing() && Options::hideOnSlew() );
//shortcuts to inform whether to draw different objects
bool hideFaintStars( checkSlewing && Options::hideStars() );
double hideStarsMag = Options::magLimitHideStar();
//adjust maglimit for ZoomLevel
// double lgmin = log10(MINZOOM);
// double lgmax = log10(MAXZOOM);
// double lgz = log10(Options::zoomFactor());
// TODO: Enable hiding of faint stars
float maglim = StarComponent::zoomMagnitudeLimit();
if( maglim < triggerMag )
return;
m_zoomMagLimit = maglim;
m_skyMesh->inDraw( true );
SkyPoint* focus = map->focus();
m_skyMesh->aperture( focus, radius + 1.0, DRAW_BUF ); // divide by 2 for testing
MeshIterator region(m_skyMesh, DRAW_BUF);
magLim = maglim;
// If we are to hide the fainter stars (eg: while slewing), we set the magnitude limit to hideStarsMag.
if( hideFaintStars && maglim > hideStarsMag )
maglim = hideStarsMag;
StarBlockFactory *m_StarBlockFactory = StarBlockFactory::Instance();
// m_StarBlockFactory->drawID = m_skyMesh->drawID();
// qDebug() << "Mesh size = " << m_skyMesh->size() << "; drawID = " << m_skyMesh->drawID();
QTime t;
int nTrixels = 0;
t_dynamicLoad = 0;
t_updateCache = 0;
t_drawUnnamed = 0;
visibleStarCount = 0;
t.start();
// Mark used blocks in the LRU Cache. Not required for static stars
if( !staticStars ) {
while( region.hasNext() ) {
Trixel currentRegion = region.next();
for( int i = 0; i < m_starBlockList.at( currentRegion )->getBlockCount(); ++i ) {
StarBlock *prevBlock = ( ( i >= 1 ) ? m_starBlockList.at( currentRegion )->block( i - 1 ) : NULL );
StarBlock *block = m_starBlockList.at( currentRegion )->block( i );
if( i == 0 && !m_StarBlockFactory->markFirst( block ) )
qDebug() << "markFirst failed in trixel" << currentRegion;
if( i > 0 && !m_StarBlockFactory->markNext( prevBlock, block ) )
qDebug() << "markNext failed in trixel" << currentRegion << "while marking block" << i;
if( i < m_starBlockList.at( currentRegion )->getBlockCount()
&& m_starBlockList.at( currentRegion )->block( i )->getFaintMag() < maglim )
break;
}
}
t_updateCache = t.restart();
region.reset();
}
while ( region.hasNext() ) {
++nTrixels;
Trixel currentRegion = region.next();
// NOTE: We are guessing that the last 1.5/16 magnitudes in the catalog are just additions and the star catalog
//.........这里部分代码省略.........