libkholidays

lunarphase.h
1 /*
2  This file is part of libkholidays.
3  Copyright (c) 2004 Allen Winter <winter@kde.org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU General Public License as
7  published by the Free Software Foundation; either version 2 of the
8  License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; if not, write to the Free Software
17  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 
19  In addition, as a special exception, the copyright holders give
20  permission to link the code of this program with any edition of
21  the TQt library by Trolltech AS, Norway (or with modified versions
22  of TQt that use the same license as TQt), and distribute linked
23  combinations including the two. You must obey the GNU General
24  Public License in all respects for all of the code used other than
25  TQt. If you modify this file, you may extend this exception to
26  your version of the file, but you are not obligated to do so. If
27  you do not wish to do so, delete this exception statement from
28  your version.
29 */
30 
31 #ifndef KHOLIDAYS_LUNARPHASE_H
32 #define KHOLIDAYS_LUNARPHASE_H
33 
60 #include <tqstring.h>
61 #include <tqdatetime.h>
62 
63 #include <time.h>
64 
66 {
67  public:
68  enum Phase { New, FirstQ, LastQ, Full, None };
69  enum Hemisphere { Northern, Southern };
70 
71  LunarPhase( Hemisphere hemisphere = Northern );
72  ~LunarPhase();
73 
81  Phase phase( const TQDate &date ) const;
82 
90  TQString phaseStr( const TQDate &date ) const;
91 
97  void setHemisphere( Hemisphere hemisphere = Northern );
98 
102  Hemisphere hemisphere() const;
103 
107  TQString hemisphereStr() const;
108 
112  static TQString hemisphereName( Hemisphere hemisphere );
113 
119  static TQString phaseName( Phase phase );
120 
121 private:
129  double percentFull( uint t ) const;
137  double degreesToRadians( double degree ) const;
143  void adj360( double *degree ) const;
144 
145  Hemisphere mHemisphere;
146 };
147 
148 #endif
149 
150 
Represents and manages a Lunar Phase.
Definition: lunarphase.h:66
Phase phase(const TQDate &date) const
Return the lunar phase for the specified Gregorian date.
Definition: lunarphase.cpp:106
TQString hemisphereStr() const
Return hemisphere as a clear text string.
Definition: lunarphase.cpp:61
Hemisphere hemisphere() const
Return the hemisphere.
Definition: lunarphase.cpp:56
void setHemisphere(Hemisphere hemisphere=Northern)
Set the hemisphere.
Definition: lunarphase.cpp:51
static TQString phaseName(Phase phase)
Return the string representation of phase.
Definition: lunarphase.cpp:84
static TQString hemisphereName(Hemisphere hemisphere)
Return the string representation of hemisphere.
Definition: lunarphase.cpp:66
TQString phaseStr(const TQDate &date) const
Return the lunar phase as a text string for the specified date.
Definition: lunarphase.cpp:79