File indexing completed on 2024-12-08 09:38:10
0001 /* 0002 This file is part of the kholidays library. 0003 0004 SPDX-FileCopyrightText: 2012 Allen Winter <winter@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #ifndef KHOLIDAYS_SUNRISESET_H 0010 #define KHOLIDAYS_SUNRISESET_H 0011 0012 #include "kholidays_export.h" 0013 #include <QTime> 0014 0015 namespace KHolidays 0016 { 0017 /** 0018 @brief 0019 Methods for determining the sunrise and sunset times for a given date and Earth location. 0020 */ 0021 0022 namespace SunRiseSet 0023 { 0024 /** 0025 Compute the sunrise time (UTC) for a date and Earth location. 0026 @param date is any valid QDate. 0027 @param latitude is a floating point representing a valid latitude (-90.0, 90.0) 0028 @param longitude is a floating point representing a valid longitude (-180.0, 180.0) 0029 @return the QTime of the sunrise in UTC. 0030 0031 @note the latitude and longitude are truncated as needed to fit into their proper range. 0032 0033 */ 0034 KHOLIDAYS_EXPORT QTime utcSunrise(const QDate &date, double latitude, double longitude); 0035 0036 /** 0037 Compute the sunset time (UTC) for a date and Earth location. 0038 @param date is any valid QDate. 0039 @param latitude is a floating point representing a valid latitude (-90.0, 90.0) 0040 @param longitude is a floating point representing a valid longitude (-180.0, 180.0) 0041 @return the QTime of the sunset in UTC. 0042 0043 @note the latitude and longitude are truncated as needed to fit into their proper range. 0044 */ 0045 KHOLIDAYS_EXPORT QTime utcSunset(const QDate &date, double latitude, double longitude); 0046 0047 /** 0048 Compute the civil dawn time (UTC) for a date and Earth location. 0049 @param date is any valid QDate. 0050 @param latitude is a floating point representing a valid latitude (-90.0, 90.0) 0051 @param longitude is a floating point representing a valid longitude (-180.0, 180.0) 0052 @see https://en.wikipedia.org/wiki/Twilight 0053 @return the QTime of the sunrise in UTC. 0054 0055 @note the latitude and longitude are truncated as needed to fit into their proper range. 0056 @since 5.77 0057 */ 0058 KHOLIDAYS_EXPORT QTime utcDawn(const QDate &date, double latitude, double longitude); 0059 0060 /** 0061 Compute the civil dawn time (UTC) for a date and Earth location. 0062 @param date is any valid QDate. 0063 @param latitude is a floating point representing a valid latitude (-90.0, 90.0) 0064 @param longitude is a floating point representing a valid longitude (-180.0, 180.0) 0065 @see https://en.wikipedia.org/wiki/Twilight 0066 @return the QTime of the sunset in UTC. 0067 0068 @note the latitude and longitude are truncated as needed to fit into their proper range. 0069 @since 5.77 0070 */ 0071 KHOLIDAYS_EXPORT QTime utcDusk(const QDate &date, double latitude, double longitude); 0072 0073 /** 0074 Checks whether it is polar day on day @p date at @p latitude. 0075 That is, the sun stays above -0.83° relative to the horizon at all times. 0076 Both sunrise/sunset and dawn/dusk times will be invalid for such a day. 0077 @param latitude in degree (-90.0, 90.0) 0078 @see isPolarNight(), isPolarTwilight() 0079 @see https://en.wikipedia.org/wiki/Midnight_sun 0080 0081 @since 5.97 0082 */ 0083 KHOLIDAYS_EXPORT bool isPolarDay(const QDate &date, double latitude); 0084 0085 /** 0086 Checks whether it is polar twilight on day @p date at @p latitude. 0087 That is, the sun rises at least above -6° relative the horizon during the day, 0088 but remains below -0.83° at all times. Sunrise/sunset times will be invalid 0089 for such a day, but dawn/dusk times will be available. 0090 @param latitude in degree (-90.0, 90.0) 0091 @see isPolarDay(), isPolarNight() 0092 @see https://en.wikipedia.org/wiki/Polar_night 0093 0094 @since 5.97 0095 */ 0096 KHOLIDAYS_EXPORT bool isPolarTwilight(const QDate &date, double latitude); 0097 0098 /** 0099 Checks whether it is polar night on day @p date at @p latitude. 0100 That is, the sun stays below -6° relative to the horizon at all times. 0101 Both sunrise/sunset and dawn/dusk times will be invalid for such a day. 0102 @param latitude in degree (-90.0, 90.0) 0103 @see isPolarDay(), isPolarTwilight() 0104 @see https://en.wikipedia.org/wiki/Polar_night 0105 0106 @since 5.97 0107 */ 0108 KHOLIDAYS_EXPORT bool isPolarNight(const QDate &date, double latitude); 0109 } 0110 0111 } 0112 0113 #endif