aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS14
-rw-r--r--ChangeLog181
-rw-r--r--INSTALL97
-rw-r--r--Makefile.am56
-rw-r--r--NEWS10
-rw-r--r--README52
-rw-r--r--SConstruct13
-rw-r--r--configure.ac131
-rw-r--r--data/icons/hicolor/scalable/apps/redshift-idle.svg2395
-rw-r--r--po/LINGUAS2
-rw-r--r--po/POTFILES.in12
-rw-r--r--po/cs.po238
-rw-r--r--po/da.po15
-rw-r--r--po/de.po16
-rw-r--r--po/es.po234
-rw-r--r--po/fi.po231
-rw-r--r--po/gtk-redshift/cs.po22
-rw-r--r--po/gtk-redshift/da.po22
-rw-r--r--po/gtk-redshift/de.po22
-rw-r--r--po/gtk-redshift/es.po22
-rw-r--r--po/gtk-redshift/fi.po22
-rw-r--r--po/gtk-redshift/it.po22
-rw-r--r--po/gtk-redshift/ru.po22
-rw-r--r--po/it.po19
-rw-r--r--po/pt_BR.po227
-rw-r--r--po/redshift.pot300
-rw-r--r--po/ru.po14
-rw-r--r--src/Makefile.am55
-rw-r--r--src/colorramp.c2
-rw-r--r--src/gamma-randr.c (renamed from src/randr.c)170
-rw-r--r--src/gamma-randr.h (renamed from src/randr.h)23
-rw-r--r--src/gamma-vidmode.c (renamed from src/vidmode.c)58
-rw-r--r--src/gamma-vidmode.h (renamed from src/vidmode.h)19
-rw-r--r--src/gamma-w32gdi.c152
-rw-r--r--src/gamma-w32gdi.h45
-rw-r--r--src/gtk-redshift/Makefile.am40
-rw-r--r--src/gtk-redshift/__init__.py18
-rw-r--r--src/gtk-redshift/defs.py.in1
-rw-r--r--src/gtk-redshift/gtk-redshift.in23
-rw-r--r--src/gtk-redshift/rsappindicator.py99
-rw-r--r--[-rwxr-xr-x]src/gtk-redshift/statusicon.py (renamed from src/gtk-redshift/gtk-redshift.py)8
-rw-r--r--src/location-gnome-clock.c159
-rw-r--r--src/location-gnome-clock.h44
-rw-r--r--src/location-manual.c113
-rw-r--r--src/location-manual.h44
-rw-r--r--src/redshift.c701
-rw-r--r--src/redshift.h90
-rw-r--r--src/solar.c42
-rw-r--r--src/solar.h8
-rw-r--r--src/systemtime.c52
-rw-r--r--src/systemtime.h32
51 files changed, 5308 insertions, 1101 deletions
diff --git a/AUTHORS b/AUTHORS
index 0559f96..b37798f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,8 +1,18 @@
+Maintainer
+--------------------
Jon Lund Steffensen <jonlst@gmail.com>
-Original gtk-redshift script contributed by Martin Koelewijn.
-The redshift icon is based on artwork by the Tango Desktop Project.
+
+Contributors
+--------------------
+Francesco Marella
+Alexandros Frantzis
+Dan Helfman
+Martin Koelewijn
+
+Tango Desktop Project provided artwork for the redshift icon.
+
Translators
--------------------
diff --git a/ChangeLog b/ChangeLog
index 71569e0..f9d7181 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,180 +1 @@
-2010-01-14 Jon Lund Steffensen <jonlst@gmail.com>
-
- configure.ac: Fail if explicitly enabled features are missing
- dependencies to build.
-
-2010-01-14 Jon Lund Steffensen <jonlst@gmail.com>
-
- Allow install of gtk-redshift script to be disabled in configure script.
-
-2010-01-14 Jon Lund Steffensen <jonlst@gmail.com>
-
- Fix: Typo in comment
-
-2010-01-14 Jon Lund Steffensen <jonlst@gmail.com>
-
- Add python script to control redshift through a status icon (tray icon).
-
-2010-01-12 Jon Lund Steffensen <jonlst@gmail.com>
-
- Add scalable application icon.
-
-2010-01-09 Jon Lund Steffensen <jonlst@gmail.com>
-
- Update ChangeLog, NEWS and README for 1.0 release.
- Increment version in configure.ac.
-
-2010-01-09 Jon Lund Steffensen <jonlst@gmail.com>
-
- Add some comments in the redshift.c.
-
-2010-01-09 Jon Lund Steffensen <jonlst@gmail.com>
-
- Fix formating of help message.
-
-2010-01-09 Jon Lund Steffensen <jonlst@gmail.com>
-
- Switch between enabled and disabled on USR1 signal.
- Transition between the two states.
-
-2010-01-07 Jon Lund Steffensen <jonlst@gmail.com>
-
- Update ChangeLog, NEWS and README for 0.4 release.
- Increment version in configure.ac.
-
-2010-01-07 Jon Lund Steffensen <jonlst@gmail.com>
-
- Add include of stdint.h in header files.
-
-2010-01-07 Jon Lund Steffensen <jonlst@gmail.com>
-
- Fix: Terminate loop immediately on second exit signal.
-
-2010-01-07 Jon Lund Steffensen <jonlst@gmail.com>
-
- Handle both INT and TERM signals as exit signals.
-
-2010-01-01 Jon Lund Steffensen <jonlst@gmail.com>
-
- Update README
-
-2010-01-01 Jon Lund Steffensen <jonlst@gmail.com>
-
- Make a short transition back to 6500K on program exit.
-
-2010-01-01 Jon Lund Steffensen <jonlst@gmail.com>
-
- Save and restore ramps with VidMode.
-
-2010-01-01 Jon Lund Steffensen <jonlst@gmail.com>
-
- Reuse X connection when adjusting gamma ramps.
- Save gamma ramps when program starts and restore them on exit (only RANDR).
- Try both RANDR and VidMode if nothing was specified, otherwise try only the
- specified method.
-
-2009-12-28 Jon Lund Steffensen <jonlst@gmail.com>
-
- Update README, NEWS and ChangeLog for 0.3 release.
- Increment version in configure.ac.
-
-2009-12-28 Jon Lund Steffensen <jonlst@gmail.com>
-
- Add autoconf check for clock_gettime() and floor().
-
-2009-12-28 Jon Lund Steffensen <jonlst@gmail.com>
-
- Use clock_gettime() to read current time.
-
-2009-12-28 Jon Lund Steffensen <jonlst@gmail.com>
-
- Use struct timespec instead of time_t for increased time precision.
-
-2009-12-26 Jon Lund Steffensen <jonlst@gmail.com>
-
- Continously change color temperature (Add -o for one shot mode).
- In continous mode, make a short transition from 6500K to the target
- temperature when the program starts.
-
-2009-12-25 Jon Lund Steffensen <jonlst@gmail.com>
-
- Allow compile time selection of which method to compile in.
-
-2009-12-25 Jon Lund Steffensen <jonlst@gmail.com>
-
- Accept method names with different case.
-
-2009-12-25 Jon Lund Steffensen <jonlst@gmail.com>
-
- VidMode: Fix memory leak.
-
-2009-12-25 Jon Lund Steffensen <jonlst@gmail.com>
-
- Allow selection of X screen to apply adjustments to.
-
-2009-12-25 Jon Lund Steffensen <jonlst@gmail.com>
-
- RANDR: Adjust color temperature fro all CRTCs.
-
-2009-12-23 Jon Lund Steffensen <jonlst@gmail.com>
-
- Increment version to 0.2
-
-2009-12-23 Jon Lund Steffensen <jonlst@gmail.com>
-
- Update ChangeLog, README and NEWS
-
-2009-12-23 Jon Lund Steffensen <jonlst@gmail.com>
-
- Add setting gamma ramps with the VidMode extension.
- Allow selection of gamma setting method with program parameter (-m).
- Fallback to VidMode if RANDR doesn't work.
-
-2009-12-23 Jon Lund Steffensen <jonlst@gmail.com>
-
- Move source and headers to src dir.
-
-2009-12-23 Jon Lund Steffensen <jonlst@gmail.com>
-
- Move RandR code to separate file.
-
-2009-12-23 Jon Lund Steffensen <jonlst@gmail.com>
-
- Rescale blackbody values above 6500K to be in [0,1].
-
-2009-12-23 Jon Lund Steffensen <jonlst@gmail.com>
-
- Update NEWS
-
-2009-11-04 Jon Lund Steffensen <jonlst@gmail.com>
-
- Add autotools support.
-
-2009-11-04 Jon Lund Steffensen <jonlst@gmail.com>
-
- Add COPYING file (GPLv3).
- Add copyright and license in file headers.
-
-2009-11-04 Jon Lund Steffensen <jonlst@gmail.com>
-
- Allow individual adjustment of each gamma channel.
-
-2009-11-04 Jon Lund Steffensen <jonlst@gmail.com>
-
- Make transition period a bit shorter.
-
-2009-11-04 Jon Lund Steffensen <jonlst@gmail.com>
-
- Have color temperature transition period be DEFINEd at the top.
- Print current period (day, night, transition) when verbose.
- Call setlocale() with LC_CTYPE instead of LC_ALL otherwise parameter parsing
- is locale dependant which is confusing.
-
-2009-11-04 Jon Lund Steffensen <jonlst@gmail.com>
-
- Use getopt() to parse arguments.
-
-2009-11-04 Jon Lund Steffensen <jonlst@gmail.com>
-
- Initial import.
-
+The ChangeLog is kept by the bzr revision system.
diff --git a/INSTALL b/INSTALL
index 2550dab..7d1c323 100644
--- a/INSTALL
+++ b/INSTALL
@@ -4,8 +4,10 @@ Installation Instructions
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
Basic Installation
==================
@@ -13,7 +15,11 @@ Basic Installation
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
@@ -42,7 +48,7 @@ may remove or edit it.
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
-The simplest way to compile this package is:
+ The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
@@ -53,12 +59,22 @@ The simplest way to compile this package is:
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
- the package.
+ the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
@@ -67,8 +83,15 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came
with the distribution.
- 6. Often, you can also type `make uninstall' to remove the installed
- files again.
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
Compilers and Options
=====================
@@ -93,7 +116,8 @@ same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
@@ -120,7 +144,8 @@ Installation Names
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
@@ -131,15 +156,46 @@ Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-Optional Features
-=================
-
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
@@ -152,6 +208,13 @@ find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
Particular systems
==================
@@ -288,7 +351,7 @@ operates.
`configure' can determine that directory automatically.
`--prefix=DIR'
- Use DIR as the installation prefix. *Note Installation Names::
+ Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.
diff --git a/Makefile.am b/Makefile.am
index f492abe..b2ba5d3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,62 +1,14 @@
-SUBDIRS = po
+SUBDIRS = src po
ACLOCAL_AMFLAGS = -I m4
-# I18n
-localedir = $(datadir)/locale
-INCLUDES = -DLOCALEDIR=\"$(localedir)\"
-
-# redshift Program
-bin_PROGRAMS = redshift
-
-redshift_SOURCES = \
- src/redshift.c \
- src/colorramp.c src/colorramp.h \
- src/solar.c src/solar.h
-
-EXTRA_redshift_SOURCES = \
- src/randr.c src/randr.h \
- src/vidmode.c src/vidmode.h
-
-AM_CFLAGS =
-redshift_LDADD = @LIBINTL@
-EXTRA_DIST =
-
-if ENABLE_RANDR
-redshift_SOURCES += src/randr.c src/randr.h
-AM_CFLAGS += $(XCB_CFLAGS) $(XCB_RANDR_CFLAGS)
-redshift_LDADD += \
- $(XCB_LIBS) $(XCB_CFLAGS) \
- $(XCB_RANDR_LIBS) $(XCB_RANDR_CFLAGS)
-endif
-
-if ENABLE_VIDMODE
-redshift_SOURCES += src/vidmode.c src/vidmode.h
-AM_CFLAGS += $(X11_CFLAGS) $(XF86VM_CFLAGS)
-redshift_LDADD += \
- $(X11_LIBS) $(X11_CFLAGS) \
- $(XF86VM_LIBS) $(XF86VM_CFLAGS)
-endif
-
-# gtk-redshift Script
-if ENABLE_GTK
-dist_bin_SCRIPTS = src/gtk-redshift/gtk-redshift.py
-bin_SCRIPTS = src/gtk-redshift/defs.py
-EXTRA_DIST += src/gtk-redshift/defs.py.in
-endif
-
# Icons
icondir = @datadir@/icons/hicolor/scalable/apps
-icon_DATA = data/icons/hicolor/scalable/apps/redshift.svg
-
-EXTRA_DIST += $(icon_DATA)
-
+icon_DATA = data/icons/hicolor/scalable/apps/redshift.svg \
+ data/icons/hicolor/scalable/apps/redshift-idle.svg
-CLEANFILES = src/gtk-redshift/defs.py
+EXTRA_DIST = $(icon_DATA)
-# Local python definitions
-src/gtk-redshift/defs.py: src/gtk-redshift/defs.py.in
- sed -e "s|\@localedir\@|$(localedir)|g" $< > $@
# Update PO translations
.PHONY: update-po
diff --git a/NEWS b/NEWS
index 6e4818c..3e107c8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,13 @@
+v1.3 (2010-05-12)
+* Allow adjusting individual CRTCs when using RANDR. Contributed by
+ Alexandros Frantzis.
+* Add WinGDI method for gamma adjustments on Windows platform.
+* Compile with mingw (tested with cross compiler on ubuntu build system).
+
+v1.2 (2010-02-12)
+* Native language support: Danish and russian translations included in
+ this release. Thanks goes to Gregory Petrosyan for the russian
+ translation.
v1.1 (2010-01-14)
* Provide a GTK status icon (tray icon) for redshift with the
diff --git a/README b/README
index 8c819fa..3902a63 100644
--- a/README
+++ b/README
@@ -1,10 +1,22 @@
-Redshift 1.1
-============
+Redshift
+========
-Adjust color temperature of your screen according to your
-surroundings. This may help your eyes hurt less if you are working in
-front of the screen at night.
+Redshift adjusts the color temperature of your screen according to
+your surroundings. This may help your eyes hurt less if you are
+working in front of the screen at night.
+
+Download
+--------
+
+Latest release is redshift 1.3 published on 2010-05-12. There are also
+packages available for some distributions:
+
+ * Ubuntu: Packages for Ubuntu Karmic.
+ * Gentoo: Redshift is in the Sunrise overlay.
+
+What is it?
+-----------
The program uses an X server extension to adjust the color
temperature. This is done by setting appropriate gamma ramps. If you
@@ -23,18 +35,26 @@ room. This is typically a low temperature at around 3000K--4000K
the light from outside, typically around 5500K--6500K (default is
5500K). The light has a higher temperature on an overcast day.
-The program will continously update the color temperature at regular
+How does it work?
+-----------------
+
+Redshift will continously update the color temperature at regular
intervals. One shot mode can be selected if you only want to do one
-adjustment.
+adjustment. The color adjustments done by Redshift can be temporarily
+toggled on and off by sending it the USR1 signal:
+
+ $ killall -USR1 redshift
The command line options are explained in the following paragraphs. The
only required parameter is your current location, all other options
have reasonable defaults.
+ -h Display help message.
+ -v Verbose output.
+
-g R:G:B Additional gamma correction to apply. Can also be
specified as -g GAMMA to set all channels to the same
gamma value.
- -h Display help message.
-l LAT:LON Your current location in latitudes and longitudes.
-m METHOD Method to use to set color temperature (randr or
vidmode). Default is randr. In some cases one of the
@@ -46,16 +66,18 @@ have reasonable defaults.
will make a smooth transition to the desired color
temperature when the program is started and stopped.
-s SCREEN X screen to apply adjustments to.
+ -c CRTC CRTC to apply adjustments to (RANDR only)
-t DAY:NIGHT Color temperature to set at daytime/night.
- -v Verbose output.
Example (location is Copenhagen, Denmark):
$ redshift -l 55.7:12.6 -t 5700:3600 -g 0.8 -m vidmode -v
-To create a status icon for Redshift in the system tray, start the
-program gtk-redshift instead of redshift, with the same arguments as
-you would pass to redshift. This will create an icon for Redshift in
-the system tray. The icon will allow you to toggle Redshift on and
-off. Thanks goes to the Tango Desktop Project for the
-icon. gtk-redshift requires at least Python 2.4 and PyGTK 2.12.
+Status icon
+-----------
+
+Start the program gtk-redshift instead of redshift, with the same
+arguments as you would pass to redshift. This will create an icon for
+Redshift in the system tray. The icon will allow you to toggle
+Redshift on and off. Thanks goes to the Tango Desktop Project for the
+icon. gtk-redshift requires at least Python 2.6 and PyGTK 2.12.
diff --git a/SConstruct b/SConstruct
deleted file mode 100644
index 1da5c65..0000000
--- a/SConstruct
+++ /dev/null
@@ -1,13 +0,0 @@
-
-sources = ['src/redshift.c',
- 'src/solar.c',
- 'src/colorramp.c',
- 'src/randr.c',
- 'src/vidmode.c']
-
-env = Environment()
-env.ParseConfig('pkg-config --cflags --libs xcb xcb-randr')
-env.ParseConfig('pkg-config --cflags --libs x11 xxf86vm')
-env.Program('redshift', sources,
- CFLAGS='-std=gnu99 -O2 -Wall',
- LINKFLAGS='-lm')
diff --git a/configure.ac b/configure.ac
index 18e2855..22dd3e9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,11 +2,13 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.64])
-AC_INIT([redshift], [1.1], [https://bugs.launchpad.net/redshift])
+AC_INIT([redshift], [1.3], [https://bugs.launchpad.net/redshift])
AC_CONFIG_SRCDIR([src/redshift.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([dist-bzip2])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
# Checks for programs.
AC_PROG_CC_C99
@@ -20,8 +22,13 @@ PKG_CHECK_MODULES([XCB], [xcb], [have_xcb=yes], [have_xcb=no])
PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr],
[have_xcb_randr=yes], [have_xcb_randr=no])
+PKG_CHECK_MODULES([GLIB], [glib-2.0], [have_glib=yes], [have_glib=no])
+PKG_CHECK_MODULES([GCONF], [gconf-2.0], [have_gconf=yes], [have_gconf=no])
+
+AC_CHECK_HEADER([windows.h], [have_windows_h=yes], [have_windows_h=no])
+
# Check for Python
-AM_PATH_PYTHON([2.4], [have_python=yes], [have_python=no])
+AM_PATH_PYTHON([2.6], [have_python=yes], [have_python=no])
# Check RANDR method
AC_MSG_CHECKING([whether to enable RANDR method])
@@ -33,6 +40,7 @@ AS_IF([test "x$enable_randr" != xno], [
AC_DEFINE([ENABLE_RANDR], 1,
[Define to 1 to enable RANDR method])
AC_MSG_RESULT([yes])
+ enable_randr=yes
], [
AC_MSG_RESULT([missing dependencies])
AS_IF([test "x$enable_randr" = xyes], [
@@ -42,8 +50,9 @@ AS_IF([test "x$enable_randr" != xno], [
])
], [
AC_MSG_RESULT([no])
+ enable_randr=no
])
-AM_CONDITIONAL([ENABLE_RANDR], [test "x$enable_randr" != xno])
+AM_CONDITIONAL([ENABLE_RANDR], [test "x$enable_randr" = xyes])
# Check VidMode method
AC_MSG_CHECKING([whether to enable VidMode method])
@@ -55,6 +64,7 @@ AS_IF([test "x$enable_vidmode" != xno], [
AC_DEFINE([ENABLE_VIDMODE], 1,
[Define to 1 to enable VidMode method])
AC_MSG_RESULT([yes])
+ enable_vidmode=yes
], [
AC_MSG_RESULT([missing dependencies])
AS_IF([test "x$enable_vidmode" = xyes], [
@@ -64,37 +74,110 @@ AS_IF([test "x$enable_vidmode" != xno], [
])
], [
AC_MSG_RESULT([no])
+ enable_vidmode=no
+])
+AM_CONDITIONAL([ENABLE_VIDMODE], [test "x$enable_vidmode" = xyes])
+
+# Check Windows GDI method
+AC_MSG_CHECKING([whether to enable WinGDI method])
+AC_ARG_ENABLE([wingdi], [AC_HELP_STRING([--enable-wingdi],
+ [enable WinGDI method])],
+ [enable_wingdi=$enableval],[enable_wingdi=maybe])
+AS_IF([test "x$enable_wingdi" != xno], [
+ AS_IF([test $have_windows_h = yes], [
+ AC_DEFINE([ENABLE_WINGDI], 1,
+ [Define to 1 to enable WinGDI method])
+ AC_MSG_RESULT([yes])
+ enable_wingdi=yes
+ ], [
+ AC_MSG_RESULT([missing dependencies])
+ AS_IF([test "x$enable_wingdi" = xyes], [
+ AC_MSG_ERROR([missing Windows API headers for WinGDI method])
+ ])
+ enable_wingdi=no
+ ])
+], [
+ AC_MSG_RESULT([no])
+ enable_wingdi=no
])
-AM_CONDITIONAL([ENABLE_VIDMODE], [test "x$enable_vidmode" != xno])
+AM_CONDITIONAL([ENABLE_WINGDI], [test "x$enable_wingdi" = xyes])
# Check that at least one method is enabled
-AS_IF([test "x$enable_randr" = xno -a "x$enable_vidmode" = xno], [
- AC_MSG_ERROR([either RANDR or VidMode must be enabled])
+AS_IF([test "x$enable_randr" = xno -a "x$enable_vidmode" = xno -a "x$enable_wingdi" = xno], [
+ AC_MSG_ERROR([either RANDR, VidMode or WinGDI must be enabled])
])
-# Check for GTK+ status icon
-AC_MSG_CHECKING([whether to enable GTK status icon])
-AC_ARG_ENABLE([gtk], [AC_HELP_STRING([--enable-gtk],
- [enable GTK status icon])],
- [enable_gtk=$enableval],[enable_gtk=maybe])
-AS_IF([test "x$enable_gtk" != xno], [
- AS_IF([test $have_python != yes], [
- AC_MSG_WARN([status icon script requires Python and PyGTK])
+# Check GNOME Clock location provider
+AC_MSG_CHECKING([whether to enable GNOME Clock location provider])
+AC_ARG_ENABLE([gnome-clock], [AC_HELP_STRING([--enable-gnome-clock],
+ [enable GNOME Clock location provider])],
+ [enable_gnome_clock=$enableval],[enable_gnome_clock=maybe])
+AS_IF([test "x$enable_gnome_clock" != xno], [
+ AS_IF([test $have_glib = yes -a $have_gconf = yes], [
+ AC_DEFINE([ENABLE_GNOME_CLOCK], 1,
+ [Define to 1 to enable GNOME Clock location provider])
+ AC_MSG_RESULT([yes])
+ enable_gnome_clock=yes
+ ], [
+ AC_MSG_RESULT([missing dependencies])
+ AS_IF([test "x$enable_gnome_clock" = xyes], [
+ AC_MSG_ERROR([missing dependencies for GNOME Clock location provider])
+ ])
+ enable_gnome_clock=no
])
- AC_MSG_RESULT([yes])
], [
AC_MSG_RESULT([no])
+ enable_gnome_clock=no
+])
+AM_CONDITIONAL([ENABLE_GNOME_CLOCK], [test "x$enable_gnome_clock" = xyes])
+
+
+# Check for GUI
+# There doesn't seem to be an easy way of detecting the presence
+# of a python module. For that reason, statusicon is the default GUI.
+AC_MSG_CHECKING([which GUI to enable])
+AC_ARG_ENABLE([gui], [AC_HELP_STRING([--enable-gui],
+ [enable GUI (appindicator, statusicon or none)])],
+ [enable_gui=$enableval],[enable_gui=maybe])
+
+# Statusicon GUI
+AS_IF([test "x$enable_gui" = xstatusicon -o "x$enable_gui" = maybe], [
+ AS_IF([test $have_python != yes], [
+ AS_IF([test "x$enable_gui" = xstatusicon], [
+ AC_MSG_ERROR([status icon script requires Python 2.6])
+ ])
+ enable_gui=maybe
+ ])
+])
+
+# Appindicator GUI
+AS_IF([test "x$enable_gui" = xappindicator -o "x$enable_gui" = maybe], [
+ AS_IF([test $have_python != yes], [
+ AS_IF([test "x$enable_gui" = xappindicator], [
+ AC_MSG_ERROR([application indicator script requires Python 2.6])
+ ])
+ enable_gui=maybe
+ ])
+])
+
+# Fall back to no GUI
+AS_IF([test "x$enable_gui" != xappindicator -a "x$enable_gui" != xstatusicon], [
+ enable_gui=none
])
-AM_CONDITIONAL([ENABLE_GTK], [test "x$enable_gtk" != xno])
+
+AC_MSG_RESULT([$enable_gui])
+
+AM_CONDITIONAL([ENABLE_STATUSICON], [test "x$enable_gui" = xstatusicon])
+AM_CONDITIONAL([ENABLE_APPINDICATOR], [test "x$enable_gui" = xappindicator])
+
# Checks for header files.
-AC_CHECK_HEADERS([locale.h stdint.h stdlib.h string.h unistd.h])
+AC_CHECK_HEADERS([locale.h stdint.h stdlib.h string.h unistd.h sys/signal.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_UINT16_T
# Checks for library functions.
-AC_FUNC_MALLOC
AC_SEARCH_LIBS([clock_gettime], [rt])
AC_SEARCH_LIBS([floor], [m])
AC_CHECK_FUNCS([setlocale strchr floor pow clock_gettime])
@@ -102,6 +185,8 @@ AC_CHECK_FUNCS([setlocale strchr floor pow clock_gettime])
AC_CONFIG_FILES([
Makefile
po/Makefile.in
+ src/Makefile
+ src/gtk-redshift/Makefile
])
AC_OUTPUT
@@ -113,4 +198,14 @@ echo "
compiler: ${CC}
cflags: ${CFLAGS}
ldflags: ${LDFLAGS}
+
+ Adjustment methods:
+ RANDR: ${enable_randr}
+ VidMode: ${enable_vidmode}
+ WinGDI: ${enable_wingdi}
+
+ Location providers:
+ GNOME Clock: ${enable_gnome_clock}
+
+ GUI: ${enable_gui}
"
diff --git a/data/icons/hicolor/scalable/apps/redshift-idle.svg b/data/icons/hicolor/scalable/apps/redshift-idle.svg
new file mode 100644
index 0000000..9125a20
--- /dev/null
+++ b/data/icons/hicolor/scalable/apps/redshift-idle.svg
@@ -0,0 +1,2395 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="redshift.svg">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <linearGradient
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient14132"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.88446"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient14130"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-8.3080902"
+ x2="4.9625983"
+ y1="-43.997444"
+ x1="11.149398"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient14128"
+ xlink:href="#linearGradient3478"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-8.3080902"
+ x2="4.9625983"
+ y1="-43.997444"
+ x1="11.149398"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1431"
+ xlink:href="#linearGradient3478"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1427"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.565657,0,-0.496855)"
+ r="17.500893"
+ fy="-1.1439217"
+ fx="-35.001785"
+ cy="-1.1439217"
+ cx="-35.001785"
+ id="radialGradient4835"
+ xlink:href="#linearGradient4829"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.88446"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1557"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(57.97693,-10.56876)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1538"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0,0,1,123.1162,-5.446357)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1536"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0,0,1,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1534"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0,0,1.262475,-11.2762,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1532"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0,0,1,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1530"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0,0,1,-5.7863,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1528"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.08837)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1526"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.56172)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1524"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1522"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.88446"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1520"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0,0,1,79.36909,-3.193747)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1518"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0,0,1.262475,56.25514,-12.39388)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1516"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(88.49344,-9.697877)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient1514"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(4.561802,-4.303373)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3405"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(-7.197595,2.690414)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3401"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(-2.033818,0.56172)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3398"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(3.674812,3.08837)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3395"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0,0,1,-5.7863,7.206012)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3392"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0,0,1,9.287262,8.163122)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3389"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0,0,1.262475,-11.2762,1.403411)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3386"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0,0,1,0.795022,6.093572)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3383"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0,0,1,9.63386,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3380"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0,0,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3378"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0,0,1,18.1261,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3376"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0,0,1,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3374"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3372"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(6.80502,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3370"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3368"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3366"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="46.09293"
+ x2="29.75"
+ y1="29.115711"
+ x1="23.303862"
+ id="linearGradient3353"
+ xlink:href="#linearGradient3347"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(-0.72683,2.481141)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2563"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(-7.499805,1.708617)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2555"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(13.40064,1.353485)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2541"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(17.33814,3.415985)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2537"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="-24.88446"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ id="linearGradient2533"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9"
+ x2="53.75"
+ y1="-21.75"
+ x1="37"
+ gradientTransform="matrix(0.414169,0,0,0.778853,-1.910724,36.8785)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2517"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="9"
+ x2="53.75"
+ y1="-18.407482"
+ x1="38.857941"
+ gradientTransform="matrix(0.605509,0,0,0.710542,-0.224971,42.195)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2513"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.889091,0,0,0.617886,-4.771368,39.81402)"
+ y2="9"
+ x2="53.75"
+ y1="-21.75"
+ x1="37"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2509"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="9"
+ x2="53.75"
+ y1="-21.75"
+ x1="37"
+ id="linearGradient2506"
+ xlink:href="#linearGradient2500"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(0.842481,-3.998086)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2483"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(1.641243,8.347272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2478"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(6.80502,6.218578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2475"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(12.51365,8.745228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2472"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0,0,1,3.052538,12.86287)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2469"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0,0,1,18.1261,13.81998)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2463"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0,0,1.262475,-2.437359,7.060269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2460"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0,0,1,9.63386,11.75043)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2457"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0,0,0.990713,4.378541,10.65407)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2451"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ gradientTransform="matrix(0.992367,0,0,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2448"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0,0,1,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2446"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0,0,1,6.38386,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2444"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0,0,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2442"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0,0,1,14.8761,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2440"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0,0,1,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2438"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0,0,1,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2436"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2434"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(3.55502,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2432"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(-1.608757,3.097272)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2430"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2428"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(14.4634,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2426"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="matrix(0.992367,0,0,0.990713,1.128541,5.404075)"
+ gradientUnits="userSpaceOnUse"
+ y2="13.802798"
+ x2="41.403877"
+ y1="13.802798"
+ x1="6.6651416"
+ id="linearGradient2398"
+ xlink:href="#linearGradient2392"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0,0,1,56.12415,32.08882)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2372"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(4.207586,21.30544)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2370"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0,0,1,8.185476,29.52556)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2368"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0,0,1.262475,-4.010744,24.9604)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2366"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0,0,1,17.05272,31.4701)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2364"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0,0,1,16.67145,27.22746)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2362"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0,0,1,0.229156,30.76299)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2360"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(10.30638,19.27251)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2358"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(11.19027,26.52035)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2356"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(5.356636,23.8687)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2354"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(-0.932144,25.8724)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2352"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(16.14002,24.6642)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2350"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(-0.976307,0,0,1,53.94753,8.563694)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2311"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(1.707748,-5.784024)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2303"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.106619,0,0,1,6.38386,6.500432)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2299"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.462015,0,0,1.262475,-5.687359,1.810269)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2295"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.834148,0,0,1,14.8761,8.569976)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2291"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(1.284317,0,0,1,14.61983,4.452335)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2287"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="matrix(0.751222,0,0,1,-0.197462,7.612867)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2283"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(14.4634,2.014073)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2279"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(8.497184,-2.330824)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2275"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(9.263651,3.495228)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2271"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientTransform="translate(3.55502,0.968578)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2267"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientTransform="translate(-1.608757,3.097272)"
+ y2="16.268581"
+ x2="16.851845"
+ y1="9.285902"
+ x1="14.260854"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2263"
+ xlink:href="#linearGradient2254"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient2254"
+ inkscape:collect="always">
+ <stop
+ id="stop2256"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop2258"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2392"
+ inkscape:collect="always">
+ <stop
+ id="stop2394"
+ offset="0"
+ style="stop-color:#eeeeec;stop-opacity:1;" />
+ <stop
+ id="stop2396"
+ offset="1"
+ style="stop-color:#eeeeec;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2500"
+ inkscape:collect="always">
+ <stop
+ id="stop2502"
+ offset="0"
+ style="stop-color:#fce94f;stop-opacity:1;" />
+ <stop
+ id="stop2504"
+ offset="1"
+ style="stop-color:#fce94f;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2527"
+ inkscape:collect="always">
+ <stop
+ id="stop2529"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1;" />
+ <stop
+ id="stop2531"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3347"
+ inkscape:collect="always">
+ <stop
+ id="stop3349"
+ offset="0"
+ style="stop-color:#edd400;stop-opacity:1;" />
+ <stop
+ id="stop3351"
+ offset="1"
+ style="stop-color:#edd400;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2298"
+ inkscape:collect="always">
+ <stop
+ id="stop2300"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop2302"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient3478"
+ inkscape:collect="always">
+ <stop
+ id="stop3480"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop3482"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4829"
+ inkscape:collect="always">
+ <stop
+ id="stop4831"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop4833"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ y2="-8.3080902"
+ x2="4.9625983"
+ y1="-43.997444"
+ x1="11.149398"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient7744"
+ xlink:href="#linearGradient3478"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-24.88446"
+ x2="-35.652866"
+ y1="-1.2491118"
+ x1="-25.137094"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient7746"
+ xlink:href="#linearGradient2527"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-4.4493785"
+ x2="-34.700153"
+ y1="-37.550461"
+ x1="-27.006643"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient7748"
+ xlink:href="#linearGradient2298"
+ inkscape:collect="always" />
+ <radialGradient
+ r="358.44638"
+ fy="-405.91245"
+ fx="97.468246"
+ cy="-405.91245"
+ cx="97.468246"
+ gradientTransform="matrix(0.02128891,0,0,0.02758631,323.3674,-435.104)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient7778"
+ xlink:href="#linearGradient9642"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient9642"
+ inkscape:collect="always">
+ <stop
+ id="stop9644"
+ offset="0"
+ style="stop-color:#787974;stop-opacity:1;" />
+ <stop
+ id="stop9646"
+ offset="1"
+ style="stop-color:#787974;stop-opacity:0;" />
+ </linearGradient>
+ <inkscape:perspective
+ id="perspective2979"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 24 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <radialGradient
+ gradientTransform="matrix(1.341774,0,0,1.0894455,-13.234228,-3.745426)"
+ r="15.0625"
+ fy="18.625"
+ fx="27.75"
+ cy="18.625"
+ cx="27.75"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2996"
+ xlink:href="#lG3584"
+ inkscape:collect="always" />
+ <radialGradient
+ r="7.8289828"
+ fy="74.20993"
+ fx="14.772334"
+ cy="74.20993"
+ cx="14.772334"
+ gradientTransform="matrix(2.1121636,0,0,0.6226858,-6.201582,-3.209507)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2993"
+ xlink:href="#lG20210"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="43.165001"
+ x2="26.4785"
+ y1="43.165001"
+ x1="23.124001"
+ gradientTransform="matrix(1.7634105,0,0,1.5366701,-19.732605,-23.884032)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2990"
+ xlink:href="#aigrd1"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="26.739624"
+ x2="24.613028"
+ y1="31.146202"
+ x1="24.613028"
+ gradientTransform="matrix(0.9917,0,0,0.9909251,-0.408739,1.0079205)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2987"
+ xlink:href="#lG3300"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="39.142845"
+ x2="-23.851389"
+ y1="39.033951"
+ x1="-10.480865"
+ gradientTransform="matrix(0.5604295,0.02969716,-0.1172615,0.6523102,35.381303,20.961615)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2984"
+ xlink:href="#lG2399"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="38.675991"
+ x2="-4.3908315"
+ y1="38.675991"
+ x1="-22.87417"
+ gradientTransform="matrix(0.5604295,0.02969716,-0.1172615,0.6523102,35.381303,20.961615)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2982"
+ xlink:href="#lG19894"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="39.142845"
+ x2="-23.851389"
+ y1="39.033951"
+ x1="-10.480865"
+ gradientTransform="matrix(0.6119222,-0.1311763,0.06194293,0.7364078,30.37142,15.405948)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2979"
+ xlink:href="#lG2399"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="38.675991"
+ x2="-4.3908315"
+ y1="38.675991"
+ x1="-22.87417"
+ gradientTransform="matrix(0.6119222,-0.1311763,0.06194293,0.7364078,30.37142,15.405948)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2977"
+ xlink:href="#lG19894"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="39.142845"
+ x2="-23.851389"
+ y1="39.033951"
+ x1="-10.480865"
+ gradientTransform="matrix(0.6119222,-0.1311763,0.06194293,0.7364078,30.37142,12.330395)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2974"
+ xlink:href="#lG2399"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="38.675991"
+ x2="-4.3908315"
+ y1="38.675991"
+ x1="-22.87417"
+ gradientTransform="matrix(0.6119222,-0.1311763,0.06194293,0.7364078,30.37142,12.330395)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2972"
+ xlink:href="#lG19894"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="39.142845"
+ x2="-23.851389"
+ y1="39.033951"
+ x1="-10.480865"
+ gradientTransform="matrix(0.6119217,-0.1311762,0.06194293,0.7364078,30.37142,9.2548427)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2969"
+ xlink:href="#lG2399"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="38.675991"
+ x2="-4.3908315"
+ y1="38.675991"
+ x1="-22.87417"
+ gradientTransform="matrix(0.6119217,-0.1311762,0.06194293,0.7364078,30.37142,9.2548427)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2967"
+ xlink:href="#lG19894"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="-29.598314"
+ x2="-37.641232"
+ y1="-29.799353"
+ x1="-29.007195"
+ gradientTransform="matrix(-0.8644621,-0.0434172,0.1808757,-0.9536764,1.0306099,1.6641308)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2959"
+ xlink:href="#lG3265"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="54.863026"
+ x2="11.906206"
+ y1="55.362793"
+ x1="17.879995"
+ gradientTransform="matrix(1.5303857,0,0,0.5438301,1.0306099,1.6641308)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2957"
+ xlink:href="#lG3311"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="34.005379"
+ x2="23.413288"
+ y1="1.9996886"
+ x1="23.413288"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2954"
+ xlink:href="#lG3531"
+ inkscape:collect="always" />
+ <radialGradient
+ r="33.93409"
+ fy="29.869318"
+ fx="68.137589"
+ cy="29.869318"
+ cx="68.137589"
+ gradientTransform="matrix(0.5261727,0,0,0.7582733,-9.5647863,5.1185895)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2952"
+ xlink:href="#aigrd7"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="3.8557322"
+ x2="-5.2517161"
+ y1="16.651863"
+ x1="37.940434"
+ gradientTransform="matrix(0.8533916,0,0,0.9752486,1.8913364,1.6641308)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2949"
+ xlink:href="#lG3175"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="18.162935"
+ x2="32.16608"
+ y1="10.313651"
+ x1="30.620375"
+ gradientTransform="matrix(-0.5899687,0,0,1.4729675,47.100499,4.7781825)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2946"
+ xlink:href="#lG20393"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="18.162935"
+ x2="32.16608"
+ y1="10.313651"
+ x1="30.620375"
+ gradientTransform="matrix(0.5899687,0,0,1.4729675,0.9038103,4.8940498)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2943"
+ xlink:href="#lG20393"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="32.25098"
+ x2="9.3648205"
+ y1="31.504122"
+ x1="14.637301"
+ gradientTransform="matrix(1.8610153,0,0,0.4669515,1.2553727,5.473386)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2940"
+ xlink:href="#lG20428"
+ inkscape:collect="always" />
+ <linearGradient
+ y2="36.726292"
+ x2="32.096882"
+ y1="10.061084"
+ x1="16.998856"
+ gradientTransform="matrix(1.088532,0,0,0.9166207,0.7043474,-1.5743919)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient2937"
+ xlink:href="#lG6339"
+ inkscape:collect="always" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG3531"
+ id="lG3537"
+ y2="34.005379"
+ x2="23.413288"
+ y1="1.9996886"
+ x1="23.413288" />
+ <linearGradient
+ gradientTransform="matrix(0.9917,0,0,0.9909251,-0.408739,1.0079205)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG3300"
+ id="lG3845"
+ y2="26.739624"
+ x2="24.613028"
+ y1="31.146202"
+ x1="24.613028" />
+ <linearGradient
+ gradientTransform="matrix(0.5604295,0.02969716,-0.1172615,0.6523102,35.381303,20.961615)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG2399"
+ id="lG3842"
+ y2="39.142845"
+ x2="-23.851389"
+ y1="39.033951"
+ x1="-10.480865" />
+ <linearGradient
+ gradientTransform="matrix(0.5604295,0.02969716,-0.1172615,0.6523102,35.381303,20.961615)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG19894"
+ id="lG3840"
+ y2="38.675991"
+ x2="-4.3908315"
+ y1="38.675991"
+ x1="-22.87417" />
+ <linearGradient
+ gradientTransform="matrix(0.6119217,-0.1311762,0.06194293,0.7364078,30.37142,9.2548427)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG2399"
+ id="lG3835"
+ y2="39.142845"
+ x2="-23.851389"
+ y1="39.033951"
+ x1="-10.480865" />
+ <linearGradient
+ gradientTransform="matrix(0.6119217,-0.1311762,0.06194293,0.7364078,30.37142,9.2548427)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG19894"
+ id="lG3833"
+ y2="38.675991"
+ x2="-4.3908315"
+ y1="38.675991"
+ x1="-22.87417" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG3584"
+ id="rG3590"
+ fy="18.625"
+ fx="27.75"
+ r="15.0625"
+ cy="18.625"
+ cx="27.75" />
+ <linearGradient
+ gradientTransform="matrix(-0.5899687,0,0,1.4729675,47.100499,4.7781825)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG20393"
+ id="lG3580"
+ y2="18.162935"
+ x2="32.16608"
+ y1="10.313651"
+ x1="30.620375" />
+ <linearGradient
+ gradientTransform="matrix(0.5899687,0,0,1.4729675,0.9038103,4.8940498)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG20393"
+ id="lG3577"
+ y2="18.162935"
+ x2="32.16608"
+ y1="10.313651"
+ x1="30.620375" />
+ <linearGradient
+ gradientTransform="matrix(1.8610153,0,0,0.4669515,1.2553727,5.473386)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG20428"
+ id="lG3574"
+ y2="32.25098"
+ x2="9.3648205"
+ y1="31.504122"
+ x1="14.637301" />
+ <linearGradient
+ gradientTransform="matrix(-0.8644621,-0.0434172,0.1808757,-0.9536764,1.0306099,1.6641308)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG3265"
+ id="lG2801"
+ y2="-29.598314"
+ x2="-37.641232"
+ y1="-29.799353"
+ x1="-29.007195" />
+ <linearGradient
+ gradientTransform="matrix(1.5303857,0,0,0.5438301,1.0306099,1.6641308)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG3311"
+ id="lG2799"
+ y2="54.863026"
+ x2="11.906206"
+ y1="55.362793"
+ x1="17.879995" />
+ <radialGradient
+ gradientTransform="matrix(0.5261727,0,0,0.7582733,-9.5647863,5.1185895)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#aigrd7"
+ id="rG2796"
+ fy="29.869318"
+ fx="68.137589"
+ r="33.93409"
+ cy="29.869318"
+ cx="68.137589" />
+ <linearGradient
+ gradientTransform="matrix(0.8533916,0,0,0.9752486,1.8913364,1.6641308)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG3175"
+ id="lG2793"
+ y2="3.8557322"
+ x2="-5.2517161"
+ y1="16.651863"
+ x1="37.940434" />
+ <linearGradient
+ gradientTransform="matrix(1.088532,0,0,0.9166207,0.7043474,-1.5743919)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG6339"
+ id="lG2774"
+ y2="36.726292"
+ x2="32.096882"
+ y1="10.061084"
+ x1="16.998856" />
+ <linearGradient
+ gradientTransform="matrix(1.7634105,0,0,1.5366701,-19.732605,-23.884032)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#aigrd1"
+ id="lG2755"
+ y2="43.165001"
+ x2="26.4785"
+ y1="43.165001"
+ x1="23.124001" />
+ <linearGradient
+ gradientTransform="scale(1.02645,0.974232)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG2399"
+ id="lG4114"
+ y2="39.142845"
+ x2="-23.851389"
+ y1="39.033951"
+ x1="-10.480865" />
+ <linearGradient
+ gradientTransform="scale(1.02645,0.974232)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG19894"
+ id="lG4112"
+ y2="38.675991"
+ x2="-4.3908315"
+ y1="38.675991"
+ x1="-22.87417" />
+ <linearGradient
+ gradientTransform="scale(1.02645,0.974232)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG2399"
+ id="lG4110"
+ y2="39.142845"
+ x2="-23.851389"
+ y1="39.033951"
+ x1="-10.480865" />
+ <linearGradient
+ gradientTransform="scale(1.02645,0.974232)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG19894"
+ id="lG4108"
+ y2="38.675991"
+ x2="-4.3908315"
+ y1="38.675991"
+ x1="-22.87417" />
+ <radialGradient
+ gradientTransform="scale(1.764278,0.566804)"
+ gradientUnits="userSpaceOnUse"
+ xlink:href="#lG20210"
+ id="rG20216"
+ fy="74.20993"
+ fx="14.772334"
+ r="7.8289828"
+ cy="74.20993"
+ cx="14.772334" />
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ id="lG19894"
+ y2="37.226601"
+ x2="30.169901"
+ y1="37.226601"
+ x1="18.9951">
+ <stop
+ id="stop2842"
+ offset="0.005618"
+ style="stop-color:#a3a349;" />
+ <stop
+ id="stop2844"
+ offset="0.02078677"
+ style="stop-color:#acac54;" />
+ <stop
+ id="stop2846"
+ offset="0.066"
+ style="stop-color:#c1c172;" />
+ <stop
+ id="stop2848"
+ offset="0.1148"
+ style="stop-color:#d4d68e;" />
+ <stop
+ id="stop2850"
+ offset="0.1677"
+ style="stop-color:#e2e4a6;" />
+ <stop
+ id="stop2852"
+ offset="0.2265"
+ style="stop-color:#edf0b8;" />
+ <stop
+ id="stop2854"
+ offset="0.2963"
+ style="stop-color:#f3f6c3;" />
+ <stop
+ id="stop2856"
+ offset="0.4045"
+ style="stop-color:#f5f8c7;" />
+ <stop
+ id="stop2858"
+ offset="0.5239"
+ style="stop-color:#eef0be;" />
+ <stop
+ id="stop2860"
+ offset="0.6666"
+ style="stop-color:#dbdda9;" />
+ <stop
+ id="stop2862"
+ offset="0.8211"
+ style="stop-color:#bebd88;" />
+ <stop
+ id="stop2864"
+ offset="0.9832"
+ style="stop-color:#989564;" />
+ <stop
+ id="stop2866"
+ offset="1"
+ style="stop-color:#949160;" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ id="aigrd1"
+ y2="43.165001"
+ x2="26.4785"
+ y1="43.165001"
+ x1="23.124001">
+ <stop
+ id="stop2815"
+ offset="0.005618"
+ style="stop-color:#686868;" />
+ <stop
+ id="stop2817"
+ offset="0.03012137"
+ style="stop-color:#777777;" />
+ <stop
+ id="stop2819"
+ offset="0.08366583"
+ style="stop-color:#929292;" />
+ <stop
+ id="stop2821"
+ offset="0.1422"
+ style="stop-color:#a7a7a7;" />
+ <stop
+ id="stop2823"
+ offset="0.2074"
+ style="stop-color:#b6b6b6;" />
+ <stop
+ id="stop2825"
+ offset="0.2846"
+ style="stop-color:#bebebe;" />
+ <stop
+ id="stop2827"
+ offset="0.4045"
+ style="stop-color:#c1c1c1;" />
+ <stop
+ id="stop2829"
+ offset="0.4962"
+ style="stop-color:#bcbcbc;" />
+ <stop
+ id="stop2831"
+ offset="0.6057"
+ style="stop-color:#adadad;" />
+ <stop
+ id="stop2833"
+ offset="0.7245"
+ style="stop-color:#959595;" />
+ <stop
+ id="stop2835"
+ offset="0.8497"
+ style="stop-color:#747474;" />
+ <stop
+ id="stop2837"
+ offset="0.9789"
+ style="stop-color:#494949;" />
+ <stop
+ id="stop2839"
+ offset="1"
+ style="stop-color:#414141;" />
+ </linearGradient>
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ id="aigrd7"
+ fy="11.4873"
+ fx="17.8335"
+ r="22.709299"
+ cy="11.4873"
+ cx="17.8335">
+ <stop
+ id="stop2808"
+ style="stop-color:#ffffff;stop-opacity:0.17525773" />
+ <stop
+ id="stop2810"
+ offset="0.88200003"
+ style="stop-color:#659aff;stop-opacity:1;" />
+ <stop
+ id="stop2812"
+ offset="1"
+ style="stop-color:#d6fcff;stop-opacity:1;" />
+ </radialGradient>
+ <linearGradient
+ id="lG20210">
+ <stop
+ id="stop2801"
+ style="stop-color:#000000;stop-opacity:0.51546389" />
+ <stop
+ id="stop2803"
+ offset="0.55172414"
+ style="stop-color:#000000;stop-opacity:0.14432989" />
+ <stop
+ id="stop2805"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ id="lG20393">
+ <stop
+ offset="0"
+ id="stop2794"
+ style="stop-color:#677fa0;stop-opacity:1;" />
+ <stop
+ id="stop2796"
+ offset="0.41176471"
+ style="stop-color:#6c7f97;stop-opacity:0.43921569;" />
+ <stop
+ id="stop2798"
+ offset="1"
+ style="stop-color:#4c3e1c;stop-opacity:0.47843137" />
+ </linearGradient>
+ <linearGradient
+ id="lG20428">
+ <stop
+ id="stop2789"
+ style="stop-color:#998f78;stop-opacity:1;"
+ offset="0" />
+ <stop
+ id="stop2791"
+ offset="1"
+ style="stop-color:#9c9075;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="lG6339">
+ <stop
+ id="stop2784"
+ style="stop-color:#ffffff" />
+ <stop
+ id="stop2786"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ id="lG2399">
+ <stop
+ id="stop2775"
+ style="stop-color:#929470" />
+ <stop
+ id="stop2777"
+ offset="0.2647059"
+ style="stop-color:#fcffc1" />
+ <stop
+ id="stop2779"
+ offset="0.63235295"
+ style="stop-color:#f3f5ba" />
+ <stop
+ id="stop2781"
+ offset="1"
+ style="stop-color:#929470" />
+ </linearGradient>
+ <linearGradient
+ id="lG3175">
+ <stop
+ id="stop2770"
+ style="stop-color:#fffff1" />
+ <stop
+ id="stop2772"
+ offset="1"
+ style="stop-color:#f1f3ff;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ id="lG3265">
+ <stop
+ id="stop2761"
+ style="stop-color:#dcd763" />
+ <stop
+ id="stop2763"
+ offset="0.2647059"
+ style="stop-color:#d9bb05" />
+ <stop
+ id="stop2765"
+ offset="0.63235295"
+ style="stop-color:#dcd763" />
+ <stop
+ id="stop2767"
+ offset="1"
+ style="stop-color:#c7a107" />
+ </linearGradient>
+ <linearGradient
+ id="lG3311">
+ <stop
+ id="stop2756"
+ style="stop-color:#d6d87b" />
+ <stop
+ id="stop2758"
+ offset="1"
+ style="stop-color:#fbe843" />
+ </linearGradient>
+ <linearGradient
+ id="lG3300">
+ <stop
+ id="stop2751"
+ style="stop-color:#4c4428" />
+ <stop
+ id="stop2753"
+ offset="1"
+ style="stop-color:#e7b600;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ id="lG3584">
+ <stop
+ offset="0"
+ id="stop2744"
+ style="stop-color:#455cba;stop-opacity:0;" />
+ <stop
+ id="stop2746"
+ offset="0.5"
+ style="stop-color:#006bff;stop-opacity:0.32549021;" />
+ <stop
+ id="stop2748"
+ offset="1"
+ style="stop-color:#005eff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="lG3531">
+ <stop
+ offset="0"
+ id="stop2737"
+ style="stop-color:#373b78;stop-opacity:1;" />
+ <stop
+ id="stop2739"
+ offset="0.73602742"
+ style="stop-color:#2e3c81;stop-opacity:1;" />
+ <stop
+ id="stop2741"
+ offset="1"
+ style="stop-color:#616471" />
+ </linearGradient>
+ <inkscape:perspective
+ id="perspective2934"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 24 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG6339"
+ id="linearGradient3110"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.0183416,0,0,0.85751545,-4.8211574,1004.1222)"
+ x1="16.998856"
+ y1="10.061084"
+ x2="32.096882"
+ y2="36.726292" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG20428"
+ id="linearGradient3113"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.7410139,0,0,0.43684168,-4.3056632,1010.7156)"
+ x1="14.637301"
+ y1="31.504122"
+ x2="9.3648205"
+ y2="32.25098" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG20393"
+ id="linearGradient3116"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.55192652,0,0,1.3779881,-4.6345562,1010.1736)"
+ x1="30.620375"
+ y1="10.313651"
+ x2="32.16608"
+ y2="18.162935" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG20393"
+ id="linearGradient3119"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.55192652,0,0,1.3779881,38.583292,1010.0652)"
+ x1="30.620375"
+ y1="10.313651"
+ x2="32.16608"
+ y2="18.162935" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG3175"
+ id="linearGradient3122"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.79836347,0,0,0.91236292,-3.7107075,1007.1519)"
+ x1="37.940434"
+ y1="16.651863"
+ x2="-5.2517161"
+ y2="3.8557322" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#aigrd7"
+ id="radialGradient3125"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.4922442,0,0,0.70937856,-14.42812,1010.3836)"
+ cx="68.137589"
+ cy="29.869318"
+ fx="68.137589"
+ fy="29.869318"
+ r="33.93409" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG3531"
+ id="linearGradient3127"
+ gradientUnits="userSpaceOnUse"
+ x1="23.413288"
+ y1="1.9996886"
+ x2="23.413288"
+ y2="34.005379"
+ gradientTransform="matrix(0.93551831,0,0,0.93551831,-5.4800873,1005.5951)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG3311"
+ id="linearGradient3130"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.4317038,0,0,0.50876302,-4.5159329,1007.1519)"
+ x1="17.879995"
+ y1="55.362793"
+ x2="11.906206"
+ y2="54.863026" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG3265"
+ id="linearGradient3132"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-0.80872012,-0.04061759,0.16921253,-0.89218173,-4.5159329,1007.1519)"
+ x1="-29.007195"
+ y1="-29.799353"
+ x2="-37.641232"
+ y2="-29.598314" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG19894"
+ id="linearGradient3140"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.57246395,-0.12271774,0.05794875,0.68892298,22.932932,1014.2532)"
+ x1="-22.87417"
+ y1="38.675991"
+ x2="-4.3908315"
+ y2="38.675991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG2399"
+ id="linearGradient3142"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.57246395,-0.12271774,0.05794875,0.68892298,22.932932,1014.2532)"
+ x1="-10.480865"
+ y1="39.033951"
+ x2="-23.851389"
+ y2="39.142845" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG19894"
+ id="linearGradient3145"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.57246442,-0.12271783,0.05794875,0.68892298,22.932932,1017.1304)"
+ x1="-22.87417"
+ y1="38.675991"
+ x2="-4.3908315"
+ y2="38.675991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG2399"
+ id="linearGradient3147"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.57246442,-0.12271783,0.05794875,0.68892298,22.932932,1017.1304)"
+ x1="-10.480865"
+ y1="39.033951"
+ x2="-23.851389"
+ y2="39.142845" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG19894"
+ id="linearGradient3150"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.57246442,-0.12271783,0.05794875,0.68892298,22.932932,1020.0076)"
+ x1="-22.87417"
+ y1="38.675991"
+ x2="-4.3908315"
+ y2="38.675991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG2399"
+ id="linearGradient3152"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.57246442,-0.12271783,0.05794875,0.68892298,22.932932,1020.0076)"
+ x1="-10.480865"
+ y1="39.033951"
+ x2="-23.851389"
+ y2="39.142845" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG19894"
+ id="linearGradient3155"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.52429206,0.02778224,-0.10970028,0.61024814,27.619769,1025.2051)"
+ x1="-22.87417"
+ y1="38.675991"
+ x2="-4.3908315"
+ y2="38.675991" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG2399"
+ id="linearGradient3157"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.52429206,0.02778224,-0.10970028,0.61024814,27.619769,1025.2051)"
+ x1="-10.480865"
+ y1="39.033951"
+ x2="-23.851389"
+ y2="39.142845" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#lG3300"
+ id="linearGradient3160"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.92775351,0,0,0.92702857,-5.8624701,1006.538)"
+ x1="24.613028"
+ y1="31.146202"
+ x2="24.613028"
+ y2="26.739624" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#aigrd1"
+ id="linearGradient3163"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.6497028,0,0,1.437583,-23.940301,983.25115)"
+ x1="23.124001"
+ y1="43.165001"
+ x2="26.4785"
+ y2="43.165001" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#lG20210"
+ id="radialGradient3166"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.9759677,0,0,0.58253397,-11.281781,1002.5925)"
+ cx="14.772334"
+ cy="74.20993"
+ fx="14.772334"
+ fy="74.20993"
+ r="7.8289828" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#lG3584"
+ id="radialGradient3169"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.2552541,0,0,1.0191962,-17.86095,1002.0912)"
+ cx="27.75"
+ cy="18.625"
+ fx="27.75"
+ fy="18.625"
+ r="15.0625" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6"
+ inkscape:cx="72.362602"
+ inkscape:cy="25.807165"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="955"
+ inkscape:window-height="680"
+ inkscape:window-x="241"
+ inkscape:window-y="36"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1004.3622)">
+ <g
+ inkscape:label="Layer 1"
+ id="layer1-1"
+ transform="matrix(0.76551132,0,0,0.76551132,15.682475,1006.0323)">
+ <g
+ transform="matrix(0.998698,0,0,0.998698,-342.5411,469.4117)"
+ id="g7594">
+ <path
+ sodipodi:type="arc"
+ style="fill:#eaece8;fill-opacity:1;stroke:none"
+ id="path7596"
+ sodipodi:cx="-56.25"
+ sodipodi:cy="0.24999997"
+ sodipodi:rx="9.75"
+ sodipodi:ry="9.75"
+ d="M -46.5,0.24999997 C -46.5,5.6347763 -50.865224,10 -56.25,10 -61.634776,10 -66,5.6347763 -66,0.24999997 -66,-5.1347763 -61.634776,-9.5 -56.25,-9.5 c 5.384776,0 9.75,4.3652237 9.75,9.74999997 z"
+ transform="matrix(1.386488,0,0,1.386488,444.99,-446.4716)" />
+ <g
+ id="g7598"
+ transform="translate(37.125,-1.625)">
+ <path
+ id="path7600"
+ d="m 323.84614,-456.07802 c 0.0486,0.17562 -0.12591,0.39397 -0.27934,0.59855 -0.20144,0.2686 -0.31042,0.44775 -0.0798,0.67837 0.14329,0.14328 0.57893,0.0158 0.71827,-0.0399 0.3214,-0.12856 0.67358,-0.22953 0.9976,-0.35913 0.24571,-0.0983 0.4292,-0.13723 0.67836,-0.19952 0.28672,-0.0717 0.57153,0.0571 0.67837,0.19952 0.0681,0.0908 -0.46179,0.49026 -0.51875,0.51874 -0.24201,0.12101 -0.47287,0.21798 -0.71827,0.27933 -0.30202,0.0755 -0.57153,0.17815 -0.87788,0.23942 -0.30771,0.0615 -0.52362,0.15456 -0.79808,0.31923 -0.34006,0.20404 -0.62606,0.50635 -0.91778,0.79808 -0.27257,0.27257 -0.36706,0.56686 -0.27933,0.91778 0.0844,0.33751 0.21002,0.457 0.51875,0.51875 0.3433,0.0687 0.51056,-0.0955 0.67836,-0.31923 0.21824,-0.29099 0.30168,-0.66081 0.55865,-0.91778 0.21494,-0.21495 0.36222,-0.4213 0.59856,-0.59856 0.23962,-0.17971 0.42089,-0.27386 0.71827,-0.19952 0.24731,0.0618 0.44872,0.30522 0.71826,0.35914 0.22729,0.0455 0.56158,-0.26084 0.75817,-0.35914 0.0429,-0.0215 0.0798,-0.0532 0.11972,-0.0798 0.20735,-0.13824 0.55041,-0.0798 0.79807,-0.0798 0.26905,0 0.49616,0.12837 0.71826,0.23942 0.26878,0.13438 0.50065,0.12608 0.75817,0.31923 0.27256,0.20441 0.41892,0.35898 0.55866,0.63846 0.13199,0.26397 0.19033,0.42976 0.39904,0.63846 0.22072,0.22072 0.56031,0.36079 0.79806,0.59855 0.14292,0.14291 0.23261,0.53136 0.27934,0.71827 0.0733,0.29311 0.1394,0.59907 0,0.87788 -0.15089,0.30177 -0.33188,0.58396 -0.47885,0.87788 -0.1446,0.28922 -0.54921,0.53162 -0.79807,0.71827 -0.34301,0.25726 -0.75121,0.27237 -1.0774,0.59856 -0.37514,0.37513 -0.41054,0.59585 -0.75818,1.1173 -0.25687,0.38531 0.0488,0.55643 0.35914,0.47885 0.32847,-0.0821 0.63271,-0.15818 0.95769,-0.23943 0.0532,-0.0133 0.10641,-0.0266 0.15961,-0.0399 0.40008,-0.10002 0.71782,-0.41888 1.11731,-0.51875 0.49734,-0.12433 1.54284,0.64638 1.99518,0.91779 0.35667,0.214 -0.0691,0.63308 -0.23942,0.71826 -0.31687,0.15844 -0.63299,0.19952 -0.99759,0.19952 -0.23599,0 -0.49249,-0.0745 -0.71827,-0.11971 -0.30515,-0.061 -0.5178,-0.0606 -0.75817,0.11971 -0.26721,0.20042 -0.2359,0.45813 -0.0798,0.71827 0.15594,0.25989 0.41021,0.4437 0.47884,0.71827 0.0866,0.34645 -0.19337,0.53102 -0.43893,0.67836 -0.24655,0.14793 -0.67219,-0.0399 -0.95769,-0.0399 -0.3617,0 -0.71143,0.18442 -0.99759,0.39904 -0.12967,0.0973 -0.24307,0.61316 -0.27933,0.75817 -0.0133,0.0532 -0.0266,0.10641 -0.0399,0.15962 -0.0973,0.38907 0.0274,0.58727 0.15962,0.91778 0.0957,0.23926 0.32804,0.45656 0.43894,0.67837 0.13845,0.27689 0.22919,0.4594 0.0798,0.75817 -0.12733,0.25465 -0.17554,0.46276 -0.23943,0.71826 -0.0447,0.17901 0.20742,0.65822 0.27933,0.83798 0.14424,0.36058 0.0101,0.42884 -0.23943,0.67837 -0.2208,0.2208 -0.55161,0.2758 -0.79806,0.39903 -0.2292,0.1146 -0.68093,-0.0206 -0.91779,-0.0798 -0.26703,-0.0668 -0.51539,0.0582 -0.71827,0.15962 -0.32213,0.16107 -0.3211,0.31673 -0.55865,0 -0.25189,-0.33585 -0.46083,-0.68615 -0.55865,-1.0774 -0.0133,-0.0532 -0.0266,-0.10641 -0.0399,-0.15962 -0.0668,-0.26738 -0.0399,-0.59608 -0.0399,-0.87788 0,-0.28763 0.0798,-0.54462 0.0798,-0.83798 0,-0.31598 -0.75459,0.2779 -0.95768,0.35914 -0.0941,0.0376 -0.18623,0.0798 -0.27934,0.11971 -0.39873,0.17089 -0.35913,0.53524 -0.35913,0.87788 0,0.34152 0.19951,0.60231 0.19951,0.95769 0,0.34243 -0.40342,0.43894 -0.67835,0.43894 -0.39099,0 -0.5722,-0.45249 -0.83798,-0.71827 -0.25426,-0.25425 -0.68805,-0.53811 -0.83798,-0.83797 -0.21217,-0.42435 -0.28391,-0.66496 0.15961,-0.9976 0.25414,-0.1906 0.60842,-0.22596 0.79808,-0.47884 0.19924,-0.26566 0.48175,-0.63773 0,-0.75817 -0.32828,-0.0821 -0.45563,-0.19618 -0.83798,-0.11971 -0.0665,0.0133 -0.13301,0.0266 -0.19952,0.0399 -0.65946,0.13189 -0.65494,0.0716 -1.27692,-0.23942 -0.44759,-0.2238 -0.60098,-0.56108 -0.91778,-0.87788 -0.29493,-0.29493 -0.46228,-0.69193 -0.55865,-1.0774 -0.0887,-0.3548 -0.19371,-0.69501 -0.27933,-1.0375 -0.0701,-0.28054 -0.0798,-0.62556 -0.0798,-0.91778 0,-0.29704 -0.0798,-0.61345 -0.0798,-0.91779 0,-0.33253 0,-0.66506 0,-0.99759 0,-0.33653 0.0399,-0.63407 0.0399,-0.95769 0,-0.27723 0.0542,-0.61602 0.11971,-0.87789 0.006,-0.0258 0,-0.0532 0,-0.0798 0,-0.34036 0.19708,-0.69223 0.31923,-0.9976 0.10762,-0.26907 0.27463,-0.54927 0.39904,-0.79807 0.13029,-0.26057 0.26091,-0.48091 0.43894,-0.71827 0.1922,-0.25627 0.39689,-0.51616 0.59855,-0.75817 0.34733,-0.41679 0.70836,-0.80669 1.11731,-1.15721 0.23897,-0.20482 0.35656,-0.54674 0.63846,-0.75816 0.34879,-0.2616 0.65243,-0.53921 0.99759,-0.79808 0.2624,-0.1968 0.50187,-0.4241 0.67836,-0.71827 0.14357,-0.23929 0.22463,-0.46405 0.43894,-0.67836 0.0527,-0.0527 0.22985,-0.13487 0.27934,-0.15961 z"
+ style="opacity:0.10555552;fill:#787974;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <path
+ id="path7602"
+ d="m 334.85956,-450.97035 c -0.38499,0.0925 -1.15273,0.22436 -1.67596,0.11971 -0.40086,-0.0802 -0.41421,-0.30406 -0.79807,0.0798 -0.0266,0.0266 -0.0532,0.0532 -0.0798,0.0798 -0.24233,0.24233 -0.27932,0.27859 -0.27932,0.63846 0,0.2363 0.004,0.4611 -0.0399,0.67836 -0.0467,0.23338 -0.0115,0.59226 0.0399,0.79807 0.0784,0.31372 0.12792,0.53517 0.27932,0.83798 0.12091,0.24181 0.17725,0.43221 0.39904,0.59856 0.288,0.21599 0.68441,0.27376 0.9976,0.39903 0.22083,0.0883 0.59074,0.0399 0.83797,0.0399 0.31364,0 0.35914,0.0355 0.35914,0.39903 0,0.31202 -0.58566,0.74998 -0.75817,1.0375 -0.19089,0.31814 -0.11781,0.56436 0,0.91779 0.0878,0.26347 0.1448,0.5245 0.19951,0.79807 0.057,0.28517 0.13143,0.49056 0.35914,0.71827 0.24219,0.2422 0.68895,-0.0258 0.91778,0.27933 0.11503,0.15336 0.11972,0.40725 0.11972,0.59855 0,0.31727 0.10251,0.46749 0.39903,0.31923 0.26993,-0.13496 0.4726,-0.12467 0.67837,-0.39904 0.19592,-0.26123 0.29408,-0.58817 0.43894,-0.87788 0.12918,-0.25837 0.35001,-0.27932 0.63846,-0.27932 0.26664,0 0.4808,0.0693 0.75817,0 0.40637,-0.1016 0.46832,-0.2289 0.75816,-0.51875 0.36667,-0.36667 0.32315,-0.62199 0.39904,-1.0774 0.0342,-0.20545 -0.0338,-0.45465 -0.0798,-0.63846 -0.0133,-0.0532 -0.0266,-0.10641 -0.0399,-0.15962 -0.0556,-0.22243 -0.54378,-0.23942 -0.71826,-0.23942 -0.38567,0 -0.95765,-0.18953 -1.31683,-0.27933 -0.18343,-0.0458 -0.69207,-0.65216 -0.83797,-0.79807 -0.2109,-0.21089 -0.25241,-0.37116 -0.31923,-0.63846 -0.0823,-0.32931 -0.0384,-0.67226 -0.11971,-0.99759 -0.0932,-0.37293 0.0159,-0.5827 -0.27933,-0.87788 -0.20899,-0.209 -0.34674,-0.49671 -0.39904,-0.75818 -0.0504,-0.25226 -0.28717,-0.53461 -0.47884,-0.67836 -0.14021,-0.10515 -0.15679,-0.0792 -0.35913,-0.11971 z"
+ style="opacity:0.18888885;fill:#787974;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <path
+ id="path7604"
+ d="m 341.00473,-448.65593 c -0.20686,0.007 -0.41855,0.25893 -0.59856,0.43894 -0.17692,0.17692 -0.11971,0.4801 -0.11971,0.71826 0,0.26057 0.056,0.5433 0.11971,0.79808 0.054,0.21611 0.253,0.49242 0.39904,0.63846 0.22008,0.22008 0.50176,0.34965 0.79807,0.39903 0.38807,0.0647 0.60185,0.11149 0.75818,-0.27932 0.10737,-0.26842 0.15961,-0.45302 0.15961,-0.75817 0,-0.27625 -0.0124,-0.48851 -0.0798,-0.75817 -0.0815,-0.32585 -0.18635,-0.49221 -0.47884,-0.63846 -0.20729,-0.10364 -0.41834,-0.34368 -0.59856,-0.47885 -0.10339,-0.0775 -0.23587,-0.0798 -0.35913,-0.0798 z"
+ style="opacity:0.18333327;fill:#787974;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <path
+ id="path7606"
+ d="m 328.35524,-436.20598 c 0.21632,-0.14825 0.84563,-0.79382 1.27693,-1.1173 0.0831,-0.0623 0.15961,-0.13301 0.23942,-0.19952 0.43011,-0.35842 0.80496,-0.92811 1.11731,-1.39663 0.49552,-0.74328 0.71315,-1.41096 0.87788,-2.23461 0.20928,-1.0464 0.26214,-0.34748 0.0399,0.31924 -0.0347,0.10405 -0.0532,0.21282 -0.0798,0.31922 -0.10903,0.43615 -0.15211,0.89903 -0.31922,1.31683 -0.22556,0.5639 -0.65123,1.04865 -0.79808,1.63605 -0.0784,0.31342 -0.18502,0.69649 -0.11972,0.95769 0.078,0.31211 0.53278,-0.37711 0.83799,-0.47885 0.4153,-0.13843 0.51874,-0.22895 0.51874,0.23943 0,0.28308 -0.14275,0.67387 -0.19952,0.95769 -0.0979,0.48934 1.28804,0.077 1.59615,0 1.0073,-0.25183 1.69819,-0.59713 2.51394,-1.27692 0.89829,-0.74857 1.64541,-1.5656 2.47402,-2.39423 0.66669,-0.66668 0.98041,-1.08477 0.55866,0.0399 -0.0399,0.10641 -0.0798,0.21282 -0.11971,0.31923 -0.0399,0.10641 -0.0798,0.21282 -0.11971,0.31923 -0.22087,0.58898 -0.62389,1.2406 -1.15721,1.59615 -0.83096,0.55397 -1.36956,1.58261 -2.27451,2.03508 -0.36626,0.18313 -0.74917,0.25488 -1.1173,0.43894 -0.36945,0.18473 0.71851,0.31485 0.91778,0.35914 2.00332,0.44518 -1.62115,0.63846 -2.07499,0.63846 -0.74853,0 -1.12279,-0.15633 -1.71586,0.19951 -0.20269,0.12161 0.94323,0.58769 0.99758,0.59856 0.4676,0.0935 0.88473,0.39904 1.39664,0.39904 0.84991,0 -1.77287,0.26507 -2.51393,0.0798 -0.62118,-0.1553 -1.20981,-0.2825 -1.83557,-0.43895 -0.31755,-0.0794 -0.63616,-0.0305 -0.9178,0.0399 -0.056,0.014 0.0399,0.82339 0.0399,0.91778 0,0.591 -0.15469,1.05225 -0.43894,0.19952 -0.15311,-0.45935 -0.43894,-0.94432 -0.43894,-1.43653 0,-0.31166 -0.41156,0.46894 -0.59855,0.71827 -0.26333,0.3511 -0.78197,0.8539 -0.87788,0.87788 -0.0131,0.003 0.25819,-0.55392 0.35913,-0.95769 0.0759,-0.3034 0.56595,-1.11548 0.23942,-1.19711 -0.3049,-0.0762 -0.72505,-0.0173 -1.0375,-0.0798 -0.46341,-0.0927 -0.96027,-0.18086 -1.39663,-0.39904 -0.84451,-0.42225 -2.16285,-0.81006 -3.07258,-1.0375 -0.0838,-0.0209 -1.45551,-1.49541 -0.15962,-0.19951 0.85544,0.85544 2.19059,1.43653 3.39182,1.43653 0.38491,0 0.95655,-0.14935 1.31682,-0.23942 0.21699,-0.0543 0.51677,-0.38229 0.75817,-0.47885 0.26199,-0.10479 -0.41791,-0.38179 -0.59855,-0.59855 -0.0665,-0.0798 -0.13302,-0.15962 -0.19953,-0.23942 -0.71532,-0.8584 -0.96642,-2.04384 -1.79565,-2.87307 -0.13341,-0.1334 -2.07779,-2.40319 -1.15721,-1.63605 0.95189,0.79324 1.83163,1.49845 2.63364,2.43412 0.41125,0.4798 0.76487,1.10573 1.15721,1.59615 0.39477,0.49348 0.31152,-0.10291 0.19951,-0.43894 -0.24012,-0.72038 -0.1197,-1.72147 -0.1197,-2.47403 0,-0.99806 0.51551,1.02456 0.55865,1.19711 0.12401,0.49605 0.38047,1.14206 0.75816,0.63846 0.39026,-0.52034 0.43894,-0.61871 0.43894,0.0399 0,0.0532 0,0.10641 0,0.15961 0,0.24765 -0.0131,0.53284 0.0399,0.79807 z"
+ style="opacity:0.47222218;fill:#f3f4f2;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <path
+ id="path7608"
+ d="m 340.04704,-444.98479 c 0.08,0.0851 0.15962,0.37727 0.15962,0.63846 0,0.10627 -0.65983,0.61991 -0.75818,0.71827 -0.19197,0.19196 -0.23069,0.51496 -0.27932,0.75816 -0.0627,0.31332 -0.14128,0.53067 -0.0798,0.83798 0.0521,0.26046 0.16017,0.51987 0.27932,0.75817 0.14338,0.28674 0.35124,0.43104 0.59856,0.67837 0.27549,0.27549 0.61563,0.27362 0.95768,0.35913 0.43482,0.1087 -0.25838,0.523 -0.35913,0.59856 -0.26793,0.20095 -0.5291,0.26013 -0.67836,0.55865 -0.1729,0.3458 0.18476,0.47294 0.39904,0.55865 0.2419,0.0968 0.60668,-0.33006 0.71827,-0.47885 0.15065,-0.20087 0.39904,-0.42712 0.39904,-0.67836 0,-0.24697 0.1197,-0.50826 0.1197,-0.79807 0,-0.27029 0.0614,-0.56478 0.11971,-0.79808 0.0889,-0.35541 0.21725,-0.49656 0.43894,-0.71826 0.17864,-0.17863 0.17417,-0.6202 0.11972,-0.83798 -0.0624,-0.24974 -0.21901,-0.47698 -0.27933,-0.71827 -0.0615,-0.24606 -0.36202,-0.38978 -0.55865,-0.43894 -0.23626,-0.0591 -0.56748,-0.48767 -0.71827,-0.63846 -0.20761,-0.20761 -0.2995,-0.35913 -0.59855,-0.35913 z"
+ style="opacity:0.11666661;fill:#787974;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <path
+ id="path7610"
+ d="m 322.68884,-446.02226 c -0.009,-0.009 0.0266,0 0,0 z"
+ style="fill:none;stroke:#000000;stroke-width:1.0013057px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path7612"
+ d="m 327.59708,-455.67899 c 0.17193,-0.0426 0.57166,-0.17284 0.83797,-0.23942 0.34034,-0.0851 0.69744,0.11971 1.0375,0.11971 0.0345,0 0.25527,0.43894 0.63846,0.43894 0.0532,0 0.10641,0 0.15962,0 0.24164,0 0.51173,0.1925 0.67836,0.35914 0.16091,0.1609 0.0136,0.54508 -0.0798,0.63846 -0.25418,0.25417 -0.48157,0.0771 -0.67836,-0.11972 -0.21053,-0.21053 -0.32098,-0.28974 -0.59856,-0.35913 -0.27563,-0.0689 -0.57017,-0.0271 -0.83797,0.0399 -0.32704,0.0818 -0.54193,0.15961 -0.91779,0.15961 -0.12562,0 -0.5121,-0.54536 -0.55866,-0.63846 -0.0821,-0.16419 0.21875,-0.37391 0.31924,-0.39904 z"
+ style="opacity:0.2;fill:#938f8b;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <path
+ id="path7614"
+ d="m 332.42543,-455.00062 c 0.19753,0.0512 0.64044,0.0394 0.95768,-0.0399 0.35162,-0.0879 0.90828,-0.13206 1.27693,-0.0399 0.22336,0.0558 1.58727,0.32367 0.95768,0.63846 -0.31149,0.15575 -0.64122,0.19319 -0.91778,0.35913 -0.33295,0.19977 0.40229,0.27933 0.55865,0.27933 0.42422,0 0.18044,0.51064 0.0798,0.67836 -0.15693,0.26154 -0.0504,0.66587 0,0.91779 0.0571,0.28533 0.54752,0.23942 0.79807,0.23942 0.34322,0 0.63189,0.0444 0.83798,0.31923 0.18225,0.243 0.43466,0.4874 0.31923,0.71827 -0.11889,0.23778 -0.72141,0.27932 -0.91778,0.27932 -0.15157,0 -0.75039,-0.7629 -0.83799,-0.83798 -0.23047,-0.19755 -0.49986,-0.0147 -0.71825,0.0399 -0.38884,0.0972 -0.67608,-0.39713 -0.9178,-0.59856 -0.26154,-0.21795 -0.42515,-0.53108 -0.55865,-0.79807 -0.16889,-0.33778 0.10385,-0.47885 -0.39903,-0.47885 -0.3123,0 -0.48314,-0.0631 -0.71828,-0.23942 -0.31928,-0.23946 -0.55864,-0.14689 -0.55864,-0.59856 0,-0.39868 0.0217,-0.5158 0.35913,-0.71826 0.10827,-0.065 0.25395,-0.0327 0.39904,-0.11971 z"
+ style="opacity:0.28888891;fill:#938f8b;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <path
+ id="path7616"
+ d="m 323.87671,-456.18983 c 0.0486,0.17563 -0.12589,0.39398 -0.27933,0.59856 -0.20144,0.2686 -0.31042,0.44774 -0.0798,0.67836 0.14329,0.14329 0.57893,0.0158 0.71827,-0.0399 0.3214,-0.12856 0.67358,-0.22953 0.99759,-0.35914 0.24572,-0.0983 0.42921,-0.13723 0.67837,-0.19952 0.28672,-0.0717 0.57153,0.0571 0.67836,0.19952 0.0681,0.0908 -0.46179,0.49027 -0.51875,0.51875 -0.24201,0.12101 -0.47286,0.21798 -0.71826,0.27933 -0.30202,0.0755 -0.57153,0.17815 -0.87789,0.23942 -0.3077,0.0615 -0.52361,0.15455 -0.79807,0.31923 -0.34006,0.20404 -0.62606,0.50635 -0.91778,0.79807 -0.27258,0.27258 -0.36706,0.56687 -0.27933,0.91779 0.0844,0.33751 0.21002,0.457 0.51874,0.51875 0.34331,0.0687 0.51057,-0.0955 0.67837,-0.31923 0.21824,-0.29099 0.30168,-0.66081 0.55865,-0.91779 0.21494,-0.21494 0.36221,-0.4213 0.59856,-0.59855 0.23961,-0.17971 0.42089,-0.27386 0.71826,-0.19952 0.24732,0.0618 0.44873,0.30522 0.71827,0.35913 0.22729,0.0455 0.56158,-0.26083 0.75817,-0.35913 0.0429,-0.0215 0.0798,-0.0532 0.11972,-0.0798 0.20735,-0.13823 0.55041,-0.0798 0.79807,-0.0798 0.26905,0 0.49616,0.12837 0.71826,0.23943 0.26878,0.13438 0.50064,0.12608 0.75817,0.31922 0.27256,0.20442 0.41891,0.35898 0.55865,0.63846 0.132,0.26398 0.19034,0.42976 0.39905,0.63846 0.22072,0.22073 0.5603,0.3608 0.79806,0.59856 0.14292,0.14291 0.23261,0.53136 0.27934,0.71827 0.0733,0.29311 0.1394,0.59907 0,0.87788 -0.15089,0.30177 -0.33189,0.58395 -0.47885,0.87788 -0.14461,0.28922 -0.54921,0.53161 -0.79808,0.71827 -0.343,0.25726 -0.75121,0.27237 -1.07739,0.59855 -0.37514,0.37514 -0.41054,0.59586 -0.75818,1.11731 -0.25687,0.38531 0.0488,0.55643 0.35914,0.47884 0.32847,-0.0821 0.63271,-0.15818 0.95769,-0.23942 0.0532,-0.0133 0.10641,-0.0266 0.15961,-0.0399 0.40007,-0.10002 0.71782,-0.41888 1.11731,-0.51875 0.49733,-0.12434 1.54284,0.64638 1.99518,0.91778 0.35667,0.214 -0.0691,0.63309 -0.23943,0.71827 -0.31686,0.15844 -0.63298,0.19952 -0.99758,0.19952 -0.23599,0 -0.49249,-0.0746 -0.71827,-0.11971 -0.30515,-0.061 -0.51781,-0.0606 -0.75817,0.11971 -0.26722,0.20041 -0.2359,0.45813 -0.0798,0.71827 0.15594,0.25988 0.4102,0.4437 0.47884,0.71826 0.0866,0.34646 -0.19337,0.53103 -0.43894,0.67837 -0.24654,0.14793 -0.67218,-0.0399 -0.95768,-0.0399 -0.36171,0 -0.71143,0.18442 -0.99759,0.39904 -0.12968,0.0972 -0.24307,0.61316 -0.27933,0.75817 -0.0133,0.0532 -0.0266,0.10641 -0.0399,0.15961 -0.0973,0.38907 0.0274,0.58727 0.15962,0.91779 0.0957,0.23925 0.32804,0.45656 0.43894,0.67836 0.13845,0.2769 0.22919,0.45941 0.0798,0.75817 -0.12733,0.25466 -0.17555,0.46276 -0.23943,0.71827 -0.0447,0.17901 0.20742,0.65821 0.27933,0.83798 0.14423,0.36058 0.0101,0.42884 -0.23942,0.67836 -0.22081,0.22081 -0.55162,0.27581 -0.79808,0.39904 -0.22919,0.11459 -0.68092,-0.0206 -0.91778,-0.0798 -0.26703,-0.0668 -0.51539,0.0582 -0.71827,0.15962 -0.32213,0.16106 -0.32111,0.31673 -0.55865,0 -0.25189,-0.33586 -0.46084,-0.68615 -0.55865,-1.0774 -0.0133,-0.0532 -0.0266,-0.10641 -0.0399,-0.15962 -0.0669,-0.26738 -0.0399,-0.59608 -0.0399,-0.87788 0,-0.28764 0.0798,-0.54462 0.0798,-0.83798 0,-0.31598 -0.75459,0.2779 -0.95769,0.35914 -0.094,0.0376 -0.18622,0.0798 -0.27933,0.11971 -0.39874,0.17088 -0.35913,0.53524 -0.35913,0.87788 0,0.34152 0.19952,0.60231 0.19952,0.95769 0,0.34242 -0.40343,0.43894 -0.67836,0.43894 -0.39099,0 -0.5722,-0.45249 -0.83798,-0.71827 -0.25427,-0.25426 -0.68805,-0.53811 -0.83798,-0.83798 -0.21218,-0.42434 -0.28391,-0.66495 0.15961,-0.99759 0.25414,-0.1906 0.60842,-0.22596 0.79808,-0.47885 0.19924,-0.26565 0.48175,-0.63773 0,-0.75816 -0.32828,-0.0821 -0.45564,-0.19619 -0.83798,-0.11972 -0.0665,0.0133 -0.13301,0.0266 -0.19952,0.0399 -0.65946,0.13189 -0.65494,0.0716 -1.27692,-0.23943 -0.44759,-0.22379 -0.60098,-0.56108 -0.91778,-0.87787 -0.29493,-0.29493 -0.46228,-0.69193 -0.55865,-1.07741 -0.0887,-0.3548 -0.19371,-0.69501 -0.27933,-1.03749 -0.0701,-0.28055 -0.0798,-0.62556 -0.0798,-0.91779 0,-0.29703 -0.0798,-0.61344 -0.0798,-0.91778 0,-0.33253 0,-0.66507 0,-0.9976 0,-0.33652 0.0399,-0.63406 0.0399,-0.95769 0,-0.27723 0.0542,-0.61602 0.11971,-0.87788 0.006,-0.0258 0,-0.0532 0,-0.0798 0,-0.34035 0.19708,-0.69222 0.31923,-0.99759 0.10762,-0.26907 0.27463,-0.54927 0.39904,-0.79807 0.13028,-0.26058 0.26091,-0.48091 0.43893,-0.71827 0.19221,-0.25628 0.3969,-0.51617 0.59856,-0.75817 0.34733,-0.4168 0.70836,-0.80669 1.11731,-1.15721 0.23897,-0.20483 0.35655,-0.54675 0.63846,-0.75817 0.34879,-0.26159 0.65243,-0.5392 0.99759,-0.79807 0.2624,-0.1968 0.50186,-0.42411 0.67837,-0.71827 0.14356,-0.23929 0.22462,-0.46405 0.43893,-0.67836 0.0527,-0.0527 0.22984,-0.13487 0.27933,-0.15962 z"
+ style="opacity:0.17777776;fill:url(#radialGradient7778);fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <path
+ transform="matrix(0.02128891,0,0,0.02128891,345.1547,-457.7716)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7618"
+ style="opacity:0.61666667;fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.01127061,0,0,0.01127061,330.388,-456.653)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7620"
+ style="opacity:0.54444442;fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.02128891,0,0,0.02128891,354.9312,-458.5298)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7622"
+ style="opacity:0.54444442;fill:#c2c3be;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.02128891,0,0,0.02128891,349.8235,-448.3144)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7624"
+ style="opacity:0.56666667;fill:#c2c3be;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.01377519,0,0,0.01377519,347.8565,-453.491)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7626"
+ style="opacity:0.61666667;fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.01127061,0,0,0.01127061,337.4909,-441.33)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7628"
+ style="opacity:0.61666667;fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.01377519,0,0,0.01377519,346.1806,-447.5852)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7630"
+ style="opacity:0.61666667;fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.01377519,0,0,0.01377519,351.368,-458.9977)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7632"
+ style="opacity:0.61666667;fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.01377519,0,0,0.01377519,348.3353,-458.1996)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7634"
+ style="opacity:0.61666667;fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.01377519,0,0,0.01377519,349.5325,-462.6689)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7636"
+ style="opacity:0.61666667;fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(0.01377519,0,0,0.01377519,340.6738,-449.4208)"
+ d="m -824.73115,649.36853 c 0,17.59834 -14.26627,31.86461 -31.86461,31.86461 -17.59834,0 -31.86462,-14.26627 -31.86462,-31.86461 0,-17.59834 14.26628,-31.86461 31.86462,-31.86461 17.59834,0 31.86461,14.26627 31.86461,31.86461 z"
+ sodipodi:ry="31.864613"
+ sodipodi:rx="31.864613"
+ sodipodi:cy="649.36853"
+ sodipodi:cx="-856.59576"
+ id="path7638"
+ style="opacity:0.61666667;fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ id="path7640"
+ d="m 328.31362,-435.94304 c 0.20049,-0.13569 0.7838,-0.72662 1.18356,-1.02271 0.077,-0.0571 0.14794,-0.12175 0.22192,-0.18263 0.39866,-0.32808 0.74611,-0.84954 1.03562,-1.2784 0.45929,-0.68036 0.66102,-1.29151 0.81369,-2.04542 0.19399,-0.95783 0.24299,-0.31807 0.037,0.2922 -0.0322,0.0953 -0.0493,0.1948 -0.074,0.29221 -0.10106,0.39921 -0.14098,0.82291 -0.29589,1.20534 -0.20907,0.51616 -0.60361,0.95987 -0.73973,1.49755 -0.0726,0.28688 -0.17148,0.63753 -0.11095,0.87661 0.0723,0.28568 0.49382,-0.34519 0.77671,-0.43831 0.38495,-0.12671 0.48082,-0.20957 0.48082,0.21916 0,0.25912 -0.13232,0.61682 -0.18493,0.87661 -0.0907,0.44791 1.19386,0.0705 1.47945,0 0.93365,-0.23051 1.57404,-0.54658 2.33015,-1.16882 0.83261,-0.6852 1.52511,-1.43306 2.29315,-2.19153 0.61795,-0.61025 0.90873,-0.99294 0.51781,0.0365 -0.037,0.0974 -0.074,0.19481 -0.11096,0.29221 -0.037,0.0974 -0.074,0.1948 -0.11095,0.2922 -0.20473,0.53913 -0.57829,1.13557 -1.07261,1.46102 -0.77021,0.50708 -1.26944,1.44864 -2.10823,1.8628 -0.33947,0.16763 -0.6944,0.2333 -1.03562,0.40179 -0.34243,0.16909 0.66599,0.28819 0.85069,0.32873 1.85687,0.40749 -1.50262,0.58441 -1.92329,0.58441 -0.6938,0 -1.04071,-0.14309 -1.59041,0.18263 -0.18787,0.11131 0.87427,0.53793 0.92465,0.54788 0.43341,0.0856 0.82005,0.36525 1.29453,0.36525 0.78777,0 -1.64325,0.24264 -2.33015,0.0731 -0.57575,-0.14215 -1.12135,-0.25859 -1.70136,-0.40179 -0.29434,-0.0727 -0.58965,-0.0279 -0.85069,0.0365 -0.0519,0.0128 0.037,0.75369 0.037,0.84009 0,0.54096 -0.1434,0.96316 -0.40685,0.18263 -0.14193,-0.42047 -0.40686,-0.86438 -0.40686,-1.31492 0,-0.28528 -0.38147,0.42924 -0.55479,0.65746 -0.24407,0.32138 -0.7248,0.78161 -0.8137,0.80356 -0.0121,0.003 0.23931,-0.50702 0.33287,-0.87662 0.0703,-0.27771 0.52458,-1.02104 0.22192,-1.09576 -0.28262,-0.0698 -0.67204,-0.0159 -0.96164,-0.0731 -0.42953,-0.0848 -0.89007,-0.16554 -1.29453,-0.36525 -0.78276,-0.38651 -2.00472,-0.74149 -2.84795,-0.94967 -0.0777,-0.0192 -1.3491,-1.36881 -0.14795,-0.18262 0.7929,0.78302 2.03043,1.31492 3.14385,1.31492 0.35677,0 0.88662,-0.13671 1.22055,-0.21916 0.20112,-0.0496 0.47898,-0.34992 0.70274,-0.4383 0.24283,-0.0959 -0.38736,-0.34947 -0.5548,-0.54788 -0.0616,-0.0731 -0.12328,-0.14611 -0.18493,-0.21916 -0.66303,-0.78573 -0.89577,-1.87081 -1.66438,-2.62984 -0.12365,-0.12211 -1.92588,-2.19974 -1.07261,-1.49755 0.8823,0.72609 1.69774,1.3716 2.4411,2.22806 0.38119,0.43918 0.70895,1.01212 1.07261,1.46103 0.36592,0.45169 0.28875,-0.0942 0.18493,-0.40178 -0.22258,-0.6594 -0.11096,-1.57575 -0.11096,-2.26459 0,-0.91357 0.47782,0.93782 0.51781,1.09577 0.11494,0.45405 0.35266,1.04537 0.70274,0.58441 0.36173,-0.47629 0.40685,-0.56634 0.40685,0.0365 0,0.0487 0,0.0974 0,0.1461 0,0.22669 -0.0122,0.48773 0.037,0.73051 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+ <g
+ transform="translate(461.6971,-517.2066)"
+ style="opacity:0.31666661"
+ id="g7642">
+ <path
+ sodipodi:type="arc"
+ style="fill:#a3a4a0;fill-opacity:1;stroke:none"
+ id="path7644"
+ sodipodi:cx="-127.456"
+ sodipodi:cy="68.682877"
+ sodipodi:rx="1.767767"
+ sodipodi:ry="1.5909903"
+ d="m -125.68823,68.682877 c 0,0.878679 -0.79146,1.59099 -1.76777,1.59099 -0.97631,0 -1.76777,-0.712311 -1.76777,-1.59099 0,-0.87868 0.79146,-1.590991 1.76777,-1.590991 0.97631,0 1.76777,0.712311 1.76777,1.590991 z"
+ transform="matrix(1,0,0,1.055556,-0.176777,-4.08088)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#a3a4a0;fill-opacity:1;stroke:none"
+ id="path7646"
+ sodipodi:cx="-127.456"
+ sodipodi:cy="68.682877"
+ sodipodi:rx="1.767767"
+ sodipodi:ry="1.5909903"
+ d="m -125.68823,68.682877 c 0,0.878679 -0.79146,1.59099 -1.76777,1.59099 -0.97631,0 -1.76777,-0.712311 -1.76777,-1.59099 0,-0.87868 0.79146,-1.590991 1.76777,-1.590991 0.97631,0 1.76777,0.712311 1.76777,1.590991 z"
+ transform="matrix(1,0,0,1.055556,1.767771,-0.103439)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#a3a4a0;fill-opacity:1;stroke:none"
+ id="path7648"
+ sodipodi:cx="-127.456"
+ sodipodi:cy="68.682877"
+ sodipodi:rx="1.767767"
+ sodipodi:ry="1.5909903"
+ d="m -125.68823,68.682877 c 0,0.878679 -0.79146,1.59099 -1.76777,1.59099 -0.97631,0 -1.76777,-0.712311 -1.76777,-1.59099 0,-0.87868 0.79146,-1.590991 1.76777,-1.590991 0.97631,0 1.76777,0.712311 1.76777,1.590991 z"
+ transform="matrix(0.65,0,0,0.686111,-40.27856,25.21363)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#a3a4a0;fill-opacity:1;stroke:none"
+ id="path7651"
+ sodipodi:cx="-127.456"
+ sodipodi:cy="68.682877"
+ sodipodi:rx="1.767767"
+ sodipodi:ry="1.5909903"
+ d="m -125.68823,68.682877 c 0,0.878679 -0.79146,1.59099 -1.76777,1.59099 -0.97631,0 -1.76777,-0.712311 -1.76777,-1.59099 0,-0.87868 0.79146,-1.590991 1.76777,-1.590991 0.97631,0 1.76777,0.712311 1.76777,1.590991 z"
+ transform="matrix(1.55,0,0,1.636111,63.02973,-45.53725)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#a3a4a0;fill-opacity:1;stroke:none"
+ id="path7653"
+ sodipodi:cx="-127.456"
+ sodipodi:cy="68.682877"
+ sodipodi:rx="1.767767"
+ sodipodi:ry="1.5909903"
+ d="m -125.68823,68.682877 c 0,0.878679 -0.79146,1.59099 -1.76777,1.59099 -0.97631,0 -1.76777,-0.712311 -1.76777,-1.59099 0,-0.87868 0.79146,-1.590991 1.76777,-1.590991 0.97631,0 1.76777,0.712311 1.76777,1.590991 z"
+ transform="matrix(1.8,0,0,1.9,89.14849,-57.50565)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#a3a4a0;fill-opacity:1;stroke:none"
+ id="path7655"
+ sodipodi:cx="-127.456"
+ sodipodi:cy="68.682877"
+ sodipodi:rx="1.767767"
+ sodipodi:ry="1.5909903"
+ d="m -125.68823,68.682877 c 0,0.878679 -0.79146,1.59099 -1.76777,1.59099 -0.97631,0 -1.76777,-0.712311 -1.76777,-1.59099 0,-0.87868 0.79146,-1.590991 1.76777,-1.590991 0.97631,0 1.76777,0.712311 1.76777,1.590991 z"
+ transform="matrix(1.4,0,0,1.477778,42.32034,-25.70873)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#a3a4a0;fill-opacity:1;stroke:none"
+ id="path7657"
+ sodipodi:cx="-127.456"
+ sodipodi:cy="68.682877"
+ sodipodi:rx="1.767767"
+ sodipodi:ry="1.5909903"
+ d="m -125.68823,68.682877 c 0,0.878679 -0.79146,1.59099 -1.76777,1.59099 -0.97631,0 -1.76777,-0.712311 -1.76777,-1.59099 0,-0.87868 0.79146,-1.590991 1.76777,-1.590991 0.97631,0 1.76777,0.712311 1.76777,1.590991 z"
+ transform="matrix(1.4,0,0,1.477778,40.72936,-32.28484)" />
+ </g>
+ <path
+ transform="translate(490.9094,-504.2577)"
+ d="m -161.83907,69.52256 c 0,0.366117 -0.2968,0.662913 -0.66291,0.662913 -0.36612,0 -0.66292,-0.296796 -0.66292,-0.662913 0,-0.366116 0.2968,-0.662912 0.66292,-0.662912 0.36611,0 0.66291,0.296796 0.66291,0.662912 z"
+ sodipodi:ry="0.66291261"
+ sodipodi:rx="0.66291261"
+ sodipodi:cy="69.52256"
+ sodipodi:cx="-162.50198"
+ id="path7659"
+ style="fill:#ffffff;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ </g>
+ <path
+ sodipodi:type="arc"
+ style="fill:none;stroke:#888a85;stroke-width:0.7221877;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="path7661"
+ sodipodi:cx="-56.25"
+ sodipodi:cy="0.24999997"
+ sodipodi:rx="9.75"
+ sodipodi:ry="9.75"
+ d="M -46.5,0.24999997 C -46.5,5.6347763 -50.865224,10 -56.25,10 -61.634776,10 -66,5.6347763 -66,0.24999997 -66,-5.1347763 -61.634776,-9.5 -56.25,-9.5 c 5.384776,0 9.75,4.3652237 9.75,9.74999997 z"
+ transform="matrix(1.386488,0,0,1.386488,445.0082,-446.3649)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:none;stroke:#ffffff;stroke-width:0.76089418;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path7663"
+ sodipodi:cx="-32"
+ sodipodi:cy="-17.5"
+ sodipodi:rx="9.5"
+ sodipodi:ry="9.5"
+ d="m -22.5,-17.5 c 0,5.246705 -4.253295,9.5 -9.5,9.5 -5.246705,0 -9.5,-4.253295 -9.5,-9.5 0,-5.246705 4.253295,-9.5 9.5,-9.5 5.246705,0 9.5,4.253295 9.5,9.5 z"
+ transform="matrix(0.778069,-1.061297,1.061298,0.778071,410.4716,-466.346)" />
+ </g>
+ </g>
+ <path
+ id="path2891"
+ style="fill:url(#radialGradient3169)"
+ d="m 35.879618,1021.0737 c 0,8.4785 -8.465071,15.3517 -18.907265,15.3517 -10.4421945,0 -18.907266,-6.8732 -18.907266,-15.3517 0,-8.4785 8.4650715,-15.3516 18.907266,-15.3516 10.442194,0 18.907265,6.8731 18.907265,15.3516 z" />
+ <path
+ id="path2893"
+ style="opacity:0.8;fill:url(#radialGradient3166)"
+ d="m 33.377685,1045.8224 c 0,2.5187 -6.926072,4.5606 -15.469815,4.5606 -8.5437421,0 -15.4698147,-2.0419 -15.4698147,-4.5606 0,-2.5188 6.9260726,-4.5607 15.4698147,-4.5607 8.543743,0 15.469815,2.0419 15.469815,4.5607 z" />
+ <path
+ id="path2895"
+ style="fill:url(#linearGradient3163);stroke:#565656;stroke-width:0.93551832"
+ d="m 14.167855,1043.4859 0,1.2939 c 0,1.2938 1.319764,2.4439 2.804497,2.4439 1.484734,0 2.804496,-1.1501 2.804496,-2.4439 l 0,-1.2939 -5.608993,0 z" />
+ <path
+ id="path2897"
+ style="fill:#aeae57;stroke:url(#linearGradient3160);stroke-width:1.87103665"
+ d="m 16.818128,1032.256 c -3.056142,-0.01 -6.521901,0.8952 -4.643886,2.6017 -0.465629,0.1886 -1.131212,0.6101 -1.052751,1.5962 0.04332,0.515 0.586708,0.8311 1.329829,1.0632 -0.842438,0.5936 -1.378487,1.2208 -1.329829,1.7993 0.04281,0.509 0.574763,0.8576 1.302689,1.0905 -0.82121,0.5868 -1.350681,1.2288 -1.302689,1.7993 0.07334,0.872 1.945504,1.8488 5.999397,1.7363 2.918755,-0.08 5.494394,-0.6055 5.697668,-1.7363 0.07982,-0.444 -0.28193,-0.8583 -0.84132,-1.2268 0.418762,-0.424 0.712131,-0.854 0.678483,-1.2541 -0.04302,-0.5113 -0.568708,-0.8578 -1.302688,-1.0904 0.82121,-0.5868 1.35068,-1.2288 1.302688,-1.7994 -0.04302,-0.5114 -0.568708,-0.8306 -1.302688,-1.0632 0.831002,-0.5899 1.350989,-1.2251 1.302688,-1.7993 -0.05369,-0.6383 -2.965227,-1.7101 -5.837591,-1.717 z" />
+ <path
+ id="path2899"
+ style="fill:url(#linearGradient3155);stroke:url(#linearGradient3157);stroke-width:0.08259601"
+ d="m 22.747872,1042.1652 c -0.203275,1.1307 -3.080112,1.7689 -7.684654,1.5372 -2.916185,-0.1466 -3.083056,-0.9663 -2.879783,-2.0971 0.203275,-1.1307 2.734685,-1.9231 5.650469,-1.7686 2.915784,0.1545 5.117241,1.1977 4.913968,2.3285 z" />
+ <path
+ id="path2901"
+ style="fill:url(#linearGradient3150);stroke:url(#linearGradient3152);stroke-width:0.08259606"
+ d="m 22.580725,1039.685 c 0.107434,1.2772 -2.387695,2.8662 -5.573026,3.549 -3.185331,0.6828 -5.854645,0.201 -5.962079,-1.0762 -0.107434,-1.2773 2.387694,-2.8662 5.573026,-3.549 3.185331,-0.6829 5.854645,-0.201 5.962079,1.0762 l 0,0 z" />
+ <path
+ id="path2903"
+ style="fill:url(#linearGradient3145);stroke:url(#linearGradient3147);stroke-width:0.08259606"
+ d="m 22.580725,1036.8078 c 0.107434,1.2772 -2.387695,2.8661 -5.573026,3.549 -3.185331,0.6828 -5.854645,0.2009 -5.962079,-1.0763 -0.107434,-1.2772 2.387694,-2.8662 5.573026,-3.549 3.185331,-0.6828 5.854645,-0.201 5.962079,1.0763 l 0,0 z" />
+ <path
+ id="path2905"
+ style="fill:url(#linearGradient3140);stroke:url(#linearGradient3142);stroke-width:0.08259606"
+ d="m 22.542344,1034.0847 c 0,1.2812 -2.350956,2.7123 -5.534644,3.3948 -3.183689,0.6825 -5.8547,0.2004 -5.962079,-1.0762 -0.107379,-1.2766 2.069431,-2.7656 5.254955,-2.939 3.210769,-0.1749 6.241768,-0.041 6.241768,0.6204 z" />
+ <path
+ id="path2907"
+ style="fill:#ffffff"
+ d="m 14.629285,1038.8212 c 0,0.5596 -0.45166,1.0134 -1.008811,1.0134 -0.557151,0 -1.008811,-0.4538 -1.008811,-1.0134 0,-0.5597 0.45166,-1.0134 1.008811,-1.0134 0.557151,0 1.008811,0.4537 1.008811,1.0134 z" />
+ <path
+ id="path2909"
+ style="fill:#000000;fill-opacity:0.23391807;fill-rule:evenodd"
+ d="m 12.034773,1037.5633 c 3.140832,0.4691 6.457463,-0.03 9.134643,-1.7735 0.750661,-0.4887 0.863568,-1.0474 1.208997,-1.4843 -1.317743,1.0474 -4.650481,3.8683 -10.34364,3.2578 z" />
+ <path
+ id="path2911"
+ style="fill:#ffffff"
+ d="m 14.629285,1041.6168 c 0,0.5596 -0.45166,1.0133 -1.008811,1.0133 -0.557151,0 -1.008811,-0.4537 -1.008811,-1.0133 0,-0.5597 0.45166,-1.0134 1.008811,-1.0134 0.557151,0 1.008811,0.4537 1.008811,1.0134 z" />
+ <path
+ id="path2913"
+ style="fill:#000000;fill-opacity:0.23391807;fill-rule:evenodd"
+ d="m 12.149914,1043.2695 c 3.140834,0.469 6.457464,-0.03 9.134643,-1.7736 0.750663,-0.4887 0.86357,-1.0474 1.208998,-1.4843 -1.317742,1.0474 -4.65048,3.8683 -10.343641,3.2579 z" />
+ <path
+ id="path2915"
+ style="fill:#000000;fill-opacity:0.23391807;fill-rule:evenodd"
+ d="m 12.169106,1040.3778 c 3.140832,0.4691 6.457462,-0.03 9.134642,-1.7735 0.750662,-0.4887 0.863569,-1.0474 1.208998,-1.4843 -1.317743,1.0474 -4.650481,3.8683 -10.34364,3.2578 z" />
+ <path
+ id="path2917"
+ style="fill:url(#linearGradient3130);stroke:url(#linearGradient3132);stroke-width:0.082596"
+ d="m 11.785532,1034.5661 c 0,-0.7329 1.40551,-1.6096 4.953964,-1.5605 3.287569,0.045 5.453245,0.8294 5.453245,2.0025 0,1.1481 -2.874556,1.916 -5.939477,1.762 -3.06492,-0.1539 -4.467732,-1.0558 -4.467732,-2.204 z" />
+ <path
+ id="path2919"
+ style="fill:url(#radialGradient3125);stroke:url(#linearGradient3127);stroke-width:0.92382437"
+ d="m 16.972352,1007.9278 c -6.9842409,0 -12.6556822,5.533 -12.6556822,12.3469 0,6.9847 5.126616,7.7583 5.126616,10.3324 0,3.0246 3.0057322,6.4543 7.9480902,6.3305 5.255448,-0.1317 7.42431,-3.1146 7.42431,-6.3305 0,-2.7493 4.812348,-2.8226 4.812348,-10.3324 0,-6.8139 -5.671441,-12.3469 -12.655682,-12.3469 z" />
+ <path
+ id="path2921"
+ style="fill:none;stroke:url(#linearGradient3122);stroke-width:0.86099303"
+ d="m 16.972352,1008.9144 c -6.509226,0 -11.7949389,5.1567 -11.7949389,11.5071 0,6.5097 4.7779427,7.2307 4.7779427,9.6298 0,2.8188 2.8013052,6.0152 7.4075232,5.8999 4.898011,-0.1227 6.919364,-2.9028 6.919364,-5.8999 0,-2.5624 4.485048,-2.6307 4.485048,-9.6298 0,-6.3504 -5.285713,-11.5071 -11.794939,-11.5071 z" />
+ <path
+ id="path2923"
+ style="fill:url(#linearGradient3119)"
+ d="m 22.146713,1023.4355 c 0.27429,0.09 0.457151,0.3616 0.36572,0.6328 l -3.382905,10.0344 c -0.09143,0.2712 -0.365719,0.452 -0.640009,0.3616 -0.274289,-0.09 -0.457148,-0.3616 -0.365719,-0.6328 l 3.382905,-10.0344 c 0.09143,-0.2712 0.36572,-0.452 0.640008,-0.3616 z" />
+ <path
+ id="path2925"
+ style="fill:url(#linearGradient3116)"
+ d="m 11.802026,1023.5439 c -0.27429,0.09 -0.45715,0.3616 -0.365719,0.6328 l 3.382904,10.0344 c 0.09143,0.2712 0.365719,0.452 0.64001,0.3616 0.274288,-0.09 0.457148,-0.3616 0.365718,-0.6328 l -3.382904,-10.0344 c -0.09143,-0.2712 -0.365721,-0.452 -0.640009,-0.3616 z" />
+ <path
+ id="path2927"
+ style="fill:#64779b;fill-opacity:1;stroke:url(#linearGradient3113);stroke-width:0.18710366000000000"
+ d="m 11.892325,1023.4792 c -0.215675,0.037 -0.384635,0.2034 -0.421605,0.4167 -0.03697,0.2132 0.06608,0.4263 0.257159,0.5317 0,0 1.615717,0.9373 3.727455,1.4092 2.111737,0.4718 4.814032,0.5024 6.85194,-1.4634 0.1537,-0.1205 0.224957,-0.3168 0.18387,-0.5065 -0.04109,-0.1897 -0.18741,-0.3399 -0.377568,-0.3877 -0.190158,-0.048 -0.391254,0.015 -0.518903,0.1626 -1.710715,1.6502 -3.986043,1.6516 -5.920077,1.2194 -1.934034,-0.4321 -3.42597,-1.3007 -3.42597,-1.3007 -0.10475,-0.069 -0.23148,-0.098 -0.356301,-0.081 z" />
+ <path
+ id="path2929"
+ style="opacity:0.5977654;fill:url(#linearGradient3110)"
+ d="m 17.259093,1010.43 c -5.592693,0 -10.1306088,3.7279 -10.1306088,8.3191 0,1.8336 0.8728582,3.4392 2.0988831,4.8146 1.3863657,0.5851 2.8963907,1.0056 4.5615727,1.0056 5.592694,0 10.130608,-3.7279 10.130609,-8.319 0,-1.8447 -0.887365,-3.4653 -2.126868,-4.8451 -1.379899,-0.5782 -2.878979,-0.9752 -4.533588,-0.9752 z" />
+ </g>
+</svg>
diff --git a/po/LINGUAS b/po/LINGUAS
index 63078cf..fde03e4 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,2 +1,2 @@
# List of available languages
-da ru
+cs da de es fi it pt_BR ru
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ebb31b3..6bd7210 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,7 +1,13 @@
# List of source files containing translatable strings
src/redshift.c
-src/randr.c
-src/vidmode.c
-src/gtk-redshift/gtk-redshift.py
+src/gamma-randr.c
+src/gamma-vidmode.c
+src/gamma-w32gdi.c
+
+src/location-gnome-clock.c
+src/location-manual.c
+
+src/gtk-redshift/statusicon.py
+src/gtk-redshift/rsappindicator.py
diff --git a/po/cs.po b/po/cs.po
index 40de1a2..e94a104 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-05-25 01:34+0200\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/redshift\n"
+"POT-Creation-Date: 2010-06-13 21:58+0200\n"
"PO-Revision-Date: 2010-06-02 14:15+0000\n"
"Last-Translator: clever_fox <clever_fox@seznam.cz>\n"
"Language-Team: Czech <cs@li.org>\n"
@@ -17,17 +17,17 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-06-03 03:39+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: src/redshift.c:214
+#: src/redshift.c:243
#, c-format
msgid "Period: Night\n"
msgstr "Doba: Noc\n"
-#: src/redshift.c:221
+#: src/redshift.c:250
#, c-format
msgid "Period: Transition (%.2f%% day)\n"
msgstr "Doba: Přechod (%.2f%% den)\n"
-#: src/redshift.c:225
+#: src/redshift.c:254
#, c-format
msgid "Period: Daytime\n"
msgstr "Doba: Den\n"
@@ -37,7 +37,7 @@ msgstr "Doba: Den\n"
#. DAY is temperature at daytime,
#. NIGHT is temperature at night
#. no-wrap
-#: src/redshift.c:240
+#: src/redshift.c:269
#, c-format
msgid "Usage: %s -l LAT:LON -t DAY:NIGHT [OPTIONS...]\n"
msgstr ""
@@ -46,13 +46,13 @@ msgstr ""
#. TRANSLATORS: help output 2
#. no-wrap
-#: src/redshift.c:246
+#: src/redshift.c:275
msgid "Set color temperature of display according to time of day.\n"
msgstr "Nastavení teploty barev podle denní doby.\n"
#. TRANSLATORS: help output 3
#. no-wrap
-#: src/redshift.c:252
+#: src/redshift.c:281
msgid ""
" -h\t\tDisplay this help message\n"
" -v\t\tVerbose output\n"
@@ -61,8 +61,10 @@ msgstr ""
" -v\t\tUpovídaný výstup\n"
#. TRANSLATORS: help output 4
+#. `list' must not be translated
#. no-wrap
-#: src/redshift.c:258
+#: src/redshift.c:288
+#, fuzzy
msgid ""
" -g R:G:B\tAdditional gamma correction to apply\n"
" -l LAT:LON\tYour current location\n"
@@ -71,6 +73,7 @@ msgid ""
" -m METHOD\tMethod to use to set color temperature\n"
" \t\t(Type `list' to see available methods)\n"
" -o\t\tOne shot mode (do not continously adjust color temperature)\n"
+" -x\t\tReset mode (remove adjustment from screen)\n"
" -r\t\tDisable temperature transitions\n"
" -t DAY:NIGHT\tColor temperature to set at daytime/night\n"
msgstr ""
@@ -83,11 +86,11 @@ msgstr ""
" \t\t(Napište `list' pro zobrazení dostupných metod)\n"
" -o\t\tRežim jednoho pokusu (nepřizpůsobuje teplotu barev průběžně)\n"
" -r\t\tVypnout přechody teploty\n"
-" -t teplota den:teplota noc\tTeplota barev, která se má nastavit ve "
-"dně/noci\n"
+" -t teplota den:teplota noc\tTeplota barev, která se má nastavit ve dně/"
+"noci\n"
#. TRANSLATORS: help output 5
-#: src/redshift.c:273
+#: src/redshift.c:304
#, c-format
msgid ""
"Default values:\n"
@@ -101,192 +104,263 @@ msgstr ""
" Teplota v noci: %uK\n"
#. TRANSLATORS: help output 6
-#: src/redshift.c:281
+#: src/redshift.c:312
#, c-format
msgid "Please report bugs to <%s>\n"
msgstr "Chyby prosím hlaste na <%s>\n"
-#: src/redshift.c:287
+#: src/redshift.c:318
msgid "Available adjustment methods:\n"
msgstr "Dostupné metody přizpůsobení:\n"
-#: src/redshift.c:296
+#: src/redshift.c:324
+msgid "Specify colon-separated options with `-m METHOD:OPTIONS'.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:327
+msgid "Try `-m METHOD:help' for help.\n"
+msgstr ""
+
+#: src/redshift.c:333
msgid "Available location providers:\n"
msgstr "Dostupní poskytovatelé polohy:\n"
-#: src/redshift.c:351
+#: src/redshift.c:339
+msgid "Specify colon-separated options with`-l PROVIDER:OPTIONS'.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:342
+msgid "Try `-l PROVIDER:help' for help.\n"
+msgstr ""
+
+#: src/redshift.c:354 src/redshift.c:407
+#, c-format
+msgid "Initialization of %s failed.\n"
+msgstr "Inicializace %s selhala.\n"
+
+#: src/redshift.c:376 src/redshift.c:429
+#, c-format
+msgid "Failed to set %s option.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:379
+#, fuzzy, c-format
+msgid "Try `-l %s:help' for more information.\n"
+msgstr "Zkuste `-h' pro více informací.\n"
+
+#: src/redshift.c:391
+#, fuzzy, c-format
+msgid "Failed to start provider %s.\n"
+msgstr "Dostupní poskytovatelé polohy:\n"
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:432
+#, fuzzy, c-format
+msgid "Try -m %s:help' for more information.\n"
+msgstr "Zkuste `-h' pro více informací.\n"
+
+#: src/redshift.c:444
+#, fuzzy, c-format
+msgid "Failed to start adjustment method %s.\n"
+msgstr "Dostupné metody přizpůsobení:\n"
+
+#: src/redshift.c:501
msgid "Malformed gamma argument.\n"
msgstr "Neplatný argument gamma.\n"
-#: src/redshift.c:353 src/redshift.c:445 src/redshift.c:457
+#: src/redshift.c:503 src/redshift.c:618 src/redshift.c:633
msgid "Try `-h' for more information.\n"
msgstr "Zkuste `-h' pro více informací.\n"
-#: src/redshift.c:405
+#: src/redshift.c:557
#, c-format
msgid "Unknown location provider `%s'.\n"
msgstr "Neznámý poskytovatel polohy `%s'.\n"
#. TRANSLATORS: This refers to the method
#. used to adjust colors e.g VidMode
-#: src/redshift.c:429
+#: src/redshift.c:595
#, c-format
msgid "Unknown method `%s'.\n"
msgstr "Neznámá metoda `%s'.\n"
-#: src/redshift.c:443
+#: src/redshift.c:616
msgid "Malformed temperature argument.\n"
msgstr "Neplatný argument teploty.\n"
-#: src/redshift.c:471 src/redshift.c:481 src/redshift.c:572 src/redshift.c:582
-#, c-format
-msgid "Initialization of %s failed.\n"
-msgstr "Inicializace %s selhala.\n"
-
-#: src/redshift.c:483
+#: src/redshift.c:659
msgid "Trying other provider...\n"
msgstr "Zkouší se jiný poskytovatel...\n"
-#: src/redshift.c:492
+#: src/redshift.c:671
msgid "No more location providers to try.\n"
msgstr "Nejsou žádní další poskytovatelé polohy k vyzkoušení.\n"
-#: src/redshift.c:504
+#: src/redshift.c:685
msgid "Unable to get location from provider.\n"
msgstr "Nebylo možné získat polohu od poskytovatele.\n"
#. TRANSLATORS: Append degree symbols if possible.
-#: src/redshift.c:512
+#: src/redshift.c:694
#, c-format
msgid "Location: %f, %f\n"
msgstr "Poloha: %f, %f\n"
-#: src/redshift.c:519
+#: src/redshift.c:701
#, c-format
msgid "Latitude must be between %.1f and %.1f.\n"
msgstr "Zeměpisná šířka musí být mezi %.1f a %.1f.\n"
-#: src/redshift.c:528
+#: src/redshift.c:710
#, c-format
msgid "Longitude must be between %.1f and %.1f.\n"
msgstr "Zeměpisná délka musí být mezi %.1f a %.1f.\n"
-#: src/redshift.c:536 src/redshift.c:544
+#: src/redshift.c:719 src/redshift.c:727
#, c-format
msgid "Temperature must be between %uK and %uK.\n"
msgstr "Teplota musí být mezi %uK a %uK.\n"
-#: src/redshift.c:554
+#: src/redshift.c:737
#, c-format
msgid "Gamma value must be between %.1f and %.1f.\n"
msgstr "Hodnota gamma musí být %.1f a %.1f.\n"
-#: src/redshift.c:560
+#: src/redshift.c:743
#, c-format
msgid "Gamma: %.3f, %.3f, %.3f\n"
msgstr "Gamma: %.3f, %.3f, %.3f\n"
-#: src/redshift.c:584
+#: src/redshift.c:761
msgid "Trying other method...\n"
msgstr "Zkouší se jiná metoda...\n"
-#: src/redshift.c:593
+#: src/redshift.c:771
msgid "No more methods to try.\n"
msgstr "Nejsou další metody k vyzkoušení.\n"
-#: src/redshift.c:603 src/redshift.c:710
+#: src/redshift.c:783 src/redshift.c:904
msgid "Unable to read system time.\n"
msgstr "Nebylo možné načíst systémový čas.\n"
#. TRANSLATORS: Append degree symbol if possible.
-#: src/redshift.c:612
+#: src/redshift.c:792
#, c-format
msgid "Solar elevation: %f\n"
msgstr "Solarní elevace: %f\n"
-#: src/redshift.c:619 src/redshift.c:777
+#: src/redshift.c:799 src/redshift.c:971
#, c-format
msgid "Color temperature: %uK\n"
msgstr "Teplota barev: %uK\n"
-#: src/redshift.c:624 src/redshift.c:785
+#: src/redshift.c:804 src/redshift.c:815 src/redshift.c:979
msgid "Temperature adjustment failed.\n"
msgstr "Přizpůsobení barev selhalo.\n"
-#: src/gamma-randr.c:59 src/gamma-randr.c:67 src/gamma-vidmode.c:54
-#, c-format
-msgid "Missing value for parameter: `%s'.\n"
-msgstr "Chybějící hodnota parametru: `%s'.\n"
-
-#: src/gamma-randr.c:74 src/gamma-vidmode.c:61
-#, c-format
-msgid "Unknown method parameter: `%s'.\n"
-msgstr "Neznámý parametr metody: `%s'.\n"
-
-#: src/gamma-randr.c:98 src/gamma-randr.c:145 src/gamma-randr.c:186
-#: src/gamma-randr.c:214 src/gamma-randr.c:273 src/gamma-randr.c:337
+#: src/gamma-randr.c:66 src/gamma-randr.c:123 src/gamma-randr.c:162
+#: src/gamma-randr.c:188 src/gamma-randr.c:245 src/gamma-randr.c:343
#, c-format
msgid "`%s' returned error %d\n"
msgstr "`%s' vrátila chybu %d\n"
-#: src/gamma-randr.c:106
+#: src/gamma-randr.c:74
#, c-format
msgid "Unsupported RANDR version (%u.%u)\n"
msgstr "Nepodporovaná verze RANDR (%u.%u)\n"
-#: src/gamma-randr.c:129
+#: src/gamma-randr.c:108
#, c-format
msgid "Screen %i could not be found.\n"
msgstr "Obrazovka %i nebyla nalezena.\n"
-#: src/gamma-randr.c:199 src/gamma-vidmode.c:103
+#: src/gamma-randr.c:174 src/gamma-vidmode.c:86
#, c-format
msgid "Gamma ramp size too small: %i\n"
msgstr "Velikost gamma ramp je příliš malá: %i\n"
-#: src/gamma-randr.c:275
+#: src/gamma-randr.c:247
#, c-format
msgid "Unable to restore CRTC %i\n"
msgstr "Nebylo možné obnovit CRTC %i\n"
-#: src/gamma-randr.c:300
+#: src/gamma-randr.c:268
+msgid "Adjust gamma ramps with the X RANDR extension.\n"
+msgstr ""
+
+#. TRANSLATORS: RANDR help output
+#. left column must not be translated
+#: src/gamma-randr.c:273
+msgid ""
+" screen=N\tX screen to apply adjustments to\n"
+" crtc=N\tCRTC to apply adjustments to\n"
+msgstr ""
+
+#: src/gamma-randr.c:282 src/gamma-vidmode.c:144
+#, c-format
+msgid "Missing value for parameter: `%s'.\n"
+msgstr "Chybějící hodnota parametru: `%s'.\n"
+
+#: src/gamma-randr.c:292 src/gamma-vidmode.c:152 src/location-manual.c:98
+#, c-format
+msgid "Unknown method parameter: `%s'.\n"
+msgstr "Neznámý parametr metody: `%s'.\n"
+
+#: src/gamma-randr.c:306
#, c-format
msgid "CRTC %d does not exist. "
msgstr "CRTC %d neexistuje. "
-#: src/gamma-randr.c:303
+#: src/gamma-randr.c:309
#, c-format
msgid "Valid CRTCs are [0-%d].\n"
msgstr "Platné CRTCs jsou [0-%d].\n"
-#: src/gamma-randr.c:306
+#: src/gamma-randr.c:312
#, c-format
msgid "Only CRTC 0 exists.\n"
msgstr "Existuje pouze CRTC 0.\n"
-#: src/gamma-vidmode.c:74 src/gamma-vidmode.c:86 src/gamma-vidmode.c:96
-#: src/gamma-vidmode.c:126 src/gamma-vidmode.c:157 src/gamma-vidmode.c:186
+#: src/gamma-vidmode.c:48 src/gamma-vidmode.c:69 src/gamma-vidmode.c:79
+#: src/gamma-vidmode.c:109 src/gamma-vidmode.c:171 src/gamma-vidmode.c:200
#, c-format
msgid "X request failed: %s\n"
msgstr "Požadavek na X selhal: %s\n"
-#: src/gamma-w32gdi.c:48
+#: src/gamma-vidmode.c:131
+msgid "Adjust gamma ramps with the X VidMode extension.\n"
+msgstr ""
+
+#. TRANSLATORS: VidMode help output
+#. left column must not be translated
+#: src/gamma-vidmode.c:136
+msgid " screen=N\tX screen to apply adjustments to\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:59
msgid "Unable to open device context.\n"
msgstr "Není možné otevřít kontext zařízení.\n"
-#: src/gamma-w32gdi.c:55
+#: src/gamma-w32gdi.c:66
msgid "Display device does not support gamma ramps.\n"
msgstr "Zobrazovací zařízení nepodporuje gamma ramp.\n"
-#: src/gamma-w32gdi.c:71
+#: src/gamma-w32gdi.c:82
msgid "Unable to save current gamma ramp.\n"
msgstr "Není možné uložit současnou gamma ramp.\n"
-#: src/gamma-w32gdi.c:94
+#: src/gamma-w32gdi.c:104
+msgid "Adjust gamma ramps with the Windows GDI.\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:119
msgid "Unable to restore gamma ramps.\n"
msgstr "Není možné obnovit gamma ramp.\n"
-#: src/gamma-w32gdi.c:119
+#: src/gamma-w32gdi.c:144
msgid "Unable to set gamma ramps.\n"
msgstr "Není možné nastavit gamma ramp.\n"
@@ -311,18 +385,34 @@ msgstr "Není zvoleno současné město.\n"
msgid "Location not specified for city.\n"
msgstr "Tato lokace není ve městě definována.\n"
-#: src/location-manual.c:46
-msgid "Too many arguments.\n"
-msgstr "Příliš mnoho argumentů.\n"
+#: src/location-gnome-clock.c:140
+msgid "Use the location as set in the GNOME Clock applet.\n"
+msgstr ""
+
+#: src/location-manual.c:50
+msgid "Latitude and longitude must be set.\n"
+msgstr "Zeměpisná šířka a délka musí být nastavena.\n"
-#: src/location-manual.c:58
+#: src/location-manual.c:65
+msgid "Specify location manually.\n"
+msgstr ""
+
+#. TRANSLATORS: Manual location help output
+#. left column must not be translated
+#: src/location-manual.c:70
+msgid ""
+" lat=N\t\tLatitude\n"
+" lon=N\t\tLongitude\n"
+msgstr ""
+
+#: src/location-manual.c:84
msgid "Malformed argument.\n"
msgstr "Nevhodný argument.\n"
-#: src/location-manual.c:73
-msgid "Latitude and longitude must be set.\n"
-msgstr "Zeměpisná šířka a délka musí být nastavena.\n"
+#: src/location-manual.c:95
+msgid "Too many arguments.\n"
+msgstr "Příliš mnoho argumentů.\n"
-#: src/gtk-redshift/statusicon.py:61
+#: src/gtk-redshift/statusicon.py:61 src/gtk-redshift/rsappindicator.py:70
msgid "Toggle"
msgstr "Přepnout"
diff --git a/po/da.po b/po/da.po
index 121cd1e..2dd0bec 100644
--- a/po/da.po
+++ b/po/da.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: redshift\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/redshift\n"
-"POT-Creation-Date: 2010-06-10 20:13+0200\n"
+"POT-Creation-Date: 2010-06-13 21:58+0200\n"
"PO-Revision-Date: 2010-06-10 18:39+0000\n"
"Last-Translator: Jon Lund Steffensen <Unknown>\n"
"Language-Team: Danish <da@li.org>\n"
@@ -339,27 +339,27 @@ msgstr "Juster gammaramper med X VidMode udvidelsen.\n"
msgid " screen=N\tX screen to apply adjustments to\n"
msgstr " screen=N\tX skærm som skal justeres\n"
-#: src/gamma-w32gdi.c:57
+#: src/gamma-w32gdi.c:59
msgid "Unable to open device context.\n"
msgstr "Fejl ved åbning af enhedskontekst.\n"
-#: src/gamma-w32gdi.c:64
+#: src/gamma-w32gdi.c:66
msgid "Display device does not support gamma ramps.\n"
msgstr "Skærmenhed understøtter ikke gammaramper.\n"
-#: src/gamma-w32gdi.c:80
+#: src/gamma-w32gdi.c:82
msgid "Unable to save current gamma ramp.\n"
msgstr "Kan ikke gemme nuværende gammarampe.\n"
-#: src/gamma-w32gdi.c:102
+#: src/gamma-w32gdi.c:104
msgid "Adjust gamma ramps with the Windows GDI.\n"
msgstr "Juster gammaramper med Windows GDI.\n"
-#: src/gamma-w32gdi.c:117
+#: src/gamma-w32gdi.c:119
msgid "Unable to restore gamma ramps.\n"
msgstr "Kan ikke genskabe gammaramper.\n"
-#: src/gamma-w32gdi.c:142
+#: src/gamma-w32gdi.c:144
msgid "Unable to set gamma ramps.\n"
msgstr "Kan ikke sætte gammaramper.\n"
@@ -432,6 +432,5 @@ msgstr "Slå til/fra"
#~ msgid "Initialization of VidMode failed.\n"
#~ msgstr "Fejl under klargøring af VidMode.\n"
-#, c-format
#~ msgid "CRTC can only be selected with the RANDR method.\n"
#~ msgstr "CRTC kan kun vælges med RANDR metoden.\n"
diff --git a/po/de.po b/po/de.po
index 0167410..a8a0d5e 100644
--- a/po/de.po
+++ b/po/de.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-06-10 20:13+0200\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/redshift\n"
+"POT-Creation-Date: 2010-06-13 21:58+0200\n"
"PO-Revision-Date: 2010-06-12 21:07+0000\n"
"Last-Translator: Jan-Christoph Borchardt <inquata@gmail.com>\n"
"Language-Team: German <de@li.org>\n"
@@ -338,27 +338,27 @@ msgstr "Gamma-Änstiegswerte mit der X-VidMode-Erweiterung ändern.\n"
msgid " screen=N\tX screen to apply adjustments to\n"
msgstr " screen=N\tX-Bildschirm, auf den die Änderungen angewandt werden\n"
-#: src/gamma-w32gdi.c:57
+#: src/gamma-w32gdi.c:59
msgid "Unable to open device context.\n"
msgstr "Konnte Gerätekontext nicht öffnen.\n"
-#: src/gamma-w32gdi.c:64
+#: src/gamma-w32gdi.c:66
msgid "Display device does not support gamma ramps.\n"
msgstr "Anzeigegerät unterstützt Gamma-Anstieg nicht.\n"
-#: src/gamma-w32gdi.c:80
+#: src/gamma-w32gdi.c:82
msgid "Unable to save current gamma ramp.\n"
msgstr "Konnte aktuellen Gamma-Anstiegswert nicht speichern.\n"
-#: src/gamma-w32gdi.c:102
+#: src/gamma-w32gdi.c:104
msgid "Adjust gamma ramps with the Windows GDI.\n"
msgstr "Gamma-Anstieg mit der Windows GDI ändern.\n"
-#: src/gamma-w32gdi.c:117
+#: src/gamma-w32gdi.c:119
msgid "Unable to restore gamma ramps.\n"
msgstr "Konnte Gamma-Anstieg nicht wiederherstellen.\n"
-#: src/gamma-w32gdi.c:142
+#: src/gamma-w32gdi.c:144
msgid "Unable to set gamma ramps.\n"
msgstr "Konnte Gamma-Anstieg nicht festlegen.\n"
diff --git a/po/es.po b/po/es.po
index 95c7dcc..3931456 100644
--- a/po/es.po
+++ b/po/es.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-05-25 01:34+0200\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/redshift\n"
+"POT-Creation-Date: 2010-06-13 21:58+0200\n"
"PO-Revision-Date: 2010-05-27 22:10+0000\n"
"Last-Translator: Fernando Ossandon <Unknown>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -17,17 +17,17 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-05-29 03:58+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: src/redshift.c:214
+#: src/redshift.c:243
#, c-format
msgid "Period: Night\n"
msgstr "Periodo: Noche\n"
-#: src/redshift.c:221
+#: src/redshift.c:250
#, c-format
msgid "Period: Transition (%.2f%% day)\n"
msgstr "Periodo: Transición (%.2f%% día)\n"
-#: src/redshift.c:225
+#: src/redshift.c:254
#, c-format
msgid "Period: Daytime\n"
msgstr "Periodo: Día\n"
@@ -37,20 +37,20 @@ msgstr "Periodo: Día\n"
#. DAY is temperature at daytime,
#. NIGHT is temperature at night
#. no-wrap
-#: src/redshift.c:240
+#: src/redshift.c:269
#, c-format
msgid "Usage: %s -l LAT:LON -t DAY:NIGHT [OPTIONS...]\n"
msgstr "Uso: %s -l LAT:LON -t DÍA:NOCHE [OPCIONES...]\n"
#. TRANSLATORS: help output 2
#. no-wrap
-#: src/redshift.c:246
+#: src/redshift.c:275
msgid "Set color temperature of display according to time of day.\n"
msgstr "La temperatura del color es mostrada de acuerdo a la hora del día.\n"
#. TRANSLATORS: help output 3
#. no-wrap
-#: src/redshift.c:252
+#: src/redshift.c:281
msgid ""
" -h\t\tDisplay this help message\n"
" -v\t\tVerbose output\n"
@@ -59,8 +59,10 @@ msgstr ""
" -v\t\tSalida detallada\n"
#. TRANSLATORS: help output 4
+#. `list' must not be translated
#. no-wrap
-#: src/redshift.c:258
+#: src/redshift.c:288
+#, fuzzy
msgid ""
" -g R:G:B\tAdditional gamma correction to apply\n"
" -l LAT:LON\tYour current location\n"
@@ -69,6 +71,7 @@ msgid ""
" -m METHOD\tMethod to use to set color temperature\n"
" \t\t(Type `list' to see available methods)\n"
" -o\t\tOne shot mode (do not continously adjust color temperature)\n"
+" -x\t\tReset mode (remove adjustment from screen)\n"
" -r\t\tDisable temperature transitions\n"
" -t DAY:NIGHT\tColor temperature to set at daytime/night\n"
msgstr ""
@@ -84,7 +87,7 @@ msgstr ""
" -t DAY:NIGHT\tAjustar la temperatura del color a día/noche\n"
#. TRANSLATORS: help output 5
-#: src/redshift.c:273
+#: src/redshift.c:304
#, c-format
msgid ""
"Default values:\n"
@@ -98,192 +101,263 @@ msgstr ""
" Temperatura de la noche: %uK\n"
#. TRANSLATORS: help output 6
-#: src/redshift.c:281
+#: src/redshift.c:312
#, c-format
msgid "Please report bugs to <%s>\n"
msgstr "Por favor reporta fallos a <%s>\n"
-#: src/redshift.c:287
+#: src/redshift.c:318
msgid "Available adjustment methods:\n"
msgstr "Métodos de ajuste disponibles:\n"
-#: src/redshift.c:296
+#: src/redshift.c:324
+msgid "Specify colon-separated options with `-m METHOD:OPTIONS'.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:327
+msgid "Try `-m METHOD:help' for help.\n"
+msgstr ""
+
+#: src/redshift.c:333
msgid "Available location providers:\n"
msgstr "Proveedores de localización disponibles:\n"
-#: src/redshift.c:351
+#: src/redshift.c:339
+msgid "Specify colon-separated options with`-l PROVIDER:OPTIONS'.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:342
+msgid "Try `-l PROVIDER:help' for help.\n"
+msgstr ""
+
+#: src/redshift.c:354 src/redshift.c:407
+#, c-format
+msgid "Initialization of %s failed.\n"
+msgstr "Iniciación de %s falló.\n"
+
+#: src/redshift.c:376 src/redshift.c:429
+#, c-format
+msgid "Failed to set %s option.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:379
+#, fuzzy, c-format
+msgid "Try `-l %s:help' for more information.\n"
+msgstr "Tipee `-h' para más información.\n"
+
+#: src/redshift.c:391
+#, fuzzy, c-format
+msgid "Failed to start provider %s.\n"
+msgstr "Proveedores de localización disponibles:\n"
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:432
+#, fuzzy, c-format
+msgid "Try -m %s:help' for more information.\n"
+msgstr "Tipee `-h' para más información.\n"
+
+#: src/redshift.c:444
+#, fuzzy, c-format
+msgid "Failed to start adjustment method %s.\n"
+msgstr "Métodos de ajuste disponibles:\n"
+
+#: src/redshift.c:501
msgid "Malformed gamma argument.\n"
msgstr "Parámetro gamma no válido.\n"
-#: src/redshift.c:353 src/redshift.c:445 src/redshift.c:457
+#: src/redshift.c:503 src/redshift.c:618 src/redshift.c:633
msgid "Try `-h' for more information.\n"
msgstr "Tipee `-h' para más información.\n"
-#: src/redshift.c:405
+#: src/redshift.c:557
#, c-format
msgid "Unknown location provider `%s'.\n"
msgstr "Proveedor de localización `%s' desconocido.\n"
#. TRANSLATORS: This refers to the method
#. used to adjust colors e.g VidMode
-#: src/redshift.c:429
+#: src/redshift.c:595
#, c-format
msgid "Unknown method `%s'.\n"
msgstr "Método `%s' desconocido.\n"
-#: src/redshift.c:443
+#: src/redshift.c:616
msgid "Malformed temperature argument.\n"
msgstr "Parámetro de temperatura no válido.\n"
-#: src/redshift.c:471 src/redshift.c:481 src/redshift.c:572 src/redshift.c:582
-#, c-format
-msgid "Initialization of %s failed.\n"
-msgstr "Iniciación de %s falló.\n"
-
-#: src/redshift.c:483
+#: src/redshift.c:659
msgid "Trying other provider...\n"
msgstr "Probando otro proveedor...\n"
-#: src/redshift.c:492
+#: src/redshift.c:671
msgid "No more location providers to try.\n"
msgstr "No hay más proveedores de localización para probar.\n"
-#: src/redshift.c:504
+#: src/redshift.c:685
msgid "Unable to get location from provider.\n"
msgstr "Incapaz de obtener localización desde el proveedor.\n"
#. TRANSLATORS: Append degree symbols if possible.
-#: src/redshift.c:512
+#: src/redshift.c:694
#, c-format
msgid "Location: %f, %f\n"
msgstr "Localización: %f, %f\n"
-#: src/redshift.c:519
+#: src/redshift.c:701
#, c-format
msgid "Latitude must be between %.1f and %.1f.\n"
msgstr "La latitud debe estar entre %.1f y %.1f.\n"
-#: src/redshift.c:528
+#: src/redshift.c:710
#, c-format
msgid "Longitude must be between %.1f and %.1f.\n"
msgstr "La longitud debe estar entre %.1f y %.1f.\n"
-#: src/redshift.c:536 src/redshift.c:544
+#: src/redshift.c:719 src/redshift.c:727
#, c-format
msgid "Temperature must be between %uK and %uK.\n"
msgstr "La temperatura debe estar entre %uK y %uK.\n"
-#: src/redshift.c:554
+#: src/redshift.c:737
#, c-format
msgid "Gamma value must be between %.1f and %.1f.\n"
msgstr "El valor gamma debe estar entre %.1f y %.1f.\n"
-#: src/redshift.c:560
+#: src/redshift.c:743
#, c-format
msgid "Gamma: %.3f, %.3f, %.3f\n"
msgstr "Gamma: %.3f, %.3f, %.3f\n"
-#: src/redshift.c:584
+#: src/redshift.c:761
msgid "Trying other method...\n"
msgstr "Probando otro método...\n"
-#: src/redshift.c:593
+#: src/redshift.c:771
msgid "No more methods to try.\n"
msgstr "No hay más métodos para probar.\n"
-#: src/redshift.c:603 src/redshift.c:710
+#: src/redshift.c:783 src/redshift.c:904
msgid "Unable to read system time.\n"
msgstr "Imposible leer la hora del sistema.\n"
#. TRANSLATORS: Append degree symbol if possible.
-#: src/redshift.c:612
+#: src/redshift.c:792
#, c-format
msgid "Solar elevation: %f\n"
msgstr "Elevación solar: %f\n"
-#: src/redshift.c:619 src/redshift.c:777
+#: src/redshift.c:799 src/redshift.c:971
#, c-format
msgid "Color temperature: %uK\n"
msgstr "Temperatura del color: %uK\n"
-#: src/redshift.c:624 src/redshift.c:785
+#: src/redshift.c:804 src/redshift.c:815 src/redshift.c:979
msgid "Temperature adjustment failed.\n"
msgstr "El ajuste de la temperatura falló.\n"
-#: src/gamma-randr.c:59 src/gamma-randr.c:67 src/gamma-vidmode.c:54
-#, c-format
-msgid "Missing value for parameter: `%s'.\n"
-msgstr "Falta el valor para el parámetro: `%s'.\n"
-
-#: src/gamma-randr.c:74 src/gamma-vidmode.c:61
-#, c-format
-msgid "Unknown method parameter: `%s'.\n"
-msgstr "Parámetro del método desconocido: `%s'.\n"
-
-#: src/gamma-randr.c:98 src/gamma-randr.c:145 src/gamma-randr.c:186
-#: src/gamma-randr.c:214 src/gamma-randr.c:273 src/gamma-randr.c:337
+#: src/gamma-randr.c:66 src/gamma-randr.c:123 src/gamma-randr.c:162
+#: src/gamma-randr.c:188 src/gamma-randr.c:245 src/gamma-randr.c:343
#, c-format
msgid "`%s' returned error %d\n"
msgstr "`%s' entrega el error %d\n"
-#: src/gamma-randr.c:106
+#: src/gamma-randr.c:74
#, c-format
msgid "Unsupported RANDR version (%u.%u)\n"
msgstr "Versión RANDR no soportada (%u.%u)\n"
-#: src/gamma-randr.c:129
+#: src/gamma-randr.c:108
#, c-format
msgid "Screen %i could not be found.\n"
msgstr "Pantalla %i podría no encontrarse.\n"
-#: src/gamma-randr.c:199 src/gamma-vidmode.c:103
+#: src/gamma-randr.c:174 src/gamma-vidmode.c:86
#, c-format
msgid "Gamma ramp size too small: %i\n"
msgstr "El tamaño del valor gamma es demasiado pequeño: %i\n"
-#: src/gamma-randr.c:275
+#: src/gamma-randr.c:247
#, c-format
msgid "Unable to restore CRTC %i\n"
msgstr "Incapaz de restituir CRTC %i\n"
-#: src/gamma-randr.c:300
+#: src/gamma-randr.c:268
+msgid "Adjust gamma ramps with the X RANDR extension.\n"
+msgstr ""
+
+#. TRANSLATORS: RANDR help output
+#. left column must not be translated
+#: src/gamma-randr.c:273
+msgid ""
+" screen=N\tX screen to apply adjustments to\n"
+" crtc=N\tCRTC to apply adjustments to\n"
+msgstr ""
+
+#: src/gamma-randr.c:282 src/gamma-vidmode.c:144
+#, c-format
+msgid "Missing value for parameter: `%s'.\n"
+msgstr "Falta el valor para el parámetro: `%s'.\n"
+
+#: src/gamma-randr.c:292 src/gamma-vidmode.c:152 src/location-manual.c:98
+#, c-format
+msgid "Unknown method parameter: `%s'.\n"
+msgstr "Parámetro del método desconocido: `%s'.\n"
+
+#: src/gamma-randr.c:306
#, c-format
msgid "CRTC %d does not exist. "
msgstr "CRTC %d no existe. "
-#: src/gamma-randr.c:303
+#: src/gamma-randr.c:309
#, c-format
msgid "Valid CRTCs are [0-%d].\n"
msgstr "CRTCs válidos son [0-%d].\n"
-#: src/gamma-randr.c:306
+#: src/gamma-randr.c:312
#, c-format
msgid "Only CRTC 0 exists.\n"
msgstr "Sólo existe CRTC 0.\n"
-#: src/gamma-vidmode.c:74 src/gamma-vidmode.c:86 src/gamma-vidmode.c:96
-#: src/gamma-vidmode.c:126 src/gamma-vidmode.c:157 src/gamma-vidmode.c:186
+#: src/gamma-vidmode.c:48 src/gamma-vidmode.c:69 src/gamma-vidmode.c:79
+#: src/gamma-vidmode.c:109 src/gamma-vidmode.c:171 src/gamma-vidmode.c:200
#, c-format
msgid "X request failed: %s\n"
msgstr "Requerimiento de X falló: %s\n"
-#: src/gamma-w32gdi.c:48
+#: src/gamma-vidmode.c:131
+msgid "Adjust gamma ramps with the X VidMode extension.\n"
+msgstr ""
+
+#. TRANSLATORS: VidMode help output
+#. left column must not be translated
+#: src/gamma-vidmode.c:136
+msgid " screen=N\tX screen to apply adjustments to\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:59
msgid "Unable to open device context.\n"
msgstr "Incapaz de abrir del dispositivo de contexto.\n"
-#: src/gamma-w32gdi.c:55
+#: src/gamma-w32gdi.c:66
msgid "Display device does not support gamma ramps.\n"
msgstr "El dispositivo de imagen no soporta rangos gamma.\n"
-#: src/gamma-w32gdi.c:71
+#: src/gamma-w32gdi.c:82
msgid "Unable to save current gamma ramp.\n"
msgstr "Incapaz de guardar el rango gamma actual.\n"
-#: src/gamma-w32gdi.c:94
+#: src/gamma-w32gdi.c:104
+msgid "Adjust gamma ramps with the Windows GDI.\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:119
msgid "Unable to restore gamma ramps.\n"
msgstr "Incapaz de restaurar el rango gamma.\n"
-#: src/gamma-w32gdi.c:119
+#: src/gamma-w32gdi.c:144
msgid "Unable to set gamma ramps.\n"
msgstr "Incapaz de establecer rangos gamma.\n"
@@ -308,18 +382,34 @@ msgstr "No hay ciudad seleccionada como actual.\n"
msgid "Location not specified for city.\n"
msgstr "No hay localización especificada para la ciudad.\n"
-#: src/location-manual.c:46
-msgid "Too many arguments.\n"
-msgstr "Demasiados parámetros.\n"
+#: src/location-gnome-clock.c:140
+msgid "Use the location as set in the GNOME Clock applet.\n"
+msgstr ""
+
+#: src/location-manual.c:50
+msgid "Latitude and longitude must be set.\n"
+msgstr "Latitud y longitud deben ser definidos.\n"
-#: src/location-manual.c:58
+#: src/location-manual.c:65
+msgid "Specify location manually.\n"
+msgstr ""
+
+#. TRANSLATORS: Manual location help output
+#. left column must not be translated
+#: src/location-manual.c:70
+msgid ""
+" lat=N\t\tLatitude\n"
+" lon=N\t\tLongitude\n"
+msgstr ""
+
+#: src/location-manual.c:84
msgid "Malformed argument.\n"
msgstr "Parámetro no válido.\n"
-#: src/location-manual.c:73
-msgid "Latitude and longitude must be set.\n"
-msgstr "Latitud y longitud deben ser definidos.\n"
+#: src/location-manual.c:95
+msgid "Too many arguments.\n"
+msgstr "Demasiados parámetros.\n"
-#: src/gtk-redshift/statusicon.py:61
+#: src/gtk-redshift/statusicon.py:61 src/gtk-redshift/rsappindicator.py:70
msgid "Toggle"
msgstr "Cambiar"
diff --git a/po/fi.po b/po/fi.po
index 74807fe..0bdedb4 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-05-25 01:34+0200\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/redshift\n"
+"POT-Creation-Date: 2010-06-13 21:58+0200\n"
"PO-Revision-Date: 2010-05-26 15:37+0000\n"
"Last-Translator: Ilari Oras <happo1472583@gmail.com>\n"
"Language-Team: Finnish <fi@li.org>\n"
@@ -17,17 +17,17 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-05-27 03:47+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: src/redshift.c:214
+#: src/redshift.c:243
#, c-format
msgid "Period: Night\n"
msgstr "Hetki: Yö\n"
-#: src/redshift.c:221
+#: src/redshift.c:250
#, c-format
msgid "Period: Transition (%.2f%% day)\n"
msgstr "Hetki: siirtymä (%.2f%% päivä)\n"
-#: src/redshift.c:225
+#: src/redshift.c:254
#, c-format
msgid "Period: Daytime\n"
msgstr "Hetki: Päivä\n"
@@ -37,20 +37,20 @@ msgstr "Hetki: Päivä\n"
#. DAY is temperature at daytime,
#. NIGHT is temperature at night
#. no-wrap
-#: src/redshift.c:240
+#: src/redshift.c:269
#, c-format
msgid "Usage: %s -l LAT:LON -t DAY:NIGHT [OPTIONS...]\n"
msgstr "Käyttö: %s -l LAT:LON -t PÄVIÄ:YÖ [VALINNAT...]\n"
#. TRANSLATORS: help output 2
#. no-wrap
-#: src/redshift.c:246
+#: src/redshift.c:275
msgid "Set color temperature of display according to time of day.\n"
msgstr "Säädä värilämpötilat näytölle vuorokaudenajan mukaan.\n"
#. TRANSLATORS: help output 3
#. no-wrap
-#: src/redshift.c:252
+#: src/redshift.c:281
msgid ""
" -h\t\tDisplay this help message\n"
" -v\t\tVerbose output\n"
@@ -59,8 +59,9 @@ msgstr ""
" -v\t\tLaajempi ulosanti\n"
#. TRANSLATORS: help output 4
+#. `list' must not be translated
#. no-wrap
-#: src/redshift.c:258
+#: src/redshift.c:288
msgid ""
" -g R:G:B\tAdditional gamma correction to apply\n"
" -l LAT:LON\tYour current location\n"
@@ -69,12 +70,13 @@ msgid ""
" -m METHOD\tMethod to use to set color temperature\n"
" \t\t(Type `list' to see available methods)\n"
" -o\t\tOne shot mode (do not continously adjust color temperature)\n"
+" -x\t\tReset mode (remove adjustment from screen)\n"
" -r\t\tDisable temperature transitions\n"
" -t DAY:NIGHT\tColor temperature to set at daytime/night\n"
msgstr ""
#. TRANSLATORS: help output 5
-#: src/redshift.c:273
+#: src/redshift.c:304
#, c-format
msgid ""
"Default values:\n"
@@ -88,192 +90,263 @@ msgstr ""
" Yöajan värilämpötila: %uK\n"
#. TRANSLATORS: help output 6
-#: src/redshift.c:281
+#: src/redshift.c:312
#, c-format
msgid "Please report bugs to <%s>\n"
msgstr "Ole ystävällinen ja raportoi bugi <%s>lle\n"
-#: src/redshift.c:287
+#: src/redshift.c:318
msgid "Available adjustment methods:\n"
msgstr "Saatavilla olevat säätömahdollisuudet:\n"
-#: src/redshift.c:296
+#: src/redshift.c:324
+msgid "Specify colon-separated options with `-m METHOD:OPTIONS'.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:327
+msgid "Try `-m METHOD:help' for help.\n"
+msgstr ""
+
+#: src/redshift.c:333
msgid "Available location providers:\n"
msgstr ""
-#: src/redshift.c:351
+#: src/redshift.c:339
+msgid "Specify colon-separated options with`-l PROVIDER:OPTIONS'.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:342
+msgid "Try `-l PROVIDER:help' for help.\n"
+msgstr ""
+
+#: src/redshift.c:354 src/redshift.c:407
+#, c-format
+msgid "Initialization of %s failed.\n"
+msgstr ""
+
+#: src/redshift.c:376 src/redshift.c:429
+#, c-format
+msgid "Failed to set %s option.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:379
+#, fuzzy, c-format
+msgid "Try `-l %s:help' for more information.\n"
+msgstr "Kokeile '-h' saadaksesi lisää tietoa.\n"
+
+#: src/redshift.c:391
+#, c-format
+msgid "Failed to start provider %s.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:432
+#, fuzzy, c-format
+msgid "Try -m %s:help' for more information.\n"
+msgstr "Kokeile '-h' saadaksesi lisää tietoa.\n"
+
+#: src/redshift.c:444
+#, fuzzy, c-format
+msgid "Failed to start adjustment method %s.\n"
+msgstr "Saatavilla olevat säätömahdollisuudet:\n"
+
+#: src/redshift.c:501
msgid "Malformed gamma argument.\n"
msgstr "Vääränlainen gamman argumentti.\n"
-#: src/redshift.c:353 src/redshift.c:445 src/redshift.c:457
+#: src/redshift.c:503 src/redshift.c:618 src/redshift.c:633
msgid "Try `-h' for more information.\n"
msgstr "Kokeile '-h' saadaksesi lisää tietoa.\n"
-#: src/redshift.c:405
+#: src/redshift.c:557
#, c-format
msgid "Unknown location provider `%s'.\n"
msgstr ""
#. TRANSLATORS: This refers to the method
#. used to adjust colors e.g VidMode
-#: src/redshift.c:429
+#: src/redshift.c:595
#, c-format
msgid "Unknown method `%s'.\n"
msgstr "Tuntematon metodi `%s'.\n"
-#: src/redshift.c:443
+#: src/redshift.c:616
msgid "Malformed temperature argument.\n"
msgstr "Vääränmuotoinen värilämpötilan argumentti.\n"
-#: src/redshift.c:471 src/redshift.c:481 src/redshift.c:572 src/redshift.c:582
-#, c-format
-msgid "Initialization of %s failed.\n"
-msgstr ""
-
-#: src/redshift.c:483
+#: src/redshift.c:659
msgid "Trying other provider...\n"
msgstr ""
-#: src/redshift.c:492
+#: src/redshift.c:671
msgid "No more location providers to try.\n"
msgstr ""
-#: src/redshift.c:504
+#: src/redshift.c:685
msgid "Unable to get location from provider.\n"
msgstr ""
#. TRANSLATORS: Append degree symbols if possible.
-#: src/redshift.c:512
+#: src/redshift.c:694
#, c-format
msgid "Location: %f, %f\n"
msgstr "Sijainti: %f, %f\n"
-#: src/redshift.c:519
+#: src/redshift.c:701
#, c-format
msgid "Latitude must be between %.1f and %.1f.\n"
msgstr "Leveyspiiri on asetettava väliltä %.1f - %.1f.\n"
-#: src/redshift.c:528
+#: src/redshift.c:710
#, c-format
msgid "Longitude must be between %.1f and %.1f.\n"
msgstr "Pituuspiiri on asetettava väliltä %.1f - %.1f.\n"
-#: src/redshift.c:536 src/redshift.c:544
+#: src/redshift.c:719 src/redshift.c:727
#, c-format
msgid "Temperature must be between %uK and %uK.\n"
msgstr "Värilämpötila on säädettävä väliltä %uK - %uK.\n"
-#: src/redshift.c:554
+#: src/redshift.c:737
#, c-format
msgid "Gamma value must be between %.1f and %.1f.\n"
msgstr "Gamman arvo on asetettava väliltä %.1f - %.1f.\n"
-#: src/redshift.c:560
+#: src/redshift.c:743
#, c-format
msgid "Gamma: %.3f, %.3f, %.3f\n"
msgstr "Gamma: %.3f, %.3f, %.3f\n"
-#: src/redshift.c:584
+#: src/redshift.c:761
msgid "Trying other method...\n"
msgstr "Yritetään toista metodia...\n"
-#: src/redshift.c:593
+#: src/redshift.c:771
msgid "No more methods to try.\n"
msgstr ""
-#: src/redshift.c:603 src/redshift.c:710
+#: src/redshift.c:783 src/redshift.c:904
msgid "Unable to read system time.\n"
msgstr ""
#. TRANSLATORS: Append degree symbol if possible.
-#: src/redshift.c:612
+#: src/redshift.c:792
#, c-format
msgid "Solar elevation: %f\n"
msgstr ""
-#: src/redshift.c:619 src/redshift.c:777
+#: src/redshift.c:799 src/redshift.c:971
#, c-format
msgid "Color temperature: %uK\n"
msgstr "Värilämpötila: %uK\n"
-#: src/redshift.c:624 src/redshift.c:785
+#: src/redshift.c:804 src/redshift.c:815 src/redshift.c:979
msgid "Temperature adjustment failed.\n"
msgstr "Värilämpötilan säätö epäonnistui.\n"
-#: src/gamma-randr.c:59 src/gamma-randr.c:67 src/gamma-vidmode.c:54
-#, c-format
-msgid "Missing value for parameter: `%s'.\n"
-msgstr ""
-
-#: src/gamma-randr.c:74 src/gamma-vidmode.c:61
-#, c-format
-msgid "Unknown method parameter: `%s'.\n"
-msgstr ""
-
-#: src/gamma-randr.c:98 src/gamma-randr.c:145 src/gamma-randr.c:186
-#: src/gamma-randr.c:214 src/gamma-randr.c:273 src/gamma-randr.c:337
+#: src/gamma-randr.c:66 src/gamma-randr.c:123 src/gamma-randr.c:162
+#: src/gamma-randr.c:188 src/gamma-randr.c:245 src/gamma-randr.c:343
#, c-format
msgid "`%s' returned error %d\n"
msgstr "`%s' antoi virheen %d\n"
-#: src/gamma-randr.c:106
+#: src/gamma-randr.c:74
#, c-format
msgid "Unsupported RANDR version (%u.%u)\n"
msgstr "RANDRin versio ei ole tuettu (%u.%u)\n"
-#: src/gamma-randr.c:129
+#: src/gamma-randr.c:108
#, c-format
msgid "Screen %i could not be found.\n"
msgstr "Näyttöä %i ei löytynyt.\n"
-#: src/gamma-randr.c:199 src/gamma-vidmode.c:103
+#: src/gamma-randr.c:174 src/gamma-vidmode.c:86
#, c-format
msgid "Gamma ramp size too small: %i\n"
msgstr ""
-#: src/gamma-randr.c:275
+#: src/gamma-randr.c:247
#, c-format
msgid "Unable to restore CRTC %i\n"
msgstr "Ei kyetä palauttamaan CRTC %i\n"
-#: src/gamma-randr.c:300
+#: src/gamma-randr.c:268
+msgid "Adjust gamma ramps with the X RANDR extension.\n"
+msgstr ""
+
+#. TRANSLATORS: RANDR help output
+#. left column must not be translated
+#: src/gamma-randr.c:273
+msgid ""
+" screen=N\tX screen to apply adjustments to\n"
+" crtc=N\tCRTC to apply adjustments to\n"
+msgstr ""
+
+#: src/gamma-randr.c:282 src/gamma-vidmode.c:144
+#, c-format
+msgid "Missing value for parameter: `%s'.\n"
+msgstr ""
+
+#: src/gamma-randr.c:292 src/gamma-vidmode.c:152 src/location-manual.c:98
+#, c-format
+msgid "Unknown method parameter: `%s'.\n"
+msgstr ""
+
+#: src/gamma-randr.c:306
#, c-format
msgid "CRTC %d does not exist. "
msgstr "CRTC %d ei ole olemassa. "
-#: src/gamma-randr.c:303
+#: src/gamma-randr.c:309
#, c-format
msgid "Valid CRTCs are [0-%d].\n"
msgstr ""
-#: src/gamma-randr.c:306
+#: src/gamma-randr.c:312
#, c-format
msgid "Only CRTC 0 exists.\n"
msgstr "Vain CRTC 0 on olemassa.\n"
-#: src/gamma-vidmode.c:74 src/gamma-vidmode.c:86 src/gamma-vidmode.c:96
-#: src/gamma-vidmode.c:126 src/gamma-vidmode.c:157 src/gamma-vidmode.c:186
+#: src/gamma-vidmode.c:48 src/gamma-vidmode.c:69 src/gamma-vidmode.c:79
+#: src/gamma-vidmode.c:109 src/gamma-vidmode.c:171 src/gamma-vidmode.c:200
#, c-format
msgid "X request failed: %s\n"
msgstr "X-kutsu epäonnistui: %s\n"
-#: src/gamma-w32gdi.c:48
+#: src/gamma-vidmode.c:131
+msgid "Adjust gamma ramps with the X VidMode extension.\n"
+msgstr ""
+
+#. TRANSLATORS: VidMode help output
+#. left column must not be translated
+#: src/gamma-vidmode.c:136
+msgid " screen=N\tX screen to apply adjustments to\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:59
msgid "Unable to open device context.\n"
msgstr ""
-#: src/gamma-w32gdi.c:55
+#: src/gamma-w32gdi.c:66
msgid "Display device does not support gamma ramps.\n"
msgstr ""
-#: src/gamma-w32gdi.c:71
+#: src/gamma-w32gdi.c:82
msgid "Unable to save current gamma ramp.\n"
msgstr ""
-#: src/gamma-w32gdi.c:94
-msgid "Unable to restore gamma ramps.\n"
+#: src/gamma-w32gdi.c:104
+msgid "Adjust gamma ramps with the Windows GDI.\n"
msgstr ""
#: src/gamma-w32gdi.c:119
+msgid "Unable to restore gamma ramps.\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:144
msgid "Unable to set gamma ramps.\n"
msgstr ""
@@ -298,18 +371,34 @@ msgstr ""
msgid "Location not specified for city.\n"
msgstr ""
-#: src/location-manual.c:46
-msgid "Too many arguments.\n"
+#: src/location-gnome-clock.c:140
+msgid "Use the location as set in the GNOME Clock applet.\n"
+msgstr ""
+
+#: src/location-manual.c:50
+msgid "Latitude and longitude must be set.\n"
+msgstr "Pituus- ja leveyspiirit on asetettava.\n"
+
+#: src/location-manual.c:65
+msgid "Specify location manually.\n"
+msgstr ""
+
+#. TRANSLATORS: Manual location help output
+#. left column must not be translated
+#: src/location-manual.c:70
+msgid ""
+" lat=N\t\tLatitude\n"
+" lon=N\t\tLongitude\n"
msgstr ""
-#: src/location-manual.c:58
+#: src/location-manual.c:84
msgid "Malformed argument.\n"
msgstr ""
-#: src/location-manual.c:73
-msgid "Latitude and longitude must be set.\n"
-msgstr "Pituus- ja leveyspiirit on asetettava.\n"
+#: src/location-manual.c:95
+msgid "Too many arguments.\n"
+msgstr ""
-#: src/gtk-redshift/statusicon.py:61
+#: src/gtk-redshift/statusicon.py:61 src/gtk-redshift/rsappindicator.py:70
msgid "Toggle"
msgstr "Kytke"
diff --git a/po/gtk-redshift/cs.po b/po/gtk-redshift/cs.po
deleted file mode 100644
index b351105..0000000
--- a/po/gtk-redshift/cs.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Czech translation for redshift
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the redshift package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-02-01 22:16+0100\n"
-"PO-Revision-Date: 2010-06-01 11:10+0000\n"
-"Last-Translator: clever_fox <clever_fox@seznam.cz>\n"
-"Language-Team: Czech <cs@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-06-02 03:37+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
-
-#: src/gtk-redshift/gtk-redshift:59
-msgid "Toggle"
-msgstr "Přepnout"
diff --git a/po/gtk-redshift/da.po b/po/gtk-redshift/da.po
deleted file mode 100644
index 0226093..0000000
--- a/po/gtk-redshift/da.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Danish translation for redshift
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the redshift package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-02-01 22:16+0100\n"
-"PO-Revision-Date: 2010-02-02 11:34+0000\n"
-"Last-Translator: Jon Lund Steffensen <Unknown>\n"
-"Language-Team: Danish <da@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-02-12 04:56+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
-
-#: src/gtk-redshift/gtk-redshift:59
-msgid "Toggle"
-msgstr "Slå til/fra"
diff --git a/po/gtk-redshift/de.po b/po/gtk-redshift/de.po
deleted file mode 100644
index 4c33937..0000000
--- a/po/gtk-redshift/de.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# German translation for redshift
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the redshift package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-02-01 22:16+0100\n"
-"PO-Revision-Date: 2010-06-12 18:07+0000\n"
-"Last-Translator: Jan-Christoph Borchardt <inquata@gmail.com>\n"
-"Language-Team: German <de@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-06-13 03:45+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
-
-#: src/gtk-redshift/gtk-redshift:59
-msgid "Toggle"
-msgstr "Umschalten"
diff --git a/po/gtk-redshift/es.po b/po/gtk-redshift/es.po
deleted file mode 100644
index ca51620..0000000
--- a/po/gtk-redshift/es.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Spanish translation for redshift
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the redshift package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-02-01 22:16+0100\n"
-"PO-Revision-Date: 2010-05-27 19:48+0000\n"
-"Last-Translator: Fernando Ossandon <Unknown>\n"
-"Language-Team: Spanish <es@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-05-28 03:44+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
-
-#: src/gtk-redshift/gtk-redshift:59
-msgid "Toggle"
-msgstr "Cambiar"
diff --git a/po/gtk-redshift/fi.po b/po/gtk-redshift/fi.po
deleted file mode 100644
index fc57473..0000000
--- a/po/gtk-redshift/fi.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Finnish translation for redshift
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the redshift package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-02-01 22:16+0100\n"
-"PO-Revision-Date: 2010-05-23 20:18+0000\n"
-"Last-Translator: Ilari Oras <happo1472583@gmail.com>\n"
-"Language-Team: Finnish <fi@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-05-24 03:51+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
-
-#: src/gtk-redshift/gtk-redshift:59
-msgid "Toggle"
-msgstr "Kytke"
diff --git a/po/gtk-redshift/it.po b/po/gtk-redshift/it.po
deleted file mode 100644
index e953889..0000000
--- a/po/gtk-redshift/it.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Italian translation for redshift
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the redshift package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-02-01 22:16+0100\n"
-"PO-Revision-Date: 2010-06-06 13:04+0000\n"
-"Last-Translator: Francesco Marella <Unknown>\n"
-"Language-Team: Italian <it@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-06-07 03:48+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
-
-#: src/gtk-redshift/gtk-redshift:59
-msgid "Toggle"
-msgstr "Attiva/Disattiva"
diff --git a/po/gtk-redshift/ru.po b/po/gtk-redshift/ru.po
deleted file mode 100644
index 0206bda..0000000
--- a/po/gtk-redshift/ru.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# Russian translation for redshift
-# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
-# This file is distributed under the same license as the redshift package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-02-01 22:16+0100\n"
-"PO-Revision-Date: 2010-02-02 09:20+0000\n"
-"Last-Translator: Gregory Petrosyan <gregory.petrosyan@gmail.com>\n"
-"Language-Team: Russian <ru@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-02-12 04:56+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
-
-#: src/gtk-redshift/gtk-redshift:59
-msgid "Toggle"
-msgstr "Включить / Выключить"
diff --git a/po/it.po b/po/it.po
index e810fa4..32db3e6 100644
--- a/po/it.po
+++ b/po/it.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-06-10 20:13+0200\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/redshift\n"
+"POT-Creation-Date: 2010-06-13 21:58+0200\n"
"PO-Revision-Date: 2010-06-11 08:29+0000\n"
"Last-Translator: Andrea Amoroso <andrea.amoroso@alice.it>\n"
"Language-Team: Italian <it@li.org>\n"
@@ -115,8 +115,7 @@ msgstr "Metodi di correzione disponibili:\n"
#: src/redshift.c:324
msgid "Specify colon-separated options with `-m METHOD:OPTIONS'.\n"
-msgstr ""
-"Specificare opzioni separate dai due punti con `-m METODO:OPZIONI'.\n"
+msgstr "Specificare opzioni separate dai due punti con `-m METODO:OPZIONI'.\n"
#. TRANSLATORS: `help' must not be translated.
#: src/redshift.c:327
@@ -344,27 +343,27 @@ msgstr "Regolare la scala dei gamma con l'estensione di X VidMode.\n"
msgid " screen=N\tX screen to apply adjustments to\n"
msgstr " schermo=N\tSchermo di X su cui applicare le regolazioni\n"
-#: src/gamma-w32gdi.c:57
+#: src/gamma-w32gdi.c:59
msgid "Unable to open device context.\n"
msgstr "Impossibile aprire il contesto della periferica.\n"
-#: src/gamma-w32gdi.c:64
+#: src/gamma-w32gdi.c:66
msgid "Display device does not support gamma ramps.\n"
msgstr "La periferica di visualizzazione non supporta la scala dei gamma.\n"
-#: src/gamma-w32gdi.c:80
+#: src/gamma-w32gdi.c:82
msgid "Unable to save current gamma ramp.\n"
msgstr "Impossibile salvare la scala dei gamma attuale.\n"
-#: src/gamma-w32gdi.c:102
+#: src/gamma-w32gdi.c:104
msgid "Adjust gamma ramps with the Windows GDI.\n"
msgstr "Regolare la scala dei gamma con il Windows GDI.\n"
-#: src/gamma-w32gdi.c:117
+#: src/gamma-w32gdi.c:119
msgid "Unable to restore gamma ramps.\n"
msgstr "Impossibile ripristinare la scala dei gamma.\n"
-#: src/gamma-w32gdi.c:142
+#: src/gamma-w32gdi.c:144
msgid "Unable to set gamma ramps.\n"
msgstr "Impossibile impostare la scala dei gamma.\n"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 919368e..2c62be9 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: redshift\n"
-"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2010-05-25 01:34+0200\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/redshift\n"
+"POT-Creation-Date: 2010-06-13 21:58+0200\n"
"PO-Revision-Date: 2010-06-03 08:12+0000\n"
"Last-Translator: Gustavo Guidorizzi <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -17,17 +17,17 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-06-04 03:52+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
-#: src/redshift.c:214
+#: src/redshift.c:243
#, c-format
msgid "Period: Night\n"
msgstr "Período: Noite\n"
-#: src/redshift.c:221
+#: src/redshift.c:250
#, c-format
msgid "Period: Transition (%.2f%% day)\n"
msgstr "Período: Transição (%2f%% dia)\n"
-#: src/redshift.c:225
+#: src/redshift.c:254
#, c-format
msgid "Period: Daytime\n"
msgstr "Período: dia\n"
@@ -37,28 +37,29 @@ msgstr "Período: dia\n"
#. DAY is temperature at daytime,
#. NIGHT is temperature at night
#. no-wrap
-#: src/redshift.c:240
+#: src/redshift.c:269
#, c-format
msgid "Usage: %s -l LAT:LON -t DAY:NIGHT [OPTIONS...]\n"
msgstr ""
#. TRANSLATORS: help output 2
#. no-wrap
-#: src/redshift.c:246
+#: src/redshift.c:275
msgid "Set color temperature of display according to time of day.\n"
msgstr ""
#. TRANSLATORS: help output 3
#. no-wrap
-#: src/redshift.c:252
+#: src/redshift.c:281
msgid ""
" -h\t\tDisplay this help message\n"
" -v\t\tVerbose output\n"
msgstr ""
#. TRANSLATORS: help output 4
+#. `list' must not be translated
#. no-wrap
-#: src/redshift.c:258
+#: src/redshift.c:288
msgid ""
" -g R:G:B\tAdditional gamma correction to apply\n"
" -l LAT:LON\tYour current location\n"
@@ -67,12 +68,13 @@ msgid ""
" -m METHOD\tMethod to use to set color temperature\n"
" \t\t(Type `list' to see available methods)\n"
" -o\t\tOne shot mode (do not continously adjust color temperature)\n"
+" -x\t\tReset mode (remove adjustment from screen)\n"
" -r\t\tDisable temperature transitions\n"
" -t DAY:NIGHT\tColor temperature to set at daytime/night\n"
msgstr ""
#. TRANSLATORS: help output 5
-#: src/redshift.c:273
+#: src/redshift.c:304
#, c-format
msgid ""
"Default values:\n"
@@ -82,192 +84,263 @@ msgid ""
msgstr ""
#. TRANSLATORS: help output 6
-#: src/redshift.c:281
+#: src/redshift.c:312
#, c-format
msgid "Please report bugs to <%s>\n"
msgstr ""
-#: src/redshift.c:287
+#: src/redshift.c:318
msgid "Available adjustment methods:\n"
msgstr ""
-#: src/redshift.c:296
+#: src/redshift.c:324
+msgid "Specify colon-separated options with `-m METHOD:OPTIONS'.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:327
+msgid "Try `-m METHOD:help' for help.\n"
+msgstr ""
+
+#: src/redshift.c:333
msgid "Available location providers:\n"
msgstr ""
-#: src/redshift.c:351
+#: src/redshift.c:339
+msgid "Specify colon-separated options with`-l PROVIDER:OPTIONS'.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:342
+msgid "Try `-l PROVIDER:help' for help.\n"
+msgstr ""
+
+#: src/redshift.c:354 src/redshift.c:407
+#, c-format
+msgid "Initialization of %s failed.\n"
+msgstr ""
+
+#: src/redshift.c:376 src/redshift.c:429
+#, c-format
+msgid "Failed to set %s option.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:379
+#, fuzzy, c-format
+msgid "Try `-l %s:help' for more information.\n"
+msgstr "Tente `-h' para mais informações.\n"
+
+#: src/redshift.c:391
+#, c-format
+msgid "Failed to start provider %s.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:432
+#, fuzzy, c-format
+msgid "Try -m %s:help' for more information.\n"
+msgstr "Tente `-h' para mais informações.\n"
+
+#: src/redshift.c:444
+#, c-format
+msgid "Failed to start adjustment method %s.\n"
+msgstr ""
+
+#: src/redshift.c:501
msgid "Malformed gamma argument.\n"
msgstr ""
-#: src/redshift.c:353 src/redshift.c:445 src/redshift.c:457
+#: src/redshift.c:503 src/redshift.c:618 src/redshift.c:633
msgid "Try `-h' for more information.\n"
msgstr "Tente `-h' para mais informações.\n"
-#: src/redshift.c:405
+#: src/redshift.c:557
#, c-format
msgid "Unknown location provider `%s'.\n"
msgstr ""
#. TRANSLATORS: This refers to the method
#. used to adjust colors e.g VidMode
-#: src/redshift.c:429
+#: src/redshift.c:595
#, c-format
msgid "Unknown method `%s'.\n"
msgstr ""
-#: src/redshift.c:443
+#: src/redshift.c:616
msgid "Malformed temperature argument.\n"
msgstr ""
-#: src/redshift.c:471 src/redshift.c:481 src/redshift.c:572 src/redshift.c:582
-#, c-format
-msgid "Initialization of %s failed.\n"
-msgstr ""
-
-#: src/redshift.c:483
+#: src/redshift.c:659
msgid "Trying other provider...\n"
msgstr ""
-#: src/redshift.c:492
+#: src/redshift.c:671
msgid "No more location providers to try.\n"
msgstr ""
-#: src/redshift.c:504
+#: src/redshift.c:685
msgid "Unable to get location from provider.\n"
msgstr ""
#. TRANSLATORS: Append degree symbols if possible.
-#: src/redshift.c:512
+#: src/redshift.c:694
#, c-format
msgid "Location: %f, %f\n"
msgstr ""
-#: src/redshift.c:519
+#: src/redshift.c:701
#, c-format
msgid "Latitude must be between %.1f and %.1f.\n"
msgstr ""
-#: src/redshift.c:528
+#: src/redshift.c:710
#, c-format
msgid "Longitude must be between %.1f and %.1f.\n"
msgstr ""
-#: src/redshift.c:536 src/redshift.c:544
+#: src/redshift.c:719 src/redshift.c:727
#, c-format
msgid "Temperature must be between %uK and %uK.\n"
msgstr ""
-#: src/redshift.c:554
+#: src/redshift.c:737
#, c-format
msgid "Gamma value must be between %.1f and %.1f.\n"
msgstr ""
-#: src/redshift.c:560
+#: src/redshift.c:743
#, c-format
msgid "Gamma: %.3f, %.3f, %.3f\n"
msgstr ""
-#: src/redshift.c:584
+#: src/redshift.c:761
msgid "Trying other method...\n"
msgstr ""
-#: src/redshift.c:593
+#: src/redshift.c:771
msgid "No more methods to try.\n"
msgstr ""
-#: src/redshift.c:603 src/redshift.c:710
+#: src/redshift.c:783 src/redshift.c:904
msgid "Unable to read system time.\n"
msgstr ""
#. TRANSLATORS: Append degree symbol if possible.
-#: src/redshift.c:612
+#: src/redshift.c:792
#, c-format
msgid "Solar elevation: %f\n"
msgstr ""
-#: src/redshift.c:619 src/redshift.c:777
+#: src/redshift.c:799 src/redshift.c:971
#, c-format
msgid "Color temperature: %uK\n"
msgstr ""
-#: src/redshift.c:624 src/redshift.c:785
+#: src/redshift.c:804 src/redshift.c:815 src/redshift.c:979
msgid "Temperature adjustment failed.\n"
msgstr ""
-#: src/gamma-randr.c:59 src/gamma-randr.c:67 src/gamma-vidmode.c:54
+#: src/gamma-randr.c:66 src/gamma-randr.c:123 src/gamma-randr.c:162
+#: src/gamma-randr.c:188 src/gamma-randr.c:245 src/gamma-randr.c:343
#, c-format
-msgid "Missing value for parameter: `%s'.\n"
+msgid "`%s' returned error %d\n"
msgstr ""
-#: src/gamma-randr.c:74 src/gamma-vidmode.c:61
+#: src/gamma-randr.c:74
#, c-format
-msgid "Unknown method parameter: `%s'.\n"
+msgid "Unsupported RANDR version (%u.%u)\n"
msgstr ""
-#: src/gamma-randr.c:98 src/gamma-randr.c:145 src/gamma-randr.c:186
-#: src/gamma-randr.c:214 src/gamma-randr.c:273 src/gamma-randr.c:337
+#: src/gamma-randr.c:108
#, c-format
-msgid "`%s' returned error %d\n"
+msgid "Screen %i could not be found.\n"
msgstr ""
-#: src/gamma-randr.c:106
+#: src/gamma-randr.c:174 src/gamma-vidmode.c:86
#, c-format
-msgid "Unsupported RANDR version (%u.%u)\n"
+msgid "Gamma ramp size too small: %i\n"
msgstr ""
-#: src/gamma-randr.c:129
+#: src/gamma-randr.c:247
#, c-format
-msgid "Screen %i could not be found.\n"
+msgid "Unable to restore CRTC %i\n"
+msgstr ""
+
+#: src/gamma-randr.c:268
+msgid "Adjust gamma ramps with the X RANDR extension.\n"
+msgstr ""
+
+#. TRANSLATORS: RANDR help output
+#. left column must not be translated
+#: src/gamma-randr.c:273
+msgid ""
+" screen=N\tX screen to apply adjustments to\n"
+" crtc=N\tCRTC to apply adjustments to\n"
msgstr ""
-#: src/gamma-randr.c:199 src/gamma-vidmode.c:103
+#: src/gamma-randr.c:282 src/gamma-vidmode.c:144
#, c-format
-msgid "Gamma ramp size too small: %i\n"
+msgid "Missing value for parameter: `%s'.\n"
msgstr ""
-#: src/gamma-randr.c:275
+#: src/gamma-randr.c:292 src/gamma-vidmode.c:152 src/location-manual.c:98
#, c-format
-msgid "Unable to restore CRTC %i\n"
+msgid "Unknown method parameter: `%s'.\n"
msgstr ""
-#: src/gamma-randr.c:300
+#: src/gamma-randr.c:306
#, c-format
msgid "CRTC %d does not exist. "
msgstr ""
-#: src/gamma-randr.c:303
+#: src/gamma-randr.c:309
#, c-format
msgid "Valid CRTCs are [0-%d].\n"
msgstr ""
-#: src/gamma-randr.c:306
+#: src/gamma-randr.c:312
#, c-format
msgid "Only CRTC 0 exists.\n"
msgstr ""
-#: src/gamma-vidmode.c:74 src/gamma-vidmode.c:86 src/gamma-vidmode.c:96
-#: src/gamma-vidmode.c:126 src/gamma-vidmode.c:157 src/gamma-vidmode.c:186
+#: src/gamma-vidmode.c:48 src/gamma-vidmode.c:69 src/gamma-vidmode.c:79
+#: src/gamma-vidmode.c:109 src/gamma-vidmode.c:171 src/gamma-vidmode.c:200
#, c-format
msgid "X request failed: %s\n"
msgstr ""
-#: src/gamma-w32gdi.c:48
+#: src/gamma-vidmode.c:131
+msgid "Adjust gamma ramps with the X VidMode extension.\n"
+msgstr ""
+
+#. TRANSLATORS: VidMode help output
+#. left column must not be translated
+#: src/gamma-vidmode.c:136
+msgid " screen=N\tX screen to apply adjustments to\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:59
msgid "Unable to open device context.\n"
msgstr ""
-#: src/gamma-w32gdi.c:55
+#: src/gamma-w32gdi.c:66
msgid "Display device does not support gamma ramps.\n"
msgstr ""
-#: src/gamma-w32gdi.c:71
+#: src/gamma-w32gdi.c:82
msgid "Unable to save current gamma ramp.\n"
msgstr ""
-#: src/gamma-w32gdi.c:94
-msgid "Unable to restore gamma ramps.\n"
+#: src/gamma-w32gdi.c:104
+msgid "Adjust gamma ramps with the Windows GDI.\n"
msgstr ""
#: src/gamma-w32gdi.c:119
+msgid "Unable to restore gamma ramps.\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:144
msgid "Unable to set gamma ramps.\n"
msgstr ""
@@ -292,18 +365,34 @@ msgstr ""
msgid "Location not specified for city.\n"
msgstr ""
-#: src/location-manual.c:46
-msgid "Too many arguments.\n"
+#: src/location-gnome-clock.c:140
+msgid "Use the location as set in the GNOME Clock applet.\n"
msgstr ""
-#: src/location-manual.c:58
+#: src/location-manual.c:50
+msgid "Latitude and longitude must be set.\n"
+msgstr ""
+
+#: src/location-manual.c:65
+msgid "Specify location manually.\n"
+msgstr ""
+
+#. TRANSLATORS: Manual location help output
+#. left column must not be translated
+#: src/location-manual.c:70
+msgid ""
+" lat=N\t\tLatitude\n"
+" lon=N\t\tLongitude\n"
+msgstr ""
+
+#: src/location-manual.c:84
msgid "Malformed argument.\n"
msgstr ""
-#: src/location-manual.c:73
-msgid "Latitude and longitude must be set.\n"
+#: src/location-manual.c:95
+msgid "Too many arguments.\n"
msgstr ""
-#: src/gtk-redshift/statusicon.py:61
+#: src/gtk-redshift/statusicon.py:61 src/gtk-redshift/rsappindicator.py:70
msgid "Toggle"
msgstr ""
diff --git a/po/redshift.pot b/po/redshift.pot
index da21cd8..505d425 100644
--- a/po/redshift.pot
+++ b/po/redshift.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: redshift 1.1\n"
+"Project-Id-Version: redshift 1.3\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/redshift\n"
-"POT-Creation-Date: 2010-02-10 23:46+0100\n"
+"POT-Creation-Date: 2010-06-13 21:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,17 +16,17 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/redshift.c:172
+#: src/redshift.c:243
#, c-format
msgid "Period: Night\n"
msgstr ""
-#: src/redshift.c:179
+#: src/redshift.c:250
#, c-format
msgid "Period: Transition (%.2f%% day)\n"
msgstr ""
-#: src/redshift.c:183
+#: src/redshift.c:254
#, c-format
msgid "Period: Daytime\n"
msgstr ""
@@ -36,164 +36,362 @@ msgstr ""
#. DAY is temperature at daytime,
#. NIGHT is temperature at night
#. no-wrap
-#: src/redshift.c:198
+#: src/redshift.c:269
#, c-format
msgid "Usage: %s -l LAT:LON -t DAY:NIGHT [OPTIONS...]\n"
msgstr ""
#. TRANSLATORS: help output 2
#. no-wrap
-#: src/redshift.c:204
+#: src/redshift.c:275
msgid "Set color temperature of display according to time of day.\n"
msgstr ""
#. TRANSLATORS: help output 3
#. no-wrap
-#: src/redshift.c:210
+#: src/redshift.c:281
msgid ""
" -h\t\tDisplay this help message\n"
" -v\t\tVerbose output\n"
msgstr ""
#. TRANSLATORS: help output 4
+#. `list' must not be translated
#. no-wrap
-#: src/redshift.c:216
+#: src/redshift.c:288
msgid ""
" -g R:G:B\tAdditional gamma correction to apply\n"
" -l LAT:LON\tYour current location\n"
-" -m METHOD\tMethod to use to set color temperature (randr or vidmode)\n"
+" -l PROVIDER\tSelect provider for automatic location updates\n"
+" \t\t(Type `list' to see available providers)\n"
+" -m METHOD\tMethod to use to set color temperature\n"
+" \t\t(Type `list' to see available methods)\n"
" -o\t\tOne shot mode (do not continously adjust color temperature)\n"
-" -r\t\tDisable initial temperature transition\n"
-" -s SCREEN\tX screen to apply adjustments to\n"
+" -x\t\tReset mode (remove adjustment from screen)\n"
+" -r\t\tDisable temperature transitions\n"
" -t DAY:NIGHT\tColor temperature to set at daytime/night\n"
msgstr ""
-#: src/redshift.c:278
-msgid "Malformed gamma argument.\n"
+#. TRANSLATORS: help output 5
+#: src/redshift.c:304
+#, c-format
+msgid ""
+"Default values:\n"
+"\n"
+" Daytime temperature: %uK\n"
+" Night temperature: %uK\n"
msgstr ""
-#: src/redshift.c:280 src/redshift.c:299 src/redshift.c:350 src/redshift.c:362
-#: src/redshift.c:371
-msgid "Try `-h' for more information.\n"
+#. TRANSLATORS: help output 6
+#: src/redshift.c:312
+#, c-format
+msgid "Please report bugs to <%s>\n"
+msgstr ""
+
+#: src/redshift.c:318
+msgid "Available adjustment methods:\n"
msgstr ""
-#: src/redshift.c:297
-msgid "Malformed location argument.\n"
+#: src/redshift.c:324
+msgid "Specify colon-separated options with `-m METHOD:OPTIONS'.\n"
msgstr ""
-#: src/redshift.c:313
-msgid "RANDR method was not enabled at compile time.\n"
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:327
+msgid "Try `-m METHOD:help' for help.\n"
msgstr ""
-#: src/redshift.c:323
-msgid "VidMode method was not enabled at compile time.\n"
+#: src/redshift.c:333
+msgid "Available location providers:\n"
+msgstr ""
+
+#: src/redshift.c:339
+msgid "Specify colon-separated options with`-l PROVIDER:OPTIONS'.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:342
+msgid "Try `-l PROVIDER:help' for help.\n"
+msgstr ""
+
+#: src/redshift.c:354 src/redshift.c:407
+#, c-format
+msgid "Initialization of %s failed.\n"
+msgstr ""
+
+#: src/redshift.c:376 src/redshift.c:429
+#, c-format
+msgid "Failed to set %s option.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:379
+#, c-format
+msgid "Try `-l %s:help' for more information.\n"
+msgstr ""
+
+#: src/redshift.c:391
+#, c-format
+msgid "Failed to start provider %s.\n"
+msgstr ""
+
+#. TRANSLATORS: `help' must not be translated.
+#: src/redshift.c:432
+#, c-format
+msgid "Try -m %s:help' for more information.\n"
+msgstr ""
+
+#: src/redshift.c:444
+#, c-format
+msgid "Failed to start adjustment method %s.\n"
+msgstr ""
+
+#: src/redshift.c:501
+msgid "Malformed gamma argument.\n"
+msgstr ""
+
+#: src/redshift.c:503 src/redshift.c:618 src/redshift.c:633
+msgid "Try `-h' for more information.\n"
+msgstr ""
+
+#: src/redshift.c:557
+#, c-format
+msgid "Unknown location provider `%s'.\n"
msgstr ""
#. TRANSLATORS: This refers to the method
#. used to adjust colors e.g VidMode
-#: src/redshift.c:331
+#: src/redshift.c:595
#, c-format
msgid "Unknown method `%s'.\n"
msgstr ""
-#: src/redshift.c:348
+#: src/redshift.c:616
msgid "Malformed temperature argument.\n"
msgstr ""
-#: src/redshift.c:370
-msgid "Latitude and longitude must be set.\n"
+#: src/redshift.c:659
+msgid "Trying other provider...\n"
+msgstr ""
+
+#: src/redshift.c:671
+msgid "No more location providers to try.\n"
+msgstr ""
+
+#: src/redshift.c:685
+msgid "Unable to get location from provider.\n"
msgstr ""
#. TRANSLATORS: Append degree symbols if possible.
-#: src/redshift.c:377
+#: src/redshift.c:694
#, c-format
msgid "Location: %f, %f\n"
msgstr ""
-#: src/redshift.c:384
+#: src/redshift.c:701
#, c-format
msgid "Latitude must be between %.1f and %.1f.\n"
msgstr ""
-#: src/redshift.c:393
+#: src/redshift.c:710
#, c-format
msgid "Longitude must be between %.1f and %.1f.\n"
msgstr ""
-#: src/redshift.c:401 src/redshift.c:409
+#: src/redshift.c:719 src/redshift.c:727
#, c-format
msgid "Temperature must be between %uK and %uK.\n"
msgstr ""
-#: src/redshift.c:419
+#: src/redshift.c:737
#, c-format
msgid "Gamma value must be between %.1f and %.1f.\n"
msgstr ""
-#: src/redshift.c:425
+#: src/redshift.c:743
#, c-format
msgid "Gamma: %.3f, %.3f, %.3f\n"
msgstr ""
-#: src/redshift.c:437
-msgid "Initialization of RANDR failed.\n"
+#: src/redshift.c:761
+msgid "Trying other method...\n"
msgstr ""
-#: src/redshift.c:439
-msgid "Trying other method...\n"
+#: src/redshift.c:771
+msgid "No more methods to try.\n"
msgstr ""
-#: src/redshift.c:454
-msgid "Initialization of VidMode failed.\n"
+#: src/redshift.c:783 src/redshift.c:904
+msgid "Unable to read system time.\n"
msgstr ""
#. TRANSLATORS: Append degree symbol if possible.
-#: src/redshift.c:477
+#: src/redshift.c:792
#, c-format
msgid "Solar elevation: %f\n"
msgstr ""
-#: src/redshift.c:484 src/redshift.c:646
+#: src/redshift.c:799 src/redshift.c:971
#, c-format
msgid "Color temperature: %uK\n"
msgstr ""
-#: src/redshift.c:490 src/redshift.c:655
+#: src/redshift.c:804 src/redshift.c:815 src/redshift.c:979
msgid "Temperature adjustment failed.\n"
msgstr ""
-#: src/randr.c:57 src/randr.c:104 src/randr.c:144 src/randr.c:172
-#: src/randr.c:231 src/randr.c:283
+#: src/gamma-randr.c:66 src/gamma-randr.c:123 src/gamma-randr.c:162
+#: src/gamma-randr.c:188 src/gamma-randr.c:245 src/gamma-randr.c:343
#, c-format
msgid "`%s' returned error %d\n"
msgstr ""
-#: src/randr.c:65
+#: src/gamma-randr.c:74
#, c-format
msgid "Unsupported RANDR version (%u.%u)\n"
msgstr ""
-#: src/randr.c:88
+#: src/gamma-randr.c:108
#, c-format
msgid "Screen %i could not be found.\n"
msgstr ""
-#: src/randr.c:157 src/vidmode.c:71
+#: src/gamma-randr.c:174 src/gamma-vidmode.c:86
#, c-format
msgid "Gamma ramp size too small: %i\n"
msgstr ""
-#: src/randr.c:233
+#: src/gamma-randr.c:247
#, c-format
msgid "Unable to restore CRTC %i\n"
msgstr ""
-#: src/vidmode.c:42 src/vidmode.c:54 src/vidmode.c:64 src/vidmode.c:94
-#: src/vidmode.c:125 src/vidmode.c:154
+#: src/gamma-randr.c:268
+msgid "Adjust gamma ramps with the X RANDR extension.\n"
+msgstr ""
+
+#. TRANSLATORS: RANDR help output
+#. left column must not be translated
+#: src/gamma-randr.c:273
+msgid ""
+" screen=N\tX screen to apply adjustments to\n"
+" crtc=N\tCRTC to apply adjustments to\n"
+msgstr ""
+
+#: src/gamma-randr.c:282 src/gamma-vidmode.c:144
+#, c-format
+msgid "Missing value for parameter: `%s'.\n"
+msgstr ""
+
+#: src/gamma-randr.c:292 src/gamma-vidmode.c:152 src/location-manual.c:98
+#, c-format
+msgid "Unknown method parameter: `%s'.\n"
+msgstr ""
+
+#: src/gamma-randr.c:306
+#, c-format
+msgid "CRTC %d does not exist. "
+msgstr ""
+
+#: src/gamma-randr.c:309
+#, c-format
+msgid "Valid CRTCs are [0-%d].\n"
+msgstr ""
+
+#: src/gamma-randr.c:312
+#, c-format
+msgid "Only CRTC 0 exists.\n"
+msgstr ""
+
+#: src/gamma-vidmode.c:48 src/gamma-vidmode.c:69 src/gamma-vidmode.c:79
+#: src/gamma-vidmode.c:109 src/gamma-vidmode.c:171 src/gamma-vidmode.c:200
#, c-format
msgid "X request failed: %s\n"
msgstr ""
-#: src/gtk-redshift/gtk-redshift.py:61
+#: src/gamma-vidmode.c:131
+msgid "Adjust gamma ramps with the X VidMode extension.\n"
+msgstr ""
+
+#. TRANSLATORS: VidMode help output
+#. left column must not be translated
+#: src/gamma-vidmode.c:136
+msgid " screen=N\tX screen to apply adjustments to\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:59
+msgid "Unable to open device context.\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:66
+msgid "Display device does not support gamma ramps.\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:82
+msgid "Unable to save current gamma ramp.\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:104
+msgid "Adjust gamma ramps with the Windows GDI.\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:119
+msgid "Unable to restore gamma ramps.\n"
+msgstr ""
+
+#: src/gamma-w32gdi.c:144
+msgid "Unable to set gamma ramps.\n"
+msgstr ""
+
+#: src/location-gnome-clock.c:46
+msgid "Cannot list dirs in `/apps/panel/applets'.\n"
+msgstr ""
+
+#: src/location-gnome-clock.c:78
+msgid "No clock applet was found.\n"
+msgstr ""
+
+#: src/location-gnome-clock.c:86
+#, c-format
+msgid "Error reading city list: `%s'.\n"
+msgstr ""
+
+#: src/location-gnome-clock.c:106
+msgid "No city selected as current city.\n"
+msgstr ""
+
+#: src/location-gnome-clock.c:113
+msgid "Location not specified for city.\n"
+msgstr ""
+
+#: src/location-gnome-clock.c:140
+msgid "Use the location as set in the GNOME Clock applet.\n"
+msgstr ""
+
+#: src/location-manual.c:50
+msgid "Latitude and longitude must be set.\n"
+msgstr ""
+
+#: src/location-manual.c:65
+msgid "Specify location manually.\n"
+msgstr ""
+
+#. TRANSLATORS: Manual location help output
+#. left column must not be translated
+#: src/location-manual.c:70
+msgid ""
+" lat=N\t\tLatitude\n"
+" lon=N\t\tLongitude\n"
+msgstr ""
+
+#: src/location-manual.c:84
+msgid "Malformed argument.\n"
+msgstr ""
+
+#: src/location-manual.c:95
+msgid "Too many arguments.\n"
+msgstr ""
+
+#: src/gtk-redshift/statusicon.py:61 src/gtk-redshift/rsappindicator.py:70
msgid "Toggle"
msgstr ""
diff --git a/po/ru.po b/po/ru.po
index 025a3d9..ac4a351 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: redshift\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/redshift\n"
-"POT-Creation-Date: 2010-06-10 20:13+0200\n"
+"POT-Creation-Date: 2010-06-13 21:58+0200\n"
"PO-Revision-Date: 2010-06-10 12:48+0000\n"
"Last-Translator: Gregory Petrosyan <gregory.petrosyan@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n"
@@ -322,27 +322,27 @@ msgstr ""
msgid " screen=N\tX screen to apply adjustments to\n"
msgstr ""
-#: src/gamma-w32gdi.c:57
+#: src/gamma-w32gdi.c:59
msgid "Unable to open device context.\n"
msgstr ""
-#: src/gamma-w32gdi.c:64
+#: src/gamma-w32gdi.c:66
msgid "Display device does not support gamma ramps.\n"
msgstr ""
-#: src/gamma-w32gdi.c:80
+#: src/gamma-w32gdi.c:82
msgid "Unable to save current gamma ramp.\n"
msgstr ""
-#: src/gamma-w32gdi.c:102
+#: src/gamma-w32gdi.c:104
msgid "Adjust gamma ramps with the Windows GDI.\n"
msgstr ""
-#: src/gamma-w32gdi.c:117
+#: src/gamma-w32gdi.c:119
msgid "Unable to restore gamma ramps.\n"
msgstr ""
-#: src/gamma-w32gdi.c:142
+#: src/gamma-w32gdi.c:144
msgid "Unable to set gamma ramps.\n"
msgstr ""
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..c07aea3
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,55 @@
+
+SUBDIRS = gtk-redshift
+
+# I18n
+localedir = $(datadir)/locale
+INCLUDES = -DLOCALEDIR=\"$(localedir)\"
+
+# redshift Program
+bin_PROGRAMS = redshift
+
+redshift_SOURCES = \
+ redshift.c \
+ colorramp.c colorramp.h \
+ solar.c solar.h \
+ systemtime.c systemtime.h \
+ location-manual.c location-manual.h
+
+EXTRA_redshift_SOURCES = \
+ gamma-randr.c gamma-randr.h \
+ gamma-vidmode.c gamma-vidmode.h \
+ gamma-w32gdi.c gamma-w32gdi.h \
+ location-gnome-clock.c location-gnome-clock.h
+
+AM_CFLAGS =
+redshift_LDADD = @LIBINTL@
+EXTRA_DIST =
+
+if ENABLE_RANDR
+redshift_SOURCES += gamma-randr.c gamma-randr.h
+AM_CFLAGS += $(XCB_CFLAGS) $(XCB_RANDR_CFLAGS)
+redshift_LDADD += \
+ $(XCB_LIBS) $(XCB_CFLAGS) \
+ $(XCB_RANDR_LIBS) $(XCB_RANDR_CFLAGS)
+endif
+
+if ENABLE_VIDMODE
+redshift_SOURCES += gamma-vidmode.c gamma-vidmode.h
+AM_CFLAGS += $(X11_CFLAGS) $(XF86VM_CFLAGS)
+redshift_LDADD += \
+ $(X11_LIBS) $(X11_CFLAGS) \
+ $(XF86VM_LIBS) $(XF86VM_CFLAGS)
+endif
+
+if ENABLE_WINGDI
+redshift_SOURCES += gamma-w32gdi.c gamma-w32gdi.h
+redshift_LDADD += -lgdi32
+endif
+
+if ENABLE_GNOME_CLOCK
+redshift_SOURCES += location-gnome-clock.c location-gnome-clock.h
+AM_CFLAGS += $(GLIB_CFLAGS) $(GCONF_CFLAGS)
+redshift_LDADD += \
+ $(GLIB_LIBS) $(GLIB_CFLAGS) \
+ $(GCONF_LIBS) $(GCONF_CFLAGS)
+endif
diff --git a/src/colorramp.c b/src/colorramp.c
index 9bc3b94..a154a9e 100644
--- a/src/colorramp.c
+++ b/src/colorramp.c
@@ -17,8 +17,6 @@
Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
*/
-#include <stdio.h>
-#include <stdlib.h>
#include <stdint.h>
#include <math.h>
diff --git a/src/randr.c b/src/gamma-randr.c
index 7c05b26..66d5c48 100644
--- a/src/randr.c
+++ b/src/gamma-randr.c
@@ -1,4 +1,4 @@
-/* randr.c -- X RandR gamma adjustment source
+/* gamma-randr.c -- X RANDR gamma adjustment source
This file is part of Redshift.
Redshift is free software: you can redistribute it and/or modify
@@ -19,15 +19,20 @@
#include <stdio.h>
#include <stdlib.h>
+#include <stdint.h>
#include <string.h>
-#include <libintl.h>
-#define _(s) gettext(s)
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(s) gettext(s)
+#else
+# define _(s) s
+#endif
#include <xcb/xcb.h>
#include <xcb/randr.h>
-#include "randr.h"
+#include "gamma-randr.h"
#include "colorramp.h"
@@ -36,15 +41,19 @@
int
-randr_init(randr_state_t *state, int screen_num)
+randr_init(randr_state_t *state)
{
+ /* Initialize state. */
+ state->screen_num = -1;
+ state->crtc_num = -1;
+
+ state->crtc_count = 0;
+ state->crtcs = NULL;
+
xcb_generic_error_t *error;
/* Open X server connection */
- int preferred_screen;
- state->conn = xcb_connect(NULL, &preferred_screen);
-
- if (screen_num < 0) screen_num = preferred_screen;
+ state->conn = xcb_connect(NULL, &state->preferred_screen);
/* Query RandR version */
xcb_randr_query_version_cookie_t ver_cookie =
@@ -71,6 +80,17 @@ randr_init(randr_state_t *state, int screen_num)
free(ver_reply);
+ return 0;
+}
+
+int
+randr_start(randr_state_t *state)
+{
+ xcb_generic_error_t *error;
+
+ int screen_num = state->screen_num;
+ if (screen_num < 0) screen_num = state->preferred_screen;
+
/* Get screen */
const xcb_setup_t *setup = xcb_get_setup(state->conn);
xcb_screen_iterator_t iter = xcb_setup_roots_iterator(setup);
@@ -87,7 +107,6 @@ randr_init(randr_state_t *state, int screen_num)
if (state->screen == NULL) {
fprintf(stderr, _("Screen %i could not be found.\n"),
screen_num);
- xcb_disconnect(state->conn);
return -1;
}
@@ -104,15 +123,14 @@ randr_init(randr_state_t *state, int screen_num)
fprintf(stderr, _("`%s' returned error %d\n"),
"RANDR Get Screen Resources Current",
error->error_code);
- xcb_disconnect(state->conn);
return -1;
}
state->crtc_count = res_reply->num_crtcs;
- state->crtcs = malloc(state->crtc_count * sizeof(randr_crtc_state_t));
+ state->crtcs = calloc(state->crtc_count, sizeof(randr_crtc_state_t));
if (state->crtcs == NULL) {
perror("malloc");
- xcb_disconnect(state->conn);
+ state->crtc_count = 0;
return -1;
}
@@ -144,7 +162,6 @@ randr_init(randr_state_t *state, int screen_num)
fprintf(stderr, _("`%s' returned error %d\n"),
"RANDR Get CRTC Gamma Size",
error->error_code);
- xcb_disconnect(state->conn);
return -1;
}
@@ -156,7 +173,6 @@ randr_init(randr_state_t *state, int screen_num)
if (ramp_size == 0) {
fprintf(stderr, _("Gamma ramp size too small: %i\n"),
ramp_size);
- xcb_disconnect(state->conn);
return -1;
}
@@ -171,7 +187,6 @@ randr_init(randr_state_t *state, int screen_num)
if (error) {
fprintf(stderr, _("`%s' returned error %d\n"),
"RANDR Get CRTC Gamma", error->error_code);
- xcb_disconnect(state->conn);
return -1;
}
@@ -188,7 +203,6 @@ randr_init(randr_state_t *state, int screen_num)
if (state->crtcs[i].saved_ramps == NULL) {
perror("malloc");
free(gamma_get_reply);
- xcb_disconnect(state->conn);
return -1;
}
@@ -248,45 +262,111 @@ randr_free(randr_state_t *state)
xcb_disconnect(state->conn);
}
+void
+randr_print_help(FILE *f)
+{
+ fputs(_("Adjust gamma ramps with the X RANDR extension.\n"), f);
+ fputs("\n", f);
+
+ /* TRANSLATORS: RANDR help output
+ left column must not be translated */
+ fputs(_(" screen=N\tX screen to apply adjustments to\n"
+ " crtc=N\tCRTC to apply adjustments to\n"), f);
+ fputs("\n", f);
+}
+
int
-randr_set_temperature(randr_state_t *state, int temp, float gamma[3])
+randr_set_option(randr_state_t *state, const char *key, const char *value)
{
- xcb_generic_error_t *error;
+ if (key == NULL) {
+ fprintf(stderr, _("Missing value for parameter: `%s'.\n"),
+ value);
+ return -1;
+ }
- /* Set temperature on all CRTCs */
- for (int i = 0; i < state->crtc_count; i++) {
- xcb_randr_crtc_t crtc = state->crtcs[i].crtc;
- unsigned int ramp_size = state->crtcs[i].ramp_size;
+ if (strcasecmp(key, "screen") == 0) {
+ state->screen_num = atoi(value);
+ } else if (strcasecmp(key, "crtc") == 0) {
+ state->crtc_num = atoi(value);
+ } else {
+ fprintf(stderr, _("Unknown method parameter: `%s'.\n"), key);
+ return -1;
+ }
- /* Create new gamma ramps */
- uint16_t *gamma_ramps = malloc(3*ramp_size*sizeof(uint16_t));
- if (gamma_ramps == NULL) {
- perror("malloc");
- return -1;
+ return 0;
+}
+
+static int
+randr_set_temperature_for_crtc(randr_state_t *state, int crtc_num, int temp,
+ float gamma[3])
+{
+ xcb_generic_error_t *error;
+
+ if (crtc_num >= state->crtc_count || crtc_num < 0) {
+ fprintf(stderr, _("CRTC %d does not exist. "),
+ state->crtc_num);
+ if (state->crtc_count > 1) {
+ fprintf(stderr, _("Valid CRTCs are [0-%d].\n"),
+ state->crtc_count-1);
+ } else {
+ fprintf(stderr, _("Only CRTC 0 exists.\n"));
}
- uint16_t *gamma_r = &gamma_ramps[0*ramp_size];
- uint16_t *gamma_g = &gamma_ramps[1*ramp_size];
- uint16_t *gamma_b = &gamma_ramps[2*ramp_size];
+ return -1;
+ }
- colorramp_fill(gamma_r, gamma_g, gamma_b, ramp_size,
- temp, gamma);
+ xcb_randr_crtc_t crtc = state->crtcs[crtc_num].crtc;
+ unsigned int ramp_size = state->crtcs[crtc_num].ramp_size;
- /* Set new gamma ramps */
- xcb_void_cookie_t gamma_set_cookie =
- xcb_randr_set_crtc_gamma_checked(state->conn, crtc,
- ramp_size, gamma_r,
- gamma_g, gamma_b);
- error = xcb_request_check(state->conn, gamma_set_cookie);
+ /* Create new gamma ramps */
+ uint16_t *gamma_ramps = malloc(3*ramp_size*sizeof(uint16_t));
+ if (gamma_ramps == NULL) {
+ perror("malloc");
+ return -1;
+ }
- if (error) {
- fprintf(stderr, _("`%s' returned error %d\n"),
- "RANDR Set CRTC Gamma", error->error_code);
- free(gamma_ramps);
- return -1;
- }
+ uint16_t *gamma_r = &gamma_ramps[0*ramp_size];
+ uint16_t *gamma_g = &gamma_ramps[1*ramp_size];
+ uint16_t *gamma_b = &gamma_ramps[2*ramp_size];
+
+ colorramp_fill(gamma_r, gamma_g, gamma_b, ramp_size,
+ temp, gamma);
+ /* Set new gamma ramps */
+ xcb_void_cookie_t gamma_set_cookie =
+ xcb_randr_set_crtc_gamma_checked(state->conn, crtc,
+ ramp_size, gamma_r,
+ gamma_g, gamma_b);
+ error = xcb_request_check(state->conn, gamma_set_cookie);
+
+ if (error) {
+ fprintf(stderr, _("`%s' returned error %d\n"),
+ "RANDR Set CRTC Gamma", error->error_code);
free(gamma_ramps);
+ return -1;
+ }
+
+ free(gamma_ramps);
+
+ return 0;
+}
+
+int
+randr_set_temperature(randr_state_t *state, int temp, float gamma[3])
+{
+ int r;
+
+ /* If no CRTC number has been specified,
+ set temperature on all CRTCs. */
+ if (state->crtc_num < 0) {
+ for (int i = 0; i < state->crtc_count; i++) {
+ r = randr_set_temperature_for_crtc(state, i,
+ temp, gamma);
+ if (r < 0) return -1;
+ }
+ } else {
+ return randr_set_temperature_for_crtc(state, state->crtc_num,
+ temp, gamma);
}
return 0;
diff --git a/src/randr.h b/src/gamma-randr.h
index 94d653f..4ccad8f 100644
--- a/src/randr.h
+++ b/src/gamma-randr.h
@@ -1,4 +1,4 @@
-/* randr.h -- X RandR gamma adjustment header
+/* gamma-randr.h -- X RANDR gamma adjustment header
This file is part of Redshift.
Redshift is free software: you can redistribute it and/or modify
@@ -17,14 +17,18 @@
Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
*/
-#ifndef _REDSHIFT_RANDR_H
-#define _REDSHIFT_RANDR_H
+#ifndef _REDSHIFT_GAMMA_RANDR_H
+#define _REDSHIFT_GAMMA_RANDR_H
+#include <stdio.h>
#include <stdint.h>
#include <xcb/xcb.h>
#include <xcb/randr.h>
+#include "redshift.h"
+
+
typedef struct {
xcb_randr_crtc_t crtc;
unsigned int ramp_size;
@@ -34,14 +38,23 @@ typedef struct {
typedef struct {
xcb_connection_t *conn;
xcb_screen_t *screen;
+ int preferred_screen;
+ int screen_num;
+ int crtc_num;
unsigned int crtc_count;
randr_crtc_state_t *crtcs;
} randr_state_t;
-int randr_init(randr_state_t *state, int screen_num);
+int randr_init(randr_state_t *state);
+int randr_start(randr_state_t *state);
void randr_free(randr_state_t *state);
+
+void randr_print_help(FILE *f);
+int randr_set_option(randr_state_t *state, const char *key, const char *value);
+
void randr_restore(randr_state_t *state);
int randr_set_temperature(randr_state_t *state, int temp, float gamma[3]);
-#endif /* ! _REDSHIFT_RANDR_H */
+
+#endif /* ! _REDSHIFT_GAMMA_RANDR_H */
diff --git a/src/vidmode.c b/src/gamma-vidmode.c
index 4da1831..e6b9412 100644
--- a/src/vidmode.c
+++ b/src/gamma-vidmode.c
@@ -1,4 +1,4 @@
-/* vidmode.c -- X VidMode gamma adjustment source
+/* gamma-vidmode.c -- X VidMode gamma adjustment source
This file is part of Redshift.
Redshift is free software: you can redistribute it and/or modify
@@ -20,21 +20,27 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
+#include <string.h>
-#include <libintl.h>
-#define _(s) gettext(s)
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(s) gettext(s)
+#else
+# define _(s) s
+#endif
#include <X11/Xlib.h>
#include <X11/extensions/xf86vmode.h>
-#include "vidmode.h"
+#include "gamma-vidmode.h"
#include "colorramp.h"
int
-vidmode_init(vidmode_state_t *state, int screen_num)
+vidmode_init(vidmode_state_t *state)
{
- int r;
+ state->screen_num = -1;
+ state->saved_ramps = NULL;
/* Open display */
state->display = XOpenDisplay(NULL);
@@ -44,6 +50,15 @@ vidmode_init(vidmode_state_t *state, int screen_num)
return -1;
}
+ return 0;
+}
+
+int
+vidmode_start(vidmode_state_t *state)
+{
+ int r;
+ int screen_num = state->screen_num;
+
if (screen_num < 0) screen_num = DefaultScreen(state->display);
state->screen_num = screen_num;
@@ -111,6 +126,37 @@ vidmode_free(vidmode_state_t *state)
}
void
+vidmode_print_help(FILE *f)
+{
+ fputs(_("Adjust gamma ramps with the X VidMode extension.\n"), f);
+ fputs("\n", f);
+
+ /* TRANSLATORS: VidMode help output
+ left column must not be translated */
+ fputs(_(" screen=N\tX screen to apply adjustments to\n"), f);
+ fputs("\n", f);
+}
+
+int
+vidmode_set_option(vidmode_state_t *state, const char *key, const char *value)
+{
+ if (key == NULL) {
+ fprintf(stderr, _("Missing value for parameter: `%s'.\n"),
+ key);
+ return -1;
+ }
+
+ if (strcasecmp(key, "screen") == 0) {
+ state->screen_num = atoi(value);
+ } else {
+ fprintf(stderr, _("Unknown method parameter: `%s'.\n"), key);
+ return -1;
+ }
+
+ return 0;
+}
+
+void
vidmode_restore(vidmode_state_t *state)
{
uint16_t *gamma_r = &state->saved_ramps[0*state->ramp_size];
diff --git a/src/vidmode.h b/src/gamma-vidmode.h
index 9503441..18a4a88 100644
--- a/src/vidmode.h
+++ b/src/gamma-vidmode.h
@@ -1,4 +1,4 @@
-/* vidmode.h -- X VidMode gamma adjustment header
+/* gamma-vidmode.h -- X VidMode gamma adjustment header
This file is part of Redshift.
Redshift is free software: you can redistribute it and/or modify
@@ -17,9 +17,10 @@
Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
*/
-#ifndef _REDSHIFT_VIDMODE_H
-#define _REDSHIFT_VIDMODE_H
+#ifndef _REDSHIFT_GAMMA_VIDMODE_H
+#define _REDSHIFT_GAMMA_VIDMODE_H
+#include <stdio.h>
#include <stdint.h>
#include <X11/Xlib.h>
@@ -31,9 +32,17 @@ typedef struct {
uint16_t *saved_ramps;
} vidmode_state_t;
-int vidmode_init(vidmode_state_t *state, int screen_num);
+
+int vidmode_init(vidmode_state_t *state);
+int vidmode_start(vidmode_state_t *state);
void vidmode_free(vidmode_state_t *state);
+
+void vidmode_print_help(FILE *f);
+int vidmode_set_option(vidmode_state_t *state, const char *key,
+ const char *value);
+
void vidmode_restore(vidmode_state_t *state);
int vidmode_set_temperature(vidmode_state_t *state, int temp, float gamma[3]);
-#endif /* ! _REDSHIFT_VIDMODE_H */
+
+#endif /* ! _REDSHIFT_GAMMA_VIDMODE_H */
diff --git a/src/gamma-w32gdi.c b/src/gamma-w32gdi.c
new file mode 100644
index 0000000..aa2474d
--- /dev/null
+++ b/src/gamma-w32gdi.c
@@ -0,0 +1,152 @@
+/* gamma-w32gdi.c -- Windows GDI gamma adjustment source
+ This file is part of Redshift.
+
+ Redshift is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Redshift is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifndef WINVER
+# define WINVER 0x0500
+#endif
+#include <windows.h>
+#include <wingdi.h>
+
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(s) gettext(s)
+#else
+# define _(s) s
+#endif
+
+#include "gamma-w32gdi.h"
+#include "colorramp.h"
+
+#define GAMMA_RAMP_SIZE 256
+
+
+int
+w32gdi_init(w32gdi_state_t *state)
+{
+ state->saved_ramps = NULL;
+ state->hDC = NULL;
+
+ return 0;
+}
+
+int
+w32gdi_start(w32gdi_state_t *state)
+{
+ BOOL r;
+
+ /* Open device context */
+ state->hDC = GetDC(NULL);
+ if (state->hDC == NULL) {
+ fputs(_("Unable to open device context.\n"), stderr);
+ return -1;
+ }
+
+ /* Check support for gamma ramps */
+ int cmcap = GetDeviceCaps(state->hDC, COLORMGMTCAPS);
+ if (cmcap != CM_GAMMA_RAMP) {
+ fputs(_("Display device does not support gamma ramps.\n"),
+ stderr);
+ return -1;
+ }
+
+ /* Allocate space for saved gamma ramps */
+ state->saved_ramps = malloc(3*GAMMA_RAMP_SIZE*sizeof(WORD));
+ if (state->saved_ramps == NULL) {
+ perror("malloc");
+ ReleaseDC(NULL, state->hDC);
+ return -1;
+ }
+
+ /* Save current gamma ramps so we can restore them at program exit */
+ r = GetDeviceGammaRamp(state->hDC, state->saved_ramps);
+ if (!r) {
+ fputs(_("Unable to save current gamma ramp.\n"), stderr);
+ ReleaseDC(NULL, state->hDC);
+ return -1;
+ }
+
+ return 0;
+}
+
+void
+w32gdi_free(w32gdi_state_t *state)
+{
+ /* Free saved ramps */
+ free(state->saved_ramps);
+
+ /* Release device context */
+ if (state->hDC != NULL) ReleaseDC(NULL, state->hDC);
+}
+
+
+void
+w32gdi_print_help(FILE *f)
+{
+ fputs(_("Adjust gamma ramps with the Windows GDI.\n"), f);
+ fputs("\n", f);
+}
+
+int
+w32gdi_set_option(w32gdi_state_t *state, const char *key, const char *value)
+{
+ return -1;
+}
+
+void
+w32gdi_restore(w32gdi_state_t *state)
+{
+ /* Restore gamma ramps */
+ BOOL r = SetDeviceGammaRamp(state->hDC, state->saved_ramps);
+ if (!r) fputs(_("Unable to restore gamma ramps.\n"), stderr);
+}
+
+int
+w32gdi_set_temperature(w32gdi_state_t *state, int temp, float gamma[3])
+{
+ BOOL r;
+
+ /* Create new gamma ramps */
+ WORD *gamma_ramps = malloc(3*GAMMA_RAMP_SIZE*sizeof(WORD));
+ if (gamma_ramps == NULL) {
+ perror("malloc");
+ return -1;
+ }
+
+ WORD *gamma_r = &gamma_ramps[0*GAMMA_RAMP_SIZE];
+ WORD *gamma_g = &gamma_ramps[1*GAMMA_RAMP_SIZE];
+ WORD *gamma_b = &gamma_ramps[2*GAMMA_RAMP_SIZE];
+
+ colorramp_fill(gamma_r, gamma_g, gamma_b, GAMMA_RAMP_SIZE,
+ temp, gamma);
+
+ /* Set new gamma ramps */
+ r = SetDeviceGammaRamp(state->hDC, gamma_ramps);
+ if (!r) {
+ fputs(_("Unable to set gamma ramps.\n"), stderr);
+ free(gamma_ramps);
+ return -1;
+ }
+
+ free(gamma_ramps);
+
+ return 0;
+}
diff --git a/src/gamma-w32gdi.h b/src/gamma-w32gdi.h
new file mode 100644
index 0000000..6cb9799
--- /dev/null
+++ b/src/gamma-w32gdi.h
@@ -0,0 +1,45 @@
+/* gamma-w32gdi.h -- Windows GDI gamma adjustment header
+ This file is part of Redshift.
+
+ Redshift is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Redshift is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+*/
+
+#ifndef _REDSHIFT_GAMMA_W32GDI_H
+#define _REDSHIFT_GAMMA_W32GDI_H
+
+#include <windows.h>
+#include <wingdi.h>
+
+
+typedef struct {
+ HDC hDC;
+ WORD *saved_ramps;
+} w32gdi_state_t;
+
+
+int w32gdi_init(w32gdi_state_t *state);
+int w32gdi_start(w32gdi_state_t *state);
+void w32gdi_free(w32gdi_state_t *state);
+
+void w32gdi_print_help(FILE *f);
+int w32gdi_set_option(w32gdi_state_t *state, const char *key,
+ const char *value);
+
+void w32gdi_restore(w32gdi_state_t *state);
+int w32gdi_set_temperature(w32gdi_state_t *state, int temp, float gamma[3]);
+
+
+#endif /* ! _REDSHIFT_GAMMA_W32GDI_H */
diff --git a/src/gtk-redshift/Makefile.am b/src/gtk-redshift/Makefile.am
new file mode 100644
index 0000000..ddeafd6
--- /dev/null
+++ b/src/gtk-redshift/Makefile.am
@@ -0,0 +1,40 @@
+
+if ENABLE_STATUSICON
+gui_module=statusicon
+gtk_redshift_PYTHON = \
+ __init__.py \
+ statusicon.py
+nodist_gtk_redshift_PYTHON = \
+ defs.py
+gtk_redshiftdir = $(pythondir)/gtk_redshift
+
+bin_SCRIPTS = gtk-redshift
+endif
+
+if ENABLE_APPINDICATOR
+gui_module=rsappindicator
+gtk_redshift_PYTHON = \
+ __init__.py \
+ rsappindicator.py
+nodist_gtk_redshift_PYTHON = \
+ defs.py
+gtk_redshiftdir = $(pythondir)/gtk_redshift
+
+bin_SCRIPTS = gtk-redshift
+endif
+
+EXTRA_DIST = gtk-redshift.in \
+ defs.py.in
+
+CLEANFILES = defs.py \
+ gtk-redshift
+
+
+# Main GUI script
+gtk-redshift: gtk-redshift.in
+ sed -e "s|\@gui_module\@|$(gui_module)|g" $< > $@
+
+# Local python definitions
+defs.py: defs.py.in
+ sed -e "s|\@bindir\@|$(bindir)|g" \
+ -e "s|\@localedir\@|$(localedir)|g" $< > $@
diff --git a/src/gtk-redshift/__init__.py b/src/gtk-redshift/__init__.py
new file mode 100644
index 0000000..51ab2ef
--- /dev/null
+++ b/src/gtk-redshift/__init__.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+# __init__.py -- gtk-redshift package __init__ file
+# This file is part of Redshift.
+
+# Redshift is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# Redshift is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+# Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
diff --git a/src/gtk-redshift/defs.py.in b/src/gtk-redshift/defs.py.in
index 91eccf9..d3ca5ed 100644
--- a/src/gtk-redshift/defs.py.in
+++ b/src/gtk-redshift/defs.py.in
@@ -19,3 +19,4 @@
LOCALEDIR = '@localedir@'
+BINDIR = '@bindir@'
diff --git a/src/gtk-redshift/gtk-redshift.in b/src/gtk-redshift/gtk-redshift.in
new file mode 100644
index 0000000..120e05c
--- /dev/null
+++ b/src/gtk-redshift/gtk-redshift.in
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+# gtk-redshift -- GTK+ Redshift launcher script
+# This file is part of Redshift.
+
+# Redshift is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# Redshift is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+# Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+
+
+if __name__ == '__main__':
+ from gtk_redshift.@gui_module@ import run
+ run()
diff --git a/src/gtk-redshift/rsappindicator.py b/src/gtk-redshift/rsappindicator.py
new file mode 100644
index 0000000..59fa725
--- /dev/null
+++ b/src/gtk-redshift/rsappindicator.py
@@ -0,0 +1,99 @@
+#!/usr/bin/env python
+# rsappindicator.py -- Application Panel Indicator source
+# This file is part of Redshift.
+
+# Redshift is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# Redshift is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+# Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+
+
+import sys, os
+import subprocess, signal
+import gettext
+
+import pygtk
+pygtk.require("2.0")
+
+import gtk, glib
+try:
+ import appindicator
+except ImportError as ie:
+ # No module named appindicator
+ sys.exit(str(ie))
+
+import defs
+
+
+def run():
+ # Internationalisation
+ gettext.bindtextdomain('redshift', defs.LOCALEDIR)
+ gettext.textdomain('redshift')
+ _ = gettext.gettext
+
+ # Start redshift with arguments from the command line
+ args = sys.argv[1:]
+ args.insert(0, os.path.join(defs.BINDIR, 'redshift'))
+ process = subprocess.Popen(args)
+
+ try:
+ # Create status icon
+ indicator = appindicator.Indicator ("redshift",
+ "redshift",
+ appindicator.CATEGORY_APPLICATION_STATUS)
+ indicator.set_status (appindicator.STATUS_ACTIVE)
+
+ def toggle_cb(widget, data=None):
+ if indicator.get_icon() == 'redshift':
+ indicator.set_icon('redshift-idle')
+ else:
+ indicator.set_icon('redshift')
+ process.send_signal(signal.SIGUSR1)
+
+ def destroy_cb(widget, data=None):
+ gtk.main_quit()
+ return False
+
+ # Create popup menu
+ status_menu = gtk.Menu()
+
+ toggle_item = gtk.ImageMenuItem(_('Toggle'))
+ toggle_item.connect('activate', toggle_cb)
+ status_menu.append(toggle_item)
+
+ quit_item = gtk.ImageMenuItem(gtk.STOCK_QUIT)
+ quit_item.connect('activate', destroy_cb)
+ status_menu.append(quit_item)
+
+ status_menu.show_all()
+
+ # Set the menu
+ indicator.set_menu(status_menu)
+
+ def child_cb(pid, cond, data=None):
+ sys.exit(-1)
+
+ # Add watch on child process
+ glib.child_watch_add(process.pid, child_cb)
+
+ # Run main loop
+ gtk.main()
+
+ except KeyboardInterrupt:
+ # Ignore user interruption
+ pass
+
+ finally:
+ # Always terminate redshift
+ process.terminate()
+ process.wait()
diff --git a/src/gtk-redshift/gtk-redshift.py b/src/gtk-redshift/statusicon.py
index a737154..2295963 100755..100644
--- a/src/gtk-redshift/gtk-redshift.py
+++ b/src/gtk-redshift/statusicon.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-# gtk-redshift -- GTK+ status icon source
+# statusicon.py -- GTK+ status icon source
# This file is part of Redshift.
# Redshift is free software: you can redistribute it and/or modify
@@ -18,7 +18,7 @@
# Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
-import sys
+import sys, os
import subprocess, signal
import gettext
@@ -30,7 +30,7 @@ import gtk, glib
import defs
-if __name__ == '__main__':
+def run():
# Internationalisation
gettext.bindtextdomain('redshift', defs.LOCALEDIR)
gettext.textdomain('redshift')
@@ -38,7 +38,7 @@ if __name__ == '__main__':
# Start redshift with arguments from the command line
args = sys.argv[1:]
- args.insert(0, 'redshift')
+ args.insert(0, os.path.join(defs.BINDIR, 'redshift'))
process = subprocess.Popen(args)
try:
diff --git a/src/location-gnome-clock.c b/src/location-gnome-clock.c
new file mode 100644
index 0000000..10b95eb
--- /dev/null
+++ b/src/location-gnome-clock.c
@@ -0,0 +1,159 @@
+/* location-gnome-clock.c -- GNOME Panel Clock location provider source
+ This file is part of Redshift.
+
+ Redshift is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Redshift is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+*/
+
+#include <stdio.h>
+#include <string.h>
+
+#include <gconf/gconf-client.h>
+
+#include "location-gnome-clock.h"
+
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(s) gettext(s)
+#else
+# define _(s) s
+#endif
+
+
+int
+location_gnome_clock_init(location_gnome_clock_state_t *state)
+{
+ g_type_init();
+
+ GError *error = NULL;
+ GConfClient *client = gconf_client_get_default();
+
+ GSList *applets = gconf_client_all_dirs(client, "/apps/panel/applets",
+ &error);
+ if (error) {
+ fputs(_("Cannot list dirs in `/apps/panel/applets'.\n"),
+ stderr);
+ g_object_unref(client);
+ return -1;
+ }
+
+ char *cities_key = NULL;
+ for (GSList *applet = applets; applet != NULL;
+ applet = g_slist_next(applet)) {
+ char *path = applet->data;
+ if (cities_key == NULL) {
+ char *key = g_strdup_printf("%s/bonobo_iid", path);
+ char *bonobo_iid = gconf_client_get_string(client, key,
+ &error);
+
+ if (!error && bonobo_iid != NULL) {
+ if (!strcmp(bonobo_iid,
+ "OAFIID:GNOME_ClockApplet")) {
+ cities_key = g_strdup_printf(
+ "%s/prefs/cities", path);
+ }
+ g_free(bonobo_iid);
+ }
+
+ g_free(key);
+ }
+ g_free(path);
+ }
+
+ g_slist_free(applets);
+
+ if (cities_key == NULL) {
+ fputs(_("No clock applet was found.\n"), stderr);
+ g_object_unref(client);
+ return -1;
+ }
+
+ GSList *cities = gconf_client_get_list(client, cities_key,
+ GCONF_VALUE_STRING, &error);
+ if (error) {
+ fprintf(stderr, _("Error reading city list: `%s'.\n"),
+ cities_key);
+ g_free(cities_key);
+ g_object_unref(client);
+ return -1;
+ }
+
+ g_free(cities_key);
+
+ char *current_city = NULL;
+ for (GSList *city = cities; city != NULL;
+ city = g_slist_next(city)) {
+ char *city_spec = city->data;
+ char *c = strstr(city_spec, "current=\"true\"");
+ if (c) current_city = g_strdup(city_spec);
+ g_free(city->data);
+ }
+ g_slist_free(cities);
+
+ if (current_city == NULL) {
+ fputs(_("No city selected as current city.\n"), stderr);
+ return -1;
+ }
+
+ char *lat_str = strstr(current_city, "latitude=\"");
+ char *lon_str = strstr(current_city, "longitude=\"");
+ if (lat_str == NULL || lon_str == NULL) {
+ fputs(_("Location not specified for city.\n"), stderr);
+ return -1;
+ }
+
+ char *lat_num_str = lat_str + strlen("latitude=\"");
+ char *lon_num_str = lon_str + strlen("longitude=\"");
+
+ state->lat = g_ascii_strtod(lat_num_str, NULL);
+ state->lon = g_ascii_strtod(lon_num_str, NULL);
+
+ return 0;
+}
+
+int
+location_gnome_clock_start(location_gnome_clock_state_t *state)
+{
+ return 0;
+}
+
+void
+location_gnome_clock_free(location_gnome_clock_state_t *state)
+{
+}
+
+void
+location_gnome_clock_print_help(FILE *f)
+{
+ fputs(_("Use the location as set in the GNOME Clock applet.\n"), f);
+ fputs("\n", f);
+}
+
+int
+location_gnome_clock_set_option(location_gnome_clock_state_t *state,
+ const char *key, const char *value)
+{
+ return -1;
+}
+
+int
+location_gnome_clock_get_location(location_gnome_clock_state_t *state,
+ float *lat, float *lon)
+{
+ *lat = state->lat;
+ *lon = state->lon;
+
+ return 0;
+}
diff --git a/src/location-gnome-clock.h b/src/location-gnome-clock.h
new file mode 100644
index 0000000..052ce91
--- /dev/null
+++ b/src/location-gnome-clock.h
@@ -0,0 +1,44 @@
+/* location-gnome-clock.h -- GNOME Panel Clock location provider header
+ This file is part of Redshift.
+
+ Redshift is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Redshift is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+*/
+
+#ifndef _REDSHIFT_LOCATION_GNOME_CLOCK_H
+#define _REDSHIFT_LOCATION_GNOME_CLOCK_H
+
+#include <stdio.h>
+
+
+typedef struct {
+ float lat;
+ float lon;
+} location_gnome_clock_state_t;
+
+
+int location_gnome_clock_init(location_gnome_clock_state_t *state);
+int location_gnome_clock_start(location_gnome_clock_state_t *state);
+void location_gnome_clock_free(location_gnome_clock_state_t *state);
+
+void location_gnome_clock_print_help(FILE *f);
+int location_gnome_clock_set_option(location_gnome_clock_state_t *state,
+ const char *key, const char *value);
+
+int location_gnome_clock_get_location(location_gnome_clock_state_t *state,
+ float *lat, float *lon);
+
+
+#endif /* ! _REDSHIFT_LOCATION_GNOME_CLOCK_H */
diff --git a/src/location-manual.c b/src/location-manual.c
new file mode 100644
index 0000000..1f68b6c
--- /dev/null
+++ b/src/location-manual.c
@@ -0,0 +1,113 @@
+/* location-manual.c -- Manual location provider source
+ This file is part of Redshift.
+
+ Redshift is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Redshift is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <errno.h>
+
+#include "location-manual.h"
+
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(s) gettext(s)
+#else
+# define _(s) s
+#endif
+
+
+int
+location_manual_init(location_manual_state_t *state)
+{
+ state->lat = NAN;
+ state->lon = NAN;
+
+ return 0;
+}
+
+int
+location_manual_start(location_manual_state_t *state)
+{
+ /* Latitude and longitude must be set */
+ if (isnan(state->lat) || isnan(state->lon)) {
+ fputs(_("Latitude and longitude must be set.\n"), stderr);
+ exit(EXIT_FAILURE);
+ }
+
+ return 0;
+}
+
+void
+location_manual_free(location_manual_state_t *state)
+{
+}
+
+void
+location_manual_print_help(FILE *f)
+{
+ fputs(_("Specify location manually.\n"), f);
+ fputs("\n", f);
+
+ /* TRANSLATORS: Manual location help output
+ left column must not be translated */
+ fputs(_(" lat=N\t\tLatitude\n"
+ " lon=N\t\tLongitude\n"), f);
+ fputs("\n", f);
+}
+
+int
+location_manual_set_option(location_manual_state_t *state, const char *key,
+ const char *value)
+{
+ /* Parse float value */
+ char *end;
+ errno = 0;
+ float v = strtof(value, &end);
+ if (errno != 0 || *end != '\0') {
+ fputs(_("Malformed argument.\n"), stderr);
+ return -1;
+ }
+
+ if ((key == NULL && isnan(state->lat)) ||
+ (key != NULL && strcasecmp(key, "lat") == 0)) {
+ state->lat = v;
+ } else if ((key == NULL && isnan(state->lon)) ||
+ (key != NULL && strcasecmp(key, "lon") == 0)) {
+ state->lon = v;
+ } else if (key == NULL) {
+ fputs(_("Too many arguments.\n"), stderr);
+ return -1;
+ } else {
+ fprintf(stderr, _("Unknown method parameter: `%s'.\n"), key);
+ return -1;
+ }
+
+ return 0;
+}
+
+int
+location_manual_get_location(location_manual_state_t *state, float *lat,
+ float *lon)
+{
+ *lat = state->lat;
+ *lon = state->lon;
+
+ return 0;
+}
diff --git a/src/location-manual.h b/src/location-manual.h
new file mode 100644
index 0000000..13c77da
--- /dev/null
+++ b/src/location-manual.h
@@ -0,0 +1,44 @@
+/* location-manual.h -- Manual location provider header
+ This file is part of Redshift.
+
+ Redshift is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Redshift is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+*/
+
+#ifndef _REDSHIFT_LOCATION_MANUAL_H
+#define _REDSHIFT_LOCATION_MANUAL_H
+
+#include <stdio.h>
+
+
+typedef struct {
+ float lat;
+ float lon;
+} location_manual_state_t;
+
+
+int location_manual_init(location_manual_state_t *state);
+int location_manual_start(location_manual_state_t *state);
+void location_manual_free(location_manual_state_t *state);
+
+void location_manual_print_help(FILE *f);
+int location_manual_set_option(location_manual_state_t *state,
+ const char *key, const char *value);
+
+int location_manual_get_location(location_manual_state_t *state, float *lat,
+ float *lon);
+
+
+#endif /* ! _REDSHIFT_LOCATION_MANUAL_H */
diff --git a/src/redshift.c b/src/redshift.c
index 9c3f404..18cc2c5 100644
--- a/src/redshift.c
+++ b/src/redshift.c
@@ -28,28 +28,51 @@
#include <time.h>
#include <math.h>
#include <locale.h>
-#include <sys/signal.h>
+#include <errno.h>
-#include <libintl.h>
-#define _(s) gettext(s)
+#ifdef HAVE_SYS_SIGNAL_H
+# include <sys/signal.h>
+#endif
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(s) gettext(s)
+#else
+# define _(s) s
+#endif
+
+#include "redshift.h"
#include "solar.h"
+#include "systemtime.h"
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#define MAX(x,y) ((x) > (y) ? (x) : (y))
-#if !(defined(ENABLE_RANDR) || defined(ENABLE_VIDMODE))
-# error "At least one of RANDR or VidMode must be enabled."
+#if !(defined(ENABLE_RANDR) || \
+ defined(ENABLE_VIDMODE) || \
+ defined(ENABLE_WINGDI))
+# error "At least one of RANDR, VidMode or WinGDI must be enabled."
#endif
#ifdef ENABLE_RANDR
-# include "randr.h"
+# include "gamma-randr.h"
#endif
#ifdef ENABLE_VIDMODE
-# include "vidmode.h"
+# include "gamma-vidmode.h"
+#endif
+
+#ifdef ENABLE_WINGDI
+# include "gamma-w32gdi.h"
+#endif
+
+
+#include "location-manual.h"
+
+#ifdef ENABLE_GNOME_CLOCK
+# include "location-gnome-clock.h"
#endif
@@ -61,9 +84,94 @@ typedef union {
#ifdef ENABLE_VIDMODE
vidmode_state_t vidmode;
#endif
+#ifdef ENABLE_WINGDI
+ w32gdi_state_t w32gdi;
+#endif
} gamma_state_t;
+/* Gamma adjustment method structs */
+static const gamma_method_t gamma_methods[] = {
+#ifdef ENABLE_RANDR
+ {
+ "randr",
+ (gamma_method_init_func *)randr_init,
+ (gamma_method_start_func *)randr_start,
+ (gamma_method_free_func *)randr_free,
+ (gamma_method_print_help_func *)randr_print_help,
+ (gamma_method_set_option_func *)randr_set_option,
+ (gamma_method_restore_func *)randr_restore,
+ (gamma_method_set_temperature_func *)randr_set_temperature
+ },
+#endif
+#ifdef ENABLE_VIDMODE
+ {
+ "vidmode",
+ (gamma_method_init_func *)vidmode_init,
+ (gamma_method_start_func *)vidmode_start,
+ (gamma_method_free_func *)vidmode_free,
+ (gamma_method_print_help_func *)vidmode_print_help,
+ (gamma_method_set_option_func *)vidmode_set_option,
+ (gamma_method_restore_func *)vidmode_restore,
+ (gamma_method_set_temperature_func *)vidmode_set_temperature
+ },
+#endif
+#ifdef ENABLE_WINGDI
+ {
+ "wingdi",
+ (gamma_method_init_func *)w32gdi_init,
+ (gamma_method_start_func *)w32gdi_start,
+ (gamma_method_free_func *)w32gdi_free,
+ (gamma_method_print_help_func *)w32gdi_print_help,
+ (gamma_method_set_option_func *)w32gdi_set_option,
+ (gamma_method_restore_func *)w32gdi_restore,
+ (gamma_method_set_temperature_func *)w32gdi_set_temperature
+ },
+#endif
+ { NULL }
+};
+
+
+/* Union of state data for location providers */
+typedef union {
+ location_manual_state_t manual;
+#ifdef ENABLE_GNOME_CLOCK
+ location_gnome_clock_state_t gnome_clock;
+#endif
+} location_state_t;
+
+
+/* Location provider method structs */
+static const location_provider_t location_providers[] = {
+#ifdef ENABLE_GNOME_CLOCK
+ {
+ "gnome-clock",
+ (location_provider_init_func *)location_gnome_clock_init,
+ (location_provider_start_func *)location_gnome_clock_start,
+ (location_provider_free_func *)location_gnome_clock_free,
+ (location_provider_print_help_func *)
+ location_gnome_clock_print_help,
+ (location_provider_set_option_func *)
+ location_gnome_clock_set_option,
+ (location_provider_get_location_func *)
+ location_gnome_clock_get_location
+ },
+#endif
+ {
+ "manual",
+ (location_provider_init_func *)location_manual_init,
+ (location_provider_start_func *)location_manual_start,
+ (location_provider_free_func *)location_manual_free,
+ (location_provider_print_help_func *)
+ location_manual_print_help,
+ (location_provider_set_option_func *)
+ location_manual_set_option,
+ (location_provider_get_location_func *)
+ location_manual_get_location
+ },
+ { NULL }
+};
+
/* Bounds for parameters. */
#define MIN_LAT -90.0
#define MAX_LAT 90.0
@@ -79,6 +187,9 @@ typedef union {
#define DEFAULT_NIGHT_TEMP 3700
#define DEFAULT_GAMMA 1.0
+/* The color temperature when no adjustment is applied. */
+#define NEUTRAL_TEMP 6500
+
/* Angular elevation of the sun at which the color temperature
transition period starts and ends (in degress).
Transition during twilight, and while the sun is lower than
@@ -86,6 +197,15 @@ typedef union {
#define TRANSITION_LOW SOLAR_CIVIL_TWILIGHT_ELEV
#define TRANSITION_HIGH 3.0
+/* Program modes. */
+typedef enum {
+ PROGRAM_MODE_CONTINUAL,
+ PROGRAM_MODE_ONE_SHOT,
+ PROGRAM_MODE_RESET
+} program_mode_t;
+
+
+#ifdef HAVE_SYS_SIGNAL_H
static volatile sig_atomic_t exiting = 0;
static volatile sig_atomic_t disable = 0;
@@ -104,61 +224,12 @@ sigdisable(int signo)
disable = 1;
}
+#else /* ! HAVE_SYS_SIGNAL_H */
-/* Restore saved gamma ramps with the appropriate adjustment method. */
-static void
-gamma_state_restore(gamma_state_t *state, int use_randr)
-{
- switch (use_randr) {
-#ifdef ENABLE_VIDMODE
- case 0:
- vidmode_restore(&state->vidmode);
- break;
-#endif
-#ifdef ENABLE_RANDR
- case 1:
- randr_restore(&state->randr);
- break;
-#endif
- }
-}
+static int exiting = 0;
+static int disable = 0;
-/* Free the state associated with the appropriate adjustment method. */
-static void
-gamma_state_free(gamma_state_t *state, int use_randr)
-{
- switch (use_randr) {
-#ifdef ENABLE_VIDMODE
- case 0:
- vidmode_free(&state->vidmode);
- break;
-#endif
-#ifdef ENABLE_RANDR
- case 1:
- randr_free(&state->randr);
- break;
-#endif
- }
-}
-
-/* Set temperature with the appropriate adjustment method. */
-static int
-gamma_state_set_temperature(gamma_state_t *state, int use_randr,
- int temp, float gamma[3])
-{
- switch (use_randr) {
-#ifdef ENABLE_VIDMODE
- case 0:
- return vidmode_set_temperature(&state->vidmode, temp, gamma);
-#endif
-#ifdef ENABLE_RANDR
- case 1:
- return randr_set_temperature(&state->randr, temp, gamma);
-#endif
- }
-
- return -1;
-}
+#endif /* ! HAVE_SYS_SIGNAL_H */
/* Calculate color temperature for the specified solar elevation. */
@@ -212,21 +283,170 @@ print_help(const char *program_name)
fputs("\n", stdout);
/* TRANSLATORS: help output 4
+ `list' must not be translated
no-wrap */
fputs(_(" -g R:G:B\tAdditional gamma correction to apply\n"
" -l LAT:LON\tYour current location\n"
- " -m METHOD\tMethod to use to set color temperature"
- " (randr or vidmode)\n"
+ " -l PROVIDER\tSelect provider for automatic"
+ " location updates\n"
+ " \t\t(Type `list' to see available providers)\n"
+ " -m METHOD\tMethod to use to set color temperature\n"
+ " \t\t(Type `list' to see available methods)\n"
" -o\t\tOne shot mode (do not continously adjust"
" color temperature)\n"
- " -r\t\tDisable initial temperature transition\n"
- " -s SCREEN\tX screen to apply adjustments to\n"
+ " -x\t\tReset mode (remove adjustment from screen)\n"
+ " -r\t\tDisable temperature transitions\n"
" -t DAY:NIGHT\tColor temperature to set at daytime/night\n"),
stdout);
fputs("\n", stdout);
/* TRANSLATORS: help output 5 */
- printf("Please report bugs to <%s>\n", PACKAGE_BUGREPORT);
+ printf(_("Default values:\n\n"
+ " Daytime temperature: %uK\n"
+ " Night temperature: %uK\n"),
+ DEFAULT_DAY_TEMP, DEFAULT_NIGHT_TEMP);
+
+ fputs("\n", stdout);
+
+ /* TRANSLATORS: help output 6 */
+ printf(_("Please report bugs to <%s>\n"), PACKAGE_BUGREPORT);
+}
+
+static void
+print_method_list()
+{
+ fputs(_("Available adjustment methods:\n"), stdout);
+ for (int i = 0; gamma_methods[i].name != NULL; i++) {
+ printf(" %s\n", gamma_methods[i].name);
+ }
+
+ fputs("\n", stdout);
+ fputs(_("Specify colon-separated options with"
+ " `-m METHOD:OPTIONS'.\n"), stdout);
+ /* TRANSLATORS: `help' must not be translated. */
+ fputs(_("Try `-m METHOD:help' for help.\n"), stdout);
+}
+
+static void
+print_provider_list()
+{
+ fputs(_("Available location providers:\n"), stdout);
+ for (int i = 0; location_providers[i].name != NULL; i++) {
+ printf(" %s\n", location_providers[i].name);
+ }
+
+ fputs("\n", stdout);
+ fputs(_("Specify colon-separated options with"
+ "`-l PROVIDER:OPTIONS'.\n"), stdout);
+ /* TRANSLATORS: `help' must not be translated. */
+ fputs(_("Try `-l PROVIDER:help' for help.\n"), stdout);
+}
+
+
+static int
+provider_try_start(const location_provider_t *provider,
+ location_state_t *state, char *args)
+{
+ int r;
+
+ r = provider->init(state);
+ if (r < 0) {
+ fprintf(stderr, _("Initialization of %s failed.\n"),
+ provider->name);
+ return -1;
+ }
+
+ /* Set provider options. */
+ while (args != NULL) {
+ char *next_arg = strchr(args, ':');
+ if (next_arg != NULL) *(next_arg++) = '\0';
+
+ char *key = NULL;
+ char *value = strchr(args, '=');
+ if (value != NULL) {
+ key = args;
+ *(value++) = '\0';
+ } else {
+ value = args;
+ }
+
+ r = provider->set_option(state, key, value);
+ if (r < 0) {
+ provider->free(state);
+ fprintf(stderr, _("Failed to set %s option.\n"),
+ provider->name);
+ /* TRANSLATORS: `help' must not be translated. */
+ fprintf(stderr, _("Try `-l %s:help' for more"
+ " information.\n"), provider->name);
+ return -1;
+ }
+
+ args = next_arg;
+ }
+
+ /* Start provider. */
+ r = provider->start(state);
+ if (r < 0) {
+ provider->free(state);
+ fprintf(stderr, _("Failed to start provider %s.\n"),
+ provider->name);
+ return -1;
+ }
+
+ return 0;
+}
+
+static int
+method_try_start(const gamma_method_t *method,
+ gamma_state_t *state, char *args)
+{
+ int r;
+
+ r = method->init(state);
+ if (r < 0) {
+ fprintf(stderr, _("Initialization of %s failed.\n"),
+ method->name);
+ return -1;
+ }
+
+ /* Set method options. */
+ while (args != NULL) {
+ char *next_arg = strchr(args, ':');
+ if (next_arg != NULL) *(next_arg++) = '\0';
+
+ char *key = NULL;
+ char *value = strchr(args, '=');
+ if (value != NULL) {
+ key = args;
+ *(value++) = '\0';
+ } else {
+ value = args;
+ }
+
+ r = method->set_option(state, key, value);
+ if (r < 0) {
+ method->free(state);
+ fprintf(stderr, _("Failed to set %s option.\n"),
+ method->name);
+ /* TRANSLATORS: `help' must not be translated. */
+ fprintf(stderr, _("Try -m %s:help' for more"
+ " information.\n"), method->name);
+ return -1;
+ }
+
+ args = next_arg;
+ }
+
+ /* Start method. */
+ r = method->start(state);
+ if (r < 0) {
+ method->free(state);
+ fprintf(stderr, _("Failed to start adjustment method %s.\n"),
+ method->name);
+ return -1;
+ }
+
+ return 0;
}
@@ -235,32 +455,35 @@ main(int argc, char *argv[])
{
int r;
+#ifdef ENABLE_NLS
/* Init locale */
setlocale(LC_CTYPE, "");
setlocale(LC_MESSAGES, "");
-#ifdef ENABLE_NLS
/* Internationalisation */
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
#endif
/* Initialize to defaults */
- float lat = NAN;
- float lon = NAN;
int temp_day = DEFAULT_DAY_TEMP;
int temp_night = DEFAULT_NIGHT_TEMP;
float gamma[3] = { DEFAULT_GAMMA, DEFAULT_GAMMA, DEFAULT_GAMMA };
- int use_randr = -1;
- int screen_num = -1;
+
+ const gamma_method_t *method = NULL;
+ char *method_args = NULL;
+
+ const location_provider_t *provider = NULL;
+ char *provider_args = NULL;
+
int transition = 1;
- int one_shot = 0;
+ program_mode_t mode = PROGRAM_MODE_CONTINUAL;
int verbose = 0;
char *s;
/* Parse arguments. */
int opt;
- while ((opt = getopt(argc, argv, "g:hl:m:ors:t:v")) != -1) {
+ while ((opt = getopt(argc, argv, "g:hl:m:ort:vx")) != -1) {
switch (opt) {
case 'g':
s = strchr(optarg, ':');
@@ -292,56 +515,101 @@ main(int argc, char *argv[])
exit(EXIT_SUCCESS);
break;
case 'l':
- s = strchr(optarg, ':');
- if (s == NULL) {
- fputs(_("Malformed location argument.\n"),
- stderr);
- fputs(_("Try `-h' for more information.\n"),
- stderr);
+ /* Print list of providers if argument is `list' */
+ if (strcasecmp(optarg, "list") == 0) {
+ print_provider_list();
+ exit(EXIT_SUCCESS);
+ }
+
+ char *provider_name = NULL;
+
+ /* Don't save the result of strtof(); we simply want
+ to know if optarg can be parsed as a float. */
+ errno = 0;
+ char *end;
+ strtof(optarg, &end);
+ if (errno == 0 && *end == ':') {
+ /* Use instead as arguments to `manual'. */
+ provider_name = "manual";
+ provider_args = optarg;
+ } else {
+ /* Split off provider arguments. */
+ s = strchr(optarg, ':');
+ if (s != NULL) {
+ *(s++) = '\0';
+ provider_args = s;
+ }
+
+ provider_name = optarg;
+ }
+
+ /* Lookup argument in location provider table */
+ for (int i = 0; location_providers[i].name != NULL;
+ i++) {
+ const location_provider_t *p =
+ &location_providers[i];
+ if (strcasecmp(provider_name, p->name) == 0) {
+ provider = p;
+ }
+ }
+
+ if (provider == NULL) {
+ fprintf(stderr, _("Unknown location provider"
+ " `%s'.\n"), provider_name);
+ exit(EXIT_FAILURE);
+ }
+
+ /* Print provider help if arg is `help'. */
+ if (provider_args != NULL &&
+ strcasecmp(provider_args, "help") == 0) {
+ provider->print_help(stdout);
exit(EXIT_FAILURE);
}
- *(s++) = '\0';
- lat = atof(optarg);
- lon = atof(s);
break;
case 'm':
- if (strcmp(optarg, "randr") == 0 ||
- strcmp(optarg, "RANDR") == 0) {
-#ifdef ENABLE_RANDR
- use_randr = 1;
-#else
- fputs(_("RANDR method was not"
- " enabled at compile time.\n"),
- stderr);
- exit(EXIT_FAILURE);
-#endif
- } else if (strcmp(optarg, "vidmode") == 0 ||
- strcmp(optarg, "VidMode") == 0) {
-#ifdef ENABLE_VIDMODE
- use_randr = 0;
-#else
- fputs(_("VidMode method was not"
- " enabled at compile time.\n"),
- stderr);
- exit(EXIT_FAILURE);
-#endif
- } else {
+ /* Print list of methods if argument is `list' */
+ if (strcasecmp(optarg, "list") == 0) {
+ print_method_list();
+ exit(EXIT_SUCCESS);
+ }
+
+ /* Split off method arguments. */
+ s = strchr(optarg, ':');
+ if (s != NULL) {
+ *(s++) = '\0';
+ method_args = s;
+ }
+
+ /* Lookup argument in gamma methods table */
+ for (int i = 0; gamma_methods[i].name != NULL; i++) {
+ const gamma_method_t *m =
+ &gamma_methods[i];
+ if (strcasecmp(optarg, m->name) == 0) {
+ method = m;
+ }
+ }
+
+ if (method == NULL) {
/* TRANSLATORS: This refers to the method
used to adjust colors e.g VidMode */
fprintf(stderr, _("Unknown method `%s'.\n"),
optarg);
exit(EXIT_FAILURE);
}
+
+ /* Print method help if arg is `help'. */
+ if (method_args != NULL &&
+ strcasecmp(method_args, "help") == 0) {
+ method->print_help(stdout);
+ exit(EXIT_FAILURE);
+ }
break;
case 'o':
- one_shot = 1;
+ mode = PROGRAM_MODE_ONE_SHOT;
break;
case 'r':
transition = 0;
break;
- case 's':
- screen_num = atoi(optarg);
- break;
case 't':
s = strchr(optarg, ':');
if (s == NULL) {
@@ -358,6 +626,9 @@ main(int argc, char *argv[])
case 'v':
verbose = 1;
break;
+ case 'x':
+ mode = PROGRAM_MODE_RESET;
+ break;
case '?':
fputs(_("Try `-h' for more information.\n"), stderr);
exit(EXIT_FAILURE);
@@ -365,34 +636,81 @@ main(int argc, char *argv[])
}
}
- /* Latitude and longitude must be set */
- if (isnan(lat) || isnan(lon)) {
- fputs(_("Latitude and longitude must be set.\n"), stderr);
- fputs(_("Try `-h' for more information.\n"), stderr);
- exit(EXIT_FAILURE);
- }
+ /* Initialize location provider. If provider is NULL
+ try all providers until one that works is found. */
+ location_state_t location_state;
+
+ /* Location is not needed for reset mode. */
+ if (mode != PROGRAM_MODE_RESET) {
+ if (provider != NULL) {
+ /* Use provider specified on command line. */
+ r = provider_try_start(provider, &location_state,
+ provider_args);
+ if (r < 0) exit(EXIT_FAILURE);
+ } else {
+ /* Try all providers, use the first that works. */
+ for (int i = 0;
+ location_providers[i].name != NULL; i++) {
+ const location_provider_t *p =
+ &location_providers[i];
+ r = provider_try_start(p, &location_state,
+ NULL);
+ if (r < 0) {
+ fputs(_("Trying other provider...\n"),
+ stderr);
+ continue;
+ }
- if (verbose) {
- /* TRANSLATORS: Append degree symbols if possible. */
- printf(_("Location: %f, %f\n"), lat, lon);
- }
+ provider = p;
+ break;
+ }
- /* Latitude */
- if (lat < MIN_LAT || lat > MAX_LAT) {
- /* TRANSLATORS: Append degree symbols if possible. */
- fprintf(stderr,
- _("Latitude must be between %.1f and %.1f.\n"),
- MIN_LAT, MAX_LAT);
- exit(EXIT_FAILURE);
+ /* Failure if no providers were successful at this
+ point. */
+ if (provider == NULL) {
+ fputs(_("No more location providers"
+ " to try.\n"), stderr);
+ exit(EXIT_FAILURE);
+ }
+ }
}
- /* Longitude */
- if (lon < MIN_LON || lon > MAX_LON) {
- /* TRANSLATORS: Append degree symbols if possible. */
- fprintf(stderr,
- _("Longitude must be between %.1f and %.1f.\n"),
- MIN_LON, MAX_LON);
- exit(EXIT_FAILURE);
+ float lat = NAN;
+ float lon = NAN;
+
+ if (mode != PROGRAM_MODE_RESET) {
+ /* Get current location. */
+ r = provider->get_location(&location_state, &lat, &lon);
+ if (r < 0) {
+ fputs(_("Unable to get location from provider.\n"),
+ stderr);
+ exit(EXIT_FAILURE);
+ }
+
+ provider->free(&location_state);
+
+ if (verbose) {
+ /* TRANSLATORS: Append degree symbols if possible. */
+ printf(_("Location: %f, %f\n"), lat, lon);
+ }
+
+ /* Latitude */
+ if (lat < MIN_LAT || lat > MAX_LAT) {
+ /* TRANSLATORS: Append degree symbols if possible. */
+ fprintf(stderr,
+ _("Latitude must be between %.1f and %.1f.\n"),
+ MIN_LAT, MAX_LAT);
+ exit(EXIT_FAILURE);
+ }
+
+ /* Longitude */
+ if (lon < MIN_LON || lon > MAX_LON) {
+ /* TRANSLATORS: Append degree symbols if possible. */
+ fprintf(stderr,
+ _("Longitude must be between"
+ " %.1f and %.1f.\n"), MIN_LON, MAX_LON);
+ exit(EXIT_FAILURE);
+ }
}
/* Color temperature at daytime */
@@ -426,47 +744,44 @@ main(int argc, char *argv[])
gamma[0], gamma[1], gamma[2]);
}
- /* Initialize gamma adjustment method. If use_randr is negative
+ /* Initialize gamma adjustment method. If method is NULL
try all methods until one that works is found. */
gamma_state_t state;
-#ifdef ENABLE_RANDR
- if (use_randr < 0 || use_randr == 1) {
- /* Initialize RANDR state */
- r = randr_init(&state.randr, screen_num);
- if (r < 0) {
- fputs(_("Initialization of RANDR failed.\n"), stderr);
- if (use_randr < 0) {
+
+ if (method != NULL) {
+ /* Use method specified on command line. */
+ r = method_try_start(method, &state, method_args);
+ if (r < 0) exit(EXIT_FAILURE);
+ } else {
+ /* Try all methods, use the first that works. */
+ for (int i = 0; gamma_methods[i].name != NULL; i++) {
+ const gamma_method_t *m = &gamma_methods[i];
+ r = method_try_start(m, &state, NULL);
+ if (r < 0) {
fputs(_("Trying other method...\n"), stderr);
- } else {
- exit(EXIT_FAILURE);
+ continue;
}
- } else {
- use_randr = 1;
+
+ method = m;
+ break;
}
- }
-#endif
-#ifdef ENABLE_VIDMODE
- if (use_randr < 0 || use_randr == 0) {
- /* Initialize VidMode state */
- r = vidmode_init(&state.vidmode, screen_num);
- if (r < 0) {
- fputs(_("Initialization of VidMode failed.\n"),
- stderr);
+ /* Failure if no methods were successful at this point. */
+ if (method == NULL) {
+ fputs(_("No more methods to try.\n"), stderr);
exit(EXIT_FAILURE);
- } else {
- use_randr = 0;
}
}
-#endif
- if (one_shot) {
+ switch (mode) {
+ case PROGRAM_MODE_ONE_SHOT:
+ {
/* Current angular elevation of the sun */
- struct timespec now;
- r = clock_gettime(CLOCK_REALTIME, &now);
+ double now;
+ r = systemtime_get_time(&now);
if (r < 0) {
- perror("clock_gettime");
- gamma_state_free(&state, use_randr);
+ fputs(_("Unable to read system time.\n"), stderr);
+ method->free(&state);
exit(EXIT_FAILURE);
}
@@ -484,16 +799,29 @@ main(int argc, char *argv[])
if (verbose) printf(_("Color temperature: %uK\n"), temp);
/* Adjust temperature */
- r = gamma_state_set_temperature(&state, use_randr,
- temp, gamma);
+ r = method->set_temperature(&state, temp, gamma);
if (r < 0) {
fputs(_("Temperature adjustment failed.\n"), stderr);
- gamma_state_free(&state, use_randr);
+ method->free(&state);
exit(EXIT_FAILURE);
}
- } else {
+ }
+ break;
+ case PROGRAM_MODE_RESET:
+ {
+ /* Reset screen */
+ r = method->set_temperature(&state, NEUTRAL_TEMP, gamma);
+ if (r < 0) {
+ fputs(_("Temperature adjustment failed.\n"), stderr);
+ method->free(&state);
+ exit(EXIT_FAILURE);
+ }
+ }
+ break;
+ case PROGRAM_MODE_CONTINUAL:
+ {
/* Transition state */
- struct timespec short_trans_end;
+ double short_trans_end = 0;
int short_trans = 0;
int short_trans_done = 0;
@@ -507,6 +835,7 @@ main(int argc, char *argv[])
will be exactly 6500K. */
float adjustment_alpha = 0.0;
+#ifdef HAVE_SYS_SIGNAL_H
struct sigaction sigact;
sigset_t sigset;
sigemptyset(&sigset);
@@ -523,6 +852,7 @@ main(int argc, char *argv[])
sigact.sa_mask = sigset;
sigact.sa_flags = 0;
sigaction(SIGUSR1, &sigact, NULL);
+#endif /* HAVE_SYS_SIGNAL_H */
/* Continously adjust color temperature */
int done = 0;
@@ -568,22 +898,20 @@ main(int argc, char *argv[])
}
/* Read timestamp */
- struct timespec now;
- r = clock_gettime(CLOCK_REALTIME, &now);
+ double now;
+ r = systemtime_get_time(&now);
if (r < 0) {
- perror("clock_gettime");
- gamma_state_free(&state, use_randr);
+ fputs(_("Unable to read system time.\n"),
+ stderr);
+ method->free(&state);
exit(EXIT_FAILURE);
}
/* Set up a new transition */
if (short_trans_create) {
if (transition) {
- memcpy(&short_trans_end, &now,
- sizeof(struct timespec));
- short_trans_end.tv_sec +=
- short_trans_len;
-
+ short_trans_end = now;
+ short_trans_end += short_trans_len;
short_trans = 1;
short_trans_create = 0;
} else {
@@ -600,11 +928,8 @@ main(int argc, char *argv[])
/* Ongoing short transition */
if (short_trans) {
- double start = now.tv_sec +
- now.tv_nsec / 1000000000.0;
- double end = short_trans_end.tv_sec +
- short_trans_end.tv_nsec /
- 1000000000.0;
+ double start = now;
+ double end = short_trans_end;
if (start > end) {
/* Transisiton done */
@@ -629,7 +954,7 @@ main(int argc, char *argv[])
if (short_trans_done) {
if (disabled) {
/* Restore saved gamma ramps */
- gamma_state_restore(&state, use_randr);
+ method->restore(&state);
}
short_trans_done = 0;
}
@@ -648,28 +973,34 @@ main(int argc, char *argv[])
/* Adjust temperature */
if (!disabled || short_trans) {
- r = gamma_state_set_temperature(&state,
- use_randr,
- temp, gamma);
+ r = method->set_temperature(&state,
+ temp, gamma);
if (r < 0) {
fputs(_("Temperature adjustment"
" failed.\n"), stderr);
- gamma_state_free(&state, use_randr);
+ method->free(&state);
exit(EXIT_FAILURE);
}
}
/* Sleep for a while */
+#ifndef _WIN32
if (short_trans) usleep(100000);
else usleep(5000000);
+#else /* ! _WIN32 */
+ if (short_trans) Sleep(100);
+ else Sleep(5000);
+#endif /* ! _WIN32 */
}
/* Restore saved gamma ramps */
- gamma_state_restore(&state, use_randr);
+ method->restore(&state);
+ }
+ break;
}
/* Clean up gamma adjustment state */
- gamma_state_free(&state, use_randr);
+ method->free(&state);
return EXIT_SUCCESS;
}
diff --git a/src/redshift.h b/src/redshift.h
new file mode 100644
index 0000000..8f488f6
--- /dev/null
+++ b/src/redshift.h
@@ -0,0 +1,90 @@
+/* redshift.h -- Main program header
+ This file is part of Redshift.
+
+ Redshift is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Redshift is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+*/
+
+#ifndef _REDSHIFT_REDSHIFT_H
+#define _REDSHIFT_REDSHIFT_H
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+/* Gamma adjustment method */
+typedef int gamma_method_init_func(void *state);
+typedef int gamma_method_start_func(void *state);
+typedef void gamma_method_free_func(void *state);
+typedef void gamma_method_print_help_func(FILE *f);
+typedef int gamma_method_set_option_func(void *state, const char *key,
+ const char *value);
+typedef void gamma_method_restore_func(void *state);
+typedef int gamma_method_set_temperature_func(void *state, int temp,
+ float gamma[3]);
+
+typedef struct {
+ char *name;
+
+ /* Initialize state. Options can be set between init and start. */
+ gamma_method_init_func *init;
+ /* Allocate storage and make connections that depend on options. */
+ gamma_method_start_func *start;
+ /* Free all allocated storage and close connections. */
+ gamma_method_free_func *free;
+
+ /* Print help on options for this adjustment method. */
+ gamma_method_print_help_func *print_help;
+ /* Set an option key, value-pair */
+ gamma_method_set_option_func *set_option;
+
+ /* Restore the adjustment to the state before start was called. */
+ gamma_method_restore_func *restore;
+ /* Set a specific color temperature. */
+ gamma_method_set_temperature_func *set_temperature;
+} gamma_method_t;
+
+
+/* Location provider */
+typedef int location_provider_init_func(void *state);
+typedef int location_provider_start_func(void *state);
+typedef void location_provider_free_func(void *state);
+typedef void location_provider_print_help_func(FILE *f);
+typedef int location_provider_set_option_func(void *state, const char *key,
+ const char *value);
+typedef int location_provider_get_location_func(void *state, float *lat,
+ float *lon);
+
+typedef struct {
+ char *name;
+
+ /* Initialize state. Options can be set between init and start. */
+ location_provider_init_func *init;
+ /* Allocate storage and make connections that depend on options. */
+ location_provider_start_func *start;
+ /* Free all allocated storage and close connections. */
+ location_provider_free_func *free;
+
+ /* Print help on options for this location provider. */
+ location_provider_print_help_func *print_help;
+ /* Set an option key, value-pair. */
+ location_provider_set_option_func *set_option;
+
+ /* Get current location. */
+ location_provider_get_location_func *get_location;
+} location_provider_t;
+
+
+#endif /* ! _REDSHIFT_REDSHIFT_H */
diff --git a/src/solar.c b/src/solar.c
index 9b63c40..9b2b59d 100644
--- a/src/solar.c
+++ b/src/solar.c
@@ -24,9 +24,9 @@
Jean Meeus. */
#include <math.h>
-#include <time.h>
#include "solar.h"
+#include "time.h"
#define RAD(x) ((x)*(M_PI/180))
#define DEG(x) ((x)*(180/M_PI))
@@ -46,23 +46,20 @@ static const double time_angle[] = {
};
-/* Unix time from Julian day */
-static struct timespec
-timespec_from_jd(double jd)
+/* Unix epoch from Julian day */
+static double
+epoch_from_jd(double jd)
{
- struct timespec t;
- double secs = 86400.0*(jd - 2440587.5);
- t.tv_sec = floor(secs);
- t.tv_nsec = (secs - t.tv_sec) * 1000000000.0;
- return t;
+ return 86400.0*(jd - 2440587.5);
}
-/* Julian day from unix time */
+
+
+/* Julian day from unix epoch */
static double
-jd_from_timespec(struct timespec t)
+jd_from_epoch(double t)
{
- return (t.tv_sec / 86400.0) +
- (t.tv_nsec / 86400000000000.0) + 2440587.5;
+ return (t / 86400.0) + 2440587.5;
}
/* Julian centuries since J2000.0 from Julian day */
@@ -287,18 +284,23 @@ solar_elevation_from_time(double t, double lat, double lon)
return elevation_from_hour_angle(lat, decl, ha);
}
+/* Solar angular elevation at the given location and time.
+ date: Seconds since unix epoch
+ lat: Latitude of location
+ lon: Longitude of location
+ Return: Solar angular elevation in degrees */
double
-solar_elevation(struct timespec date, double lat, double lon)
+solar_elevation(double date, double lat, double lon)
{
- double jd = jd_from_timespec(date);
+ double jd = jd_from_epoch(date);
return DEG(solar_elevation_from_time(jcent_from_jd(jd), lat, lon));
}
void
-solar_table_fill(struct timespec date, double lat, double lon, time_t *table)
+solar_table_fill(double date, double lat, double lon, double *table)
{
/* Calculate Julian day */
- double jd = jd_from_timespec(date);
+ double jd = jd_from_epoch(date);
/* Calculate Julian day number */
double jdn = round(jd);
@@ -308,16 +310,16 @@ solar_table_fill(struct timespec date, double lat, double lon, time_t *table)
double sol_noon = time_of_solar_noon(t, lon);
double j_noon = jdn - 0.5 + sol_noon/1440.0;
double t_noon = jcent_from_jd(j_noon);
- table[SOLAR_TIME_NOON] = timespec_from_jd(j_noon).tv_sec;
+ table[SOLAR_TIME_NOON] = epoch_from_jd(j_noon);
/* Calculate solar midnight */
- table[SOLAR_TIME_MIDNIGHT] = timespec_from_jd(j_noon + 0.5).tv_sec;
+ table[SOLAR_TIME_MIDNIGHT] = epoch_from_jd(j_noon + 0.5);
/* Calulate absoute time of other phenomena */
for (int i = 2; i < SOLAR_TIME_MAX; i++) {
double angle = time_angle[i];
double offset =
time_of_solar_elevation(t, t_noon, lat, lon, angle);
- table[i] = timespec_from_jd(jdn - 0.5 + offset/1440.0).tv_sec;
+ table[i] = epoch_from_jd(jdn - 0.5 + offset/1440.0);
}
}
diff --git a/src/solar.h b/src/solar.h
index a55c83a..b5554ef 100644
--- a/src/solar.h
+++ b/src/solar.h
@@ -20,7 +20,7 @@
#ifndef _SOLAR_H
#define _SOLAR_H
-#include <time.h>
+#include "time.h"
/* Model of atmospheric refraction near horizon (in degrees). */
#define SOLAR_ATM_REFRAC 0.833
@@ -44,8 +44,8 @@ typedef enum {
SOLAR_TIME_MAX
} solar_time_t;
-double solar_elevation(struct timespec date, double lat, double lon);
-void solar_table_fill(struct timespec date, double lat, double lon,
- time_t *table);
+
+double solar_elevation(double date, double lat, double lon);
+void solar_table_fill(double date, double lat, double lon, double *table);
#endif /* ! _SOLAR_H */
diff --git a/src/systemtime.c b/src/systemtime.c
new file mode 100644
index 0000000..abbb5ae
--- /dev/null
+++ b/src/systemtime.c
@@ -0,0 +1,52 @@
+/* systemtime.c -- Portable system time source
+ This file is part of Redshift.
+
+ Redshift is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Redshift is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+*/
+
+#include <stdio.h>
+
+#ifndef _WIN32
+# include <time.h>
+#endif
+
+#include "systemtime.h"
+
+int
+systemtime_get_time(double *t)
+{
+#ifndef _WIN32
+ struct timespec now;
+ int r = clock_gettime(CLOCK_REALTIME, &now);
+ if (r < 0) {
+ perror("clock_gettime");
+ return -1;
+ }
+
+ *t = now.tv_sec + (now.tv_nsec / 1000000000.0);
+#else /* _WIN32 */
+ FILETIME now;
+ ULARGE_INTEGER i;
+ GetSystemTimeAsFileTime(&now);
+ i.LowPart = now.dwLowDateTime;
+ i.HighPart = now.dwHighDateTime;
+
+ /* FILETIME is tenths of microseconds since 1601-01-01 UTC */
+ *t = (i.QuadPart / 10000000.0) - 11644473600.0;
+#endif /* _WIN32 */
+
+ return 0;
+}
diff --git a/src/systemtime.h b/src/systemtime.h
new file mode 100644
index 0000000..1d51217
--- /dev/null
+++ b/src/systemtime.h
@@ -0,0 +1,32 @@
+/* systemtime.h -- Portable system time header
+ This file is part of Redshift.
+
+ Redshift is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Redshift is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Redshift. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com>
+*/
+
+#ifndef _REDSHIFT_SYSTEMTIME_H
+#define _REDSHIFT_SYSTEMTIME_H
+
+#ifndef _WIN32
+# include <time.h>
+#else
+# include <windows.h>
+#endif
+
+
+int systemtime_get_time(double *now);
+
+#endif /* ! _REDSHIFT_SYSTEMTIME_H */