diff options
51 files changed, 5308 insertions, 1101 deletions
@@ -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 -------------------- @@ -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. @@ -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 @@ -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 @@ -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> @@ -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 @@ -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" @@ -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" @@ -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" @@ -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" @@ -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 "Включить / Выключить" @@ -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 "" @@ -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 */ |