[Kstars-devel] KDE/kdeedu/kstars/kstars/skycomponents
Akarsh Simha
akarshsimha at gmail.com
Wed Oct 8 16:17:02 CEST 2008
SVN commit 869221 by asimha:
+ Introducing a StarObject pointer called focusStar in StarComponent
that always gets drawn if it is on the screen.
+ Whenever a search by HD number is made, the resulting "copy"
StarObject is put into the draw loop by making focusStar point to
it. Although this method is ugly, it works and the requested star
doesn't drift away.
CCMAIL: kstars-devel at kde.org
M +27 -2 starcomponent.cpp
M +1 -0 starcomponent.h
--- trunk/KDE/kdeedu/kstars/kstars/skycomponents/starcomponent.cpp #869220:869221
@@ -42,7 +42,8 @@
#include <kde_file.h>
StarComponent::StarComponent(SkyComponent *parent )
- : ListComponent(parent), m_reindexNum(J2000), m_FaintMagnitude(-5.0), starsLoaded(false)
+ : ListComponent(parent), m_reindexNum(J2000), m_FaintMagnitude(-5.0),
+ starsLoaded(false), focusStar(NULL)
{
m_skyMesh = SkyMesh::Instance();
m_StarBlockFactory = StarBlockFactory::Instance();
@@ -336,6 +337,29 @@
// t_drawNamed += t.restart();
}
+ // Draw focusStar if not null
+ if( focusStar ) {
+ if ( focusStar->updateID != updateID )
+ focusStar->JITupdate( data );
+
+ float mag = focusStar->mag();
+
+ if ( map->checkVisibility( focusStar ) ) {
+ QPointF o = map->toScreen( focusStar );
+
+ if ( map->onScreen( o ) ) {
+
+ float size = ( sizeFactor*( sizeMagLim - mag ) / sizeMagLim ) + 1.;
+ if ( size <= 1.0 ) size = 1.0;
+ if( size > maxSize ) size = maxSize;
+
+ focusStar->draw( psky, o.x(), o.y(), size, (starColorMode()==0),
+ starColorIntensity(), true );
+ visibleStarCount++;
+ }
+ }
+ }
+
// Now draw each of our DeepStarComponents
for( int i =0; i < m_DeepStarComponents.size(); ++i ) {
m_DeepStarComponents.at( i )->draw( psky );
@@ -553,9 +577,10 @@
m_starObject.init( &stardata );
m_starObject.EquatorialToHorizontal( data()->lst(), data()->geo()->lat() );
m_starObject.JITupdate( data() );
+ focusStar = &m_starObject;
hdidxReader.closeFile();
// TODO: Lots of trouble since we are returning a copy. Can we fix that?
- return &m_starObject;
+ return focusStar;
}
return 0;
--- trunk/KDE/kdeedu/kstars/kstars/skycomponents/starcomponent.h #869220:869221
@@ -161,6 +161,7 @@
quint16 MSpT; // Maximum number of stars in any given trixel
StarObject m_starObject;
+ StarObject *focusStar; // This object is always drawn
KStarsSplash* m_reloadSplash;
KStarsSplash* m_reindexSplash;
More information about the Kstars-devel
mailing list