/* This file is part of the kholidays library. SPDX-FileCopyrightText: 2005-2007 Allen Winter SPDX-License-Identifier: LGPL-2.0-or-later */ #ifndef KHOLIDAYS_ZODIAC_H #define KHOLIDAYS_ZODIAC_H #include "kholidays_export.h" #include class QDate; class QString; namespace KHolidays { class ZodiacPrivate; /*! \class KHolidays::Zodiac \inheaderfile KHolidays/Zodiac \inmodule KHolidays \brief Represents and manages the Zodiac calendar. The Tropical and Sidereal Zodiacs are supported. A very good description of the Zodiac calendars can be read at the Wikipedia, https://en.wikipedia.org/wiki/Zodiac Disclaimer: I am by no means a Zodiac expert. I put together this software based on some quick scanning of documents I found on the WWW. Feel free to contact me about this code if you have improvements. \badcode Sign Symbol Birthdates Tropical Sidereal Aries ram Mar 21 - Apr 19 Apr 14 - May 14 Taurus bull Apr 20 - May 20 May 15 - Jun 14 Gemini twins May 21 - Jun 20 Jun 15 - Jul 16 Cancer crab Jun 21 - Jul 22 Jul 17 - Aug 16 Leo lion Jul 23 - Aug 22 Aug 17 - Sep 16 Virgo virgin Aug 23 - Sep 22 Sep 17 - Oct 17 Libra scale Sep 23 - Oct 22 Oct 18 - Nov 16 Scorpio scorpion Oct 23 - Nov 21 Nov 17 - Dec 15 Sagittarius archer Nov 22 - Dec 21 Dec 16 - Jan 14 Capricorn goat Dec 22 - Jan 19 Jan 15 - Feb 12 Aquarius water Jan 20 - Feb 18 Feb 13 - Mar 14 Pisces fish Feb 19 - Mar 20 Mar 15 - Apr 13 \endcode */ class KHOLIDAYS_EXPORT Zodiac { public: /*! * \value Tropical * \value Sidereal */ enum ZodiacType { Tropical, Sidereal, }; /*! * \value Aries * \value Taurus * \value Gemini * \value Cancer * \value Leo * \value Virgo * \value Libra * \value Scorpio * \value Sagittarius * \value Capricorn * \value Aquarius * \value Pisces * \value None */ enum ZodiacSigns { Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces, None, }; /*! */ explicit Zodiac(ZodiacType type); Zodiac(const Zodiac &other); ~Zodiac(); Zodiac &operator=(const Zodiac &other); /*! Return the Zodiac sign for the specified Gregorian date. The enum 'None' is returned if one of the supported signs does not occur on the date. \a date compute the Zodiac sign for the specified Gregorian date. */ ZodiacSigns signAtDate(const QDate &date) const; /*! Return the Zodiac sign as a text string for the specified date. A null string is returned if one of the supported Zodiac signs does not occur on the date. \a date compute the Zodiac sign for the specified Gregorian date. */ QString signNameAtDate(const QDate &date) const; /*! Return the string representation of Zodiac sign. \a sign Zodiac sign. */ static QString signName(ZodiacSigns sign); /*! Convert the Zodiac sign to a Zodiac symbol. */ static QString signSymbol(ZodiacSigns sign); private: QSharedDataPointer d; }; } #endif