1/*
2 This file is part of the kholidays library.
3
4 Copyright (c) 2005-2007 Allen Winter <winter@kde.org>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21
22#ifndef KHOLIDAYS_ZODIAC_H
23#define KHOLIDAYS_ZODIAC_H
24
25/**
26 Represents and manages the Zodiac calendar.
27 The Tropical and Sidereal Zodiacs are supported.
28
29 A very good description of the Zodiac calendars can be read at the
30 Wikipedia,
31 http://en.wikipedia.org/wiki/Zodiac
32
33 Disclaimer: I am by no means a Zodiac expert. I put together this software
34 based on some quick scanning of documents I found on the WWW. Feel free
35 to contact me about this code if you have improvements.
36
37 Sign Symbol Birthdates
38 Tropical Sidereal
39 Aries ram Mar 21 - Apr 19 Apr 14 - May 14
40 Taurus bull Apr 20 - May 20 May 15 - Jun 14
41 Gemini twins May 21 - Jun 20 Jun 15 - Jul 16
42 Cancer crab Jun 21 - Jul 22 Jul 17 - Aug 16
43 Leo lion Jul 23 - Aug 22 Aug 17 - Sep 16
44 Virgo virgin Aug 23 - Sep 22 Sep 17 - Oct 17
45 Libra scale Sep 23 - Oct 22 Oct 18 - Nov 16
46 Scorpio scorpion Oct 23 - Nov 21 Nov 17 - Dec 15
47 Sagittarius archer Nov 22 - Dec 21 Dec 16 - Jan 14
48 Capricorn goat Dec 22 - Jan 19 Jan 15 - Feb 12
49 Aquarius water Jan 20 - Feb 18 Feb 13 - Mar 14
50 Pisces fish Feb 19 - Mar 20 Mar 15 - Apr 13
51
52*/
53
54#include "kholidays_export.h"
55
56#include <QtCore/QSharedDataPointer>
57
58class QDate;
59class QString;
60
61namespace KHolidays {
62
63class ZodiacPrivate;
64
65class KHOLIDAYS_EXPORT Zodiac
66{
67 public:
68 enum ZodiacType {
69 Tropical,
70 Sidereal
71 };
72
73 enum ZodiacSigns {
74 Aries,
75 Taurus,
76 Gemini,
77 Cancer,
78 Leo,
79 Virgo,
80 Libra,
81 Scorpio,
82 Sagittarius,
83 Capricorn,
84 Aquarius,
85 Pisces,
86 None
87 };
88
89 Zodiac( ZodiacType type );
90 Zodiac( const Zodiac &other );
91 ~Zodiac();
92
93 Zodiac &operator=( const Zodiac &other );
94
95 /**
96 Return the Zodiac sign for the specified Gregorian date.
97 The enum 'None' is returned if one of the supported signs
98 does not occur on the date.
99
100 @param date compute the Zodiac sign for the specified Gregorian date.
101 */
102 ZodiacSigns signAtDate( const QDate &date ) const;
103
104 /**
105 Return the Zodiac sign as a text string for the specified date.
106 A null string is returned if one of the supported Zodiac signs does
107 not occur on the date.
108
109 @param date compute the Zodiac sign for the specified Gregorian date.
110 */
111 QString signNameAtDate( const QDate &date ) const;
112
113 /**
114 Return the string representation of Zodiac sign.
115
116 @param sign Zodiac sign.
117 */
118 static QString signName( ZodiacSigns sign );
119
120 /**
121 Convert the Zodiac sign to a Zodiac symbol.
122 */
123 static QString signSymbol( ZodiacSigns sign );
124
125 private:
126 QSharedDataPointer<ZodiacPrivate> d;
127};
128
129}
130
131#endif
132
133