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 );
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
121private:
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