2 * This file is part of Live Wallpaper (livewp)
4 * Copyright (C) 2010 Vlad Vasiliev
5 * Copyright (C) 2010 Tanya Makova
8 * This software is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public License
10 * as published by the Free Software Foundation; either version 2.1 of
11 * the License, or (at your option) any later version.
13 * This software is distributed in the hope that it will be useful, but
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this software; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
23 /*******************************************************************************/
25 #include "livewp-rules.h"
27 /*******************************************************************************/
29 void get_localtime(int * year, int * month, int * day, int * hour, int * min, int * zone)
34 localtime_r(&timet, &nt);
35 *year = nt.tm_year + 1900;
36 *month = nt.tm_mon + 1;
40 *zone = nt.tm_gmtoff/3600;
50 void get_coord(double * lat, double * lon)
56 void get_sun_pos(double * alt, double * azm)
58 int year, month, day, hour, min, zone;
60 get_localtime(&year, &month, &day, &hour, &min, &zone);
61 get_coord(&lat, &lon);
62 *alt = altitude(lon, lat, year, month, day, hour, min, zone);
63 *alt = *alt / 70; // sun height in percent
65 *azm = azimuth(lon, lat, year, month, day, hour, min, zone);
68 *azm = 90 + (90 - *azm);
69 *azm = fmod(*azm, 360);
71 *azm = (*azm - 90) / 180; // sun azimuth in percent
76 get_sun_pos(&alt, &azm);
79 printf("alt = %f azm=%f\n", alt, azm);
80 if (alt <= -7) return TIME_NIGHT;
81 if (alt > -7 && alt < 7 && azm < 50) return TIME_SUNRISE;
82 if (alt > 7 && alt < azm > 50) return TIME_SUNSET;
83 if (alt >= 7) return TIME_DAY;
88 int year, month, day, hour, min, zone;
90 get_localtime(&year, &month, &day, &hour, &min, &zone);
91 phase = moon_phase(year, month, day) * 100;
92 printf("ph = %f\n", phase);
93 if (phase <= 3 || phase >=97) return MOON_NONE;
94 if (phase > 5 && phase <= 25) return MOON_GROWS;
95 if (phase > 25 && phase <= 45) return MOON_GROWSHALF;
96 if (phase > 45 && phase <= 55) return MOON_FULL;
97 if (phase > 55 && phase <= 75) return MOON_DECREASHALF;
98 if (phase > 75 && phase < 97) return MOON_DECREAS;