summaryrefslogtreecommitdiff
path: root/libforecastio/forecast.h
blob: ccb250d018938fc0b7a4e9795c555b8107cf123c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#ifndef __FORECAST_H
#define __FORECAST_H

#include <string>
#include <jansson.h>

using namespace std;

enum eForecastType {
    ftUnknownForecast,
    ftCurrent,
    ftHourly,
    ftDaily,
};

class cForecast {
private:
    eForecastType type;
    time_t forecastTime;
    string summary;
    string icon;
    time_t sunriseTime;
    time_t sunsetTime;
    float moonPhase;
    float precipIntensity;
    float precipProbability;
    string percipType;
    float temperature;
    float apparentTemperature;
    float temperatureMin;
    time_t temperatureMinTime;
    float temperatureMax;
    time_t temperatureMaxTime;
    float humidity;
    float windSpeed;
    int windBearing;
    float visibility;
    float cloudCover;
    float pressure;
    float ozone;
    string GetDate(time_t myTime);
    string GetTime(time_t myTime);
    string GetDateTime(time_t myTime);
public:
    cForecast(void);
    virtual ~cForecast(void);
    void SetForecast(json_t *forecast);
    void SetForecastType(eForecastType type) { this->type = type; };
    bool TimeMatch(time_t compare);
    bool DayMatch(time_t compare);
    void Debug(bool verbose = false);
    //Getter Functions for native access to data
    time_t GetTime(void) { return forecastTime; };
    string GetSummary(void) { return summary; };
    string GetIcon(void) { return icon; };
    time_t GetSunrise(void) { return sunriseTime; };
    time_t GetSunset(void) { return sunsetTime; };
    float GetMoonphase(void) { return moonPhase; };
    float GetPrecipIntensity(void) { return precipIntensity; };
    float GetPrecipProbability(void) { return precipProbability; };
    string GetPercipType(void) { return percipType; };
    float GetTemperature(void) { return temperature; };
    float GetTemperatureMin(void) { return temperatureMin; };
    time_t GetTemperatureMinTime(void) { return temperatureMinTime; };
    float GetTemperatureMax(void) { return temperatureMax; };
    time_t GetTemperatureMaxTime(void) { return temperatureMaxTime; };
    float GetApparentTemperature(void) { return apparentTemperature; };
    float GetHumidity(void) { return humidity; };
    float GetWindSpeed(void) { return windSpeed; };
    int GetWindBearing(void) { return windBearing; };
    float GetVisibility(void) { return visibility; };
    float GetCloudCover(void) { return cloudCover; };
    float GetPressure(void) { return pressure; };
    float GetOzone(void) { return ozone; };
    //convenient Getter Functions
    string GetDateTimeString(void) { return GetDateTime(forecastTime); };
    string GetDateString(void) { return GetDate(forecastTime); };
    string GetTimeString(void) { return GetTime(forecastTime); };
    string GetDayName(void) { return *WeekDayName(forecastTime); };    
    string GetSunriseString(void) { return GetTime(sunriseTime); };
    string GetSunsetString(void) { return GetTime(sunsetTime); };
    int GetMoonphasePercent(void) { return (int)(moonPhase*100); };
    string GetPrecipIntensityString(void) { return *cString::sprintf("%.1f", precipIntensity); };
    int GetPrecipProbabilityPercent(void) { return (int)(precipProbability*100); };
    string GetTemperatureString(void) { return *cString::sprintf("%.1f", temperature); };
    string GetTemperatureMinString(void) { return *cString::sprintf("%.1f", temperatureMin); };
    string GetTemperatureMinTimeString(void) { return GetTime(temperatureMinTime); };
    string GetTemperatureMaxString(void) { return *cString::sprintf("%.1f", temperatureMax); };
    string GetTemperatureMaxTimeString(void) { return GetTime(temperatureMaxTime); };
    string GetApparentTemperatureString(void) { return *cString::sprintf("%.1f", apparentTemperature); };
    int GetHumidityPercent(void) { return (int)(humidity*100); };
    string GetWindSpeedString(void) { return *cString::sprintf("%.1f", windSpeed); };
    string GetWindBearingString(void);
    string GetVisibilityString(void) { return *cString::sprintf("%.1f", visibility); };
    int GetCloudCoverPercent(void) { return (int)(cloudCover*100); };
    string GetPressureString(void) { return *cString::sprintf("%.1f", pressure); };
    string GetOzoneString(void) { return *cString::sprintf("%.1f", ozone); };
};


#endif //__FORECASTIO_H