============
+Changes since 4.04: * More `configure' tweaks to try and get things working
+ on systems that both Gtk 1.x and 2.x installed.
+ * New hack, `endgame'.
+ * Minor updates to `gltext'.
Changes since 4.03: * Support for GTK 2.x / GNOME 2.x.
* The `configure' script will now use `pkg-config' if
you have it, in preference to `gtk-config', etc.
will close a race condition that could sometimes cause
your desktop background to be changed; and also makes
it possible for those programs to operate on image
- files when running in non-root mode.
+ files when running in windowed mode.
* `webcollage' can now be used in conjunction with
`driftnet' to display images snooped from your local
ethernet instead of obtained from search engines.
jurassic_gtk=no
+gtk2_halfassed=no
+
if test "$with_gtk" = yes; then
have_gtk=no
#define HAVE_GTK2 1
_ACEOF
+ else
+ if test -n "$ac_gtk_version_string" ; then
+ gtk2_halfassed="$ac_gtk_version_string"
+ fi
fi
if test "$have_gtk" = no; then
# Now check for Gnome...
#
- if test "$have_gtk" = yes; then
+ if test "$have_gtk" = yes -a "$with_gnome" = yes; then
old_pkgs="$pkgs"
ok=yes
pkg_check_version capplet 1.0
ac_gtk_config_libs=$ac_cv_gtk_config_libs
# Check for Gnome Capplet support.
+ # Note that this is only needed with Gnome 1.x, not Gnome 2.x.
+ # In a Gnome 2.x world, libcapplet will not exist.
+ # (In fact, this likely won't even be checked, since in a Gnome 2.x
+ # world, we will probably be up in the "$pkg_config" branch instead
+ # of here in the "$gnome_config" branch.)
#
if test "$have_gnome" = yes -a "$have_gtk" = yes; then
gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
if test "$have_gtk" = yes -a "$have_gtk2" = no; then
# check for this function that was not in libcapplet 1.2.
+ # (only needed in Gnome/Gtk 1.x, not Gnome/Gtk 2.x)
ac_save_CPPFLAGS="$CPPFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
GNOME_DATADIR=""
if test "$have_gnome" = yes -a "$have_gtk" = yes; then
- if test -n "$gnome_config"; then
- GNOME_DATADIR=`$gnome_config --datadir`
+ if test -n "$pkg_config"; then
+ if test "$have_gtk2" = yes; then
+ GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
+ else
+ GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
+ fi
else
- #### is this right?
- GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
- GNOME_DATADIR="$GNOME_DATADIR/share"
+ GNOME_DATADIR=`$gtk_config --prefix`
fi
+ GNOME_DATADIR="$GNOME_DATADIR/share"
fi
# .desktop files go in different places in Gnome 1.x and Gnome 2.x...
#
pkgs=""
ok="yes"
- pkg_check_version xml2 1.0
- if test "$ok" = no; then
+ # If we have Gtk 2.x, then *only* XML 2.x will work.
+ # If we have Gtk 1.x, or don't have Gtk at all, then
+ # either XML 1.x or 2.x will work.
+
+ # First check for XML 2.x.
+ #
+ pkg_check_version libxml-2.0 2.4.6
+
+ # If that didn't work (we don't have XML 2.x) and we *don't* have
+ # Gtk 2.x, then check to see if we have XML 1.x
+ #
+ if test "$ok" = no -a "$have_gtk2" = no; then
ok=yes
- pkg_check_version xml 1.0
+ pkg_check_version libxml 1.0
fi
have_xml="$ok"
else
#
# the old way...
- # run {gnome,gtk}-config based tests.
+ # run {xml2,xml}-config based tests.
#
for ac_prog in xml2-config xml-config
# note: $X_LIBS includes $x_libraries
LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
- echo "$as_me:$LINENO: checking for xmlParseChunk in -lxml" >&5
-echo $ECHO_N "checking for xmlParseChunk in -lxml... $ECHO_C" >&6
-if test "${ac_cv_lib_xml_xmlParseChunk+set}" = set; then
+ echo "$as_me:$LINENO: checking for xmlParseChunk in -lc" >&5
+echo $ECHO_N "checking for xmlParseChunk in -lc... $ECHO_C" >&6
+if test "${ac_cv_lib_c_xmlParseChunk+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lxml $ac_xml_config_libs $LIBS"
+LIBS="-lc $ac_xml_config_libs $LIBS"
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_lib_xml_xmlParseChunk=yes
+ ac_cv_lib_c_xmlParseChunk=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-ac_cv_lib_xml_xmlParseChunk=no
+ac_cv_lib_c_xmlParseChunk=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_xml_xmlParseChunk" >&5
-echo "${ECHO_T}$ac_cv_lib_xml_xmlParseChunk" >&6
-if test $ac_cv_lib_xml_xmlParseChunk = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_lib_c_xmlParseChunk" >&5
+echo "${ECHO_T}$ac_cv_lib_c_xmlParseChunk" >&6
+if test $ac_cv_lib_c_xmlParseChunk = yes; then
have_xml=yes
xml_halfassed=no
XML_LIBS="$ac_xml_config_libs"
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat > conftest.$ac_ext <<EOF
-#line 14500 "configure"
+#line 14525 "configure"
#include "confdefs.h"
#include <GL/gl.h>
#ifndef MESA_MAJOR_VERSION
#
pkgs=''
ok="yes"
- pkg_check_version gdk-pixbuf-2.0 2.0.0
- pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
- have_gdk_pixbuf="$ok"
- have_gdk_pixbuf2="$ok"
- if test "$have_gdk_pixbuf2" = no; then
+ # If we have Gtk 2.x, then *only* gdk-pixbuf 2.x will work.
+ # If we have Gtk 1.x, then *only* gdk-pixbuf 1.x will work.
+ # If we don't have Gtk at all, then either will work.
+
+ if test "$have_gtk" = no -o "$have_gtk2" = yes; then
#
- # We don't have pixbuf 2.x; check for 1.x.
+ # we don't have Gtk; or we have Gtk 2.x. Check for pixbuf 2.x.
#
- pkgs=''
- ok="yes"
- pkg_check_version gdk-pixbuf 0.0
- pkg_check_version gdk-pixbuf-xlib 0.0
+ pkg_check_version gdk-pixbuf-2.0 2.0.0
+ pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
have_gdk_pixbuf="$ok"
+ have_gdk_pixbuf2="$ok"
+ fi
+
+ if test "$have_gtk" = no -o "$have_gtk2" = no; then
+ #
+ # we don't have Gtk; or we have Gtk 1.x.
+ # If we don't have pixbuf 2.x, then check for pixbuf 1.x.
+ #
+ if test "$have_gdk_pixbuf2" = no; then
+ pkgs=''
+ ok="yes"
+ pkg_check_version gdk-pixbuf 0.0
+ pkg_check_version gdk-pixbuf-xlib 0.0
+ have_gdk_pixbuf="$ok"
+ fi
fi
if test "$have_gdk_pixbuf" = yes; then
ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
fi
+
if test "$have_gdk_pixbuf" = no; then
#
# the old way...
have_gdk_pixbuf=no
- # check for header 1...
+ # check for header A...
ac_save_CPPFLAGS="$CPPFLAGS"
if test \! -z "$includedir" ; then
CPPFLAGS="$ac_save_CPPFLAGS"
- # if that worked, check for header 2...
+ # if that worked, check for header B...
if test "$have_gdk_pixbuf" = yes; then
have_gdk_pixbuf=no
gdk_pixbuf_halfassed=yes
CPPFLAGS="$ac_save_CPPFLAGS"
- # yay, it has a new name in GTK2...
+ # yay, it has a new name in Gtk 2.x...
if test "$have_gdk_pixbuf" = no; then
have_gdk_pixbuf=no
gdk_pixbuf_halfassed=yes
have_gdk_pixbuf=no
gdk_pixbuf_halfassed=yes
- # library 1...
+ # library A...
ac_save_CPPFLAGS="$CPPFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
# LIBS="$ac_save_LIBS"
- # library 2...
+ # library B...
if test "$have_gdk_pixbuf" = yes; then
have_gdk_pixbuf=no
# After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value
# so that we know where to install the Gtk pixmaps.
#
+# It should usually be "/usr/share/pixmaps/", but we can't just use
+# "$(prefix)/share/pixmaps" because that would usually result in
+# "/usr/X11R6/share/pixmaps/", which is wrong. It needs to be the
+# Gnome/Gtk prefix, not the overall prefix.
+#
if test -n "$GNOME_DATADIR" ; then
GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
elif test "$have_gtk" = yes; then
- # should this be "$(prefix)/share/pixmaps"? But /usr/X11R6/share/ is wrong...
- GLADE_DATADIR='/usr/share/xscreensaver'
+ if test -n "$pkg_config"; then
+ if test "$have_gtk2" = yes; then
+ GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
+ else
+ GLADE_DATADIR=`$pkg_config --variable=prefix gtk+`
+ fi
+ else
+ GLADE_DATADIR=`$gtk_config --prefix`
+ fi
+ GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver"
else
GLADE_DATADIR=''
fi
-ac_config_files="$ac_config_files Makefile utils/Makefile driver/Makefile hacks/Makefile hacks/glx/Makefile po/Makefile.in driver/XScreenSaver.ad"
+ac_config_files="$ac_config_files Makefile utils/Makefile driver/Makefile hacks/Makefile hacks/glx/Makefile po/Makefile.in driver/XScreenSaver.ad driver/xscreensaver.kss"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
"hacks/glx/Makefile" ) CONFIG_FILES="$CONFIG_FILES hacks/glx/Makefile" ;;
"po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
"driver/XScreenSaver.ad" ) CONFIG_FILES="$CONFIG_FILES driver/XScreenSaver.ad" ;;
+ "driver/xscreensaver.kss" ) CONFIG_FILES="$CONFIG_FILES driver/xscreensaver.kss" ;;
"default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
"default-2" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;;
"config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
warn2 "Gtk $pref_gtk or newer is required. Motif will be used instead."
elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
- warnL "Use of Gtk was requested, but it wasn't found;"
- warn2 "Motif will be used instead."
+ warnL "Use of Gtk was requested, but it wasn't found."
+ if test "$have_motif" = yes; then
+ warn2 "Motif will be used instead."
+ fi
+fi
+
+if test "$gtk2_halfassed" != no ; then
+ warnL "GTK version $gtk2_halfassed was found, but some other supporting"
+ warn2 "libraries were not, so GTK 2.x can't be used. Please"
+ warn2 "read the above output and the \`config.log' file to see"
+ warn2 "which libraries are missing."
fi
-# configure.in --- xscreensaver, Copyright (c) 1997-2000 Jamie Zawinski.
+# configure.in --- xscreensaver, Copyright (c) 1997-2002 Jamie Zawinski.
#
AC_PREREQ(2.52)
jurassic_gtk=no
+gtk2_halfassed=no
+
if test "$with_gtk" = yes; then
have_gtk=no
if test "$have_gtk" = yes; then
have_gtk2=yes
AC_DEFINE(HAVE_GTK2)
+ else
+ if test -n "$ac_gtk_version_string" ; then
+ gtk2_halfassed="$ac_gtk_version_string"
+ fi
fi
if test "$have_gtk" = no; then
# Now check for Gnome...
#
- if test "$have_gtk" = yes; then
+ if test "$have_gtk" = yes -a "$with_gnome" = yes; then
old_pkgs="$pkgs"
ok=yes
pkg_check_version capplet 1.0
ac_gtk_config_libs=$ac_cv_gtk_config_libs
# Check for Gnome Capplet support.
+ # Note that this is only needed with Gnome 1.x, not Gnome 2.x.
+ # In a Gnome 2.x world, libcapplet will not exist.
+ # (In fact, this likely won't even be checked, since in a Gnome 2.x
+ # world, we will probably be up in the "$pkg_config" branch instead
+ # of here in the "$gnome_config" branch.)
#
if test "$have_gnome" = yes -a "$have_gtk" = yes; then
gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
if test "$have_gtk" = yes -a "$have_gtk2" = no; then
# check for this function that was not in libcapplet 1.2.
+ # (only needed in Gnome/Gtk 1.x, not Gnome/Gtk 2.x)
AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate,
[AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true],
$ac_gnome_config_libs)
GNOME_DATADIR=""
if test "$have_gnome" = yes -a "$have_gtk" = yes; then
- if test -n "$gnome_config"; then
- GNOME_DATADIR=`$gnome_config --datadir`
+ if test -n "$pkg_config"; then
+ if test "$have_gtk2" = yes; then
+ GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
+ else
+ GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
+ fi
else
- #### is this right?
- GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
- GNOME_DATADIR="$GNOME_DATADIR/share"
+ GNOME_DATADIR=`$gtk_config --prefix`
fi
+ GNOME_DATADIR="$GNOME_DATADIR/share"
fi
# .desktop files go in different places in Gnome 1.x and Gnome 2.x...
#
pkgs=""
ok="yes"
- pkg_check_version xml2 1.0
- if test "$ok" = no; then
+ # If we have Gtk 2.x, then *only* XML 2.x will work.
+ # If we have Gtk 1.x, or don't have Gtk at all, then
+ # either XML 1.x or 2.x will work.
+
+ # First check for XML 2.x.
+ #
+ pkg_check_version libxml-2.0 2.4.6
+
+ # If that didn't work (we don't have XML 2.x) and we *don't* have
+ # Gtk 2.x, then check to see if we have XML 1.x
+ #
+ if test "$ok" = no -a "$have_gtk2" = no; then
ok=yes
- pkg_check_version xml 1.0
+ pkg_check_version libxml 1.0
fi
have_xml="$ok"
else
#
# the old way...
- # run {gnome,gtk}-config based tests.
+ # run {xml2,xml}-config based tests.
#
AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path)
# we have the header, now check for the library
have_xml=no
xml_halfassed=yes
- AC_CHECK_X_LIB(xml, xmlParseChunk,
+ AC_CHECK_X_LIB(c, xmlParseChunk,
[have_xml=yes
xml_halfassed=no
XML_LIBS="$ac_xml_config_libs"
#
pkgs=''
ok="yes"
- pkg_check_version gdk-pixbuf-2.0 2.0.0
- pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
- have_gdk_pixbuf="$ok"
- have_gdk_pixbuf2="$ok"
- if test "$have_gdk_pixbuf2" = no; then
+ # If we have Gtk 2.x, then *only* gdk-pixbuf 2.x will work.
+ # If we have Gtk 1.x, then *only* gdk-pixbuf 1.x will work.
+ # If we don't have Gtk at all, then either will work.
+
+ if test "$have_gtk" = no -o "$have_gtk2" = yes; then
#
- # We don't have pixbuf 2.x; check for 1.x.
+ # we don't have Gtk; or we have Gtk 2.x. Check for pixbuf 2.x.
#
- pkgs=''
- ok="yes"
- pkg_check_version gdk-pixbuf 0.0
- pkg_check_version gdk-pixbuf-xlib 0.0
+ pkg_check_version gdk-pixbuf-2.0 2.0.0
+ pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
have_gdk_pixbuf="$ok"
+ have_gdk_pixbuf2="$ok"
+ fi
+
+ if test "$have_gtk" = no -o "$have_gtk2" = no; then
+ #
+ # we don't have Gtk; or we have Gtk 1.x.
+ # If we don't have pixbuf 2.x, then check for pixbuf 1.x.
+ #
+ if test "$have_gdk_pixbuf2" = no; then
+ pkgs=''
+ ok="yes"
+ pkg_check_version gdk-pixbuf 0.0
+ pkg_check_version gdk-pixbuf-xlib 0.0
+ have_gdk_pixbuf="$ok"
+ fi
fi
if test "$have_gdk_pixbuf" = yes; then
ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
fi
+
if test "$have_gdk_pixbuf" = no; then
#
# the old way...
have_gdk_pixbuf=no
- # check for header 1...
+ # check for header A...
AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
- # if that worked, check for header 2...
+ # if that worked, check for header B...
if test "$have_gdk_pixbuf" = yes; then
have_gdk_pixbuf=no
gdk_pixbuf_halfassed=yes
[have_gdk_pixbuf=yes
gdk_pixbuf_halfassed=no])
- # yay, it has a new name in GTK2...
+ # yay, it has a new name in Gtk 2.x...
if test "$have_gdk_pixbuf" = no; then
have_gdk_pixbuf=no
gdk_pixbuf_halfassed=yes
have_gdk_pixbuf=no
gdk_pixbuf_halfassed=yes
- # library 1...
+ # library A...
AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
$ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
- # library 2...
+ # library B...
if test "$have_gdk_pixbuf" = yes; then
have_gdk_pixbuf=no
AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
# After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value
# so that we know where to install the Gtk pixmaps.
#
+# It should usually be "/usr/share/pixmaps/", but we can't just use
+# "$(prefix)/share/pixmaps" because that would usually result in
+# "/usr/X11R6/share/pixmaps/", which is wrong. It needs to be the
+# Gnome/Gtk prefix, not the overall prefix.
+#
if test -n "$GNOME_DATADIR" ; then
GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
elif test "$have_gtk" = yes; then
- # should this be "$(prefix)/share/pixmaps"? But /usr/X11R6/share/ is wrong...
- GLADE_DATADIR='/usr/share/xscreensaver'
+ if test -n "$pkg_config"; then
+ if test "$have_gtk2" = yes; then
+ GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
+ else
+ GLADE_DATADIR=`$pkg_config --variable=prefix gtk+`
+ fi
+ else
+ GLADE_DATADIR=`$gtk_config --prefix`
+ fi
+ GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver"
else
GLADE_DATADIR=''
fi
hacks/Makefile
hacks/glx/Makefile
po/Makefile.in
- driver/XScreenSaver.ad)
+ driver/XScreenSaver.ad
+ driver/xscreensaver.kss)
###############################################################################
#
warn2 "Gtk $pref_gtk or newer is required. Motif will be used instead."
elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
- warnL "Use of Gtk was requested, but it wasn't found;"
- warn2 "Motif will be used instead."
+ warnL "Use of Gtk was requested, but it wasn't found."
+ if test "$have_motif" = yes; then
+ warn2 "Motif will be used instead."
+ fi
+fi
+
+if test "$gtk2_halfassed" != no ; then
+ warnL "GTK version $gtk2_halfassed was found, but some other supporting"
+ warn2 "libraries were not, so GTK 2.x can't be used. Please"
+ warn2 "read the above output and the \`config.log' file to see"
+ warn2 "which libraries are missing."
fi
xscreensaver-getimage-file.man \
xscreensaver-getimage-video.man
EXTRAS = README Makefile.in XScreenSaver.ad.in xscreensaver.pam \
- xscreensaver.kss xscreensaver-demo.glade xscreensaver-demo.glade2 \
+ xscreensaver-demo.glade xscreensaver-demo.glade2 \
screensaver-properties.desktop.in \
screensaver-properties-capplet \
+ xscreensaver.kss.in \
.gdbinit
VMSFILES = compile_axp.com compile_decc.com link_axp.com link_decc.com \
vms-getpwnam.c vms-pwd.h vms-hpwd.c vms-validate.c \
fi
install-kde:
- @src="$(srcdir)/xscreensaver.kss" ; \
+ @src="xscreensaver.kss" ; \
if [ "$$KDEDIR" != "" ]; then \
dir="$(install_prefix)$$KDEDIR/bin" ; \
- dest="$$dir/xscreensaver.kss" ; \
+ dest="$$dir/$$src" ; \
echo $(INSTALL_SCRIPT) $$src $$dest ; \
if $(INSTALL_SCRIPT) $$src $$dest ; then \
true ; \
! a screen saver and locker for the X window system
! by Jamie Zawinski
!
-! version 4.04
-! 31-May-2002
+! version 4.05
+! 11-Jun-2002
!
! See "man xscreensaver" for more info. The latest version is always
! available at http://www.jwz.org/xscreensaver/
@GL_KLUDGE@ GL: spheremonics -root \n\
@GL_KLUDGE@ GL: lavalite -root \n\
@GL_KLUDGE@ GL: queens -root \n\
+@GL_KLUDGE@ GL: endgame -root \n\
\
- xdaliclock -root -builtin3 -cycle \n\
- default-n: xearth -nofork -nostars -ncolors 50 \
GL: spheremonics -root \\n\
GL: lavalite -root \\n\
GL: queens -root \\n\
+ GL: endgame -root \\n\
\
- xdaliclock -root -builtin3 -cycle \\n\
- default-n: xearth -nofork -nostars -ncolors 50 \
ensure_selected_item_visible (GtkWidget *widget)
{
#ifdef HAVE_GTK2
+ GtkTreePath *path;
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return;
+ path = gtk_tree_model_get_path (model, &iter);
+
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (widget),
+ path, NULL, FALSE, 0.0, 0.0);
#else /* !HAVE_GTK2 */
GtkScrolledWindow *scroller = 0;
GtkList *list = GTK_LIST (GTK_WIDGET (line)->parent);
GtkViewport *vp = GTK_VIEWPORT (GTK_WIDGET (list)->parent);
GtkScrolledWindow *scroller = GTK_SCROLLED_WINDOW (GTK_WIDGET (vp)->parent);
-#endif /* ~HAVE_GTK2 */
+#endif /* !HAVE_GTK2 */
GtkAdjustment *adj;
double scroll_top;
.if n .sp 1
.if t .sp .5
..
-.TH XScreenSaver 1 "31-May-2002 (4.04)" "X Version 11"
+.TH XScreenSaver 1 "11-Jun-2002 (4.05)" "X Version 11"
.SH NAME
xscreensaver-command - control a running xscreensaver process
.SH SYNOPSIS
.if n .sp 1
.if t .sp .5
..
-.TH XScreenSaver 1 "31-May-2002 (4.04)" "X Version 11"
+.TH XScreenSaver 1 "11-Jun-2002 (4.05)" "X Version 11"
.SH NAME
xscreensaver-demo - interactively control the background xscreensaver daemon
.SH SYNOPSIS
-.TH XScreenSaver 1 "31-May-2002 (4.04)" "X Version 11"
+.TH XScreenSaver 1 "11-Jun-2002 (4.05)" "X Version 11"
.SH NAME
xscreensaver-getimage-file - put a randomly-selected image on the root window
.SH SYNOPSIS
-.TH XScreenSaver 1 "31-May-2002 (4.04)" "X Version 11"
+.TH XScreenSaver 1 "11-Jun-2002 (4.05)" "X Version 11"
.SH NAME
xscreensaver-getimage-video - put a video frame on the root window
.SH SYNOPSIS
-.TH XScreenSaver 1 "31-May-2002 (4.04)" "X Version 11"
+.TH XScreenSaver 1 "11-Jun-2002 (4.05)" "X Version 11"
.SH NAME
xscreensaver-getimage - put some randomly-selected image on the root window
.SH SYNOPSIS
+++ /dev/null
-#!/bin/bash -
-
-# script - "xscreensaver.kss"
-#
-# Author: Shane Smit <shane_smit@calderasystems.com>
-#
-# Modification History:
-# [08/23/1999] - Shane Smit: Creation
-#
-# Description:
-# This script file enables users to use XScreenSaver via the
-# KDE Display Properties.
-
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation. No representations are made about the suitability of this
-# software for any purpose. It is provided "as is" without express or
-# implied warranty.
-
-
-# Locking is turned off by default.
-lockmode="-no-lock-mode"
-
-while [ -n "$1" ]; do
- case "$1" in
-
- -desc)
- # This is the name in the list box.
- echo "XScreenSaver"
- exit
- ;;
-
- -preview)
- # This simply runs xflame in the preview window. For this to be "real",
- # it needs to run xscreensaver with a -window-id parameter for each hack.
- # There are two ways to do this:
- # 1) Hack xscreensaver to allow global parameters.
- # 2) Hack xscreensaver to accept alternate setup files, and create one on
- # the fly here.
- shift
- /usr/X11R6/lib/xscreensaver/xflame -delay 1 -window-id $1 & # Start new preview
- echo "$!" > $HOME/.kss-preview$1.pid.`hostname` # Write PID
- wait $! # Wait for it to get killed
- exit
- ;;
-
- -setup)
- /usr/X11R6/bin/xscreensaver -no-splash & # daemon must be started
- /usr/X11R6/bin/xscreensaver-demo # or the setup will produce
- kill $! # a warning.
- exit
- ;;
-
- -test)
- # I was unable to grep stdout because xscreensaver nabs it. But I was able
- # to output it to a file, and grep the file.
- TEMP_FILE=/tmp/xsc.$RANDOM
- /usr/X11R6/bin/xscreensaver -no-splash -verbose -no-capture-stderr 2> $TEMP_FILE &
- /usr/X11R6/bin/xscreensaver-command -activate
- while true; do
- ExitNow=$(grep -E -c unblanking\|already $TEMP_FILE)
- if [ $ExitNow != 0 ]; then
- kill $!
- rm $TEMP_FILE
- exit
- fi
- sleep 1
- done
- exit # It should never get this far.
- ;;
-
-# -corners)
-# echo "Not yet supported"
-# ;;
- -delay)
- shift
- timeout="-timeout $1"
- ;;
- -install)
- Install="TRUE"
- ;;
- -lock)
- if [ ! -f "/etc/shadow" ]; then
- lockmode="-lock-mode"
- fi
- ;;
-# -allow-root)
-# echo "Not yet supported"
-# ;;
- -nice)
- shift
- Nice="-nice $1"
- ;;
-# -inroot)
-# echo "Not yet supported"
-# ;;
- *)
- echo "Unknown parameter: $1"
- ;;
- esac
- shift
-done
-
-if [ -n "$Install" ] ; then
- PID_FILE=$HOME/.kss-install.pid.`hostname`
- if [ -r "$PID_FILE" ] ; then
- kill `cat $PID_FILE` # Kill old screensaver
- fi
- echo "$$" > $PID_FILE # Write PID of this script
- /usr/X11R6/bin/xscreensaver -no-splash $timeout $lockmode $Nice & # Start XScreenSaver daemon
- trap "kill $!" SIGTERM # Set these to kill the daemon
- trap "kill $!" SIGKILL
-
-# KDE sends SIGUSER1 to indicate the user has hit the "lock" button.
- trap "/usr/X11R6/bin/xscreensaver-command -lock" SIGUSR1
-
- wait $! # Do not exit, just wait for signals.
-
-else
- echo "Usage: ./xscreensaver.kss -install|-setup|-test|-desc [-delay num] [-lock] [-nice num]"
-# echo " -corners xxxx Placing cursor in corner performs action:"
-# echo " x = i no action (ignore)"
-# echo " x = s save screen"
-# echo " x = l lock screen"
-# echo " order: top-left, top-right, bottom-left, bottom-right"
- echo " -delay num Amount of idle time before screen saver starts (default 10min)"
- echo " -desc Print the screen saver's description to stdout"
- echo " -install Install screen saver"
- echo " -lock Require password to stop screen saver"
-# echo " -allow-root Accept root password to unlock"
- echo " -nice num Run with specified nice value"
- echo " -preview wid Run in the specified XWindow"
-# echo " -inroot Run in the root window"
- echo " -setup Setup screen saver"
- echo " -test Invoke the screen saver immediately"
-fi
-
-# End of script - "xscreensaver.kss"
--- /dev/null
+#!/bin/sh -
+
+# script - "xscreensaver.kss"
+#
+# Author: Shane Smit <shane_smit@calderasystems.com>
+#
+# Modification History:
+# [08/23/1999] - Shane Smit: Creation
+#
+# Description:
+# This script file enables users to use XScreenSaver via the
+# KDE Display Properties.
+
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation. No representations are made about the suitability of this
+# software for any purpose. It is provided "as is" without express or
+# implied warranty.
+
+
+# Locking is turned off by default.
+lockmode="-no-lock-mode"
+
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+bindir="@bindir@"
+hackdir="@HACKDIR@"
+
+while [ -n "$1" ]; do
+ case "$1" in
+
+ -desc)
+ # This is the name in the list box.
+ echo "XScreenSaver"
+ exit
+ ;;
+
+ -preview)
+ # This simply runs xflame in the preview window. For this to be "real",
+ # it needs to run xscreensaver with a -window-id parameter for each hack.
+ # There are two ways to do this:
+ # 1) Hack xscreensaver to allow global parameters.
+ # 2) Hack xscreensaver to accept alternate setup files, and create one on
+ # the fly here.
+ shift
+ $hackdir/xflame -delay 1 -window-id $1 & # Start new preview
+ echo "$!" > $HOME/.kss-preview$1.pid.`hostname` # Write PID
+ wait $! # Wait for it to get killed
+ exit
+ ;;
+
+ -setup)
+ $bindir/xscreensaver -no-splash & # daemon must be started
+ $bindir/xscreensaver-demo # or the setup will produce
+ kill $! # a warning.
+ exit
+ ;;
+
+ -test)
+ # I was unable to grep stdout because xscreensaver nabs it. But I was able
+ # to output it to a file, and grep the file.
+ TEMP_FILE=/tmp/xsc.$RANDOM
+ $bindir/xscreensaver -no-splash -verbose -no-capture-stderr 2> $TEMP_FILE &
+ $bindir/xscreensaver-command -activate
+ while true; do
+ ExitNow=$(grep -E -c unblanking\|already $TEMP_FILE)
+ if [ $ExitNow != 0 ]; then
+ kill $!
+ rm $TEMP_FILE
+ exit
+ fi
+ sleep 1
+ done
+ exit # It should never get this far.
+ ;;
+
+# -corners)
+# echo "Not yet supported"
+# ;;
+ -delay)
+ shift
+ timeout="-timeout $1"
+ ;;
+ -install)
+ Install="TRUE"
+ ;;
+ -lock)
+ if [ ! -f "/etc/shadow" ]; then
+ lockmode="-lock-mode"
+ fi
+ ;;
+# -allow-root)
+# echo "Not yet supported"
+# ;;
+ -nice)
+ shift
+ Nice="-nice $1"
+ ;;
+# -inroot)
+# echo "Not yet supported"
+# ;;
+ *)
+ echo "Unknown parameter: $1"
+ ;;
+ esac
+ shift
+done
+
+if [ -n "$Install" ] ; then
+ PID_FILE=$HOME/.kss-install.pid.`hostname`
+ if [ -r "$PID_FILE" ] ; then
+ kill `cat $PID_FILE` # Kill old screensaver
+ fi
+ echo "$$" > $PID_FILE # Write PID of this script
+ $bindir/xscreensaver -no-splash $timeout $lockmode $Nice & # Start XScreenSaver daemon
+ trap "kill $!" SIGTERM # Set these to kill the daemon
+ trap "kill $!" SIGKILL
+
+# KDE sends SIGUSER1 to indicate the user has hit the "lock" button.
+ trap "$bindir/xscreensaver-command -lock" SIGUSR1
+
+ wait $! # Do not exit, just wait for signals.
+
+else
+ echo "Usage: ./xscreensaver.kss -install|-setup|-test|-desc [-delay num] [-lock] [-nice num]"
+# echo " -corners xxxx Placing cursor in corner performs action:"
+# echo " x = i no action (ignore)"
+# echo " x = s save screen"
+# echo " x = l lock screen"
+# echo " order: top-left, top-right, bottom-left, bottom-right"
+ echo " -delay num Amount of idle time before screen saver starts (default 10min)"
+ echo " -desc Print the screen saver's description to stdout"
+ echo " -install Install screen saver"
+ echo " -lock Require password to stop screen saver"
+# echo " -allow-root Accept root password to unlock"
+ echo " -nice num Run with specified nice value"
+ echo " -preview wid Run in the specified XWindow"
+# echo " -inroot Run in the root window"
+ echo " -setup Setup screen saver"
+ echo " -test Invoke the screen saver immediately"
+fi
+
+# End of script - "xscreensaver.kss"
.if n .sp 1
.if t .sp .5
..
-.TH XScreenSaver 1 "31-May-2002 (4.04)" "X Version 11"
+.TH XScreenSaver 1 "11-Jun-2002 (4.05)" "X Version 11"
.SH NAME
xscreensaver - extensible screen saver framework, plus locking
.SH SYNOPSIS
a screen saver and locker for the X window system
by Jamie Zawinski
- version 4.04
- 31-May-2002
+ version 4.05
+ 11-Jun-2002
http://www.jwz.org/xscreensaver/
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="endgame" _label="Endgame">
+
+ <command arg="-root"/>
+
+ <number id="speed" type="slider" arg="-delay %"
+ _label="Speed" _low-label="Slow" _high-label="Fast"
+ low="0" high="50000" default="20000"
+ convert="invert"/>
+
+ <boolean id="showfps" _label="Show Frames-per-Second" arg-set="-fps"/>
+
+ <_description>
+Black slips out of three mating nets, but the fourth one holds him tight!
+A brilliant composition!
+Written by Blair Tennessy.
+ </_description>
+</screensaver>
convert="invert"/>
<number id="density" type="slider" arg="-density %"
- _label="Speed" _low-label="Sparse" _high-label="Full"
+ _label="Density" _low-label="Sparse" _high-label="Full"
low="1" high="100" default="75"/>
<boolean id="trace" _label="Run Trace Program" arg-set="-trace"/>
menger.c engine.c flipscreen3d.c font-ximage.c \
grab-ximage.c glsnake.c boxed.c glforestfire.c sballs.c \
cubenetic.c spheremonics.c marching.c lavalite.c rotator.c \
- trackball.c gltrackball.c queens.c
+ trackball.c gltrackball.c queens.c endgame.c chessmodels.c
OBJS = xscreensaver-gl-helper.o \
atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \
menger.o engine.o flipscreen3d.o font-ximage.o \
grab-ximage.o glsnake.o boxed.o glforestfire.o sballs.o \
cubenetic.o spheremonics.o marching.o lavalite.o rotator.o \
- trackball.o gltrackball.o queens.o
+ trackball.o gltrackball.o queens.o endgame.o chessmodels.o
GL_EXES = cage gears moebius pipes sproingies stairs superquadrics \
morph3d rubik atlantis lament bubble3d glplanet pulsar \
sierpinski3d gflux stonerview starwars gltext molecule \
dangerball circuit menger engine flipscreen3d glsnake boxed \
- glforestfire sballs cubenetic spheremonics lavalite queens
+ glforestfire sballs cubenetic spheremonics lavalite queens \
+ endgame
GLE_EXES = extrusion
GL_UTIL_EXES = xscreensaver-gl-helper
HACK_EXES = @GL_EXES@ @GLE_EXES@
HDRS = atlantis.h bubble3d.h buildlwo.h e_textures.h xpm-ximage.h \
grab-ximage.h font-ximage.h tube.h sphere.h boxed.h \
stonerview-move.h stonerview-osc.h glutstroke.h \
- glut_roman.h marching.h rotator.h trackball.h gltrackball.h
+ glut_roman.h marching.h rotator.h trackball.h gltrackball.h \
+ chessmodels.h
GL_MEN = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
cubenetic.man dangerball.man engine.man extrusion.man \
flipscreen3d.man gears.man gflux.man glforestfire.man \
menger.man moebius.man molecule.man morph3d.man pipes.man \
pulsar.man queens.man rubik.man sballs.man sierpinski3d.man \
spheremonics.man sproingies.man stairs.man starwars.man \
- stonerview.man superquadrics.man xscreensaver-gl-helper.man
+ stonerview.man superquadrics.man xscreensaver-gl-helper.man \
+ endgame.man
MEN = @GL_MEN@
EXTRAS = README Makefile.in
queens: queens.o $(TRACK_OBJS) $(HACK_OBJS)
$(CC_HACK) -o $@ $@.o $(TRACK_OBJS) $(HACK_OBJS) $(HACK_LIBS)
+CHESSOBJS=chessmodels.o $(TRACK_OBJS) $(HACK_OBJS)
+endgame: endgame.o $(CHESSOBJS)
+ $(CC_HACK) -o $@ $@.o $(CHESSOBJS) $(HACK_LIBS)
+
# This one works differently (it's not xlock-like.)
#
STONER_OBJS=stonerview.o stonerview-move.o stonerview-osc.o stonerview-view.o \
buildlwo.o: $(srcdir)/buildlwo.h
cage.o: ../../config.h
cage.o: $(srcdir)/e_textures.h
+chessmodels.o: $(srcdir)/chessmodels.h
circuit.o: ../../config.h
circuit.o: $(srcdir)/font-ximage.h
cubenetic.o: ../../config.h
dangerball.o: $(srcdir)/sphere.h
dangerball.o: $(srcdir)/tube.h
dolphin.o: $(srcdir)/atlantis.h
+endgame.o: $(srcdir)/chessmodels.h
+endgame.o: ../../config.h
+endgame.o: $(srcdir)/gltrackball.h
engine.o: ../../config.h
extrusion-helix2.o: ../../config.h
extrusion-helix3.o: ../../config.h
--- /dev/null
+/*
+ * glChess - A 3D chess interface
+ *
+ * Copyright (C) 2002 Robert Ancell <bob27@users.sourceforge.net>
+ * Michael Duelli <duelli@users.sourceforge.net>
+ *
+ * This program 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* chessmodels.c: Contains the code for piece model creation */
+
+#include <math.h>
+#include <GL/glx.h>
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+#include "chessmodels.h"
+
+double piece_size = 0.1;
+
+#define ROT 16
+
+#define piece_size 0.095
+#define EPSILON 0.001
+
+/* Make a revolved piece */
+void revolve_line(double *trace_r, double *trace_h, double max_ih, int rot) {
+ double theta, norm_theta, sin_theta, cos_theta;
+ double norm_ptheta = 0.0, sin_ptheta = 0.0, cos_ptheta = 1.0;
+ double radius, pradius;
+ double max_height = max_ih, height, pheight;
+ double dx, dy, len;
+ int npoints, p;
+ double dtheta = (2.0*M_PI) / rot;
+
+ /* Get the number of points */
+ for(npoints = 0;
+ fabs(trace_r[npoints]) > EPSILON || fabs(trace_h[npoints]) > EPSILON;
+ ++npoints);
+
+ /* If less than two points, can not revolve */
+ if(npoints < 2)
+ return;
+
+ /* If the max_height hasn't been defined, find it */
+ if(max_height < EPSILON)
+ for(p = 0; p < npoints; ++p)
+ if(max_height < trace_h[p])
+ max_height = trace_h[p];
+
+ /* Draw the revolution */
+ for(theta = dtheta; rot > 0; --rot) {
+ sin_theta = sin(theta);
+ cos_theta = cos(theta);
+ norm_theta = theta / (2.0 * M_PI);
+ pradius = trace_r[0] * piece_size;
+ pheight = trace_h[0] * piece_size;
+
+ for(p = 0; p < npoints; ++p) {
+ radius = trace_r[p] * piece_size;
+ height = trace_h[p] * piece_size;
+
+ /* Get the normalized lengths of the normal vector */
+ dx = radius - pradius;
+ dy = height - pheight;
+ len = sqrt(dx*dx + dy*dy);
+ dx /= len;
+ dy /= len;
+
+ /* If only triangles required */
+ if (fabs(radius) < EPSILON) {
+ glBegin(GL_TRIANGLES);
+
+ glNormal3f(dy * sin_ptheta, -dx, dy * cos_ptheta);
+ glTexCoord2f(norm_ptheta, pheight / max_height);
+ glVertex3f(pradius * sin_ptheta, pheight, pradius * cos_ptheta);
+
+ glNormal3f(dy * sin_theta, -dx, dy * cos_theta);
+ glTexCoord2f(norm_theta, pheight / max_height);
+ glVertex3f(pradius * sin_theta, pheight, pradius * cos_theta);
+
+ glTexCoord2f(0.5 * (norm_theta + norm_ptheta),
+ height / max_height);
+ glVertex3f(0.0, height, 0.0);
+
+ glEnd();
+ }
+
+ else {
+ glBegin(GL_QUADS);
+
+ glNormal3f(dy * sin_ptheta, -dx, dy * cos_ptheta);
+ glTexCoord2f(norm_ptheta, pheight / max_height);
+ glVertex3f(pradius * sin_ptheta, pheight, pradius * cos_ptheta);
+
+ glNormal3f(dy * sin_theta, -dx, dy * cos_theta);
+ glTexCoord2f(norm_theta, pheight / max_height);
+ glVertex3f(pradius * sin_theta, pheight, pradius * cos_theta);
+
+ glTexCoord2f(norm_theta, height / max_height);
+ glVertex3f(radius * sin_theta, height, radius * cos_theta);
+
+ glNormal3f(dy * sin_ptheta, -dx, dy * cos_ptheta);
+ glTexCoord2f(norm_ptheta, height / max_height);
+ glVertex3f(radius * sin_ptheta, height, radius * cos_ptheta);
+
+ glEnd();
+ }
+
+ pradius = radius;
+ pheight = height;
+ }
+
+ sin_ptheta = sin_theta;
+ cos_ptheta = cos_theta;
+ norm_ptheta = norm_theta;
+ theta += dtheta;
+ }
+}
+
+void gen_model_lists(void) {
+ glNewList(1, GL_COMPILE);
+ draw_king();
+ glEndList();
+
+ glNewList(2, GL_COMPILE);
+ draw_queen();
+ glEndList();
+
+ glNewList(3, GL_COMPILE);
+ draw_bishop();
+ glEndList();
+
+ glNewList(4, GL_COMPILE);
+ draw_knight();
+ glEndList();
+
+ glNewList(5, GL_COMPILE);
+ draw_rook();
+ glEndList();
+
+ glNewList(6, GL_COMPILE);
+ draw_pawn();
+ glEndList();
+}
+
+void draw_pawn(void) {
+ double trace_r[] =
+ { 3.5, 3.5, 2.5, 2.5, 1.5, 1.0, 1.8, 1.0, 2.0, 1.0, 0.0, 0.0 };
+ double trace_h[] =
+ { 0.0, 2.0, 3.0, 4.0, 6.0, 8.8, 8.8, 9.2, 11.6, 13.4, 13.4, 0.0 };
+
+ revolve_line(trace_r, trace_h, 0.0, ROT);
+}
+
+void draw_rook(void)
+{
+ double trace_r[] =
+ { 3.8, 3.8, 2.6, 2.0, 2.8, 2.8, 2.2, 2.2, 0.0, 0.0 };
+ double trace_h[] =
+ { 0.0, 2.0, 5.0, 10.2, 10.2, 13.6, 13.6, 13.0, 13.0, 0.0 };
+
+ revolve_line(trace_r, trace_h, 0.0, ROT);
+}
+
+void draw_knight(void)
+{
+ double trace_r[] = { 4.1, 4.1, 2.0, 2.0, 2.6, 0.0 };
+ double trace_h[] = { 0.0, 2.0, 3.6, 4.8, 5.8, 0.0 };
+
+ /* Revolved base */
+ revolve_line(trace_r, trace_h, 17.8, ROT);
+
+ /* Non revolved pieces */
+ /* Quads */
+ glBegin(GL_QUADS);
+
+ /* Square base */
+ glNormal3f(0.0, -1.0, 0.0);
+ glTexCoord2f(0.0, 5.8 / 17.8 * piece_size);
+ glVertex3f(2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
+ glTexCoord2f(0.0, 5.8 / 17.8 * piece_size);
+ glVertex3f(-2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
+ glTexCoord2f(0.0, 5.8 / 17.8 * piece_size);
+ glVertex3f(-2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0, 5.8 / 17.8 * piece_size);
+ glVertex3f(2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
+
+ /* Upper edge of nose */
+ glNormal3f(0.0, 0.707107, 0.707107);
+ glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
+ glVertex3f(0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
+ glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
+ glVertex3f(-0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
+
+ /* Above head */
+ glNormal3f(0.0, 1.0, 0.0);
+
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
+
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
+
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
+
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
+
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
+
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
+
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+
+ /* Back of head */
+ glNormal3f(0.0, 0.0, -1.0);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0, 15.0 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0, 15.0 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
+
+ /* Under back */
+ glNormal3f(0.0, 0.0, -1.0);
+ glTexCoord2f(0.0, 15.0 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0, 15.0 / 17.8 * piece_size);
+ glVertex3f(1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0, 14.8 / 17.8 * piece_size);
+ glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+ glTexCoord2f(0.0, 14.8 / 17.8 * piece_size);
+ glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+
+ /* Right side of face */
+ glNormal3f(-0.933878, 0.128964, -0.333528);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
+ glTexCoord2f(0.0, 14.0 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
+ glTexCoord2f(0.0, 13.8 / 17.8 * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+
+ glNormal3f(-0.966676, 0.150427, 0.207145);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-0.8 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0, 13.8 / 17.8 * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0, 14.0 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
+
+ /* (above and below eye) */
+ glNormal3f(-0.934057, 0.124541, -0.334704);
+
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-0.82666667 * piece_size, 16.6 * piece_size,
+ 0.2 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-0.8 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0, 16.6 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
+
+ glTexCoord2f(0.0, 13.8 / 17.8 * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
+ glVertex3f(-0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
+ glTexCoord2f(0.0, 13.6 / 17.8 * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+
+ glTexCoord2f(0.0, 13.6 / 17.8 * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0, 16.2 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
+ glTexCoord2f(0.0, 15.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0, 14.0 / 17.8 * piece_size);
+ glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+
+ glNormal3f(-0.970801, -0.191698, -0.144213);
+ glTexCoord2f(0.0, 16.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+ glTexCoord2f(0.0, 14.8 / 17.8 * piece_size);
+ glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+ glTexCoord2f(0.0, 14.0 / 17.8 * piece_size);
+ glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+ glTexCoord2f(0.0, 15.8 / 17.8 * piece_size);
+ glVertex3f(-1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
+
+ glNormal3f(-0.975610, 0.219512, 0.0);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.0f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
+ glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+
+ /* Left side of face */
+ glNormal3f(0.933878, 0.128964, -0.333528);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
+
+ glNormal3f(0.966676, 0.150427, 0.207145);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.5 * piece_size, 16.8 * piece_size, 1.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.8 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
+
+ /* (above and below eye) */
+ glNormal3f(0.934057, 0.124541, -0.334704);
+
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(0.82666667 * piece_size, 16.6 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.8 * piece_size, 16.8 * piece_size, 0.2 * piece_size);
+
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
+
+ glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
+
+ glNormal3f(0.970801, -0.191698, -0.144213);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
+ glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+
+ glNormal3f(0.975610, -0.219512, 0.0);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
+ glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.0f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 15.0 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+
+ /* Eyes */
+ glNormal3f(0.598246, 0.797665, 0.076372);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(0.61333334 * piece_size, 16.4 * piece_size, 0.2 * piece_size);
+
+ glNormal3f(0.670088, -0.714758, 0.200256);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(0.61333334 * piece_size, 16.4 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(0.82666667 * piece_size, 16.6 * piece_size, 0.2 * piece_size);
+
+ glNormal3f(-0.598246, 0.797665, 0.076372);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(-0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(-0.61333334 * piece_size, 16.4 * piece_size,
+ 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(-0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
+
+ glNormal3f(-0.670088, -0.714758, 0.200256);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(-0.61333334 * piece_size, 16.4 * piece_size,
+ 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(-0.82666667 * piece_size, 16.6 * piece_size,
+ 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(-0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
+
+ /* Hair */
+ glNormal3f(0.0, 1.0, 0.0);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
+
+ glNormal3f(1.0, 0.0, 0.0);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 16.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
+
+ glNormal3f(-1.0, 0.0, 0.0);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 16.8 * piece_size, -0.8 * piece_size);
+
+ glNormal3f(0.0, 0.0, 1.0);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 16.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 16.8 * piece_size, -0.8 * piece_size);
+
+ glNormal3f(0.0, 0.0, -1.0);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.35 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 16.8 * piece_size, -4.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 17.8f / 17.8f * piece_size);
+ glVertex3f(-0.35 * piece_size, 17.8 * piece_size, -4.4 * piece_size);
+
+ /* Under chin */
+ glNormal3f(0.0, -0.853282, 0.521450);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
+
+ glNormal3f(0.0, -0.983870, -0.178885);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 14.0 * piece_size, 1.3 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+
+ /* Mane */
+
+ /* Right */
+ glNormal3f(-0.788443, 0.043237, -0.613587);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(-2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
+ glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.0f / 17.8f * piece_size);
+ glVertex3f(0.0, 15.0 * piece_size, -3.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
+ glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
+
+ /* Left */
+ glNormal3f(0.788443, 0.043237, -0.613587);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
+ glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.0f / 17.8f * piece_size);
+ glVertex3f(0.0, 15.0 * piece_size, -3.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
+ glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+
+ /* Chest */
+ /* Front */
+ glNormal3f(0.0, 0.584305, 0.811534);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
+ glVertex3f(-2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
+ glVertex3f(2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+
+ /* Bottom */
+ glNormal3f(0.0, -0.422886, 0.906183);
+ glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
+ glVertex3f(-2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(-2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
+ glVertex3f(2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
+
+ /* Right */
+ glNormal3f(-0.969286, 0.231975, -0.081681);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(-2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
+ glVertex3f(-2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
+
+ glNormal3f(-0.982872, 0.184289, 0.0);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(-1.1422222222 * piece_size, 12.2 * piece_size,
+ -2.2222222222 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(-2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(-2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
+
+ glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
+ glVertex3f(-0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(-1.1422222222 * piece_size, 12.2 * piece_size,
+ -2.2222222222 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+
+ /* Left */
+ glNormal3f(0.969286, 0.231975, -0.081681);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 8.8f / 17.8f * piece_size);
+ glVertex3f(2.0 * piece_size, 8.8 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+
+ glNormal3f(0.982872, 0.184289, 0.0);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(2.6 * piece_size, 5.8 * piece_size, 2.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(1.1422222222 * piece_size, 12.2 * piece_size,
+ -2.2222222222 * piece_size);
+
+ glTexCoord2f(0.0f * piece_size, 14.8f / 17.8f * piece_size);
+ glVertex3f(0.55 * piece_size, 14.8 * piece_size, -2.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(1.1422222222 * piece_size, 12.2 * piece_size,
+ -2.2222222222 * piece_size);
+ glEnd();
+
+ /* Triangles */
+ glBegin(GL_TRIANGLES);
+
+ /* Under mane */
+ glNormal3f(0.819890, -0.220459, -0.528373);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(1.44 * piece_size, 5.8 * piece_size, -2.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
+ glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
+
+ glNormal3f(0.0, -0.573462, -0.819232);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(1.44 * piece_size, 5.8 * piece_size, -2.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(-1.44 * piece_size, 5.8 * piece_size, -2.6 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
+ glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
+
+ glNormal3f(-0.819890, -0.220459, -0.528373);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(-2.6 * piece_size, 5.8 * piece_size, -0.8 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 7.8f / 17.8f * piece_size);
+ glVertex3f(0.0, 7.8 * piece_size, -4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 5.8f / 17.8f * piece_size);
+ glVertex3f(-1.44 * piece_size, 5.8 * piece_size, -2.6 * piece_size);
+
+ /* Nose tip */
+ glNormal3f(0.0, 0.0, 1.0);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(0.0, 14.0 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(-0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
+
+ /* Mouth left */
+ glNormal3f(-0.752714, -0.273714, 0.598750);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(0.0, 14.0 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(-0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+
+ glNormal3f(-0.957338, 0.031911, 0.287202);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(-0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
+
+ glNormal3f(-0.997785, 0.066519, 0.0);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
+
+ /* Mouth right */
+ glNormal3f(0.752714, -0.273714, 0.598750);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(0.0, 14.0 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
+
+ glNormal3f(0.957338, 0.031911, 0.287202);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(0.8 * piece_size, 16.2 * piece_size, 4.0 * piece_size);
+
+ glNormal3f(0.997785, 0.066519, 0.0);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, 3.4 * piece_size);
+
+ /* Under nose */
+ glNormal3f(0.0, -0.992278, 0.124035);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(0.0, 14.0 * piece_size, 4.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 2.4 * piece_size);
+
+ /* Neck indents */
+ glNormal3f(-0.854714, 0.484047, 0.187514);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
+
+ glNormal3f(-0.853747, 0.515805, -0.071146);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(-1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+
+ glNormal3f(0.854714, 0.484047, 0.187514);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+
+ glNormal3f(0.853747, 0.515805, -0.071146);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 12.2f / 17.8f * piece_size);
+ glVertex3f(1.4 * piece_size, 12.2 * piece_size, -0.4 * piece_size);
+
+ /* Under chin */
+ glNormal3f(0.252982, -0.948683, -0.189737);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
+
+ glNormal3f(0.257603, -0.966012, 0.021467);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+
+ glNormal3f(0.126745, -0.887214, 0.443607);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
+
+ glNormal3f(-0.252982, -0.948683, -0.189737);
+ glTexCoord2f(0.0f * piece_size, 14.0f / 17.8f * piece_size);
+ glVertex3f(-0.6 * piece_size, 14.0 * piece_size, -1.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+
+ glNormal3f(-0.257603, -0.966012, 0.021467);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-0.45 * piece_size, 13.8 * piece_size, -0.2 * piece_size);
+
+ glNormal3f(-0.126745, -0.887214, 0.443607);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-0.5 * piece_size, 13.8 * piece_size, 0.4 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.8f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.8 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 13.6f / 17.8f * piece_size);
+ glVertex3f(-1.2 * piece_size, 13.6 * piece_size, -0.2 * piece_size);
+
+ /* Eyes */
+ glNormal3f(0.0, 0.0, -1.0);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(0.61333334 * piece_size, 16.4 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(0.82666667 * piece_size, 16.6 * piece_size, 0.2 * piece_size);
+
+ glNormal3f(0.000003, -0.668965, 0.743294);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
+
+ glNormal3f(0.0, 0.0, -1.0);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(-0.88 * piece_size, 16.2 * piece_size, 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(-0.82666667 * piece_size, 16.6 * piece_size,
+ 0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(-0.61333334 * piece_size, 16.4 * piece_size,
+ 0.2 * piece_size);
+
+ glNormal3f(-0.000003, -0.668965, 0.743294);
+ glTexCoord2f(0.0f * piece_size, 16.2f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.2 * piece_size, -0.74 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.4f / 17.8f * piece_size);
+ glVertex3f(-0.8 * piece_size, 16.4 * piece_size, -0.56 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.6f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.6 * piece_size, -0.38 * piece_size);
+
+ /* Behind eyes */
+ /* Right */
+ glNormal3f(-0.997484, 0.070735, 0.004796);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
+
+ glNormal3f(-0.744437, 0.446663, -0.496292);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(-0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
+ glVertex3f(-1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
+
+ /* Left */
+ glNormal3f(0.997484, 0.070735, 0.004796);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -2.0 * piece_size);
+
+ glNormal3f(0.744437, 0.446663, -0.496292);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 16.8 * piece_size, -0.2 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 15.8f / 17.8f * piece_size);
+ glVertex3f(1.0 * piece_size, 15.8 * piece_size, -1.1 * piece_size);
+ glTexCoord2f(0.0f * piece_size, 16.8f / 17.8f * piece_size);
+ glVertex3f(0.4 * piece_size, 16.8 * piece_size, -1.1 * piece_size);
+
+ glEnd();
+}
+
+void draw_bishop(void)
+{
+ double trace_r[] =
+ { 4.0, 4.0, 2.5, 2.5, 1.5, 1.2, 2.5, 1.7, 1.7, 2.2, 2.2,
+ 1.0, 0.8, 1.2, 0.8, 0.0, 0.0
+ };
+ double trace_h[] =
+ { 0.0, 2.0, 3.0, 4.0, 7.0, 9.4, 9.4, 11.0, 12.2, 13.2,
+ 14.8, 16.0, 17.0, 17.7, 18.4, 18.4, 0.0
+ };
+
+ revolve_line(trace_r, trace_h, 0.0, ROT);
+}
+
+void draw_queen(void)
+{
+ double trace_r[] =
+ { 4.8, 4.8, 3.4, 3.4, 1.8, 1.4, 2.9, 1.8, 1.8, 2.0, 2.7,
+ 2.4, 1.7, 0.95, 0.7, 0.9, 0.7, 0.0, 0.0
+ };
+ double trace_h[] =
+ { 0.0, 2.2, 4.0, 5.0, 8.0, 11.8, 11.8, 13.6, 15.2, 17.8,
+ 19.2, 20.0, 20.0, 20.8, 20.8, 21.4, 22.0, 22.0, 0.0
+ };
+
+ revolve_line(trace_r, trace_h, 0.0, ROT);
+}
+
+void draw_king(void)
+{
+ double trace_r[] =
+ { 5.0, 5.0, 3.5, 3.5, 2.0, 1.4, 3.0, 2.0, 2.0, 2.8, 1.6,
+ 1.6, 0.0, 0.0
+ };
+ double trace_h[] =
+ { 0.0, 2.0, 3.0, 4.6, 7.6, 12.6, 12.6, 14.6, 15.6, 19.1,
+ 19.7, 20.1, 20.1, 0.0
+ };
+
+ revolve_line(trace_r, trace_h, 0.0, ROT);
+
+ glBegin(GL_QUADS);
+
+ /* Cross front */
+ glNormal3f(0.0, 0.0, 1.0);
+
+ glVertex3f(-0.3 * piece_size, 20.1 * piece_size, 0.351 * piece_size);
+ glVertex3f(0.3 * piece_size, 20.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
+
+ glVertex3f(-0.9 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+
+ glVertex3f(0.9 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
+
+ /* Cross back */
+ glNormal3f(0.0, 0.0, -1.0);
+
+ glVertex3f(0.3 * piece_size, 20.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 20.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
+
+ glVertex3f(-0.3 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(-0.9 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(-0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+
+ glVertex3f(0.3 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.9 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
+
+ /* Cross left */
+ glNormal3f(-1.0, 0.0, 0.0);
+
+ glVertex3f(-0.9 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(-0.9 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
+
+ glVertex3f(-0.3 * piece_size, 20.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 20.1 * piece_size, -0.35 * piece_size);
+
+ glVertex3f(-0.3 * piece_size, 22.1 * piece_size, 0.3 * piece_size);
+ glVertex3f(-0.3 * piece_size, 23.1 * piece_size, 0.3 * piece_size);
+ glVertex3f(-0.3 * piece_size, 23.1 * piece_size, -0.3 * piece_size);
+ glVertex3f(-0.3 * piece_size, 22.1 * piece_size, -0.3 * piece_size);
+
+ /* Cross right */
+ glNormal3f(1.0, 0.0, 0.0);
+
+ glVertex3f(0.9 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.9 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
+
+ glVertex3f(0.3 * piece_size, 20.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 21.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 21.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 20.1 * piece_size, 0.35 * piece_size);
+
+ glVertex3f(0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+
+ /* Cross top */
+ glNormal3f(0.0, 1.0, 0.0);
+
+ glVertex3f(-0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(-0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+
+ glVertex3f(0.3 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.9 * piece_size, 22.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.9 * piece_size, 22.1 * piece_size, -0.35 * piece_size);
+
+ glVertex3f(-0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
+ glVertex3f(-0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 23.1 * piece_size, 0.35 * piece_size);
+ glVertex3f(0.3 * piece_size, 23.1 * piece_size, -0.35 * piece_size);
+
+ glEnd();
+}
--- /dev/null
+/*
+ * glChess - A 3D chess interface
+ *
+ * Copyright (C) 2002 Robert Ancell <bob27@users.sourceforge.net>
+ * Michael Duelli <duelli@users.sourceforge.net>
+ *
+ * This program 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+void revolve_line(double *, double *, double, int);
+void gen_model_lists(void);
+void draw_pawn(void);
+void draw_rook(void);
+void draw_rook_old(void);
+void draw_knight(void);
+void draw_bishop(void);
+void draw_queen(void);
+void draw_king(void);
+
spinz ? spin_speed : 0,
1.0,
do_wander ? wander_speed : 0,
- True);
+ (spinx && spiny && spinz));
cc->trackball = gltrackball_init ();
}
--- /dev/null
+/*
+ * endgame.c
+ * plays through a chess game ending. enjoy.
+ *
+ * version 1.0 - June 6, 2002
+ *
+ * Copyright (C) 2002 Blair Tennessy (tennessb@unbc.ca)
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation. No representations are made about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ */
+
+#include <X11/Intrinsic.h>
+
+#ifdef STANDALONE
+# define PROGCLASS "Endgame"
+# define HACK_INIT init_chess
+# define HACK_DRAW draw_chess
+# define HACK_RESHAPE reshape_chess
+# define HACK_HANDLE_EVENT chess_handle_event
+# define EVENT_MASK PointerMotionMask
+# define chess_opts xlockmore_opts
+
+#define DEFAULTS "*delay: 20000 \n" \
+ "*showFPS: False \n" \
+ "*wireframe: False \n" \
+
+# include "xlockmore.h"
+
+#else
+# include "xlock.h"
+#endif
+
+#ifdef USE_GL
+
+#include <GL/glu.h>
+#include "gltrackball.h"
+#include "chessmodels.h"
+
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+static XrmOptionDescRec opts[] = {
+ {"+rotate", ".chess.rotate", XrmoptionNoArg, (caddr_t) "false" },
+ {"-rotate", ".chess.rotate", XrmoptionNoArg, (caddr_t) "true" },
+};
+
+int rotate, spidey, spideydark;
+
+static argtype vars[] = {
+ {(caddr_t *) &rotate, "rotate", "Rotate", "True", t_Bool},
+};
+
+ModeSpecOpt chess_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+#ifdef USE_MODULES
+ModStruct chess_description =
+{"chess", "init_chess", "draw_chess", "release_chess",
+ "draw_chess", "init_chess", NULL, &chess_opts,
+ 1000, 1, 2, 1, 4, 1.0, "",
+ "Chess", 0, NULL};
+
+#endif
+
+typedef struct {
+ GLXContext *glx_context;
+ Window window;
+ trackball_state *trackball;
+ Bool button_down_p;
+} Chesscreen;
+
+static Chesscreen *qs = NULL;
+
+#include <math.h>
+#include <sys/time.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
+
+/* ugggggggly */
+#define NONE 0
+#define KING 1
+#define QUEEN 2
+#define BISHOP 3
+#define KNIGHT 4
+#define ROOK 5
+#define PAWN 6
+#define BKING 8
+#define BQUEEN 9
+#define BBISHOP 10
+#define BKNIGHT 11
+#define BROOK 12
+#define BPAWN 13
+
+#define BOARDSIZE 8
+#define PIECES 7
+
+/* definition of white/black colors */
+GLfloat colors[2][3] = { {1.0, 0.5, 0.0},
+ {0.5, 0.5, 0.5} };
+
+/* int board[8][8] = */
+/* { {ROOK, KNIGHT, BISHOP, QUEEN, KING, BISHOP, KNIGHT, ROOK}, */
+/* {PAWN, PAWN, PAWN, PAWN, PAWN, PAWN, PAWN, PAWN}, */
+/* {NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE}, */
+/* {NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE}, */
+/* {NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE}, */
+/* {NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE}, */
+/* {BPAWN, BPAWN, BPAWN, BPAWN, BPAWN, BPAWN, BPAWN, BPAWN}, */
+/* {BROOK, BKNIGHT, BBISHOP, BQUEEN, BKING, BBISHOP, BKNIGHT, BROOK}}; */
+
+int board[8][8];
+
+void buildBoard(void) {
+ board[0][5] = BKING;
+ board[1][4] = BPAWN;
+ board[1][2] = BPAWN;
+ board[1][0] = BPAWN;
+ board[2][2] = BPAWN;
+ board[2][4] = BPAWN;
+ board[2][7] = KNIGHT;
+ board[3][0] = PAWN;
+ board[3][2] = ROOK;
+ board[4][0] = PAWN;
+ board[4][4] = KING;
+ board[4][5] = PAWN;
+ board[6][0] = BPAWN;
+ board[6][7] = PAWN;
+ board[7][0] = BBISHOP;
+}
+
+#define MOVES 24
+
+int moves[MOVES][4] =
+ { {3, 2, 6, 2},
+ {7, 0, 6, 1},
+ {6, 2, 6, 6},
+ {0, 5, 0, 4},
+ {6, 6, 0, 6},
+ {0, 4, 1, 3},
+ {2, 7, 1, 5},
+ {2, 2, 3, 2},
+ {0, 6, 0, 3},
+ {1, 3, 2, 2},
+ {0, 3, 6, 3},
+ {3, 2, 4, 2}, /* pawn to bishop 5 */
+ {1, 5, 0, 3}, /* check */
+ {2, 2, 3, 2},
+ {0, 3, 2, 4}, /* takes pawn */
+ {3, 2, 2, 2},
+ {2, 4, 0, 3},
+ {2, 2, 3, 2},
+ {6, 3, 6, 1}, /* rook takes bishop */
+ {6, 0, 7, 0}, /* hack this in! */
+ {6, 1, 3, 1},
+ {3, 2, 2, 3},
+ {3, 1, 3, 3},
+ {0, 0, 2, 3},
+ };
+
+/* yay its c */
+int mpiece = 0, tpiece, steps = 0;
+double mcount = 0.0;
+double from[2], to[2];
+double dx, dz;
+int moving = 0, take = 0, mc = 0, count = 0;
+
+Bool chess_handle_event (ModeInfo *mi, XEvent *event) {
+ Chesscreen *c = &qs[MI_SCREEN(mi)];
+
+ if(event->xany.type == ButtonPress && event->xbutton.button & Button1) {
+ c->button_down_p = True;
+ gltrackball_start (c->trackball,
+ event->xbutton.x, event->xbutton.y,
+ MI_WIDTH (mi), MI_HEIGHT (mi));
+ return True;
+ }
+ else if(event->xany.type == ButtonRelease
+ && event->xbutton.button & Button1) {
+ c->button_down_p = False;
+ return True;
+ }
+ else if(event->xany.type == MotionNotify && c->button_down_p) {
+ gltrackball_track (c->trackball,
+ event->xmotion.x, event->xmotion.y,
+ MI_WIDTH (mi), MI_HEIGHT (mi));
+ return True;
+ }
+
+ return False;
+}
+
+/* clear board */
+void blank(void) {
+ int i, j;
+
+ for(i = 0; i < BOARDSIZE; ++i)
+ for(j = 0; j < BOARDSIZE; ++j)
+ board[i][j] = NONE;
+}
+
+/* configure lighting */
+void setup_lights(void) {
+ GLfloat position[] = { 0.0, 8.0, 0.0, 1.0 };
+
+ glEnable(GL_LIGHTING);
+ glLightfv(GL_LIGHT0, GL_POSITION, position);
+ glEnable(GL_LIGHT0);
+}
+
+/* draw pieces */
+void drawPieces(void) {
+ int i, j;
+
+ for(i = 0; i < BOARDSIZE; ++i) {
+ for(j = 0; j < BOARDSIZE; ++j) {
+ if(board[i][j]) {
+ int c = board[i][j]/PIECES;
+ glColor3fv(colors[c]);
+ glCallList(board[i][j]%7);
+ }
+
+ glTranslatef(1.0, 0.0, 0.0);
+ }
+
+ glTranslatef(-1.0*BOARDSIZE, 0.0, 1.0);
+ }
+
+ glTranslatef(0.0, 0.0, -1.0*BOARDSIZE);
+}
+
+void drawMovingPiece(int wire) {
+ glTranslatef(from[1], 0.0, from[0]);
+ glColor3fv(colors[mpiece/7]);
+
+ /* assume a queening. should be more general */
+ if((mpiece == PAWN && fabs(to[0]) < 0.01) ||
+ (mpiece == BPAWN && fabs(to[0]-7.0) < 0.01)) {
+ if(!wire)
+ glEnable(GL_BLEND);
+
+ glColor4f(colors[mpiece/7][0], colors[mpiece/7][1], colors[mpiece/7][2],
+ (fabs(50.0-steps))/50.0);
+
+ glCallList(steps < 50 ? PAWN : QUEEN);
+
+ /* what a kludge. yay for side effects */
+ if(steps == 99)
+ mpiece = mpiece == PAWN ? QUEEN : BQUEEN;
+
+ if(!wire)
+ glDisable(GL_BLEND);
+ }
+ else
+ glCallList(mpiece % 7);
+}
+
+void drawTakePiece(int wire) {
+ if(!wire)
+ glEnable(GL_BLEND);
+
+ glColor4f(colors[tpiece/7][0], colors[tpiece/7][1], colors[tpiece/7][2],
+ (100-1.6*steps)/100.0);
+
+ glTranslatef(to[1] - from[1], 0.0, to[0] - from[0]);
+ glScalef(1.0, 1 - steps/50.0 > 0.01 ? 1 - steps/50.0 : 0.01, 1.0);
+ glCallList(tpiece % 7);
+
+ if(!wire)
+ glDisable(GL_BLEND);
+}
+
+/* draw board */
+void drawBoard(void) {
+ int i, j;
+
+ for(i = 0; i < BOARDSIZE; ++i)
+ for(j = 0; j < BOARDSIZE; ++j) {
+ glColor3fv(colors[(i+j)%2]);
+ glNormal3f(0.0, 1.0, 0.0);
+
+ glBegin(GL_QUADS);
+
+ glVertex3f(i - 0.5, 0.0, j + 0.5);
+ glVertex3f(i + 0.5, 0.0, j + 0.5);
+ glVertex3f(i + 0.5, 0.0, j - 0.5);
+ glVertex3f(i - 0.5, 0.0, j - 0.5);
+
+ /* draw the bottom, too */
+ glNormal3f(0.0, -1.0, 0.0);
+
+ glVertex3f(i - 0.5, 0.0, j - 0.5);
+ glVertex3f(i + 0.5, 0.0, j - 0.5);
+ glVertex3f(i + 0.5, 0.0, j + 0.5);
+ glVertex3f(i - 0.5, 0.0, j + 0.5);
+
+ glEnd();
+ }
+}
+
+#define SQ 0.5
+
+double theta = 0.0;
+
+void display(Chesscreen *c, int wire) {
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+
+ glTranslatef(0.0, -3.0+fabs(sin(theta)), -1.3*BOARDSIZE);
+ gltrackball_rotate (c->trackball);
+ glRotatef(theta*100, 0.0, 1.0, 0.0);
+ glTranslatef(-0.5*(BOARDSIZE-1), 0.0, -0.5*(BOARDSIZE-1));
+
+ if(!wire) {
+ glEnable(GL_LIGHTING);
+ glEnable(GL_COLOR_MATERIAL);
+ }
+
+ drawBoard();
+ glTranslatef(0.0, .02, 0.0);
+ drawPieces();
+ if(moving) drawMovingPiece(wire);
+ if(take) drawTakePiece(wire);
+
+ glDisable(GL_COLOR_MATERIAL);
+ glDisable(GL_LIGHTING);
+
+ theta += .002;
+}
+
+void reshape_chess(ModeInfo *mi, int width, int height) {
+ GLfloat h = (GLfloat) height / (GLfloat) width;
+ glViewport(0,0, width, height);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(45, 1/h, 2.0, 30.0);
+ glMatrixMode(GL_MODELVIEW);
+}
+
+void init_chess(ModeInfo *mi) {
+ GLfloat mat_shininess[] = { 90.0 };
+ GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
+
+ int screen = MI_SCREEN(mi);
+ int wire = MI_IS_WIREFRAME(mi);
+ Chesscreen *c;
+
+ if(!qs &&
+ !(qs = (Chesscreen *) calloc(MI_NUM_SCREENS(mi), sizeof(Chesscreen))))
+ return;
+
+ c = &qs[screen];
+ c->window = MI_WINDOW(mi);
+ c->trackball = gltrackball_init ();
+
+ if((c->glx_context = init_GL(mi)))
+ reshape_chess(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+ else
+ MI_CLEARWINDOW(mi);
+
+ glClearColor(0.0, 0.0, 0.0, 0.0);
+
+ glEnable(GL_CULL_FACE);
+ glCullFace(GL_BACK);
+ glLineWidth(1.0);
+ glDepthFunc(GL_LEQUAL);
+
+ setup_lights();
+
+ gen_model_lists();
+
+ if (!wire) {
+ glColorMaterial(GL_FRONT, GL_DIFFUSE);
+
+ glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
+ glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
+ glShadeModel(GL_SMOOTH);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable(GL_DEPTH_TEST);
+ }
+ else
+ glPolygonMode(GL_FRONT, GL_LINE);
+
+ buildBoard();
+}
+
+void draw_chess(ModeInfo *mi) {
+ Chesscreen *c = &qs[MI_SCREEN(mi)];
+ Window w = MI_WINDOW(mi);
+ Display *disp = MI_DISPLAY(mi);
+
+ if(!c->glx_context)
+ return;
+
+ glXMakeCurrent(disp, w, *(c->glx_context));
+
+ /* moving code */
+ if(moving) {
+ ++steps;
+ from[0] += dz;
+ from[1] += dx;
+ }
+
+ if(steps == 100) {
+ moving = count = steps = take = 0;
+ board[moves[mc][2]][moves[mc][3]] = mpiece;
+ ++mc;
+
+ if(mc == MOVES) {
+ blank();
+ buildBoard();
+ mc = 0;
+ }
+ }
+
+ if(count++ == 100) {
+ moving = 1;
+ mpiece = board[moves[mc][0]][moves[mc][1]];
+ board[moves[mc][0]][moves[mc][1]] = NONE;
+
+ if((tpiece = board[moves[mc][2]][moves[mc][3]]) != NONE) {
+ board[moves[mc][2]][moves[mc][3]] = NONE;
+ take = 1;
+ }
+
+ mcount = 0.0;
+ from[0] = moves[mc][0];
+ from[1] = moves[mc][1];
+ to[0] = moves[mc][2];
+ to[1] = moves[mc][3];
+
+ dz = (to[0] - from[0]) / 100;
+ dx = (to[1] - from[1]) / 100;
+ steps = 0;
+ }
+
+ display(c, MI_IS_WIREFRAME(mi));
+
+ if(mi->fps_p) do_fps(mi);
+ glFinish();
+ glXSwapBuffers(disp, w);
+}
+
+void release_chess(ModeInfo *mi) {
+ if(qs)
+ free((void *) qs);
+
+ FreeAllGL(MI);
+}
+
+#endif
--- /dev/null
+.TH XScreenSaver 1 "May 2002"
+.SH NAME
+endgame \- endgame chess screensaver
+.SH SYNOPSIS
+.B endgame
+[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
+[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+.SH DESCRIPTION
+endgame replays a brilliant chess ending
+.SH OPTIONS
+.I chess
+accepts the following options:
+.TP 8
+.B \-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-install
+Install a private colormap for the window.
+.TP 8
+.B \-visual \fIvisual\fP\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.B \-fps
+Display a running tally of how many frames per second are being rendered.
+In conjunction with \fB\-delay 0\fP, this can be a useful benchmark of
+your GL performance.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH BUGS
+It's not unknown for this and other OpenGL hacks to fail under hardware accelaration (UtahGLX) and take the X server with them. Texture images must be 16x16 or 32x32 or 64x64 etc.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.BR xscreensaver\-demo (1),
+.BR xscreensaver\-getimage (1)
+.SH COPYRIGHT
+Copyright \(co 2002 by Blair Tennessy. Permission to use, copy, modify,
+distribute, and sell this software and its documentation for any purpose is
+hereby granted without fee, provided that the above copyright notice appear
+in all copies and that both that copyright notice and this permission notice
+appear in supporting documentation. No representations are made about the
+suitability of this software for any purpose. It is provided "as is" without
+express or implied warranty.
+.SH AUTHOR
+Blair Tennessy <tennessb@unbc.ca>, 20-April-2002.
+
#endif
#include <GL/gl.h>
-#include <GL/glut.h>
+/*#include <GL/glut.h>*/
#ifdef HAVE_GLE3
#include <GL/gle.h>
#else
#endif
#include <GL/gl.h>
-#include <GL/glut.h>
+/*#include <GL/glut.h>*/
#ifdef HAVE_GLE3
#include <GL/gle.h>
#else
#endif
#include <GL/gl.h>
-#include <GL/glut.h>
+/*#include <GL/glut.h>*/
#ifdef HAVE_GLE3
#include <GL/gle.h>
#else
#endif
#include <GL/gl.h>
-#include <GL/glut.h>
+/*#include <GL/glut.h>*/
#ifdef HAVE_GLE3
#include <GL/gle.h>
#else
#include <math.h>
#include <stdlib.h>
#include <GL/gl.h>
-#include <GL/glut.h>
+/*#include <GL/glut.h>*/
#ifdef HAVE_GLE3
#include <GL/gle.h>
#else
#include <math.h>
#include <stdlib.h>
#include <GL/gl.h>
-#include <GL/glut.h>
+/*#include <GL/glut.h>*/
#ifdef HAVE_GLE3
#include <GL/gle.h>
#else
#include <math.h>
#include <stdlib.h>
#include <GL/gl.h>
-#include <GL/glut.h>
+/*#include <GL/glut.h>*/
#ifdef HAVE_GLE3
#include <GL/gle.h>
#else
static XrmOptionDescRec opts[] = {
{ "-text", ".text", XrmoptionSepArg, 0 },
{ "-spin", ".spin", XrmoptionSepArg, 0 },
- { "+spin", ".spin", XrmoptionNoArg, "False" },
+ { "+spin", ".spin", XrmoptionNoArg, "" },
{ "-wander", ".wander", XrmoptionNoArg, "True" },
{ "+wander", ".wander", XrmoptionNoArg, "False" }
};
}
{
+ Bool spinx=False, spiny=False, spinz=False;
double spin_speed = 1.0;
double wander_speed = 0.05;
double spin_accel = 1.0;
- tp->rot = make_rotator (do_spin ? spin_speed : 0,
- do_spin ? spin_speed : 0,
- do_spin ? spin_speed : 0,
+ char *s = do_spin;
+ while (*s)
+ {
+ if (*s == 'x' || *s == 'X') spinx = True;
+ else if (*s == 'y' || *s == 'Y') spiny = True;
+ else if (*s == 'z' || *s == 'Z') spinz = True;
+ else
+ {
+ fprintf (stderr,
+ "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n",
+ progname, do_spin);
+ exit (1);
+ }
+ s++;
+ }
+
+ tp->rot = make_rotator (spinx ? spin_speed : 0,
+ spiny ? spin_speed : 0,
+ spinz ? spin_speed : 0,
spin_accel,
do_wander ? wander_speed : 0,
- True);
+ False);
tp->trackball = gltrackball_init ();
}
GLuint bottle_list;
GLuint ball_list;
- Bool spin_x, spin_y, spin_z; /* spin of the scene overall */
-
int bottle_poly_count; /* polygons in the bottle only */
} lavalite_configuration;
reshape_lavalite (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
{
- char *s = do_spin;
- while (*s)
- {
- if (*s == ' ' || *s == '\t') ;
- else if (*s == 'x' || *s == 'X') bp->spin_x = 1;
- else if (*s == 'y' || *s == 'Y') bp->spin_y = 1;
- else if (*s == 'z' || *s == 'Z') bp->spin_z = 1;
- else
- {
- fprintf (stderr,
- "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n",
- progname, do_spin);
- exit (1);
- }
- s++;
- }
-
- s = do_style;
+ char *s = do_style;
if (!s || !*s || !strcasecmp (s, "classic")) bp->style = CLASSIC;
else if (!strcasecmp (s, "giant")) bp->style = GIANT;
else if (!strcasecmp (s, "cone")) bp->style = CONE;
spinz ? spin_speed : 0,
1.0,
do_wander ? wander_speed : 0,
- True);
+ (spinx && spiny && spinz));
mc->trackball = gltrackball_init ();
}
}
cc->rot = make_rotator (spinx ? spin_speed : 0,
- spiny ? spin_speed : 0,
spinz ? spin_speed : 0,
+ spiny ? spin_speed : 0,
1.0,
do_wander ? wander_speed : 0,
- True);
+ (spinx && spiny && spinz));
cc->trackball = gltrackball_init ();
}
echo "# Auto-generated: `date`" ; \
( grep -l '_("' driver/*.[ch] ; \
ls driver/*.glade \
+ driver/*.glade2 \
driver/*.desktop.in \
hacks/config/*.xml ) | sort \
) > $$tmp && \
-# Auto-generated: Fri May 31 20:43:52 PDT 2002
+# Auto-generated: Tue Jun 11 02:09:09 PDT 2002
driver/demo-Gtk-conf.c
driver/demo-Gtk-support.c
driver/demo-Gtk-widgets.c
driver/demo-Gtk.c
driver/screensaver-properties.desktop.in
driver/xscreensaver-demo.glade
+driver/xscreensaver-demo.glade2
hacks/config/anemone.xml
hacks/config/ant.xml
hacks/config/apollonian.xml
hacks/config/distort.xml
hacks/config/drift.xml
hacks/config/electricsheep.xml
+hacks/config/endgame.xml
hacks/config/engine.xml
hacks/config/epicycle.xml
hacks/config/euler2d.xml
msgid ""
msgstr ""
"Project-Id-Version: control-center 1.2.1\n"
-"POT-Creation-Date: 2002-02-13 00:37+0100\n"
+"POT-Creation-Date: 2002-05-10 19:02-0700\n"
"PO-Revision-Date: 2001-09-19 23:30+0200\n"
"Last-Translator: Lucas Di Pentima <lucas@lunix.com.ar>\n"
"Language-Team: Spanish <traductores@es.gnome.org>\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: driver/demo-Gtk-conf.c:697
+#: driver/demo-Gtk-conf.c:729
#, fuzzy
msgid "Browse..."
msgstr " Buscar... "
-#: driver/demo-Gtk-conf.c:989
+#: driver/demo-Gtk-conf.c:1021
#, fuzzy
msgid "Select file."
msgstr "Seleccionar archivo de sonido"
-#: driver/demo-Gtk-widgets.c:155
+#: driver/demo-Gtk-support.c:121
+#, c-format
+msgid "Couldn't find pixmap file: %s"
+msgstr ""
+
+#: driver/demo-Gtk-support.c:130
+#, c-format
+msgid "Error loading pixmap file: %s"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:155 driver/xscreensaver-demo.glade.h:89
#, fuzzy
msgid "XScreenSaver"
msgstr "Salvapantalla"
msgid "_File"
msgstr "Mosaico"
-#: driver/demo-Gtk-widgets.c:196
+#: driver/demo-Gtk-widgets.c:196 driver/xscreensaver-demo.glade.h:93
msgid "_Blank Screen Now"
msgstr ""
-#: driver/demo-Gtk-widgets.c:205
+#: driver/demo-Gtk-widgets.c:205 driver/xscreensaver-demo.glade.h:2
msgid ""
"Activate the XScreenSaver daemon now (locking the screen if so configured.)"
msgstr ""
-#: driver/demo-Gtk-widgets.c:209
+#: driver/demo-Gtk-widgets.c:209 driver/xscreensaver-demo.glade.h:97
msgid "_Lock Screen Now"
msgstr ""
-#: driver/demo-Gtk-widgets.c:218
+#: driver/demo-Gtk-widgets.c:218 driver/xscreensaver-demo.glade.h:51
msgid "Lock the screen now (even if \"Lock Screen\" is unchecked.)"
msgstr ""
-#: driver/demo-Gtk-widgets.c:222
+#: driver/demo-Gtk-widgets.c:222 driver/xscreensaver-demo.glade.h:96
msgid "_Kill Daemon"
msgstr ""
-#: driver/demo-Gtk-widgets.c:231
+#: driver/demo-Gtk-widgets.c:231 driver/xscreensaver-demo.glade.h:71
msgid "Tell the running XScreenSaver daemon to exit."
msgstr ""
-#: driver/demo-Gtk-widgets.c:235
+#: driver/demo-Gtk-widgets.c:235 driver/xscreensaver-demo.glade.h:98
msgid "_Restart Daemon"
msgstr ""
-#: driver/demo-Gtk-widgets.c:244
+#: driver/demo-Gtk-widgets.c:244 driver/xscreensaver-demo.glade.h:49
msgid "Kill and re-launch the XScreenSaver daemon."
msgstr ""
-#: driver/demo-Gtk-widgets.c:257
+#: driver/demo-Gtk-widgets.c:257 driver/xscreensaver-demo.glade.h:95
msgid "_Exit"
msgstr ""
-#: driver/demo-Gtk-widgets.c:266
+#: driver/demo-Gtk-widgets.c:266 driver/xscreensaver-demo.glade.h:33
msgid ""
"Exit the xscreensaver-demo program (but leave the XScreenSaver daemon "
"running in the background.)"
msgid "_Help"
msgstr "Hélice"
-#: driver/demo-Gtk-widgets.c:290
+#: driver/demo-Gtk-widgets.c:290 driver/xscreensaver-demo.glade.h:92
#, fuzzy
msgid "_About..."
msgstr "Acerca"
-#: driver/demo-Gtk-widgets.c:299
+#: driver/demo-Gtk-widgets.c:299 driver/xscreensaver-demo.glade.h:30
#, fuzzy
msgid "Display version information."
msgstr "Cambiar a la visualización en monocromo."
-#: driver/demo-Gtk-widgets.c:303
+#: driver/demo-Gtk-widgets.c:303 driver/xscreensaver-demo.glade.h:94
msgid "_Documentation..."
msgstr ""
-#: driver/demo-Gtk-widgets.c:312
+#: driver/demo-Gtk-widgets.c:312 driver/xscreensaver-demo.glade.h:38
msgid "Go to the documentation on the XScreenSaver web page."
msgstr ""
-#: driver/demo-Gtk-widgets.c:342
+#: driver/demo-Gtk-widgets.c:342 driver/xscreensaver-demo.glade.h:18
#, fuzzy
msgid "Cycle After"
msgstr "Ciclo"
-#: driver/demo-Gtk-widgets.c:366
+#: driver/demo-Gtk-widgets.c:364 driver/xscreensaver-demo.glade.h:78
+msgid "Whether a password should be required to un-blank the screen."
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:366 driver/xscreensaver-demo.glade.h:50
#, fuzzy
msgid "Lock Screen After"
msgstr "Ningún salvapantalla"
-#: driver/demo-Gtk-widgets.c:374
+#: driver/demo-Gtk-widgets.c:374 driver/xscreensaver-demo.glade.h:8
#, fuzzy
msgid "Blank After"
msgstr "Activar después de "
#: driver/demo-Gtk-widgets.c:397 driver/demo-Gtk-widgets.c:447
#: driver/demo-Gtk-widgets.c:461 driver/demo-Gtk-widgets.c:1010
+#: driver/xscreensaver-demo.glade.h:43
msgid "How long before the monitor goes completely black."
msgstr ""
#: driver/demo-Gtk-widgets.c:401 driver/demo-Gtk-widgets.c:413
#: driver/demo-Gtk-widgets.c:425 driver/demo-Gtk-widgets.c:1014
#: driver/demo-Gtk-widgets.c:1026 driver/demo-Gtk-widgets.c:1038
+#: driver/xscreensaver-demo.glade.h:99
#, fuzzy
msgid "minutes"
msgstr " minutos."
-#: driver/demo-Gtk-widgets.c:476
+#: driver/demo-Gtk-widgets.c:476 driver/demo-Gtk.c:2336
+#: driver/xscreensaver-demo.glade.h:58
msgid "Preview"
msgstr "Previsualizar"
-#: driver/demo-Gtk-widgets.c:484
+#: driver/demo-Gtk-widgets.c:484 driver/xscreensaver-demo.glade.h:21
msgid ""
"Demo the selected screen saver in full-screen mode (click the mouse to "
"return.)"
msgstr ""
-#: driver/demo-Gtk-widgets.c:486
+#: driver/demo-Gtk-widgets.c:486 driver/xscreensaver-demo.glade.h:65
msgid "Settings..."
msgstr "Propiedades..."
-#: driver/demo-Gtk-widgets.c:494
+#: driver/demo-Gtk-widgets.c:494 driver/xscreensaver-demo.glade.h:17
msgid "Customization and explanation of the selected screen saver."
msgstr ""
-#: driver/demo-Gtk-widgets.c:515
+#: driver/demo-Gtk-widgets.c:515 driver/xscreensaver-demo.glade.h:52
#, fuzzy
msgid "Mode:"
msgstr "Modo"
-#: driver/demo-Gtk-widgets.c:533
+#: driver/demo-Gtk-widgets.c:533 driver/xscreensaver-demo.glade.h:25
#, fuzzy
msgid "Disable Screen Saver"
msgstr "Salvapantalla"
-#: driver/demo-Gtk-widgets.c:536
+#: driver/demo-Gtk-widgets.c:536 driver/xscreensaver-demo.glade.h:9
msgid "Blank Screen Only"
msgstr ""
-#: driver/demo-Gtk-widgets.c:539
+#: driver/demo-Gtk-widgets.c:539 driver/xscreensaver-demo.glade.h:56
#, fuzzy
msgid "Only One Screen Saver"
msgstr "Salvapantalla"
-#: driver/demo-Gtk-widgets.c:542
+#: driver/demo-Gtk-widgets.c:542 driver/xscreensaver-demo.glade.h:60
#, fuzzy
msgid "Random Screen Saver"
msgstr "Salvapantalla al azar"
-#: driver/demo-Gtk-widgets.c:565
+#: driver/demo-Gtk-widgets.c:565 driver/xscreensaver-demo.glade.h:75
msgid "Use"
msgstr ""
-#: driver/demo-Gtk-widgets.c:585
+#: driver/demo-Gtk-widgets.c:585 driver/xscreensaver-demo.glade.h:63
msgid "Screen Saver"
msgstr "Salvapantalla"
-#: driver/demo-Gtk-widgets.c:646
+#: driver/demo-Gtk-widgets.c:638 driver/xscreensaver-demo.glade.h:91
+msgid "\\/"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:646 driver/xscreensaver-demo.glade.h:61
msgid ""
"Run the next screen saver in the list in full-screen mode (click the mouse "
"to return.)"
msgstr ""
-#: driver/demo-Gtk-widgets.c:656
+#: driver/demo-Gtk-widgets.c:648
+msgid "/\\"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:656 driver/xscreensaver-demo.glade.h:62
msgid ""
"Run the previous screen saver in the list in full-screen mode (click the "
"mouse to return.)"
msgstr ""
#: driver/demo-Gtk-widgets.c:658 driver/demo-Gtk-widgets.c:1601
+#: driver/xscreensaver-demo.glade.h:22
msgid "Description"
msgstr "Descripción"
-#: driver/demo-Gtk-widgets.c:685
+#: driver/demo-Gtk-widgets.c:685 driver/xscreensaver-demo.glade.h:26
#, fuzzy
msgid "Display Modes"
msgstr "Muestra gotas aceitosas."
-#: driver/demo-Gtk-widgets.c:701
+#: driver/demo-Gtk-widgets.c:701 driver/xscreensaver-demo.glade.h:23
#, fuzzy
msgid "Diagnostics"
msgstr "Posición de las ventanas de diálogo"
-#: driver/demo-Gtk-widgets.c:745
+#: driver/demo-Gtk-widgets.c:745 driver/xscreensaver-demo.glade.h:80
msgid "Whether the daemon should print lots of debugging information."
msgstr ""
-#: driver/demo-Gtk-widgets.c:747
+#: driver/demo-Gtk-widgets.c:747 driver/xscreensaver-demo.glade.h:76
msgid "Verbose Diagnostics"
msgstr ""
-#: driver/demo-Gtk-widgets.c:762
+#: driver/demo-Gtk-widgets.c:762 driver/xscreensaver-demo.glade.h:79
msgid ""
"Whether any error output of the display modes should be redirected to the "
"screen."
msgstr ""
-#: driver/demo-Gtk-widgets.c:764
+#: driver/demo-Gtk-widgets.c:764 driver/xscreensaver-demo.glade.h:29
msgid "Display Subprocess Errors"
msgstr ""
-#: driver/demo-Gtk-widgets.c:779
+#: driver/demo-Gtk-widgets.c:779 driver/xscreensaver-demo.glade.h:87
msgid ""
"Whether the splash screen (with the version number and `Help' button) should "
"be momentarily displayed when the daemon first starts up."
msgstr ""
-#: driver/demo-Gtk-widgets.c:781
+#: driver/demo-Gtk-widgets.c:781 driver/xscreensaver-demo.glade.h:28
msgid "Display Splash Screen at Startup"
msgstr ""
-#: driver/demo-Gtk-widgets.c:790
+#: driver/demo-Gtk-widgets.c:790 driver/xscreensaver-demo.glade.h:15
#, fuzzy
msgid "Colormaps"
msgstr "Colores"
-#: driver/demo-Gtk-widgets.c:834
+#: driver/demo-Gtk-widgets.c:834 driver/xscreensaver-demo.glade.h:88
msgid ""
"Whether to install a private colormap when running in 8-bit mode on the "
"default Visual."
msgstr ""
-#: driver/demo-Gtk-widgets.c:836
+#: driver/demo-Gtk-widgets.c:836 driver/xscreensaver-demo.glade.h:48
msgid "Install Colormap"
msgstr ""
-#: driver/demo-Gtk-widgets.c:859
+#: driver/demo-Gtk-widgets.c:859 driver/xscreensaver-demo.glade.h:86
msgid ""
"Whether the screen should slowly fade to black when the screen saver "
"activates."
msgstr ""
-#: driver/demo-Gtk-widgets.c:861
+#: driver/demo-Gtk-widgets.c:861 driver/xscreensaver-demo.glade.h:36
msgid "Fade To Black When Blanking"
msgstr ""
-#: driver/demo-Gtk-widgets.c:876
+#: driver/demo-Gtk-widgets.c:876 driver/xscreensaver-demo.glade.h:85
msgid ""
"Whether the screen should slowly fade in from black when the screen saver "
"deactivates."
msgstr ""
-#: driver/demo-Gtk-widgets.c:878
+#: driver/demo-Gtk-widgets.c:878 driver/xscreensaver-demo.glade.h:35
msgid "Fade From Black When Unblanking"
msgstr ""
-#: driver/demo-Gtk-widgets.c:904
+#: driver/demo-Gtk-widgets.c:904 driver/xscreensaver-demo.glade.h:34
#, fuzzy
msgid "Fade Duration"
msgstr "Duración"
-#: driver/demo-Gtk-widgets.c:922
+#: driver/demo-Gtk-widgets.c:922 driver/xscreensaver-demo.glade.h:44
msgid "How long it should take for the screen to fade in and out."
msgstr ""
-#: driver/demo-Gtk-widgets.c:926
+#: driver/demo-Gtk-widgets.c:926 driver/xscreensaver-demo.glade.h:100
msgid "seconds"
msgstr "segundos"
-#: driver/demo-Gtk-widgets.c:936
+#: driver/demo-Gtk-widgets.c:936 driver/xscreensaver-demo.glade.h:27
#, fuzzy
msgid "Display Power Management"
msgstr "Usar gestión de energía."
-#: driver/demo-Gtk-widgets.c:980
+#: driver/demo-Gtk-widgets.c:980 driver/xscreensaver-demo.glade.h:84
msgid "Whether the monitor should be powered down after a while."
msgstr ""
-#: driver/demo-Gtk-widgets.c:982
+#: driver/demo-Gtk-widgets.c:982 driver/xscreensaver-demo.glade.h:57
#, fuzzy
msgid "Power Management Enabled"
msgstr "Usar gestión de energía."
-#: driver/demo-Gtk-widgets.c:1050
+#: driver/demo-Gtk-widgets.c:1050 driver/xscreensaver-demo.glade.h:55
msgid "Off After"
msgstr ""
-#: driver/demo-Gtk-widgets.c:1063
+#: driver/demo-Gtk-widgets.c:1063 driver/xscreensaver-demo.glade.h:70
msgid "Suspend After"
msgstr ""
-#: driver/demo-Gtk-widgets.c:1076
+#: driver/demo-Gtk-widgets.c:1076 driver/xscreensaver-demo.glade.h:68
#, fuzzy
msgid "Standby After"
msgstr "Activar después de "
-#: driver/demo-Gtk-widgets.c:1099
+#: driver/demo-Gtk-widgets.c:1099 driver/xscreensaver-demo.glade.h:45
msgid "How long until the monitor goes into power-saving mode."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1113
+#: driver/demo-Gtk-widgets.c:1113 driver/xscreensaver-demo.glade.h:46
msgid "How long until the monitor powers down."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1117
+#: driver/demo-Gtk-widgets.c:1117 driver/xscreensaver-demo.glade.h:47
msgid "Image Manipulation"
msgstr ""
-#: driver/demo-Gtk-widgets.c:1161
+#: driver/demo-Gtk-widgets.c:1161 driver/xscreensaver-demo.glade.h:81
msgid ""
"Whether the image-manipulating modes should be allowed to operate on an "
"image of your desktop."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1163
+#: driver/demo-Gtk-widgets.c:1163 driver/xscreensaver-demo.glade.h:39
msgid "Grab Desktop Images"
msgstr ""
-#: driver/demo-Gtk-widgets.c:1178
+#: driver/demo-Gtk-widgets.c:1178 driver/xscreensaver-demo.glade.h:82
msgid ""
"Whether the image-manipulating modes should operate on images captured from "
"the system's video input (if there is one)."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1180
+#: driver/demo-Gtk-widgets.c:1180 driver/xscreensaver-demo.glade.h:40
msgid "Grab Video Frames"
msgstr ""
-#: driver/demo-Gtk-widgets.c:1195
+#: driver/demo-Gtk-widgets.c:1195 driver/xscreensaver-demo.glade.h:83
msgid ""
"Whether the image-manipulating modes should operate on random images loaded "
"from disk."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1197
+#: driver/demo-Gtk-widgets.c:1197 driver/xscreensaver-demo.glade.h:12
#, fuzzy
msgid "Choose Random Image:"
msgstr "Permite elegir un gestor de ventanas"
-#: driver/demo-Gtk-widgets.c:1230
+#: driver/demo-Gtk-widgets.c:1230 driver/xscreensaver-demo.glade.h:73
msgid "The directory from which images will be randomly chosen."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1232
+#: driver/demo-Gtk-widgets.c:1232 driver/xscreensaver-demo.glade.h:10
#, fuzzy
msgid "Browse"
msgstr " Buscar... "
#: driver/demo-Gtk-widgets.c:1240 driver/demo-Gtk-widgets.c:1593
+#: driver/xscreensaver-demo.glade.h:3
msgid "Advanced"
msgstr ""
-#: driver/demo-Gtk-widgets.c:1438
+#: driver/demo-Gtk-widgets.c:1438 driver/xscreensaver-demo.glade.h:90
#, fuzzy
msgid "XScreenSaver: Mode-Specific Settings"
msgstr "Configuración del salvapantalla"
-#: driver/demo-Gtk-widgets.c:1460
+#: driver/demo-Gtk-widgets.c:1460 driver/xscreensaver-demo.glade.h:64
msgid "Settings"
msgstr "Parámetros"
-#: driver/demo-Gtk-widgets.c:1489
+#: driver/demo-Gtk-widgets.c:1489 driver/xscreensaver-demo.glade.h:66
#, fuzzy
msgid "Standard"
msgstr "Sonar"
-#: driver/demo-Gtk-widgets.c:1526
+#: driver/demo-Gtk-widgets.c:1526 driver/xscreensaver-demo.glade.h:77
msgid "Visual:"
msgstr ""
-#: driver/demo-Gtk-widgets.c:1566
+#: driver/demo-Gtk-widgets.c:1544 driver/demo-Gtk-widgets.c:1567
+#: driver/demo-Gtk.c:1318 driver/demo-Gtk.c:2355
+#: driver/xscreensaver-demo.glade.h:5
+#, fuzzy
+msgid "Any"
+msgstr "Hormigas"
+
+#: driver/demo-Gtk-widgets.c:1545 driver/xscreensaver-demo.glade.h:7
+#, fuzzy
+msgid "Best"
+msgstr "Bosque"
+
+#: driver/demo-Gtk-widgets.c:1546 driver/xscreensaver-demo.glade.h:19
+#, fuzzy
+msgid "Default"
+msgstr "Valor predeterminado"
+
+#: driver/demo-Gtk-widgets.c:1547 driver/xscreensaver-demo.glade.h:20
+#, fuzzy
+msgid "Default-N"
+msgstr "Valor predeterminado"
+
+#: driver/demo-Gtk-widgets.c:1548 driver/xscreensaver-demo.glade.h:37
+msgid "GL"
+msgstr ""
+
+#: driver/demo-Gtk-widgets.c:1549 driver/xscreensaver-demo.glade.h:74
+#, fuzzy
+msgid "TrueColor"
+msgstr "Color"
+
+#: driver/demo-Gtk-widgets.c:1550 driver/xscreensaver-demo.glade.h:59
+#, fuzzy
+msgid "PseudoColor"
+msgstr "Color"
+
+#: driver/demo-Gtk-widgets.c:1551 driver/xscreensaver-demo.glade.h:69
+#, fuzzy
+msgid "StaticGray"
+msgstr "Estática."
+
+#: driver/demo-Gtk-widgets.c:1552 driver/xscreensaver-demo.glade.h:42
+#, fuzzy
+msgid "GrayScale"
+msgstr "Redimensionado"
+
+#: driver/demo-Gtk-widgets.c:1553 driver/xscreensaver-demo.glade.h:24
+#, fuzzy
+msgid "DirectColor"
+msgstr "Color"
+
+#: driver/demo-Gtk-widgets.c:1554 driver/xscreensaver-demo.glade.h:14
+msgid "Color"
+msgstr "Color"
+
+#: driver/demo-Gtk-widgets.c:1555 driver/xscreensaver-demo.glade.h:41
+#, fuzzy
+msgid "Gray"
+msgstr "Gravedad"
+
+#: driver/demo-Gtk-widgets.c:1556 driver/xscreensaver-demo.glade.h:53
+msgid "Mono"
+msgstr "Mono"
+
+#: driver/demo-Gtk-widgets.c:1566 driver/xscreensaver-demo.glade.h:72
msgid ""
"The X visual type that this demo will require. If that visual is available "
"it will be used, otherwise, this demo will not be run."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1641
+#: driver/demo-Gtk-widgets.c:1569 driver/xscreensaver-demo.glade.h:16
+#, fuzzy
+msgid "Command Line:"
+msgstr "Comando:"
+
+#: driver/demo-Gtk-widgets.c:1641 driver/xscreensaver-demo.glade.h:31
#, fuzzy
msgid "Documentation..."
msgstr "Manejadores de Documentos"
-#: driver/demo-Gtk-widgets.c:1649
+#: driver/demo-Gtk-widgets.c:1649 driver/xscreensaver-demo.glade.h:13
msgid "Click here to read the manual for this display mode, if it has one."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1674
+#: driver/demo-Gtk-widgets.c:1674 driver/xscreensaver-demo.glade.h:4
msgid "Advanced >>"
msgstr ""
-#: driver/demo-Gtk-widgets.c:1682
+#: driver/demo-Gtk-widgets.c:1682 driver/xscreensaver-demo.glade.h:32
msgid "Edit the command line directly."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1684
+#: driver/demo-Gtk-widgets.c:1684 driver/xscreensaver-demo.glade.h:67
msgid "Standard <<"
msgstr ""
-#: driver/demo-Gtk-widgets.c:1692
+#: driver/demo-Gtk-widgets.c:1692 driver/xscreensaver-demo.glade.h:6
msgid "Back to the graphical configuration options."
msgstr ""
-#: driver/demo-Gtk-widgets.c:1703
+#: driver/demo-Gtk-widgets.c:1703 driver/demo-Gtk.c:587
+#: driver/xscreensaver-demo.glade.h:54
msgid "OK"
msgstr "Aceptar"
-#: driver/demo-Gtk-widgets.c:1712
+#: driver/demo-Gtk-widgets.c:1712 driver/xscreensaver-demo.glade.h:11
#, fuzzy
msgid "Cancel"
msgstr "Células"
+#: driver/demo-Gtk.c:511
+msgid "For updates, check http://www.jwz.org/xscreensaver/"
+msgstr ""
+
+#: driver/demo-Gtk.c:517
+#, c-format
+msgid "Copyright © 1991-2002 %s"
+msgstr ""
+
+#: driver/demo-Gtk.c:624
+msgid ""
+"Error:\n"
+"\n"
+"No Help URL has been specified.\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:710
+msgid ""
+"Error:\n"
+"\n"
+"The xscreensaver daemon did not start up properly.\n"
+"\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:716
+msgid ""
+"You are running as root. This usually means that xscreensaver\n"
+"was unable to contact your X server because access control is\n"
+"turned on. Try running this command:\n"
+"\n"
+" xhost +localhost\n"
+"\n"
+"and then selecting `File / Restart Daemon'.\n"
+"\n"
+"Note that turning off access control will allow anyone logged\n"
+"on to this machine to access your screen, which might be\n"
+"considered a security problem. Please read the xscreensaver\n"
+"manual and FAQ for more information.\n"
+"\n"
+"You shouldn't run X as root. Instead, you should log in as a\n"
+"normal user, and `su' as necessary."
+msgstr ""
+
+#: driver/demo-Gtk.c:732
+msgid "Please check your $PATH and permissions."
+msgstr ""
+
+#: driver/demo-Gtk.c:767
+msgid ""
+"Error:\n"
+"\n"
+"Couldn't determine init file name!\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:772
+#, c-format
+msgid ""
+"Error:\n"
+"\n"
+"Couldn't write %s\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:831
+msgid ""
+"Error:\n"
+"\n"
+"no `manualCommand' resource set."
+msgstr ""
+
+#: driver/demo-Gtk.c:1001
+#, c-format
+msgid ""
+"Error:\n"
+"\n"
+"Unparsable time format: \"%s\"\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:1528
+#, fuzzy, c-format
+msgid ""
+"Error:\n"
+"\n"
+"Directory does not exist: \"%s\"\n"
+msgstr "¡El directorio personal no existe!\n"
+
+#: driver/demo-Gtk.c:2053
+msgid "Descriptions not available: no XML support compiled in."
+msgstr ""
+
+#: driver/demo-Gtk.c:2058
+msgid "No description available."
+msgstr ""
+
+#: driver/demo-Gtk.c:2307
+#, fuzzy
+msgid "Blank Screen"
+msgstr "Activar después de "
+
+#: driver/demo-Gtk.c:2313
+#, fuzzy
+msgid "Screen Saver Disabled"
+msgstr "Demostración del salvapantalla"
+
+#: driver/demo-Gtk.c:2473
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"file \"%s\" has changed, reloading.\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:2540
+#, fuzzy
+msgid "No Preview"
+msgstr "Previsualizar"
+
+#: driver/demo-Gtk.c:2540
+#, fuzzy
+msgid "Available"
+msgstr "Temas disponibles"
+
+#: driver/demo-Gtk.c:3210
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"The XScreenSaver daemon doesn't seem to be running\n"
+"on display \"%s\". Launch it now?"
+msgstr ""
+
+#: driver/demo-Gtk.c:3220
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"%s is running as user \"%s\" on host \"%s\".\n"
+"But the xscreensaver managing display \"%s\"\n"
+"is running as user \"%s\" on host \"%s\".\n"
+"\n"
+"Since they are different users, they won't be reading/writing\n"
+"the same ~/.xscreensaver file, so %s isn't\n"
+"going to work right.\n"
+"\n"
+"You should either re-run %s as \"%s\", or re-run\n"
+"xscreensaver as \"%s\".\n"
+"\n"
+"Restart the xscreensaver daemon now?\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:3245
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"%s is running as user \"%s\" on host \"%s\".\n"
+"But the xscreensaver managing display \"%s\"\n"
+"is running as user \"%s\" on host \"%s\".\n"
+"\n"
+"If those two machines don't share a file system (that is,\n"
+"if they don't see the same ~%s/.xscreensaver file) then\n"
+"%s won't work right.\n"
+"\n"
+"Restart the daemon on \"%s\" as \"%s\" now?\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:3267
+#, c-format
+msgid ""
+"Warning:\n"
+"\n"
+"This is %s version %s.\n"
+"But the xscreensaver managing display \"%s\"\n"
+"is version %s. This could cause problems.\n"
+"\n"
+"Restart the xscreensaver daemon now?\n"
+msgstr ""
+
+#: driver/demo-Gtk.c:3636
+#, c-format
+msgid "%s: unknown option: %s\n"
+msgstr ""
+
+#: driver/screensaver-properties.desktop.in.h:1
+msgid "Configure the settings of the screensaver."
+msgstr "Configurar el salvapantalla"
+
+#: driver/screensaver-properties.desktop.in.h:2
+msgid "Screensaver"
+msgstr "Propiedades Salvapantallas"
+
+#: driver/xscreensaver-demo.glade.h:1
+msgid "/\");"
+msgstr ""
+
#: hacks/config/ant.xml.h:1
#, fuzzy
msgid ""
msgid "Ants Count"
msgstr "Cantidad"
-#: hacks/config/ant.xml.h:5 hacks/config/atlantis.xml.h:4
-#: hacks/config/attraction.xml.h:8 hacks/config/blaster.xml.h:3
-#: hacks/config/blitspin.xml.h:4 hacks/config/bouboule.xml.h:3
+#: hacks/config/ant.xml.h:5 hacks/config/apollonian.xml.h:5
+#: hacks/config/atlantis.xml.h:4 hacks/config/attraction.xml.h:8
+#: hacks/config/blaster.xml.h:3 hacks/config/blitspin.xml.h:4
+#: hacks/config/bouboule.xml.h:3 hacks/config/boxed.xml.h:4
#: hacks/config/braid.xml.h:4 hacks/config/bubble3d.xml.h:3
#: hacks/config/bubbles.xml.h:8 hacks/config/bumps.xml.h:3
#: hacks/config/cage.xml.h:2 hacks/config/circuit.xml.h:4
#: hacks/config/compass.xml.h:3 hacks/config/coral.xml.h:7
#: hacks/config/critical.xml.h:3 hacks/config/crystal.xml.h:6
-#: hacks/config/cynosure.xml.h:4 hacks/config/dangerball.xml.h:3
-#: hacks/config/decayscreen.xml.h:2 hacks/config/deluxe.xml.h:4
-#: hacks/config/demon.xml.h:4 hacks/config/discrete.xml.h:2
-#: hacks/config/distort.xml.h:4 hacks/config/drift.xml.h:3
-#: hacks/config/engine.xml.h:3 hacks/config/epicycle.xml.h:5
+#: hacks/config/cubenetic.xml.h:8 hacks/config/cynosure.xml.h:4
+#: hacks/config/dangerball.xml.h:3 hacks/config/decayscreen.xml.h:2
+#: hacks/config/deluxe.xml.h:4 hacks/config/demon.xml.h:4
+#: hacks/config/discrete.xml.h:2 hacks/config/distort.xml.h:4
+#: hacks/config/drift.xml.h:3 hacks/config/engine.xml.h:3
+#: hacks/config/epicycle.xml.h:5 hacks/config/euler2d.xml.h:3
#: hacks/config/extrusion.xml.h:3 hacks/config/fadeplot.xml.h:4
#: hacks/config/flag.xml.h:2 hacks/config/flame.xml.h:6
#: hacks/config/flipscreen3d.xml.h:1 hacks/config/flow.xml.h:4
-#: hacks/config/forest.xml.h:1 hacks/config/galaxy.xml.h:3
-#: hacks/config/gears.xml.h:3 hacks/config/gflux.xml.h:6
-#: hacks/config/glplanet.xml.h:2 hacks/config/gltext.xml.h:3
-#: hacks/config/goop.xml.h:4 hacks/config/grav.xml.h:2
-#: hacks/config/greynetic.xml.h:1 hacks/config/halo.xml.h:2
-#: hacks/config/hopalong.xml.h:9 hacks/config/hyperball.xml.h:2
-#: hacks/config/hypercube.xml.h:2 hacks/config/ifs.xml.h:1
-#: hacks/config/interference.xml.h:5 hacks/config/jigsaw.xml.h:3
+#: hacks/config/fluidballs.xml.h:3 hacks/config/forest.xml.h:1
+#: hacks/config/galaxy.xml.h:3 hacks/config/gears.xml.h:2
+#: hacks/config/gflux.xml.h:6 hacks/config/glforestfire.xml.h:4
+#: hacks/config/glplanet.xml.h:2 hacks/config/glsnake.xml.h:5
+#: hacks/config/gltext.xml.h:3 hacks/config/goop.xml.h:4
+#: hacks/config/grav.xml.h:2 hacks/config/greynetic.xml.h:1
+#: hacks/config/halo.xml.h:2 hacks/config/hopalong.xml.h:9
+#: hacks/config/hyperball.xml.h:2 hacks/config/hypercube.xml.h:2
+#: hacks/config/ifs.xml.h:1 hacks/config/interference.xml.h:5
+#: hacks/config/jigsaw.xml.h:3 hacks/config/juggle.xml.h:3
#: hacks/config/julia.xml.h:2 hacks/config/kaleidescope.xml.h:2
#: hacks/config/kumppa.xml.h:3 hacks/config/lament.xml.h:2
#: hacks/config/laser.xml.h:3 hacks/config/lightning.xml.h:1
#: hacks/config/mountain.xml.h:2 hacks/config/munch.xml.h:3
#: hacks/config/nerverot.xml.h:9 hacks/config/penetrate.xml.h:3
#: hacks/config/penrose.xml.h:6 hacks/config/petri.xml.h:5
-#: hacks/config/phosphor.xml.h:3 hacks/config/pipes.xml.h:4
-#: hacks/config/pulsar.xml.h:11 hacks/config/pyro.xml.h:4
-#: hacks/config/qix.xml.h:7 hacks/config/rd-bomb.xml.h:9
-#: hacks/config/ripples.xml.h:4 hacks/config/rocks.xml.h:4
-#: hacks/config/rotor.xml.h:3 hacks/config/rubik.xml.h:3
+#: hacks/config/phosphor.xml.h:3 hacks/config/pipes.xml.h:5
+#: hacks/config/polyominoes.xml.h:2 hacks/config/pulsar.xml.h:11
+#: hacks/config/pyro.xml.h:4 hacks/config/qix.xml.h:7
+#: hacks/config/rd-bomb.xml.h:9 hacks/config/ripples.xml.h:4
+#: hacks/config/rocks.xml.h:4 hacks/config/rotor.xml.h:3
+#: hacks/config/rubik.xml.h:3 hacks/config/sballs.xml.h:4
#: hacks/config/shadebobs.xml.h:3 hacks/config/sierpinski.xml.h:2
#: hacks/config/sierpinski3d.xml.h:2 hacks/config/slidescreen.xml.h:2
#: hacks/config/slip.xml.h:2 hacks/config/speedmine.xml.h:3
-#: hacks/config/sphere.xml.h:2 hacks/config/spiral.xml.h:3
-#: hacks/config/spotlight.xml.h:2 hacks/config/sproingies.xml.h:2
-#: hacks/config/squiral.xml.h:4 hacks/config/stairs.xml.h:1
-#: hacks/config/starfish.xml.h:3 hacks/config/starwars.xml.h:6
-#: hacks/config/strange.xml.h:2 hacks/config/superquadrics.xml.h:3
-#: hacks/config/swirl.xml.h:2 hacks/config/t3d.xml.h:6
+#: hacks/config/sphere.xml.h:2 hacks/config/spheremonics.xml.h:5
+#: hacks/config/spiral.xml.h:3 hacks/config/spotlight.xml.h:2
+#: hacks/config/sproingies.xml.h:2 hacks/config/squiral.xml.h:4
+#: hacks/config/stairs.xml.h:1 hacks/config/starfish.xml.h:3
+#: hacks/config/starwars.xml.h:6 hacks/config/strange.xml.h:2
+#: hacks/config/superquadrics.xml.h:3 hacks/config/swirl.xml.h:2
+#: hacks/config/t3d.xml.h:6 hacks/config/thornbird.xml.h:2
#: hacks/config/triangle.xml.h:1 hacks/config/truchet.xml.h:1
-#: hacks/config/vines.xml.h:1 hacks/config/webcollage.xml.h:4
-#: hacks/config/worm.xml.h:3 hacks/config/xearth.xml.h:7
-#: hacks/config/xfishtank.xml.h:3 hacks/config/xflame.xml.h:4
-#: hacks/config/xjack.xml.h:1 hacks/config/xmatrix.xml.h:4
-#: hacks/config/xmountains.xml.h:1 hacks/config/xrayswarm.xml.h:2
-#: hacks/config/zoom.xml.h:2
+#: hacks/config/twang.xml.h:3 hacks/config/vines.xml.h:1
+#: hacks/config/webcollage.xml.h:4 hacks/config/worm.xml.h:3
+#: hacks/config/xearth.xml.h:7 hacks/config/xfishtank.xml.h:3
+#: hacks/config/xflame.xml.h:4 hacks/config/xjack.xml.h:1
+#: hacks/config/xmatrix.xml.h:4 hacks/config/xmountains.xml.h:1
+#: hacks/config/xrayswarm.xml.h:2 hacks/config/zoom.xml.h:2
msgid "Fast"
msgstr "Rápido"
msgstr ""
#: hacks/config/ant.xml.h:7 hacks/config/attraction.xml.h:13
-#: hacks/config/demon.xml.h:5 hacks/config/discrete.xml.h:3
-#: hacks/config/distort.xml.h:5 hacks/config/fadeplot.xml.h:5
-#: hacks/config/flag.xml.h:4 hacks/config/flow.xml.h:7
+#: hacks/config/cubenetic.xml.h:11 hacks/config/demon.xml.h:5
+#: hacks/config/discrete.xml.h:3 hacks/config/distort.xml.h:5
+#: hacks/config/fadeplot.xml.h:5 hacks/config/flag.xml.h:4
+#: hacks/config/flow.xml.h:7 hacks/config/fluidballs.xml.h:12
#: hacks/config/hopalong.xml.h:13 hacks/config/interference.xml.h:8
#: hacks/config/julia.xml.h:5 hacks/config/lissie.xml.h:4
#: hacks/config/loop.xml.h:2 hacks/config/moire.xml.h:4
msgid "Large"
msgstr "Grande"
-#: hacks/config/ant.xml.h:8 hacks/config/attraction.xml.h:18
-#: hacks/config/blaster.xml.h:6 hacks/config/bouboule.xml.h:5
-#: hacks/config/braid.xml.h:7 hacks/config/coral.xml.h:9
-#: hacks/config/critical.xml.h:4 hacks/config/crystal.xml.h:8
+#: hacks/config/ant.xml.h:8 hacks/config/apollonian.xml.h:7
+#: hacks/config/attraction.xml.h:18 hacks/config/blaster.xml.h:6
+#: hacks/config/bouboule.xml.h:5 hacks/config/braid.xml.h:7
+#: hacks/config/coral.xml.h:9 hacks/config/critical.xml.h:4
+#: hacks/config/crystal.xml.h:8 hacks/config/cubenetic.xml.h:13
#: hacks/config/cynosure.xml.h:6 hacks/config/deco.xml.h:5
#: hacks/config/deluxe.xml.h:6 hacks/config/demon.xml.h:6
#: hacks/config/discrete.xml.h:4 hacks/config/drift.xml.h:9
-#: hacks/config/epicycle.xml.h:8 hacks/config/fadeplot.xml.h:6
-#: hacks/config/flag.xml.h:5 hacks/config/flame.xml.h:10
-#: hacks/config/flow.xml.h:8 hacks/config/forest.xml.h:3
+#: hacks/config/epicycle.xml.h:8 hacks/config/euler2d.xml.h:8
+#: hacks/config/fadeplot.xml.h:6 hacks/config/flag.xml.h:5
+#: hacks/config/flame.xml.h:11 hacks/config/flow.xml.h:8
+#: hacks/config/fluidballs.xml.h:13 hacks/config/forest.xml.h:3
#: hacks/config/galaxy.xml.h:6 hacks/config/grav.xml.h:4
#: hacks/config/halo.xml.h:4 hacks/config/hopalong.xml.h:15
#: hacks/config/ifs.xml.h:3 hacks/config/imsmap.xml.h:9
#: hacks/config/moire.xml.h:5 hacks/config/moire2.xml.h:3
#: hacks/config/mountain.xml.h:4 hacks/config/nerverot.xml.h:15
#: hacks/config/pedal.xml.h:6 hacks/config/penrose.xml.h:7
-#: hacks/config/petri.xml.h:11 hacks/config/qix.xml.h:14
-#: hacks/config/rd-bomb.xml.h:12 hacks/config/ripples.xml.h:7
-#: hacks/config/rocks.xml.h:5 hacks/config/rotor.xml.h:6
-#: hacks/config/shadebobs.xml.h:5 hacks/config/sierpinski.xml.h:4
-#: hacks/config/slip.xml.h:4 hacks/config/sphere.xml.h:3
-#: hacks/config/spiral.xml.h:6 hacks/config/squiral.xml.h:9
-#: hacks/config/starfish.xml.h:5 hacks/config/strange.xml.h:5
-#: hacks/config/swirl.xml.h:3 hacks/config/triangle.xml.h:3
+#: hacks/config/petri.xml.h:11 hacks/config/polyominoes.xml.h:5
+#: hacks/config/qix.xml.h:14 hacks/config/rd-bomb.xml.h:12
+#: hacks/config/ripples.xml.h:7 hacks/config/rocks.xml.h:5
+#: hacks/config/rotor.xml.h:6 hacks/config/shadebobs.xml.h:5
+#: hacks/config/sierpinski.xml.h:4 hacks/config/slip.xml.h:4
+#: hacks/config/sphere.xml.h:3 hacks/config/spiral.xml.h:6
+#: hacks/config/squiral.xml.h:9 hacks/config/starfish.xml.h:5
+#: hacks/config/strange.xml.h:5 hacks/config/swirl.xml.h:3
+#: hacks/config/thornbird.xml.h:4 hacks/config/triangle.xml.h:3
#: hacks/config/vines.xml.h:2 hacks/config/whirlwindwarp.xml.h:4
#: hacks/config/worm.xml.h:4 hacks/config/xearth.xml.h:12
#: hacks/config/xfishtank.xml.h:8
msgid "Nine Sided Cells"
msgstr ""
-#: hacks/config/ant.xml.h:10 hacks/config/attraction.xml.h:19
-#: hacks/config/bouboule.xml.h:6 hacks/config/braid.xml.h:9
-#: hacks/config/critical.xml.h:5 hacks/config/crystal.xml.h:10
-#: hacks/config/cynosure.xml.h:7 hacks/config/deco.xml.h:8
-#: hacks/config/deluxe.xml.h:7 hacks/config/demon.xml.h:7
-#: hacks/config/discrete.xml.h:6 hacks/config/drift.xml.h:10
-#: hacks/config/epicycle.xml.h:9 hacks/config/fadeplot.xml.h:7
-#: hacks/config/flag.xml.h:6 hacks/config/flame.xml.h:11
+#: hacks/config/ant.xml.h:10 hacks/config/apollonian.xml.h:8
+#: hacks/config/attraction.xml.h:19 hacks/config/bouboule.xml.h:6
+#: hacks/config/braid.xml.h:9 hacks/config/critical.xml.h:5
+#: hacks/config/crystal.xml.h:10 hacks/config/cynosure.xml.h:7
+#: hacks/config/deco.xml.h:8 hacks/config/deluxe.xml.h:7
+#: hacks/config/demon.xml.h:7 hacks/config/discrete.xml.h:6
+#: hacks/config/drift.xml.h:10 hacks/config/epicycle.xml.h:9
+#: hacks/config/euler2d.xml.h:9 hacks/config/fadeplot.xml.h:7
+#: hacks/config/flag.xml.h:6 hacks/config/flame.xml.h:12
#: hacks/config/flow.xml.h:9 hacks/config/forest.xml.h:4
#: hacks/config/galaxy.xml.h:7 hacks/config/grav.xml.h:5
#: hacks/config/halo.xml.h:6 hacks/config/hopalong.xml.h:17
#: hacks/config/lisa.xml.h:6 hacks/config/lissie.xml.h:7
#: hacks/config/loop.xml.h:5 hacks/config/moire.xml.h:7
#: hacks/config/moire2.xml.h:5 hacks/config/mountain.xml.h:6
-#: hacks/config/penrose.xml.h:8 hacks/config/rd-bomb.xml.h:13
-#: hacks/config/rocks.xml.h:6 hacks/config/rotor.xml.h:7
-#: hacks/config/shadebobs.xml.h:6 hacks/config/sierpinski.xml.h:5
-#: hacks/config/slip.xml.h:5 hacks/config/sphere.xml.h:4
-#: hacks/config/spiral.xml.h:8 hacks/config/squiral.xml.h:10
-#: hacks/config/starfish.xml.h:6 hacks/config/strange.xml.h:6
-#: hacks/config/swirl.xml.h:5 hacks/config/triangle.xml.h:4
+#: hacks/config/penrose.xml.h:8 hacks/config/polyominoes.xml.h:6
+#: hacks/config/rd-bomb.xml.h:13 hacks/config/rocks.xml.h:6
+#: hacks/config/rotor.xml.h:7 hacks/config/shadebobs.xml.h:6
+#: hacks/config/sierpinski.xml.h:5 hacks/config/slip.xml.h:5
+#: hacks/config/sphere.xml.h:4 hacks/config/spiral.xml.h:8
+#: hacks/config/squiral.xml.h:10 hacks/config/starfish.xml.h:6
+#: hacks/config/strange.xml.h:6 hacks/config/swirl.xml.h:5
+#: hacks/config/thornbird.xml.h:5 hacks/config/triangle.xml.h:4
#: hacks/config/vines.xml.h:3 hacks/config/worm.xml.h:5
#: hacks/config/xearth.xml.h:17 hacks/config/xfishtank.xml.h:9
msgid "Number of Colors"
msgid "Six Sided Cells"
msgstr ""
-#: hacks/config/ant.xml.h:14 hacks/config/atlantis.xml.h:13
-#: hacks/config/attraction.xml.h:26 hacks/config/blaster.xml.h:8
-#: hacks/config/blitspin.xml.h:7 hacks/config/bouboule.xml.h:8
+#: hacks/config/ant.xml.h:14 hacks/config/apollonian.xml.h:11
+#: hacks/config/atlantis.xml.h:13 hacks/config/attraction.xml.h:26
+#: hacks/config/blaster.xml.h:8 hacks/config/blitspin.xml.h:7
+#: hacks/config/bouboule.xml.h:8 hacks/config/boxed.xml.h:6
#: hacks/config/braid.xml.h:11 hacks/config/bubble3d.xml.h:5
#: hacks/config/bubbles.xml.h:10 hacks/config/bumps.xml.h:4
#: hacks/config/cage.xml.h:4 hacks/config/circuit.xml.h:10
#: hacks/config/compass.xml.h:4 hacks/config/coral.xml.h:12
#: hacks/config/critical.xml.h:6 hacks/config/crystal.xml.h:11
-#: hacks/config/cynosure.xml.h:9 hacks/config/dangerball.xml.h:5
-#: hacks/config/decayscreen.xml.h:17 hacks/config/deluxe.xml.h:8
-#: hacks/config/demon.xml.h:8 hacks/config/discrete.xml.h:7
-#: hacks/config/distort.xml.h:11 hacks/config/drift.xml.h:12
-#: hacks/config/engine.xml.h:5 hacks/config/epicycle.xml.h:10
+#: hacks/config/cubenetic.xml.h:22 hacks/config/cynosure.xml.h:9
+#: hacks/config/dangerball.xml.h:5 hacks/config/decayscreen.xml.h:17
+#: hacks/config/deluxe.xml.h:8 hacks/config/demon.xml.h:8
+#: hacks/config/discrete.xml.h:7 hacks/config/distort.xml.h:11
+#: hacks/config/drift.xml.h:12 hacks/config/engine.xml.h:5
+#: hacks/config/epicycle.xml.h:10 hacks/config/euler2d.xml.h:14
#: hacks/config/extrusion.xml.h:11 hacks/config/fadeplot.xml.h:8
-#: hacks/config/flag.xml.h:7 hacks/config/flame.xml.h:13
-#: hacks/config/flipscreen3d.xml.h:5 hacks/config/flow.xml.h:13
-#: hacks/config/forest.xml.h:5 hacks/config/galaxy.xml.h:10
-#: hacks/config/gears.xml.h:8 hacks/config/gflux.xml.h:12
-#: hacks/config/glplanet.xml.h:6 hacks/config/gltext.xml.h:13
-#: hacks/config/goop.xml.h:10 hacks/config/grav.xml.h:8
-#: hacks/config/greynetic.xml.h:3 hacks/config/halo.xml.h:9
-#: hacks/config/hopalong.xml.h:21 hacks/config/hyperball.xml.h:8
-#: hacks/config/hypercube.xml.h:7 hacks/config/ifs.xml.h:5
-#: hacks/config/interference.xml.h:14 hacks/config/jigsaw.xml.h:5
+#: hacks/config/flag.xml.h:7 hacks/config/flame.xml.h:14
+#: hacks/config/flipscreen3d.xml.h:6 hacks/config/flow.xml.h:13
+#: hacks/config/fluidballs.xml.h:18 hacks/config/forest.xml.h:5
+#: hacks/config/galaxy.xml.h:10 hacks/config/gears.xml.h:7
+#: hacks/config/gflux.xml.h:12 hacks/config/glforestfire.xml.h:14
+#: hacks/config/glplanet.xml.h:6 hacks/config/glsnake.xml.h:12
+#: hacks/config/gltext.xml.h:13 hacks/config/goop.xml.h:10
+#: hacks/config/grav.xml.h:8 hacks/config/greynetic.xml.h:3
+#: hacks/config/halo.xml.h:9 hacks/config/hopalong.xml.h:21
+#: hacks/config/hyperball.xml.h:8 hacks/config/hypercube.xml.h:7
+#: hacks/config/ifs.xml.h:5 hacks/config/interference.xml.h:14
+#: hacks/config/jigsaw.xml.h:5 hacks/config/juggle.xml.h:7
#: hacks/config/julia.xml.h:8 hacks/config/kaleidescope.xml.h:7
#: hacks/config/kumppa.xml.h:8 hacks/config/lament.xml.h:6
#: hacks/config/laser.xml.h:10 hacks/config/lightning.xml.h:5
#: hacks/config/mountain.xml.h:7 hacks/config/munch.xml.h:7
#: hacks/config/nerverot.xml.h:20 hacks/config/penetrate.xml.h:6
#: hacks/config/penrose.xml.h:11 hacks/config/petri.xml.h:23
-#: hacks/config/phosphor.xml.h:6 hacks/config/pipes.xml.h:14
-#: hacks/config/pulsar.xml.h:15 hacks/config/pyro.xml.h:13
-#: hacks/config/qix.xml.h:19 hacks/config/rd-bomb.xml.h:17
-#: hacks/config/ripples.xml.h:11 hacks/config/rocks.xml.h:9
-#: hacks/config/rotor.xml.h:11 hacks/config/rubik.xml.h:9
+#: hacks/config/phosphor.xml.h:6 hacks/config/pipes.xml.h:15
+#: hacks/config/polyominoes.xml.h:10 hacks/config/pulsar.xml.h:15
+#: hacks/config/pyro.xml.h:13 hacks/config/qix.xml.h:19
+#: hacks/config/rd-bomb.xml.h:17 hacks/config/ripples.xml.h:11
+#: hacks/config/rocks.xml.h:9 hacks/config/rotor.xml.h:11
+#: hacks/config/rubik.xml.h:9 hacks/config/sballs.xml.h:13
#: hacks/config/shadebobs.xml.h:9 hacks/config/sierpinski.xml.h:7
#: hacks/config/sierpinski3d.xml.h:8 hacks/config/slidescreen.xml.h:6
#: hacks/config/slip.xml.h:7 hacks/config/speedmine.xml.h:13
-#: hacks/config/sphere.xml.h:5 hacks/config/spiral.xml.h:9
-#: hacks/config/spotlight.xml.h:4 hacks/config/sproingies.xml.h:6
-#: hacks/config/squiral.xml.h:14 hacks/config/stairs.xml.h:3
-#: hacks/config/starfish.xml.h:8 hacks/config/starwars.xml.h:12
-#: hacks/config/strange.xml.h:7 hacks/config/superquadrics.xml.h:7
-#: hacks/config/swirl.xml.h:6 hacks/config/t3d.xml.h:11
+#: hacks/config/sphere.xml.h:5 hacks/config/spheremonics.xml.h:19
+#: hacks/config/spiral.xml.h:9 hacks/config/spotlight.xml.h:4
+#: hacks/config/sproingies.xml.h:6 hacks/config/squiral.xml.h:14
+#: hacks/config/stairs.xml.h:3 hacks/config/starfish.xml.h:8
+#: hacks/config/starwars.xml.h:12 hacks/config/strange.xml.h:7
+#: hacks/config/superquadrics.xml.h:7 hacks/config/swirl.xml.h:6
+#: hacks/config/t3d.xml.h:11 hacks/config/thornbird.xml.h:7
#: hacks/config/triangle.xml.h:5 hacks/config/truchet.xml.h:2
-#: hacks/config/vines.xml.h:4 hacks/config/webcollage.xml.h:7
-#: hacks/config/worm.xml.h:7 hacks/config/xearth.xml.h:22
-#: hacks/config/xfishtank.xml.h:10 hacks/config/xflame.xml.h:5
-#: hacks/config/xjack.xml.h:2 hacks/config/xmatrix.xml.h:13
-#: hacks/config/xmountains.xml.h:4 hacks/config/xrayswarm.xml.h:3
-#: hacks/config/zoom.xml.h:6
+#: hacks/config/twang.xml.h:9 hacks/config/vines.xml.h:4
+#: hacks/config/webcollage.xml.h:7 hacks/config/worm.xml.h:7
+#: hacks/config/xearth.xml.h:22 hacks/config/xfishtank.xml.h:10
+#: hacks/config/xflame.xml.h:5 hacks/config/xjack.xml.h:2
+#: hacks/config/xmatrix.xml.h:13 hacks/config/xmountains.xml.h:4
+#: hacks/config/xrayswarm.xml.h:3 hacks/config/zoom.xml.h:6
msgid "Slow"
msgstr "Lento"
#: hacks/config/ant.xml.h:15 hacks/config/attraction.xml.h:27
-#: hacks/config/demon.xml.h:9 hacks/config/discrete.xml.h:8
-#: hacks/config/distort.xml.h:12 hacks/config/fadeplot.xml.h:9
-#: hacks/config/flag.xml.h:8 hacks/config/flow.xml.h:15
+#: hacks/config/cubenetic.xml.h:23 hacks/config/demon.xml.h:9
+#: hacks/config/discrete.xml.h:8 hacks/config/distort.xml.h:12
+#: hacks/config/fadeplot.xml.h:9 hacks/config/flag.xml.h:8
+#: hacks/config/flow.xml.h:15 hacks/config/fluidballs.xml.h:19
#: hacks/config/hopalong.xml.h:22 hacks/config/interference.xml.h:15
#: hacks/config/julia.xml.h:9 hacks/config/lissie.xml.h:10
#: hacks/config/loop.xml.h:8 hacks/config/moire.xml.h:9
msgid "Small"
msgstr "Pequeño"
-#: hacks/config/ant.xml.h:16 hacks/config/attraction.xml.h:28
-#: hacks/config/blaster.xml.h:9 hacks/config/bouboule.xml.h:9
-#: hacks/config/braid.xml.h:12 hacks/config/bubble3d.xml.h:6
-#: hacks/config/bubbles.xml.h:11 hacks/config/bumps.xml.h:5
-#: hacks/config/cage.xml.h:6 hacks/config/circuit.xml.h:11
-#: hacks/config/compass.xml.h:5 hacks/config/coral.xml.h:14
-#: hacks/config/critical.xml.h:7 hacks/config/crystal.xml.h:12
+#: hacks/config/ant.xml.h:16 hacks/config/apollonian.xml.h:12
+#: hacks/config/attraction.xml.h:28 hacks/config/blaster.xml.h:9
+#: hacks/config/bouboule.xml.h:9 hacks/config/braid.xml.h:12
+#: hacks/config/bubble3d.xml.h:6 hacks/config/bubbles.xml.h:11
+#: hacks/config/bumps.xml.h:5 hacks/config/cage.xml.h:6
+#: hacks/config/circuit.xml.h:11 hacks/config/compass.xml.h:5
+#: hacks/config/coral.xml.h:14 hacks/config/critical.xml.h:7
+#: hacks/config/crystal.xml.h:12 hacks/config/cubenetic.xml.h:24
#: hacks/config/cynosure.xml.h:10 hacks/config/dangerball.xml.h:6
#: hacks/config/decayscreen.xml.h:18 hacks/config/deluxe.xml.h:9
#: hacks/config/demon.xml.h:10 hacks/config/discrete.xml.h:9
#: hacks/config/distort.xml.h:13 hacks/config/drift.xml.h:13
#: hacks/config/engine.xml.h:6 hacks/config/epicycle.xml.h:11
-#: hacks/config/extrusion.xml.h:13 hacks/config/fadeplot.xml.h:10
-#: hacks/config/flag.xml.h:9 hacks/config/flame.xml.h:14
-#: hacks/config/flipscreen3d.xml.h:6 hacks/config/flow.xml.h:16
+#: hacks/config/euler2d.xml.h:15 hacks/config/extrusion.xml.h:13
+#: hacks/config/fadeplot.xml.h:10 hacks/config/flag.xml.h:9
+#: hacks/config/flame.xml.h:15 hacks/config/flipscreen3d.xml.h:7
+#: hacks/config/flow.xml.h:16 hacks/config/fluidballs.xml.h:20
#: hacks/config/forest.xml.h:6 hacks/config/galaxy.xml.h:11
-#: hacks/config/glplanet.xml.h:8 hacks/config/gltext.xml.h:15
-#: hacks/config/goop.xml.h:11 hacks/config/grav.xml.h:9
-#: hacks/config/greynetic.xml.h:4 hacks/config/halo.xml.h:10
-#: hacks/config/hopalong.xml.h:23 hacks/config/hyperball.xml.h:9
-#: hacks/config/hypercube.xml.h:8 hacks/config/ifs.xml.h:6
-#: hacks/config/jigsaw.xml.h:7 hacks/config/julia.xml.h:10
+#: hacks/config/glforestfire.xml.h:15 hacks/config/glplanet.xml.h:8
+#: hacks/config/gltext.xml.h:15 hacks/config/goop.xml.h:11
+#: hacks/config/grav.xml.h:9 hacks/config/greynetic.xml.h:4
+#: hacks/config/halo.xml.h:10 hacks/config/hopalong.xml.h:23
+#: hacks/config/hyperball.xml.h:9 hacks/config/hypercube.xml.h:8
+#: hacks/config/ifs.xml.h:6 hacks/config/jigsaw.xml.h:7
+#: hacks/config/juggle.xml.h:8 hacks/config/julia.xml.h:10
#: hacks/config/kaleidescope.xml.h:8 hacks/config/kumppa.xml.h:9
#: hacks/config/lament.xml.h:7 hacks/config/laser.xml.h:11
#: hacks/config/lightning.xml.h:6 hacks/config/lisa.xml.h:9
#: hacks/config/mountain.xml.h:8 hacks/config/munch.xml.h:9
#: hacks/config/nerverot.xml.h:22 hacks/config/penrose.xml.h:12
#: hacks/config/petri.xml.h:25 hacks/config/phosphor.xml.h:7
-#: hacks/config/pipes.xml.h:15 hacks/config/pulsar.xml.h:17
-#: hacks/config/qix.xml.h:22 hacks/config/rotor.xml.h:12
-#: hacks/config/rubik.xml.h:11 hacks/config/shadebobs.xml.h:10
+#: hacks/config/pipes.xml.h:16 hacks/config/polyominoes.xml.h:11
+#: hacks/config/pulsar.xml.h:17 hacks/config/qix.xml.h:22
+#: hacks/config/rotor.xml.h:12 hacks/config/rubik.xml.h:11
+#: hacks/config/sballs.xml.h:14 hacks/config/shadebobs.xml.h:10
#: hacks/config/sierpinski.xml.h:9 hacks/config/sierpinski3d.xml.h:10
#: hacks/config/slidescreen.xml.h:7 hacks/config/slip.xml.h:9
#: hacks/config/speedmine.xml.h:15 hacks/config/sphere.xml.h:6
-#: hacks/config/spiral.xml.h:10 hacks/config/spotlight.xml.h:5
-#: hacks/config/sproingies.xml.h:8 hacks/config/squiral.xml.h:16
-#: hacks/config/stairs.xml.h:5 hacks/config/starfish.xml.h:9
-#: hacks/config/strange.xml.h:8 hacks/config/superquadrics.xml.h:9
-#: hacks/config/swirl.xml.h:7 hacks/config/t3d.xml.h:13
+#: hacks/config/spheremonics.xml.h:22 hacks/config/spiral.xml.h:10
+#: hacks/config/spotlight.xml.h:5 hacks/config/sproingies.xml.h:8
+#: hacks/config/squiral.xml.h:16 hacks/config/stairs.xml.h:5
+#: hacks/config/starfish.xml.h:9 hacks/config/strange.xml.h:8
+#: hacks/config/superquadrics.xml.h:9 hacks/config/swirl.xml.h:7
+#: hacks/config/t3d.xml.h:13 hacks/config/thornbird.xml.h:8
#: hacks/config/triangle.xml.h:6 hacks/config/truchet.xml.h:3
-#: hacks/config/vines.xml.h:5 hacks/config/webcollage.xml.h:8
-#: hacks/config/whirlygig.xml.h:4 hacks/config/worm.xml.h:8
-#: hacks/config/xearth.xml.h:25 hacks/config/xflame.xml.h:6
-#: hacks/config/xjack.xml.h:3 hacks/config/xmatrix.xml.h:16
-#: hacks/config/xmountains.xml.h:5 hacks/config/xrayswarm.xml.h:4
-#: hacks/config/zoom.xml.h:7
+#: hacks/config/twang.xml.h:10 hacks/config/vines.xml.h:5
+#: hacks/config/webcollage.xml.h:8 hacks/config/whirlygig.xml.h:4
+#: hacks/config/worm.xml.h:8 hacks/config/xearth.xml.h:25
+#: hacks/config/xflame.xml.h:6 hacks/config/xjack.xml.h:3
+#: hacks/config/xmatrix.xml.h:16 hacks/config/xmountains.xml.h:5
+#: hacks/config/xrayswarm.xml.h:4 hacks/config/zoom.xml.h:7
msgid "Speed"
msgstr "Velocidad"
msgid "Twelve Sided Cells"
msgstr ""
-#: hacks/config/ant.xml.h:21 hacks/config/attraction.xml.h:32
-#: hacks/config/bouboule.xml.h:11 hacks/config/braid.xml.h:13
-#: hacks/config/critical.xml.h:8 hacks/config/crystal.xml.h:13
-#: hacks/config/cynosure.xml.h:11 hacks/config/deco.xml.h:10
-#: hacks/config/deluxe.xml.h:14 hacks/config/demon.xml.h:13
-#: hacks/config/discrete.xml.h:11 hacks/config/drift.xml.h:14
-#: hacks/config/epicycle.xml.h:13 hacks/config/fadeplot.xml.h:12
-#: hacks/config/flag.xml.h:13 hacks/config/flame.xml.h:15
+#: hacks/config/ant.xml.h:21 hacks/config/apollonian.xml.h:13
+#: hacks/config/attraction.xml.h:32 hacks/config/bouboule.xml.h:11
+#: hacks/config/braid.xml.h:13 hacks/config/critical.xml.h:8
+#: hacks/config/crystal.xml.h:13 hacks/config/cynosure.xml.h:11
+#: hacks/config/deco.xml.h:10 hacks/config/deluxe.xml.h:14
+#: hacks/config/demon.xml.h:13 hacks/config/discrete.xml.h:11
+#: hacks/config/drift.xml.h:14 hacks/config/epicycle.xml.h:13
+#: hacks/config/euler2d.xml.h:17 hacks/config/fadeplot.xml.h:12
+#: hacks/config/flag.xml.h:13 hacks/config/flame.xml.h:16
#: hacks/config/flow.xml.h:18 hacks/config/forest.xml.h:8
#: hacks/config/galaxy.xml.h:13 hacks/config/grav.xml.h:11
#: hacks/config/halo.xml.h:12 hacks/config/hopalong.xml.h:25
#: hacks/config/loop.xml.h:12 hacks/config/moire.xml.h:11
#: hacks/config/moire2.xml.h:9 hacks/config/mountain.xml.h:9
#: hacks/config/nerverot.xml.h:23 hacks/config/penrose.xml.h:13
-#: hacks/config/rd-bomb.xml.h:20 hacks/config/rocks.xml.h:12
-#: hacks/config/rotor.xml.h:13 hacks/config/shadebobs.xml.h:12
-#: hacks/config/sierpinski.xml.h:12 hacks/config/slip.xml.h:12
-#: hacks/config/sphere.xml.h:8 hacks/config/spiral.xml.h:12
-#: hacks/config/squiral.xml.h:18 hacks/config/starfish.xml.h:14
-#: hacks/config/strange.xml.h:11 hacks/config/swirl.xml.h:9
+#: hacks/config/polyominoes.xml.h:12 hacks/config/rd-bomb.xml.h:20
+#: hacks/config/rocks.xml.h:12 hacks/config/rotor.xml.h:13
+#: hacks/config/shadebobs.xml.h:12 hacks/config/sierpinski.xml.h:12
+#: hacks/config/slip.xml.h:12 hacks/config/sphere.xml.h:8
+#: hacks/config/spiral.xml.h:12 hacks/config/squiral.xml.h:18
+#: hacks/config/starfish.xml.h:14 hacks/config/strange.xml.h:11
+#: hacks/config/swirl.xml.h:9 hacks/config/thornbird.xml.h:13
#: hacks/config/triangle.xml.h:8 hacks/config/vines.xml.h:7
#: hacks/config/worm.xml.h:9 hacks/config/xearth.xml.h:28
#: hacks/config/xfishtank.xml.h:11
msgid "Two"
msgstr "Dos"
+#: hacks/config/apollonian.xml.h:1
+msgid "Apollonian"
+msgstr ""
+
+#: hacks/config/apollonian.xml.h:2
+#, fuzzy
+msgid "Deep"
+msgstr "Más denso"
+
+#: hacks/config/apollonian.xml.h:3
+msgid "Depth"
+msgstr ""
+
+#: hacks/config/apollonian.xml.h:4
+#, fuzzy
+msgid "Draw Labels"
+msgstr "Células"
+
+#: hacks/config/apollonian.xml.h:6
+msgid "Include Alternate Geometries"
+msgstr ""
+
+#: hacks/config/apollonian.xml.h:9
+msgid ""
+"Packs a large circle with smaller circles, demonstrating the Descartes "
+"Circle Theorem. Written by Allan R. Wilks and David Bagley."
+msgstr ""
+
+#: hacks/config/apollonian.xml.h:10
+#, fuzzy
+msgid "Shallow"
+msgstr "Lento"
+
#: hacks/config/atlantis.xml.h:1
msgid "Agressive"
msgstr ""
msgid "Shimmering Water"
msgstr ""
-#: hacks/config/atlantis.xml.h:11 hacks/config/bubble3d.xml.h:4
-#: hacks/config/cage.xml.h:3 hacks/config/circuit.xml.h:9
+#: hacks/config/atlantis.xml.h:11 hacks/config/boxed.xml.h:5
+#: hacks/config/bubble3d.xml.h:4 hacks/config/cage.xml.h:3
+#: hacks/config/circuit.xml.h:9 hacks/config/cubenetic.xml.h:21
#: hacks/config/dangerball.xml.h:4 hacks/config/engine.xml.h:4
-#: hacks/config/extrusion.xml.h:10 hacks/config/flipscreen3d.xml.h:4
-#: hacks/config/gears.xml.h:7 hacks/config/gflux.xml.h:11
-#: hacks/config/glplanet.xml.h:5 hacks/config/gltext.xml.h:12
-#: hacks/config/lament.xml.h:5 hacks/config/menger.xml.h:15
-#: hacks/config/moebius.xml.h:6 hacks/config/molecule.xml.h:21
-#: hacks/config/morph3d.xml.h:5 hacks/config/pipes.xml.h:13
-#: hacks/config/pulsar.xml.h:14 hacks/config/rubik.xml.h:6
-#: hacks/config/sierpinski3d.xml.h:6 hacks/config/sproingies.xml.h:4
-#: hacks/config/stairs.xml.h:2 hacks/config/starwars.xml.h:11
-#: hacks/config/superquadrics.xml.h:6
+#: hacks/config/extrusion.xml.h:10 hacks/config/flipscreen3d.xml.h:5
+#: hacks/config/fluidballs.xml.h:17 hacks/config/gears.xml.h:6
+#: hacks/config/gflux.xml.h:11 hacks/config/glforestfire.xml.h:13
+#: hacks/config/glplanet.xml.h:5 hacks/config/glsnake.xml.h:10
+#: hacks/config/gltext.xml.h:12 hacks/config/lament.xml.h:5
+#: hacks/config/menger.xml.h:15 hacks/config/moebius.xml.h:6
+#: hacks/config/molecule.xml.h:21 hacks/config/morph3d.xml.h:5
+#: hacks/config/pipes.xml.h:14 hacks/config/pulsar.xml.h:14
+#: hacks/config/rubik.xml.h:6 hacks/config/sballs.xml.h:12
+#: hacks/config/sierpinski3d.xml.h:6 hacks/config/spheremonics.xml.h:18
+#: hacks/config/sproingies.xml.h:4 hacks/config/stairs.xml.h:2
+#: hacks/config/starwars.xml.h:11 hacks/config/superquadrics.xml.h:6
msgid "Show Frames-per-Second"
msgstr ""
msgid "Shy"
msgstr ""
-#: hacks/config/atlantis.xml.h:14 hacks/config/cage.xml.h:5
-#: hacks/config/extrusion.xml.h:12 hacks/config/gears.xml.h:9
-#: hacks/config/glplanet.xml.h:7 hacks/config/gltext.xml.h:14
+#: hacks/config/atlantis.xml.h:14 hacks/config/boxed.xml.h:7
+#: hacks/config/cage.xml.h:5 hacks/config/extrusion.xml.h:12
+#: hacks/config/gears.xml.h:8 hacks/config/glplanet.xml.h:7
+#: hacks/config/glsnake.xml.h:13 hacks/config/gltext.xml.h:14
#: hacks/config/menger.xml.h:17 hacks/config/molecule.xml.h:23
#: hacks/config/munch.xml.h:8 hacks/config/sierpinski3d.xml.h:9
-#: hacks/config/speedmine.xml.h:14 hacks/config/sproingies.xml.h:7
-#: hacks/config/stairs.xml.h:4 hacks/config/stonerview.xml.h:2
-#: hacks/config/superquadrics.xml.h:8
+#: hacks/config/speedmine.xml.h:14 hacks/config/spheremonics.xml.h:21
+#: hacks/config/sproingies.xml.h:7 hacks/config/stairs.xml.h:4
+#: hacks/config/stonerview.xml.h:2 hacks/config/superquadrics.xml.h:8
msgid "Solid"
msgstr "Sólido"
msgid "Whale Speed"
msgstr "Velocidad"
-#: hacks/config/atlantis.xml.h:17 hacks/config/cage.xml.h:8
-#: hacks/config/dangerball.xml.h:11 hacks/config/extrusion.xml.h:19
-#: hacks/config/gears.xml.h:12 hacks/config/glplanet.xml.h:11
-#: hacks/config/gltext.xml.h:18 hacks/config/lament.xml.h:9
-#: hacks/config/menger.xml.h:21 hacks/config/moebius.xml.h:11
-#: hacks/config/molecule.xml.h:26 hacks/config/pulsar.xml.h:20
+#: hacks/config/atlantis.xml.h:17 hacks/config/boxed.xml.h:8
+#: hacks/config/cage.xml.h:8 hacks/config/dangerball.xml.h:11
+#: hacks/config/extrusion.xml.h:19 hacks/config/gears.xml.h:11
+#: hacks/config/glforestfire.xml.h:20 hacks/config/glplanet.xml.h:11
+#: hacks/config/glsnake.xml.h:16 hacks/config/gltext.xml.h:18
+#: hacks/config/lament.xml.h:9 hacks/config/menger.xml.h:21
+#: hacks/config/moebius.xml.h:11 hacks/config/molecule.xml.h:26
+#: hacks/config/pulsar.xml.h:20 hacks/config/sballs.xml.h:18
#: hacks/config/sierpinski3d.xml.h:12 hacks/config/speedmine.xml.h:18
-#: hacks/config/sproingies.xml.h:10 hacks/config/stairs.xml.h:7
-#: hacks/config/stonerview.xml.h:4 hacks/config/superquadrics.xml.h:11
+#: hacks/config/spheremonics.xml.h:26 hacks/config/sproingies.xml.h:10
+#: hacks/config/stairs.xml.h:7 hacks/config/stonerview.xml.h:4
+#: hacks/config/superquadrics.xml.h:11
msgid "Wireframe"
msgstr ""
msgid "Ball Mass"
msgstr ""
-#: hacks/config/attraction.xml.h:4
+#: hacks/config/attraction.xml.h:4 hacks/config/fluidballs.xml.h:2
#, fuzzy
msgid "Balls"
msgstr "Barras"
msgstr "Muestra polilíneas coloreadas"
#: hacks/config/attraction.xml.h:10 hacks/config/ccurve.xml.h:9
+#: hacks/config/cubenetic.xml.h:10 hacks/config/euler2d.xml.h:5
#: hacks/config/flame.xml.h:9 hacks/config/goop.xml.h:6
#: hacks/config/hopalong.xml.h:10 hacks/config/hyperball.xml.h:3
#: hacks/config/hypercube.xml.h:3 hacks/config/interference.xml.h:6
#: hacks/config/kumppa.xml.h:4 hacks/config/nerverot.xml.h:11
#: hacks/config/petri.xml.h:8 hacks/config/pyro.xml.h:5
#: hacks/config/qix.xml.h:10 hacks/config/speedmine.xml.h:5
-#: hacks/config/spiral.xml.h:4 hacks/config/squiral.xml.h:6
-#: hacks/config/strange.xml.h:3 hacks/config/superquadrics.xml.h:4
-#: hacks/config/t3d.xml.h:7 hacks/config/wander.xml.h:8
+#: hacks/config/spheremonics.xml.h:6 hacks/config/spiral.xml.h:4
+#: hacks/config/squiral.xml.h:6 hacks/config/strange.xml.h:3
+#: hacks/config/superquadrics.xml.h:4 hacks/config/t3d.xml.h:7
+#: hacks/config/twang.xml.h:5 hacks/config/wander.xml.h:8
msgid "High"
msgstr "Alto"
#: hacks/config/attraction.xml.h:16 hacks/config/braid.xml.h:6
#: hacks/config/cynosure.xml.h:5 hacks/config/drift.xml.h:8
-#: hacks/config/galaxy.xml.h:5 hacks/config/laser.xml.h:5
+#: hacks/config/euler2d.xml.h:6 hacks/config/galaxy.xml.h:5
+#: hacks/config/juggle.xml.h:5 hacks/config/laser.xml.h:5
#: hacks/config/menger.xml.h:4 hacks/config/munch.xml.h:4
#: hacks/config/nerverot.xml.h:13 hacks/config/petri.xml.h:9
-#: hacks/config/rotor.xml.h:5 hacks/config/shadebobs.xml.h:4
-#: hacks/config/sierpinski3d.xml.h:3 hacks/config/wander.xml.h:10
+#: hacks/config/polyominoes.xml.h:4 hacks/config/rotor.xml.h:5
+#: hacks/config/shadebobs.xml.h:4 hacks/config/sierpinski3d.xml.h:3
+#: hacks/config/spheremonics.xml.h:7 hacks/config/wander.xml.h:10
#: hacks/config/whirlwindwarp.xml.h:3
#, fuzzy
msgid "Long"
msgstr "Más largo"
#: hacks/config/attraction.xml.h:17 hacks/config/ccurve.xml.h:10
-#: hacks/config/goop.xml.h:7 hacks/config/hopalong.xml.h:14
-#: hacks/config/hyperball.xml.h:6 hacks/config/hypercube.xml.h:5
-#: hacks/config/interference.xml.h:9 hacks/config/kumppa.xml.h:6
-#: hacks/config/nerverot.xml.h:14 hacks/config/petri.xml.h:10
-#: hacks/config/pyro.xml.h:7 hacks/config/qix.xml.h:13
-#: hacks/config/speedmine.xml.h:6 hacks/config/spiral.xml.h:5
+#: hacks/config/cubenetic.xml.h:12 hacks/config/euler2d.xml.h:7
+#: hacks/config/flame.xml.h:10 hacks/config/goop.xml.h:7
+#: hacks/config/hopalong.xml.h:14 hacks/config/hyperball.xml.h:6
+#: hacks/config/hypercube.xml.h:5 hacks/config/interference.xml.h:9
+#: hacks/config/kumppa.xml.h:6 hacks/config/nerverot.xml.h:14
+#: hacks/config/petri.xml.h:10 hacks/config/pyro.xml.h:7
+#: hacks/config/qix.xml.h:13 hacks/config/speedmine.xml.h:6
+#: hacks/config/spheremonics.xml.h:8 hacks/config/spiral.xml.h:5
#: hacks/config/squiral.xml.h:8 hacks/config/strange.xml.h:4
#: hacks/config/superquadrics.xml.h:5 hacks/config/t3d.xml.h:8
-#: hacks/config/wander.xml.h:11
+#: hacks/config/twang.xml.h:7 hacks/config/wander.xml.h:11
msgid "Low"
msgstr "Bajo"
#: hacks/config/attraction.xml.h:25 hacks/config/braid.xml.h:10
#: hacks/config/cynosure.xml.h:8 hacks/config/drift.xml.h:11
-#: hacks/config/galaxy.xml.h:8 hacks/config/laser.xml.h:9
-#: hacks/config/menger.xml.h:14 hacks/config/munch.xml.h:6
-#: hacks/config/nerverot.xml.h:19 hacks/config/petri.xml.h:22
+#: hacks/config/euler2d.xml.h:12 hacks/config/galaxy.xml.h:8
+#: hacks/config/laser.xml.h:9 hacks/config/menger.xml.h:14
+#: hacks/config/munch.xml.h:6 hacks/config/nerverot.xml.h:19
+#: hacks/config/petri.xml.h:22 hacks/config/polyominoes.xml.h:9
#: hacks/config/rotor.xml.h:9 hacks/config/shadebobs.xml.h:8
-#: hacks/config/sierpinski3d.xml.h:5 hacks/config/wander.xml.h:12
-#: hacks/config/whirlwindwarp.xml.h:6
+#: hacks/config/sierpinski3d.xml.h:5 hacks/config/spheremonics.xml.h:17
+#: hacks/config/wander.xml.h:12 hacks/config/whirlwindwarp.xml.h:6
#, fuzzy
msgid "Short"
msgstr "Más corto"
msgid "Tails"
msgstr "Rastros"
-#: hacks/config/attraction.xml.h:31
+#: hacks/config/attraction.xml.h:31 hacks/config/euler2d.xml.h:16
+#: hacks/config/juggle.xml.h:9
msgid "Trail Length"
msgstr ""
msgstr ""
#: hacks/config/blaster.xml.h:4 hacks/config/bouboule.xml.h:4
-#: hacks/config/coral.xml.h:8 hacks/config/flame.xml.h:7
-#: hacks/config/kaleidescope.xml.h:3 hacks/config/lisa.xml.h:3
-#: hacks/config/pedal.xml.h:4 hacks/config/petri.xml.h:7
-#: hacks/config/qix.xml.h:8 hacks/config/whirlwindwarp.xml.h:1
+#: hacks/config/coral.xml.h:8 hacks/config/cubenetic.xml.h:9
+#: hacks/config/euler2d.xml.h:4 hacks/config/flame.xml.h:7
+#: hacks/config/fluidballs.xml.h:4 hacks/config/kaleidescope.xml.h:3
+#: hacks/config/lisa.xml.h:3 hacks/config/pedal.xml.h:4
+#: hacks/config/petri.xml.h:7 hacks/config/qix.xml.h:8
+#: hacks/config/thornbird.xml.h:3 hacks/config/whirlwindwarp.xml.h:1
#: hacks/config/xfishtank.xml.h:4
msgid "Few"
msgstr ""
"spots painted on its invisible surface. Written by Jeremie Petit."
msgstr ""
+#: hacks/config/boxed.xml.h:1 hacks/config/gears.xml.h:1
+#: hacks/config/gflux.xml.h:1 hacks/config/pyro.xml.h:1
+#: hacks/config/rd-bomb.xml.h:6 hacks/config/rocks.xml.h:1
+#: hacks/config/starwars.xml.h:1 hacks/config/xfishtank.xml.h:1
+#, fuzzy
+msgid "Animation Speed"
+msgstr "Animar"
+
+#: hacks/config/boxed.xml.h:2
+#, fuzzy
+msgid "Boxed"
+msgstr "BSoD"
+
+#: hacks/config/boxed.xml.h:3
+msgid ""
+"Draws a box full of 3D bouncing balls that explode. Written by Sander van "
+"Grieken."
+msgstr ""
+
#: hacks/config/braid.xml.h:1
msgid "Braid"
msgstr "Galones"
#: hacks/config/ccurve.xml.h:7 hacks/config/coral.xml.h:6
#: hacks/config/cynosure.xml.h:3 hacks/config/deco.xml.h:4
#: hacks/config/drift.xml.h:2 hacks/config/epicycle.xml.h:3
-#: hacks/config/flame.xml.h:5 hacks/config/galaxy.xml.h:2
+#: hacks/config/euler2d.xml.h:1 hacks/config/flame.xml.h:5
+#: hacks/config/galaxy.xml.h:2 hacks/config/glsnake.xml.h:4
#: hacks/config/helix.xml.h:3 hacks/config/hopalong.xml.h:2
#: hacks/config/imsmap.xml.h:6 hacks/config/laser.xml.h:2
#: hacks/config/menger.xml.h:2 hacks/config/moire.xml.h:3
#: hacks/config/molecule.xml.h:9 hacks/config/munch.xml.h:2
#: hacks/config/nerverot.xml.h:8 hacks/config/pedal.xml.h:3
-#: hacks/config/penrose.xml.h:5 hacks/config/rorschach.xml.h:3
-#: hacks/config/rotzoomer.xml.h:5 hacks/config/shadebobs.xml.h:2
-#: hacks/config/sierpinski3d.xml.h:1 hacks/config/starfish.xml.h:2
+#: hacks/config/penrose.xml.h:5 hacks/config/polyominoes.xml.h:1
+#: hacks/config/rorschach.xml.h:3 hacks/config/rotzoomer.xml.h:5
+#: hacks/config/shadebobs.xml.h:2 hacks/config/sierpinski3d.xml.h:1
+#: hacks/config/spheremonics.xml.h:4 hacks/config/starfish.xml.h:2
#: hacks/config/vidwhacker.xml.h:3 hacks/config/wander.xml.h:7
#: hacks/config/xspirograph.xml.h:3
msgid "Duration"
msgstr ""
#: hacks/config/bsod.xml.h:9
-msgid "MacOS"
+msgid "Mac Bomb"
msgstr ""
#: hacks/config/bsod.xml.h:10
msgstr ""
#: hacks/config/bsod.xml.h:13
+msgid "Sad Mac"
+msgstr ""
+
+#: hacks/config/bsod.xml.h:14
#, fuzzy
msgid "Solaris"
msgstr "Estrella de mar"
-#: hacks/config/bsod.xml.h:14
+#: hacks/config/bsod.xml.h:15
msgid "Sparc Linux"
msgstr ""
-#: hacks/config/bsod.xml.h:15
+#: hacks/config/bsod.xml.h:16
#, fuzzy
msgid "Windows"
msgstr "Window Maker"
-#: hacks/config/bsod.xml.h:16
+#: hacks/config/bsod.xml.h:17
+#, fuzzy
+msgid "Windows 2000"
+msgstr "Window Maker"
+
+#: hacks/config/bsod.xml.h:18
#, fuzzy
msgid "Windows NT"
msgstr "Window Maker"
msgid "Parts"
msgstr "Barras"
-#: hacks/config/circuit.xml.h:7 hacks/config/flipscreen3d.xml.h:3
+#: hacks/config/circuit.xml.h:7 hacks/config/flipscreen3d.xml.h:4
#, fuzzy
msgid "Rotate"
msgstr "Rotación"
#: hacks/config/compass.xml.h:2 hacks/config/deluxe.xml.h:3
#: hacks/config/interference.xml.h:4 hacks/config/kumppa.xml.h:2
-#: hacks/config/nerverot.xml.h:6
+#: hacks/config/nerverot.xml.h:6 hacks/config/pipes.xml.h:4
msgid "Double Buffer"
msgstr ""
#: hacks/config/cosmos.xml.h:2
msgid ""
"Draws fireworks and zooming, fading flares. By Tom Campbell. You can find it "
-"at <http://www.mindspring.com/~campbell/cosmos/>"
+"at <http://cosmos.dnsalias.net/cosmos/>"
msgstr ""
#: hacks/config/critical.xml.h:1
#: hacks/config/crystal.xml.h:2 hacks/config/deluxe.xml.h:1
#: hacks/config/fadeplot.xml.h:1 hacks/config/flow.xml.h:3
-#: hacks/config/galaxy.xml.h:1 hacks/config/gears.xml.h:2
+#: hacks/config/galaxy.xml.h:1 hacks/config/glforestfire.xml.h:1
#: hacks/config/grav.xml.h:1 hacks/config/julia.xml.h:1
#: hacks/config/laser.xml.h:1 hacks/config/lisa.xml.h:1
#: hacks/config/lissie.xml.h:2 hacks/config/morph3d.xml.h:2
msgid "Draw Cell"
msgstr "Células"
-#: hacks/config/crystal.xml.h:5 hacks/config/xearth.xml.h:6
+#: hacks/config/crystal.xml.h:5 hacks/config/spheremonics.xml.h:3
+#: hacks/config/xearth.xml.h:6
msgid "Draw Grid"
msgstr ""
msgid "Vertical Symmetries"
msgstr "Degradado vertical"
+#: hacks/config/cubenetic.xml.h:1
+msgid "Boxes"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:2
+#, fuzzy
+msgid "Cubenetic"
+msgstr "Grisnética"
+
+#: hacks/config/cubenetic.xml.h:3
+#, fuzzy
+msgid "Display Solid Colors"
+msgstr "Muestra una pantalla de sonar."
+
+#: hacks/config/cubenetic.xml.h:4
+#, fuzzy
+msgid "Display Surface Patterns"
+msgstr "Muestra estática."
+
+#: hacks/config/cubenetic.xml.h:5
+#, fuzzy
+msgid "Display Wireframe"
+msgstr "Mostrar un juego de acción"
+
+#: hacks/config/cubenetic.xml.h:6 hacks/config/gltext.xml.h:2
+#: hacks/config/menger.xml.h:1 hacks/config/molecule.xml.h:4
+#: hacks/config/spheremonics.xml.h:1
+msgid "Don't Rotate"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:7
+msgid ""
+"Draws a pulsating set of overlapping boxes with ever-chaning blobby patterns "
+"undulating across their surfaces. It's sort of a cubist Lavalite. Written by "
+"Jamie Zawinski."
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:14 hacks/config/gltext.xml.h:5
+#: hacks/config/menger.xml.h:7 hacks/config/molecule.xml.h:14
+#: hacks/config/spheremonics.xml.h:10
+msgid "Rotate around X and Y axes"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:15 hacks/config/gltext.xml.h:6
+#: hacks/config/menger.xml.h:8 hacks/config/molecule.xml.h:15
+#: hacks/config/spheremonics.xml.h:11
+msgid "Rotate around X and Z axes"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:16 hacks/config/gltext.xml.h:7
+#: hacks/config/menger.xml.h:9 hacks/config/molecule.xml.h:16
+#: hacks/config/spheremonics.xml.h:12
+msgid "Rotate around X axis"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:17 hacks/config/gltext.xml.h:8
+#: hacks/config/menger.xml.h:10 hacks/config/molecule.xml.h:17
+#: hacks/config/spheremonics.xml.h:13
+msgid "Rotate around Y and Z axes"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:18 hacks/config/gltext.xml.h:9
+#: hacks/config/menger.xml.h:11 hacks/config/molecule.xml.h:18
+#: hacks/config/spheremonics.xml.h:14
+msgid "Rotate around Y axis"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:19 hacks/config/gltext.xml.h:10
+#: hacks/config/menger.xml.h:12 hacks/config/molecule.xml.h:19
+#: hacks/config/spheremonics.xml.h:15
+msgid "Rotate around Z axis"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:20 hacks/config/gltext.xml.h:11
+#: hacks/config/menger.xml.h:13 hacks/config/molecule.xml.h:20
+#: hacks/config/spheremonics.xml.h:16
+msgid "Rotate around all three axes"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:25
+msgid "Surface Pattern Complexity"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:26
+msgid "Surface Pattern Overlap"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:27
+msgid "Surface Pattern Speed"
+msgstr ""
+
+#: hacks/config/cubenetic.xml.h:28 hacks/config/dangerball.xml.h:10
+#: hacks/config/engine.xml.h:8 hacks/config/glforestfire.xml.h:19
+#: hacks/config/gltext.xml.h:17 hacks/config/menger.xml.h:20
+#: hacks/config/molecule.xml.h:25 hacks/config/spheremonics.xml.h:25
+#: hacks/config/wander.xml.h:15
+#, fuzzy
+msgid "Wander"
+msgstr "selector:"
+
#: hacks/config/cynosure.xml.h:1
msgid ""
"A hack similar to `greynetic', but less frenetic. The first implementation "
msgid "Spike Growth"
msgstr ""
-#: hacks/config/dangerball.xml.h:10 hacks/config/engine.xml.h:8
-#: hacks/config/gltext.xml.h:17 hacks/config/menger.xml.h:20
-#: hacks/config/molecule.xml.h:25 hacks/config/wander.xml.h:15
-#, fuzzy
-msgid "Wander"
-msgstr "selector:"
-
#: hacks/config/decayscreen.xml.h:1
#, fuzzy
msgid "DecayScreen"
msgstr "Deluxe"
#: hacks/config/deluxe.xml.h:10 hacks/config/lmorph.xml.h:13
-#: hacks/config/starfish.xml.h:11
+#: hacks/config/starfish.xml.h:11 hacks/config/thornbird.xml.h:9
#, fuzzy
msgid "Thick"
msgstr "Grosor"
#: hacks/config/deluxe.xml.h:11 hacks/config/lmorph.xml.h:14
-#: hacks/config/starfish.xml.h:12
+#: hacks/config/starfish.xml.h:12 hacks/config/thornbird.xml.h:11
#, fuzzy
msgid "Thin"
msgstr "Más fino"
msgid "Magnify"
msgstr ""
-#: hacks/config/distort.xml.h:9 hacks/config/lament.xml.h:4
+#: hacks/config/distort.xml.h:9 hacks/config/glforestfire.xml.h:10
+#: hacks/config/lament.xml.h:4 hacks/config/sballs.xml.h:6
#, fuzzy
msgid "Normal"
msgstr " Normal"
#: hacks/config/distort.xml.h:16 hacks/config/moire.xml.h:12
#: hacks/config/rd-bomb.xml.h:21 hacks/config/ripples.xml.h:15
#: hacks/config/rotzoomer.xml.h:10 hacks/config/swirl.xml.h:10
-#: hacks/config/xflame.xml.h:7
+#: hacks/config/twang.xml.h:15 hacks/config/xflame.xml.h:7
msgid "Use Shared Memory"
msgstr ""
"the next animation. Periodically it uploades completed frames to the server, "
"where they are compressed for distribution to all clients. This program is "
"recommended only if you have a high bandwidth connection to the Internet. By "
-"Scott Draves. You can find it at <http://www.electricsheep.org/>. See that "
-"web site for configuration information."
+"Scott Draves. You can find it at <http://www.electricsheep.org/>. See "
+"that web site for configuration information."
msgstr ""
#: hacks/config/engine.xml.h:1
"Este salvapantalla dibuja la trayectoria de un punto sobre un círculo en "
"rotación que se desplaza sobre otro círculo"
+#: hacks/config/euler2d.xml.h:2
+msgid "Euler2d"
+msgstr ""
+
+#: hacks/config/euler2d.xml.h:10 hacks/config/whirlwindwarp.xml.h:5
+#, fuzzy
+msgid "Particles"
+msgstr "Partículas en pantalla"
+
+#: hacks/config/euler2d.xml.h:11
+#, fuzzy
+msgid "Power"
+msgstr "Lento"
+
+#: hacks/config/euler2d.xml.h:13
+msgid ""
+"Simulates two dimensional Incompressible Inviscid Fluid Flow. Written by "
+"Stephen Montgomery-Smith."
+msgstr ""
+
#: hacks/config/extrusion.xml.h:1
msgid ""
"Draws various rotating extruded shapes that twist around, lengthen, and turn "
msgid "Flame"
msgstr "Xflame"
-#: hacks/config/flame.xml.h:12
+#: hacks/config/flame.xml.h:13
#, fuzzy
msgid "Number of Fractals"
msgstr "Cantidad de rastros."
msgid "Flipscreen3d"
msgstr "Slidescreen"
+#: hacks/config/flipscreen3d.xml.h:3
+msgid ""
+"Grabs an image of the desktop, turns it into a GL texture map, and spins it "
+"around and deforms it in various ways. Written by Ben Buxton."
+msgstr ""
+
#: hacks/config/flow.xml.h:1
msgid "Allow 2D Attractors"
msgstr ""
msgid "Zoom In and Out"
msgstr ""
-#: hacks/config/forest.xml.h:2
+#: hacks/config/fluidballs.xml.h:1
+#, fuzzy
+msgid "Ball Size"
+msgstr "Tamaño"
+
+#: hacks/config/fluidballs.xml.h:5
+#, fuzzy
+msgid "FluidBalls"
+msgstr "Barras"
+
+#: hacks/config/fluidballs.xml.h:6
+msgid "Freefall"
+msgstr ""
+
+#: hacks/config/fluidballs.xml.h:7 hacks/config/twang.xml.h:4
+#, fuzzy
+msgid "Friction"
+msgstr "Atracción"
+
+#: hacks/config/fluidballs.xml.h:8
+#, fuzzy
+msgid "Glass"
+msgstr "Engranajes"
+
+#: hacks/config/fluidballs.xml.h:9 hacks/config/qix.xml.h:9
+#: hacks/config/speedmine.xml.h:4
+#, fuzzy
+msgid "Gravity"
+msgstr "Gravedad"
+
+#: hacks/config/fluidballs.xml.h:10
+msgid "Hurricane"
+msgstr ""
+
+#: hacks/config/fluidballs.xml.h:11
+msgid "Jupiter"
+msgstr ""
+
+#: hacks/config/fluidballs.xml.h:14
+msgid ""
+"Models the physics of bouncing balls, or of particles in a gas or fluid, "
+"depending on the settings. If \"Shake Box\" is selected, then every now and "
+"then, the box will be rotated, changing which direction is down (in order to "
+"keep the settled balls in motion.)"
+msgstr ""
+
+#: hacks/config/fluidballs.xml.h:15
+#, fuzzy
+msgid "Sandpaper"
+msgstr "Sonar"
+
+#: hacks/config/fluidballs.xml.h:16
+#, fuzzy
+msgid "Shake Box"
+msgstr "Shadebobs"
+
+#: hacks/config/fluidballs.xml.h:21 hacks/config/glforestfire.xml.h:16
+#, fuzzy
+msgid "Still"
+msgstr "Revolver"
+
+#: hacks/config/fluidballs.xml.h:22
+msgid "Various Ball Sizes"
+msgstr ""
+
+#: hacks/config/fluidballs.xml.h:23
+#, fuzzy
+msgid "Wind"
+msgstr "Gordo "
+
+#: hacks/config/forest.xml.h:2 hacks/config/glforestfire.xml.h:6
msgid "Forest"
msgstr "Bosque"
"Siegmund."
msgstr ""
-#: hacks/config/gears.xml.h:1 hacks/config/gflux.xml.h:1
-#: hacks/config/pyro.xml.h:1 hacks/config/rd-bomb.xml.h:6
-#: hacks/config/rocks.xml.h:1 hacks/config/starwars.xml.h:1
-#: hacks/config/xfishtank.xml.h:1
-#, fuzzy
-msgid "Animation Speed"
-msgstr "Animar"
-
-#: hacks/config/gears.xml.h:4
+#: hacks/config/gears.xml.h:3
msgid "Gears"
msgstr "Engranajes"
-#: hacks/config/gears.xml.h:5
+#: hacks/config/gears.xml.h:4
msgid "Planetary Gear System"
msgstr ""
-#: hacks/config/gears.xml.h:6 hacks/config/goop.xml.h:9
+#: hacks/config/gears.xml.h:5 hacks/config/goop.xml.h:9
#, fuzzy
msgid "Rotational Speed"
msgstr "Rotación"
-#: hacks/config/gears.xml.h:10
+#: hacks/config/gears.xml.h:9
msgid ""
"This draws sets of turning, interlocking gears, rotating in three "
"dimensions. Another GL hack, by Danny Sung, Brian Paul, Ed Mackey, and Jamie "
"Zawinski."
msgstr ""
-#: hacks/config/gears.xml.h:11
+#: hacks/config/gears.xml.h:10
msgid "Three Gear System"
msgstr ""
#: hacks/config/gflux.xml.h:10
#, fuzzy
-msgid "Screen Image"
-msgstr "Salvapantalla"
+msgid "Screen Image"
+msgstr "Salvapantalla"
+
+#: hacks/config/gflux.xml.h:14 hacks/config/interference.xml.h:18
+#, fuzzy
+msgid "Wave Speed"
+msgstr "Velocidad"
+
+#: hacks/config/gflux.xml.h:15
+msgid "Waves"
+msgstr ""
+
+#: hacks/config/gflux.xml.h:16
+msgid "Wire Mesh"
+msgstr ""
+
+#: hacks/config/glforestfire.xml.h:2
+#, fuzzy
+msgid "Desert"
+msgstr "Más denso"
+
+#: hacks/config/glforestfire.xml.h:3
+msgid ""
+"Draws an animation of sprinkling fire-like 3D triangles in a landscape "
+"filled with trees. Requires OpenGL, and a machine with fast hardware support "
+"for texture maps. Written by Eric Lassauge <lassauge@mail.dotcom.fr>."
+msgstr ""
+
+#: hacks/config/glforestfire.xml.h:5
+msgid "Fog"
+msgstr ""
+
+#: hacks/config/glforestfire.xml.h:7
+#, fuzzy
+msgid "GLForestFire"
+msgstr "Bosque"
+
+#: hacks/config/glforestfire.xml.h:8
+#, fuzzy
+msgid "Huge Fire"
+msgstr "Tipo de letra del Usuario"
+
+#: hacks/config/glforestfire.xml.h:9
+msgid "No shadow"
+msgstr ""
+
+#: hacks/config/glforestfire.xml.h:11
+#, fuzzy
+msgid "Number of trees"
+msgstr "Número de ciclos"
-#: hacks/config/gflux.xml.h:14 hacks/config/interference.xml.h:18
+#: hacks/config/glforestfire.xml.h:12
#, fuzzy
-msgid "Wave Speed"
-msgstr "Velocidad"
+msgid "Rain"
+msgstr "Rotación"
-#: hacks/config/gflux.xml.h:15
-msgid "Waves"
+#: hacks/config/glforestfire.xml.h:17
+msgid "Track mouse"
msgstr ""
-#: hacks/config/gflux.xml.h:16
-msgid "Wire Mesh"
-msgstr ""
+#: hacks/config/glforestfire.xml.h:18 hacks/config/lament.xml.h:8
+#: hacks/config/sballs.xml.h:17
+#, fuzzy
+msgid "Untextured"
+msgstr "Centrado"
#: hacks/config/glplanet.xml.h:1
msgid ""
msgid "Image File"
msgstr ""
-#: hacks/config/gltext.xml.h:1
+#: hacks/config/glsnake.xml.h:1
+msgid "1"
+msgstr ""
+
+#: hacks/config/glsnake.xml.h:2 hacks/config/penrose.xml.h:2
+#, fuzzy
+msgid "30 Seconds"
+msgstr "Segundos"
+
+#: hacks/config/glsnake.xml.h:3
msgid ""
-"Displays a few lines of text spinning around in a solid 3D font. Written by "
-"Jamie Zawinski."
+"Draws a simulation of the Rubik's Snake puzzle. Written by Jamie Wilkinson, "
+"Andrew Bennetts, and Peter Aylett."
msgstr ""
-#: hacks/config/gltext.xml.h:2 hacks/config/menger.xml.h:1
-#: hacks/config/molecule.xml.h:4
-msgid "Don't Rotate"
+#: hacks/config/glsnake.xml.h:6
+msgid "GlSnake"
msgstr ""
-#: hacks/config/gltext.xml.h:4
+#: hacks/config/glsnake.xml.h:7
#, fuzzy
-msgid "GLText"
-msgstr "Izquierda"
+msgid "Loose"
+msgstr "Puntos"
-#: hacks/config/gltext.xml.h:5 hacks/config/menger.xml.h:7
-#: hacks/config/molecule.xml.h:14
-msgid "Rotate around X and Y axes"
+#: hacks/config/glsnake.xml.h:8
+msgid "Packing"
msgstr ""
-#: hacks/config/gltext.xml.h:6 hacks/config/menger.xml.h:8
-#: hacks/config/molecule.xml.h:15
-msgid "Rotate around X and Z axes"
-msgstr ""
+#: hacks/config/glsnake.xml.h:9
+#, fuzzy
+msgid "Scary Colors"
+msgstr "Color secundario"
-#: hacks/config/gltext.xml.h:7 hacks/config/menger.xml.h:9
-#: hacks/config/molecule.xml.h:16
-msgid "Rotate around X axis"
+#: hacks/config/glsnake.xml.h:11
+msgid "Show Labels"
msgstr ""
-#: hacks/config/gltext.xml.h:8 hacks/config/menger.xml.h:10
-#: hacks/config/molecule.xml.h:17
-msgid "Rotate around Y and Z axes"
-msgstr ""
+#: hacks/config/glsnake.xml.h:14
+#, fuzzy
+msgid "Tight"
+msgstr "Derecha"
-#: hacks/config/gltext.xml.h:9 hacks/config/menger.xml.h:11
-#: hacks/config/molecule.xml.h:18
-msgid "Rotate around Y axis"
+#: hacks/config/glsnake.xml.h:15 hacks/config/rocks.xml.h:13
+msgid "Velocity"
msgstr ""
-#: hacks/config/gltext.xml.h:10 hacks/config/menger.xml.h:12
-#: hacks/config/molecule.xml.h:19
-msgid "Rotate around Z axis"
-msgstr ""
+#: hacks/config/glsnake.xml.h:17
+#, fuzzy
+msgid "Y Rotation"
+msgstr "Rotación"
-#: hacks/config/gltext.xml.h:11 hacks/config/menger.xml.h:13
-#: hacks/config/molecule.xml.h:20
-msgid "Rotate around all three axes"
+#: hacks/config/glsnake.xml.h:18
+#, fuzzy
+msgid "Z Rotation"
+msgstr "Rotación"
+
+#: hacks/config/gltext.xml.h:1
+msgid ""
+"Displays a few lines of text spinning around in a solid 3D font. Written by "
+"Jamie Zawinski."
msgstr ""
+#: hacks/config/gltext.xml.h:4
+#, fuzzy
+msgid "GLText"
+msgstr "Izquierda"
+
#: hacks/config/gltext.xml.h:16 hacks/config/noseguy.xml.h:5
#, fuzzy
msgid "Text"
#: hacks/config/goban.xml.h:2
msgid ""
"Replays historical games of go (aka wei-chi and baduk) on the screen. By "
-"Scott Draves. You can find it at <http://www.draves.org/goban/>."
+"Scott Draves. You can find it at <http://www.draves.org/goban/>."
msgstr ""
#: hacks/config/goop.xml.h:1
"puzzle is solved. Written by Jamie Zawinski."
msgstr ""
+#: hacks/config/juggle.xml.h:1
+msgid "Checkered Balls"
+msgstr ""
+
+#: hacks/config/juggle.xml.h:2
+msgid "Draws a juggling stick-man. Written by Tim Auckland."
+msgstr ""
+
+#: hacks/config/juggle.xml.h:4
+msgid "Juggle"
+msgstr ""
+
+#: hacks/config/juggle.xml.h:6 hacks/config/pipes.xml.h:10
+msgid "None"
+msgstr "Ninguno"
+
#: hacks/config/julia.xml.h:3 hacks/config/rorschach.xml.h:4
msgid "Iterations"
msgstr "Iteraciones"
msgid "Lament"
msgstr "Lament"
-#: hacks/config/lament.xml.h:8
-#, fuzzy
-msgid "Untextured"
-msgstr "Centrado"
-
#: hacks/config/laser.xml.h:4
msgid "Laser"
msgstr "Láser"
msgid "Solid Objects"
msgstr ""
-#: hacks/config/moire2.xml.h:1
-msgid ""
-"Another example of the fun you can have with moire interference patterns; "
-"this hack generates fields of concentric circles or ovals, and combines the "
-"planes with various operations. The planes are moving independently of one "
-"another, causing the interference lines to ``spray.'' Written by Jamie "
-"Zawinski."
-msgstr ""
-
-#: hacks/config/moire2.xml.h:4
-msgid "Moire2"
-msgstr "Moire2"
-
-#: hacks/config/moire2.xml.h:8
-msgid "Thickness"
-msgstr "Grosor"
-
#: hacks/config/moire.xml.h:6
msgid "Moire"
msgstr "Moire"
"hack metric''."
msgstr ""
+#: hacks/config/moire2.xml.h:1
+msgid ""
+"Another example of the fun you can have with moire interference patterns; "
+"this hack generates fields of concentric circles or ovals, and combines the "
+"planes with various operations. The planes are moving independently of one "
+"another, causing the interference lines to ``spray.'' Written by Jamie "
+"Zawinski."
+msgstr ""
+
+#: hacks/config/moire2.xml.h:4
+msgid "Moire2"
+msgstr "Moire2"
+
+#: hacks/config/moire2.xml.h:8 hacks/config/thornbird.xml.h:10
+msgid "Thickness"
+msgstr "Grosor"
+
#: hacks/config/molecule.xml.h:3
msgid "Describe Molecule"
msgstr ""
msgid "Draw Atoms"
msgstr "Duración (ms)"
-#: hacks/config/molecule.xml.h:7
+#: hacks/config/molecule.xml.h:7 hacks/config/spheremonics.xml.h:2
msgid "Draw Bounding Box"
msgstr ""
"Miller."
msgstr ""
-#: hacks/config/penrose.xml.h:2
-#, fuzzy
-msgid "30 Seconds"
-msgstr "Segundos"
-
#: hacks/config/penrose.xml.h:3
msgid "Draw Ammann Lines"
msgstr ""
msgid "Curved Pipes"
msgstr ""
-#: hacks/config/pipes.xml.h:5
+#: hacks/config/pipes.xml.h:6
msgid "Fisheye Lens"
msgstr ""
-#: hacks/config/pipes.xml.h:6
+#: hacks/config/pipes.xml.h:7
msgid "Gadgetry"
msgstr ""
-#: hacks/config/pipes.xml.h:7
+#: hacks/config/pipes.xml.h:8
msgid ""
"If you've ever been in the same room with a Windows NT machine, you've "
"probably seen this GL hack. This version is by Marcelo Vianna."
msgstr ""
-#: hacks/config/pipes.xml.h:8
+#: hacks/config/pipes.xml.h:9
#, fuzzy
msgid "Lots"
msgstr "Puntos"
-#: hacks/config/pipes.xml.h:9
-msgid "None"
-msgstr "Ninguno"
-
-#: hacks/config/pipes.xml.h:10
+#: hacks/config/pipes.xml.h:11
#, fuzzy
msgid "Number of Pipe Systems"
msgstr "Cantidad de semillas"
-#: hacks/config/pipes.xml.h:11
+#: hacks/config/pipes.xml.h:12
#, fuzzy
msgid "Pipe Fittings"
msgstr "Parámetros"
-#: hacks/config/pipes.xml.h:12
+#: hacks/config/pipes.xml.h:13
msgid "Pipes"
msgstr "Tuberías"
-#: hacks/config/pipes.xml.h:16
+#: hacks/config/pipes.xml.h:17
msgid "System Length"
msgstr ""
+#: hacks/config/polyominoes.xml.h:3
+msgid "Identical Pieces"
+msgstr ""
+
+#: hacks/config/polyominoes.xml.h:7
+msgid "Polyominoes"
+msgstr ""
+
+#: hacks/config/polyominoes.xml.h:8
+msgid ""
+"Repeatedly attempts to completely fill a rectangle with irregularly-shaped "
+"puzzle pieces. Written by Stephen Montgomery-Smith."
+msgstr ""
+
#: hacks/config/pulsar.xml.h:1
msgid "Anti-alias Lines"
msgstr ""
msgid "Corners"
msgstr "Cerca"
-#: hacks/config/qix.xml.h:9 hacks/config/speedmine.xml.h:4
-#, fuzzy
-msgid "Gravity"
-msgstr "Gravedad"
-
#: hacks/config/qix.xml.h:11
#, fuzzy
msgid "Line Segments"
msgid "Seed Radius"
msgstr "Radio"
-#: hacks/config/rd-bomb.xml.h:19
+#: hacks/config/rd-bomb.xml.h:19 hacks/config/twang.xml.h:12
#, fuzzy
msgid "Tile Size"
msgstr "Tamaño"
"glasses! Mostly written by Jamie Zawinski."
msgstr ""
-#: hacks/config/rocks.xml.h:13
-msgid "Velocity"
-msgstr ""
-
#: hacks/config/rorschach.xml.h:7
msgid "Rorschach"
msgstr "Rorschach"
msgid "Show Shuffling"
msgstr ""
+#: hacks/config/sballs.xml.h:1
+msgid "Cube"
+msgstr ""
+
+#: hacks/config/sballs.xml.h:2
+msgid "Dodecahedron"
+msgstr ""
+
+#: hacks/config/sballs.xml.h:3
+msgid ""
+"Draws an animation of textured balls spinning like crazy in GL. Requires "
+"OpenGL, and a machine with fast hardware support for texture maps. Written "
+"by Eric Lassauge <lassauge@mail.dotcom.fr>."
+msgstr ""
+
+#: hacks/config/sballs.xml.h:5
+msgid "Icosahedron"
+msgstr ""
+
+#: hacks/config/sballs.xml.h:7
+msgid "Octahedron"
+msgstr ""
+
+#: hacks/config/sballs.xml.h:8
+#, fuzzy
+msgid "Plane"
+msgstr "Planeta GL"
+
+#: hacks/config/sballs.xml.h:9
+#, fuzzy
+msgid "Pyramid"
+msgstr "Galones"
+
+#: hacks/config/sballs.xml.h:10
+#, fuzzy
+msgid "Random"
+msgstr " Aleatorio)"
+
+#: hacks/config/sballs.xml.h:11
+#, fuzzy
+msgid "Sballs"
+msgstr "Pequeño"
+
+#: hacks/config/sballs.xml.h:15
+#, fuzzy
+msgid "Star"
+msgstr "Escaleras"
+
+#: hacks/config/sballs.xml.h:16
+msgid "Tetrahedron"
+msgstr ""
+
#: hacks/config/shadebobs.xml.h:7
#, fuzzy
msgid "ShadeBobs"
"Dibuja patrones oscilantes, sombreados y ovalados, que recuerdan a rastros "
"de vapor."
+#: hacks/config/sierpinski.xml.h:6
+msgid "Sierpinski"
+msgstr "Sierpinski"
+
+#: hacks/config/sierpinski.xml.h:10
+msgid ""
+"This draws the two-dimensional variant of the recursive Sierpinski triangle "
+"fractal. Written by Desmond Daignault."
+msgstr ""
+
#: hacks/config/sierpinski3d.xml.h:7
#, fuzzy
msgid "Sierpinski3D"
"triangle fractal, using GL. Written by Tim Robinson and Jamie Zawinski."
msgstr ""
-#: hacks/config/sierpinski.xml.h:6
-msgid "Sierpinski"
-msgstr "Sierpinski"
-
-#: hacks/config/sierpinski.xml.h:10
-msgid ""
-"This draws the two-dimensional variant of the recursive Sierpinski triangle "
-"fractal. Written by Desmond Daignault."
-msgstr ""
-
-#: hacks/config/slidescreen.xml.h:1 hacks/config/zoom.xml.h:1
+#: hacks/config/slidescreen.xml.h:1 hacks/config/twang.xml.h:1
+#: hacks/config/zoom.xml.h:1
msgid "Border Width"
msgstr ""
msgid "Worm"
msgstr "Orugas"
+#: hacks/config/sphere.xml.h:1
+msgid ""
+"Another of the classic screenhacks of the distant past, this one draws "
+"shaded spheres in multiple colors. This hack traces its lineage back to Tom "
+"Duff in 1982."
+msgstr ""
+
+#: hacks/config/sphere.xml.h:7
+msgid "Sphere"
+msgstr "Esfera"
+
#: hacks/config/sphereEversion.xml.h:1
#, fuzzy
msgid "SphereEversion"
"itself. This program animates what is known as the Thurston Eversion. "
"Written by Nathaniel Thurston and Michael McGuffin. This program is not "
"included with the XScreenSaver package, but if you don't have it already, "
-"you can find it at <http://www.dgp.utoronto.ca/~mjmcguff/eversion/>."
+"you can find it at <http://www.dgp.utoronto.ca/~mjmcguff/eversion/>."
msgstr ""
-#: hacks/config/sphere.xml.h:1
-msgid ""
-"Another of the classic screenhacks of the distant past, this one draws "
-"shaded spheres in multiple colors. This hack traces its lineage back to Tom "
-"Duff in 1982."
+#: hacks/config/spheremonics.xml.h:9
+#, fuzzy
+msgid "Resolution"
+msgstr "Acción predeterminada"
+
+#: hacks/config/spheremonics.xml.h:20
+msgid "Smoothed Lines"
msgstr ""
-#: hacks/config/sphere.xml.h:7
-msgid "Sphere"
+#: hacks/config/spheremonics.xml.h:23
+#, fuzzy
+msgid "Spheremonics"
msgstr "Esfera"
+#: hacks/config/spheremonics.xml.h:24
+msgid ""
+"These closed objects are commonly called spherical harmonics, although they "
+"are only remotely related to the mathematical definition found in the "
+"solution to certain wave functions, most notable the eigenfunctions of "
+"angular momentum operators. Written by Paul Bourke and Jamie Zawinski."
+msgstr ""
+
#: hacks/config/spiral.xml.h:2
msgid "Cycles"
msgstr "Ciclos"
msgid "Left"
msgstr "Izquierda"
-#: hacks/config/squiral.xml.h:11
+#: hacks/config/squiral.xml.h:11 hacks/config/twang.xml.h:8
#, fuzzy
msgid "Randomness"
msgstr "Aleatorio"
msgid ""
"SSystem is a GL Solar System simulator. It simulates flybys of Sun, the nine "
"planets and a few major satellites, with four camera modes. Written by Raul "
-"Alonso. This is not included with the XScreenSaver package, but if you don't "
-"have it already, you can find it at <http://www1.las.es/~amil/ssystem/>. "
-"Note: this program doesn't work as a screen saver on all systems, because it "
-"doesn't communicate with xscreensaver properly. It happens to work with some "
-"window managers, but not with others, so your mileage may vary."
+"Alonso. This is not included with the XScreenSaver package, but is packaged "
+"separately. Note: SSystem does not work as a screen saver on all systems, "
+"because it doesn't communicate with xscreensaver properly. It happens to "
+"work with some window managers, but not with others, so your mileage may "
+"vary. SSystem was once available at <http://www1.las.es/~amil/ssystem/"
+">, but is now gone. You may still be able to find copies elsewhere. "
+"SSystem has since evolved into two different programs: OpenUniverse (http://"
+"openuniverse.sourceforge.net/) and Celestia (http://www.shatters.net/"
+"celestia/). Sadly, neither of these programs work with xscreensaver at all. "
+"You are encouraged to nag their authors into adding xscreensaver support!"
msgstr ""
#: hacks/config/stairs.xml.h:6
msgid "Wobbliness"
msgstr "Burbujas"
+#: hacks/config/thornbird.xml.h:1
+msgid ""
+"Displays a view of the ``Bird in a Thornbush'' fractal. Written by Tim "
+"Auckland."
+msgstr ""
+
+#: hacks/config/thornbird.xml.h:6
+#, fuzzy
+msgid "Points"
+msgstr "Puntos:"
+
+#: hacks/config/thornbird.xml.h:12
+msgid "Thornbird"
+msgstr ""
+
#: hacks/config/triangle.xml.h:2
#, fuzzy
msgid ""
msgid "Truchet"
msgstr "Truchet"
+#: hacks/config/twang.xml.h:2
+msgid ""
+"Divides the screen into a grid, and plucks them. Written by Dan Bornstein."
+msgstr ""
+
+#: hacks/config/twang.xml.h:6
+#, fuzzy
+msgid "Jumpy"
+msgstr "Bumps"
+
+#: hacks/config/twang.xml.h:11
+#, fuzzy
+msgid "Springiness"
+msgstr "Sproingies"
+
+#: hacks/config/twang.xml.h:13
+#, fuzzy
+msgid "Transference"
+msgstr "Transparente"
+
+#: hacks/config/twang.xml.h:14
+#, fuzzy
+msgid "Twang"
+msgstr "Triángulo"
+
#: hacks/config/vermiculate.xml.h:1
msgid "Draws squiggly worm-like paths. Written by Tyler Pierce."
msgstr ""
"and off at random. By Paul 'Joey' Clark."
msgstr ""
-#: hacks/config/whirlwindwarp.xml.h:5
-#, fuzzy
-msgid "Particles"
-msgstr "Partículas en pantalla"
-
#: hacks/config/whirlwindwarp.xml.h:7
#, fuzzy
msgid "Trail Size"
"XaoS generates fast fly-through animations of the Mandelbrot and other "
"fractal sets. Written by Thomas Marsh and Jan Hubicka. This is not included "
"with the XScreenSaver package, but if you don't have it already, you can "
-"find it at <http://limax.paru.cas.cz/~hubicka/XaoS/>."
+"find it at <http://limax.paru.cas.cz/~hubicka/XaoS/>."
msgstr ""
#: hacks/config/xdaliclock.xml.h:1
"XDaliClock draws a large digital clock, the numbers of which change by "
"``melting'' into their new shapes. Written by Jamie Zawinski. This is not "
"included with the XScreenSaver package, but if you don't have it already, "
-"you can find it at <http://www.jwz.org/xdaliclock/>."
+"you can find it at <http://www.jwz.org/xdaliclock/>."
msgstr ""
#: hacks/config/xearth.xml.h:1
"XEarth draws an image of the Earth, as seen from your favorite vantage point "
"in space, correctly shaded for the current position of the Sun. Written by "
"Kirk Johnson. This is not included with the XScreenSaver package, but if you "
-"don't have it already, you can find it at <http://www.cs.colorado.edu/~tuna/"
-"xearth/>."
+"don't have it already, you can find it at <http://www.cs.colorado.edu/"
+"~tuna/xearth/>."
msgstr ""
#: hacks/config/xearth.xml.h:32
#: hacks/config/xfishtank.xml.h:7
msgid ""
"Fish! This is not included with the XScreenSaver package, but if you don't "
-"have it already, you can find it at <http://metalab.unc.edu/pub/Linux/X11/"
-"demos/>."
+"have it already, you can find it at <http://metalab.unc.edu/pub/Linux/X11/"
+"demos/>."
msgstr ""
#: hacks/config/xfishtank.xml.h:12
"XMountains generates realistic-looking fractal terrains of snow-capped "
"mountains near water, with either a top view or a side view. Written by "
"Stephen Booth. This is not included with the XScreenSaver package, but if "
-"you don't have it already, you can find it at <http://www.epcc.ed.ac.uk/~spb/"
-"xmountains/>. Be sure to compile it with -DVROOT or it won't work right when "
-"launched by the xscreensaver daemon."
+"you don't have it already, you can find it at <http://www.epcc.ed.ac.uk/"
+"~spb/xmountains/>. Be sure to compile it with -DVROOT or it won't work "
+"right when launched by the xscreensaver daemon."
msgstr ""
#: hacks/config/xmountains.xml.h:8
#: hacks/config/xsnow.xml.h:1
msgid ""
"Draws falling snow and the occasional tiny Santa. By Rick Jansen. You can "
-"find it at <http://www.euronet.nl/~rja/Xsnow/>."
+"find it at <http://www.euronet.nl/~rja/Xsnow/>."
msgstr ""
#: hacks/config/xsnow.xml.h:2
#~ msgid "Disabled"
#~ msgstr "Desactivado"
-#~ msgid "Color"
-#~ msgstr "Color"
-
#~ msgid "Primary Color"
#~ msgstr "Color primario"
-#~ msgid "Secondary Color"
-#~ msgstr "Color secundario"
-
#~ msgid "Wallpaper Selection"
#~ msgstr "Selección del fondo"
#~ msgid "Size of point."
#~ msgstr "Tamaño de los puntos."
-#~ msgid "Slower"
-#~ msgstr "Lento"
-
#~ msgid "Speed of Motion."
#~ msgstr "Velocidad de la animación."
#~ "Este salvapantalla dibuja unos galones trenzados en círculo con colores "
#~ "que cambian al azar cíclicamente."
-#~ msgid "Bsod"
-#~ msgstr "BSoD"
-
#~ msgid "Bsod simulates crash screens from other operating systems."
#~ msgstr "BSoD simula las pantallas de fallo de varios sistemas operativos."
#~ "nuevo \n"
#~ "lugar en la pantalla."
-#~ msgid "Mono"
-#~ msgstr "Mono"
-
#~ msgid "Number of segments per laser burst."
#~ msgstr "Número de segmentos por disparo láser."
#~ "«Lmorph» transforma dibujos simples de línea usando interpolación "
#~ "bilineal."
-#~ msgid "Points:"
-#~ msgstr "Puntos:"
-
#~ msgid ""
#~ "Sverre H. Huseby <sverrehu@online.no> & Glenn T. Lines <gtl@si.sintef."
#~ "no>"
#~ msgid "Time to show each picture."
#~ msgstr "Tiempo para mostrar cada dibujo."
-#~ msgid "Display an arcade game"
-#~ msgstr "Mostrar un juego de acción"
-
#~ msgid "3d pipes flow around the screen"
#~ msgstr "Tuberías 3D fluyen por la pantalla"
#~ msgid "Oily"
#~ msgstr "Aceitoso"
-#~ msgid "Stir"
-#~ msgstr "Revolver"
-
#~ msgid "Stir it up."
#~ msgstr "Revuelto."
#~ msgid "The famous, M.C. Escher, impossible stairs"
#~ msgstr "Las famosas escaleras imposibles de M.C. Eschers"
-#~ msgid " Random)"
-#~ msgstr " Aleatorio)"
-
#~ msgid "Change the animation step delay."
#~ msgstr "Cambia el retardo en ciclos."
#~ msgid "Use raw shapes "
#~ msgstr "Utilizar formas rústicas"
-#~ msgid "Wide"
-#~ msgstr "Gordo "
-
#~ msgid "Random mountain ranges"
#~ msgstr "Rangos aleatorios de montañas"
#~ msgid "Roll"
#~ msgstr "Rodar"
-#~ msgid "Static."
-#~ msgstr "Estática."
-
#~ msgid "Vertical roll."
#~ msgstr "Ruedo vertical."
#~ msgid " minutes after screen saver has started."
#~ msgstr " minutos después de haberse iniciado el salvapantalla."
-#~ msgid "Screen Saver Demo"
-#~ msgstr "Demostración del salvapantalla"
-
#~ msgid "Configure the settings of the screensaver"
#~ msgstr "Configurar el salvapantalla"
-#~ msgid "Screensaver"
-#~ msgstr "Salvapantalla"
-
#~ msgid ""
#~ "an initialization error occurred while starting 'sound-properties-"
#~ "capplet'."
#~ msgid "Select a theme to install"
#~ msgstr "Seleccione un tema a instalar"
-#~ msgid "Available Themes"
-#~ msgstr "Temas disponibles"
-
#~ msgid ""
#~ "Auto\n"
#~ "Preview"
#~ msgid "Use custom font."
#~ msgstr "Usar un tipo de letra personalizada."
-#~ msgid "Home directory doesn't exist!\n"
-#~ msgstr "¡El directorio personal no existe!\n"
-
#~ msgid "Theme does not exist"
#~ msgstr "El tema no existe"
#~ msgid "Dialog buttons"
#~ msgstr "Botones de diálogo"
-#~ msgid "Default value"
-#~ msgstr "Valor predeterminado"
-
#~ msgid "Spread buttons out"
#~ msgstr "Espaciar los botones"
#~ msgid "Name:"
#~ msgstr "Nombre:"
-#~ msgid "Command:"
-#~ msgstr "Comando:"
-
#~ msgid "Configuration Command:"
#~ msgstr "Comando para la configuración:"
#~ msgid "If the solver can "
#~ msgstr "Si el resolutor puede "
-
-#: driver/screensaver-properties.desktop.in:3
-msgid "Screensaver"
-msgstr "Propiedades Salvapantallas"
-
-#: driver/screensaver-properties.desktop.in:4
-msgid "Configure the settings of the screensaver."
-msgstr "Configurar el salvapantalla"
static const char screensaver_id[] =
- "@(#)xscreensaver 4.04 (28-May-2002), by Jamie Zawinski (jwz@jwz.org)";
+ "@(#)xscreensaver 4.05 (28-May-2002), by Jamie Zawinski (jwz@jwz.org)";
Begin3
Title: xscreensaver
-Version: 4.04
-Entered-date: 31MAY02
+Version: 4.05
+Entered-date: 11JUN02
Description: A modular screen saver and locker for the X Window System.
Highly customizable: allows the use of any program that
can draw on the root window as a display mode.
Author: jwz@jwz.org (Jamie Zawinski)
Maintained-by: jwz@jwz.org (Jamie Zawinski)
Primary-site: http://www.jwz.org/xscreensaver/
- xscreensaver-4.04.tar.gz
+ 2913K xscreensaver-4.05.tar.gz
59K xscreensaver.README
1K xscreensaver.lsm
Alternate-site: sunsite.unc.edu /pub/Linux/X11/screensavers/
- xscreensaver-4.04.tar.gz
+ 2913K xscreensaver-4.05.tar.gz
59K xscreensaver.README
1K xscreensaver.lsm
Alternate-site: ftp.x.org /contrib/applications/
- xscreensaver-4.04.tar.gz
+ 2913K xscreensaver-4.05.tar.gz
59K xscreensaver.README
1K xscreensaver.lsm
Platforms: Linux, Irix, SunOS, Solaris, HPUX, AIX, FreeBSD, NetBSD,
%define name xscreensaver
-%define version 4.04
+%define version 4.05
%define release 1
%define serial 1
%define x11_prefix /usr/X11R6