From kde-commits Sun Feb 27 02:02:04 2011 From: =?utf-8?q?J=C3=A9r=C3=B4me=20Sonrier?= Date: Sun, 27 Feb 2011 02:02:04 +0000 To: kde-commits Subject: KDE/kdeedu/kstars/kstars/skycomponents Message-Id: <20110227020204.CD600AC8C0 () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=129877215206108 SVN commit 1222886 by jsonrier: Add labels for important points on the equator/ecliptic. CCMAIL: kstars-devel@kde.org CCBUG: 51299 M +33 -0 ecliptic.cpp M +1 -0 ecliptic.h M +28 -0 equator.cpp M +1 -0 equator.h --- trunk/KDE/kdeedu/kstars/kstars/skycomponents/ecliptic.cpp #1222885:1222886 @@ -27,6 +27,7 @@ #include "skylabeler.h" #include "skypainter.h" +#include "projections/projector.h" Ecliptic::Ecliptic(SkyComposite *parent ) : LineListIndex( parent, i18n("Ecliptic") ), @@ -74,4 +75,36 @@ drawLines( skyp ); SkyLabeler::Instance()->setPen( QPen( QBrush( color ), 1, Qt::SolidLine ) ); m_label.draw(); + + drawCompassLabels(); } + +void Ecliptic::drawCompassLabels() { + QPointF cpoint; + bool visible; + QString label; + + const Projector *proj = SkyMap::Instance()->projector(); + KStarsData *data = KStarsData::Instance(); + SkyLabeler* skyLabeler = SkyLabeler::Instance(); + + KSNumbers num( data->ut().djd() ); + dms elat(0.0), elng(0.0); + + for( int ra = 0; ra < 23; ra += 6 ) { + elng.setH( ra ); + SkyPoint* o = new SkyPoint(); + o->setFromEcliptic( num.obliquity(), &elng, &elat ); + o->setRA0( o->ra().Hours() ); + o->setDec0( o->dec().Degrees() ); + o->EquatorialToHorizontal( data->lst(), data->geo()->lat() ); + cpoint = proj->toScreen( o, false, &visible ); + if ( proj->checkVisibility( o ) && visible ) { + if ( o->ra().Degrees() < 0 ) + label.setNum( o->ra().Degrees() + 360 ); + else + label.setNum( o->ra().Degrees() ); + skyLabeler->drawGuideLabel( cpoint, label, 0.0 ); + } + } +} --- trunk/KDE/kdeedu/kstars/kstars/skycomponents/ecliptic.h #1222885:1222886 @@ -39,6 +39,7 @@ Ecliptic( SkyComposite *parent ); virtual void draw( SkyPainter *skyp ); + virtual void drawCompassLabels(); virtual bool selected(); virtual LineListLabel* label() { return &m_label; } --- trunk/KDE/kdeedu/kstars/kstars/skycomponents/equator.cpp #1222885:1222886 @@ -27,6 +27,7 @@ #include "skylabeler.h" #include "skypainter.h" +#include "projections/projector.h" Equator::Equator(SkyComposite *parent ) : NoPrecessIndex( parent, i18n("Equator") ), @@ -66,6 +67,8 @@ void Equator::draw( SkyPainter *skyp ) { + if ( ! selected() ) return; + m_label.reset(); NoPrecessIndex::draw( skyp ); @@ -73,5 +76,30 @@ QColor color( data->colorScheme()->colorNamed( "EqColor" ) ); SkyLabeler::Instance()->setPen( QPen( QBrush( color ), 1, Qt::SolidLine ) ); m_label.draw(); + + drawCompassLabels(); } +void Equator::drawCompassLabels() { + QPointF cpoint; + bool visible; + QString label; + + const Projector *proj = SkyMap::Instance()->projector(); + KStarsData *data = KStarsData::Instance(); + SkyLabeler* skyLabeler = SkyLabeler::Instance(); + + KSNumbers num( data->ut().djd() ); + dms elat(0.0), elng(0.0); + + for( int ra = 0; ra < 23; ra += 2 ) { + elng.setH( ra ); + SkyPoint* o = new SkyPoint( ra, 0.0 ); + o->EquatorialToHorizontal( data->lst(), data->geo()->lat() ); + cpoint = proj->toScreen( o, false, &visible ); + if ( proj->checkVisibility( o ) && visible ) { + label.setNum( o->ra().hour() ); + skyLabeler->drawGuideLabel( cpoint, label, 0.0 ); + } + } +} --- trunk/KDE/kdeedu/kstars/kstars/skycomponents/equator.h #1222885:1222886 @@ -41,6 +41,7 @@ virtual bool selected(); virtual void draw( SkyPainter *skyp ); + virtual void drawCompassLabels(); virtual LineListLabel* label() {return &m_label;}; protected: