summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>2006-08-25 06:58:33 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>2006-08-25 06:58:33 +0000
commitf27180b7cd801340f4691632814fa26ed5feba32 (patch)
treeaf1010d123a5b0c1c23674806ebda9ed31b838dd
parent0ce142514f5eb6342c8200bd565415cd19edb79c (diff)
Do some rearranging of image and desktop support files.
Add new Block Attack! game... git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5358 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--CHANGES1
-rw-r--r--documentation/Makefile8
-rw-r--r--documentation/blocks.man26
-rw-r--r--fltk.list.in31
-rw-r--r--fltk.spec.in4
-rw-r--r--test/Makefile21
-rw-r--r--test/blocks.app/Contents/Info.plist44
-rw-r--r--test/blocks.app/Contents/PkgInfo1
-rw-r--r--test/blocks.app/Contents/Resources/blocks.icnsbin0 -> 51049 bytes
-rw-r--r--test/blocks.cxx936
-rw-r--r--test/checkers.cxx34
-rw-r--r--test/demo.menu1
-rw-r--r--test/desktop/blocks.desktop10
-rw-r--r--test/desktop/checkers-128.png (renamed from test/checkers-128.png)bin23655 -> 23655 bytes
-rw-r--r--test/desktop/checkers-32.png (renamed from test/checkers-32.png)bin1871 -> 1871 bytes
-rw-r--r--test/desktop/checkers.desktop (renamed from test/checkers.desktop)0
-rw-r--r--test/desktop/sudoku-128.png (renamed from test/sudoku-128.png)bin6514 -> 6514 bytes
-rw-r--r--test/desktop/sudoku-32.png (renamed from test/sudoku-32.png)bin295 -> 295 bytes
-rw-r--r--test/desktop/sudoku.desktop (renamed from test/sudoku.desktop)0
-rw-r--r--test/forms.cxx2
-rw-r--r--test/icons/blocks-128.pngbin0 -> 16233 bytes
-rw-r--r--test/icons/blocks-32.pngbin0 -> 1856 bytes
-rw-r--r--test/makedepend741
-rw-r--r--test/pixmap.cxx2
-rw-r--r--test/pixmaps/black_1.xbm (renamed from test/black_1.xbm)0
-rw-r--r--test/pixmaps/black_2.xbm (renamed from test/black_2.xbm)0
-rw-r--r--test/pixmaps/black_3.xbm (renamed from test/black_3.xbm)0
-rw-r--r--test/pixmaps/black_4.xbm (renamed from test/black_4.xbm)0
-rw-r--r--test/pixmaps/blackking_1.xbm (renamed from test/blackking_1.xbm)0
-rw-r--r--test/pixmaps/blackking_2.xbm (renamed from test/blackking_2.xbm)0
-rw-r--r--test/pixmaps/blackking_3.xbm (renamed from test/blackking_3.xbm)0
-rw-r--r--test/pixmaps/blackking_4.xbm (renamed from test/blackking_4.xbm)0
-rw-r--r--test/pixmaps/blast.xpm67
-rw-r--r--test/pixmaps/blue.xpm67
-rw-r--r--test/pixmaps/blue_bomb.xpm67
-rw-r--r--test/pixmaps/cyan.xpm67
-rw-r--r--test/pixmaps/cyan_bomb.xpm67
-rw-r--r--test/pixmaps/gray.xpm67
-rw-r--r--test/pixmaps/gray_bomb.xpm67
-rw-r--r--test/pixmaps/green.xpm67
-rw-r--r--test/pixmaps/green_bomb.xpm67
-rw-r--r--test/pixmaps/magenta.xpm67
-rw-r--r--test/pixmaps/magenta_bomb.xpm67
-rw-r--r--test/pixmaps/porsche.xpm (renamed from test/porsche.xpm)0
-rw-r--r--test/pixmaps/porsche1.xpm (renamed from test/porsche1.xpm)0
-rw-r--r--test/pixmaps/red.xpm67
-rw-r--r--test/pixmaps/red_bomb.xpm67
-rw-r--r--test/pixmaps/srs.xbm (renamed from test/srs.xbm)0
-rw-r--r--test/pixmaps/sudoku.xbm (renamed from test/sudoku.xbm)0
-rw-r--r--test/pixmaps/tile.xpm (renamed from test/tile.xpm)0
-rw-r--r--test/pixmaps/white_1.xbm (renamed from test/white_1.xbm)0
-rw-r--r--test/pixmaps/white_2.xbm (renamed from test/white_2.xbm)0
-rw-r--r--test/pixmaps/white_3.xbm (renamed from test/white_3.xbm)0
-rw-r--r--test/pixmaps/white_4.xbm (renamed from test/white_4.xbm)0
-rw-r--r--test/pixmaps/whiteking_1.xbm (renamed from test/whiteking_1.xbm)0
-rw-r--r--test/pixmaps/whiteking_2.xbm (renamed from test/whiteking_2.xbm)0
-rw-r--r--test/pixmaps/whiteking_3.xbm (renamed from test/whiteking_3.xbm)0
-rw-r--r--test/pixmaps/whiteking_4.xbm (renamed from test/whiteking_4.xbm)0
-rw-r--r--test/pixmaps/yellow.xpm67
-rw-r--r--test/pixmaps/yellow_bomb.xpm67
-rw-r--r--test/sudoku.cxx2
-rw-r--r--test/tiled_image.cxx2
-rw-r--r--vcnet/blocks.vcproj167
-rw-r--r--visualc/blocks.dsp97
64 files changed, 2738 insertions, 397 deletions
diff --git a/CHANGES b/CHANGES
index 8f80878c3..29b2d6316 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,6 @@
CHANGES IN FLTK 1.1.8
+ - Added a new demo game called "Block Attack!"
- Updated the Sudoku game to show a notice about Hard and
Impossible puzzles having multiple solutions which are
not a bug or error (STR #1361)
diff --git a/documentation/Makefile b/documentation/Makefile
index 9063f27fb..ba8a1f0d3 100644
--- a/documentation/Makefile
+++ b/documentation/Makefile
@@ -214,7 +214,7 @@ IMAGEFILES = \
MANPAGES = fltk.$(CAT3EXT) fltk-config.$(CAT1EXT) fluid.$(CAT1EXT) \
- checkers.$(CAT6EXT) sudoku.$(CAT6EXT)
+ blocks.$(CAT6EXT) checkers.$(CAT6EXT) sudoku.$(CAT6EXT)
all: $(MANPAGES)
@@ -253,11 +253,15 @@ install: $(MANPAGES)
install-linux install-osx:
-$(MKDIR) $(DESTDIR)$(mandir)/cat6
+ $(CP) blocks.$(CAT6EXT) $(DESTDIR)$(mandir)/cat6
+ $(CHMOD) 644 $(DESTDIR)$(mandir)/cat6/blocks.$(CAT6EXT)
$(CP) checkers.$(CAT6EXT) $(DESTDIR)$(mandir)/cat6
$(CHMOD) 644 $(DESTDIR)$(mandir)/cat6/checkers.$(CAT6EXT)
$(CP) sudoku.$(CAT6EXT) $(DESTDIR)$(mandir)/cat6
$(CHMOD) 644 $(DESTDIR)$(mandir)/cat6/sudoku.$(CAT6EXT)
-$(MKDIR) $(DESTDIR)$(mandir)/man6
+ $(CP) blocks.man $(DESTDIR)$(mandir)/man6/blocks.6
+ $(CHMOD) 644 $(DESTDIR)$(mandir)/man6/blocks.6
$(CP) checkers.man $(DESTDIR)$(mandir)/man6/checkers.6
$(CHMOD) 644 $(DESTDIR)$(mandir)/man6/checkers.6
$(CP) sudoku.man $(DESTDIR)$(mandir)/man6/sudoku.6
@@ -274,8 +278,10 @@ uninstall:
$(RM) $(DESTDIR)$(mandir)/man3/fltk.3
uninstall-linux uninstall-osx:
+ $(RM) $(DESTDIR)$(mandir)/cat6/blocks.$(CAT6EXT)
$(RM) $(DESTDIR)$(mandir)/cat6/checkers.$(CAT6EXT)
$(RM) $(DESTDIR)$(mandir)/cat6/sudoku.$(CAT6EXT)
+ $(RM) $(DESTDIR)$(mandir)/man6/blocks.6
$(RM) $(DESTDIR)$(mandir)/man6/checkers.6
$(RM) $(DESTDIR)$(mandir)/man6/sudoku.6
diff --git a/documentation/blocks.man b/documentation/blocks.man
new file mode 100644
index 000000000..920300708
--- /dev/null
+++ b/documentation/blocks.man
@@ -0,0 +1,26 @@
+.TH blocks 6 "FLTK Checkers" "15 January 2006"
+.SH NAME
+blocks \- the fltk block attack! game
+.sp
+.SH SYNOPSIS
+\fIBlocks\fR is a FLTK-based block elimination game. Stacks of
+colored blocks move from right to left as you try to eliminate
+groups adjacent blocks by clicking on them. As the game
+progresses, more colors are added (up to a maximum of 7) and the
+blocks move faster and faster.
+.SH GAME PLAY
+Press the N key to start a game. As the blocks move across the
+window, click on groups of two or more blocks to clear them - the
+larger the number of adjacent blocks, the greater the score.
+Clicking on a blocks containing a dark ball will clear all blocks
+of that color, however you will score much fewer points than a
+normal click. The game is over when the blocks reach the left
+side of the window.
+.LP
+Press the spacebar to pause the game.
+.SH SEE ALSO
+fltk(3)
+.br
+FLTK Web Site, http://www.fltk.org/
+.SH AUTHOR
+Michael R Sweet.
diff --git a/fltk.list.in b/fltk.list.in
index 341972001..9b73f72fc 100644
--- a/fltk.list.in
+++ b/fltk.list.in
@@ -359,9 +359,19 @@ f 0444 root sys $docdir/examples/ test/*.h
%subpackage games
%description FLTK Games
-%description Install fltk-games to play checkers or Sudoku on your computer.
+%description Install fltk-games to play Block Attack!, checkers, or Sudoku on your computer.
%system darwin
+d 0555 root sys /Applications/blocks.app -
+d 0555 root sys /Applications/blocks.app/Contents -
+f 0444 root sys /Applications/blocks.app/Contents/Info.plist test/blocks.app/Contents/Info.plist
+f 0444 root sys /Applications/blocks.app/Contents/PkgInfo test/blocks.app/Contents/PkgInfo
+d 0555 root sys /Applications/blocks.app/Contents/MacOS -
+f 0555 root sys /Applications/blocks.app/Contents/MacOS/blocks test/blocks
+d 0555 root sys /Applications/blocks.app/Contents/Resources -
+f 0444 root sys /Applications/blocks.app/Contents/Resources/blocks.icns test/blocks.app/Contents/Resources/blocks.icns
+%postremove /bin/rm -rf /Applications/blocks.app
+
d 0555 root sys /Applications/checkers.app -
d 0555 root sys /Applications/checkers.app/Contents -
f 0444 root sys /Applications/checkers.app/Contents/Info.plist test/checkers.app/Contents/Info.plist
@@ -383,19 +393,26 @@ f 0444 root sys /Applications/sudoku.app/Contents/Resources/sudoku.icns test/sud
%postremove /bin/rm -rf /Applications/sudoku.app
%system !darwin
+f 0555 root sys $bindir/blocks test/blocks
+f 0444 root sys /usr/share/applnk/Games/blocks.desktop test/desktop/blocks.desktop
+f 0444 root sys /usr/share/icons/hicolor/32x32/apps/blocks.png test/icons/blocks-32.png
+f 0444 root sys /usr/share/icons/hicolor/128x128/apps/blocks.png test/icons/blocks-128.png
+
f 0555 root sys $bindir/checkers test/checkers
-f 0444 root sys /usr/share/applnk/Games/checkers.desktop test/checkers.desktop
-f 0444 root sys /usr/share/icons/hicolor/32x32/apps/checkers.png checkers/checkers-32.png
-f 0444 root sys /usr/share/icons/hicolor/128x128/apps/checkers.png checkers/checkers-128.png
+f 0444 root sys /usr/share/applnk/Games/checkers.desktop test/desktop/checkers.desktop
+f 0444 root sys /usr/share/icons/hicolor/32x32/apps/checkers.png test/icons/checkers-32.png
+f 0444 root sys /usr/share/icons/hicolor/128x128/apps/checkers.png test/icons/checkers-128.png
f 0555 root sys $bindir/sudoku test/sudoku
-f 0444 root sys /usr/share/applnk/Games/sudoku.desktop test/sudoku.desktop
-f 0444 root sys /usr/share/icons/hicolor/32x32/apps/sudoku.png sudoku/sudoku-32.png
-f 0444 root sys /usr/share/icons/hicolor/128x128/apps/sudoku.png sudoku/sudoku-128.png
+f 0444 root sys /usr/share/applnk/Games/sudoku.desktop test/desktop/sudoku.desktop
+f 0444 root sys /usr/share/icons/hicolor/32x32/apps/sudoku.png test/icons/sudoku-32.png
+f 0444 root sys /usr/share/icons/hicolor/128x128/apps/sudoku.png test/icons/sudoku-128.png
%system all
+f 0444 root sys $mandir/cat6/blocks.$CAT6EXT documentation/blocks.$CAT6EXT
f 0444 root sys $mandir/cat6/checkers.$CAT6EXT documentation/checkers.$CAT6EXT
f 0444 root sys $mandir/cat6/sudoku.$CAT6EXT documentation/sudoku.$CAT6EXT
+f 0444 root sys $mandir/man6/blocks.6 documentation/blocks.man
f 0444 root sys $mandir/man6/checkers.6 documentation/checkers.man
f 0444 root sys $mandir/man6/sudoku.6 documentation/sudoku.man
diff --git a/fltk.spec.in b/fltk.spec.in
index 20899e28c..0fe849567 100644
--- a/fltk.spec.in
+++ b/fltk.spec.in
@@ -62,7 +62,7 @@ Summary: FLTK Games
Group: Games
%description games
-Install fltk-games to play checkers or Sudoku on your computer.
+Install fltk-games to play Block Attack!, checkers, or Sudoku on your computer.
%prep
%setup
@@ -124,6 +124,7 @@ rm -rf $RPM_BUILD_ROOT
%files games
%dir %{prefix}/bin
+%{prefix}/bin/blocks
%{prefix}/bin/checkers
%{prefix}/bin/sudoku
@@ -135,6 +136,7 @@ rm -rf $RPM_BUILD_ROOT
%{prefix}/share/applnk/Games/*
%dir %{prefix}/share/icons
+%{prefix}/share/icons/hicolor/*/apps/blocks.png
%{prefix}/share/icons/hicolor/*/apps/checkers.png
%{prefix}/share/icons/hicolor/*/apps/sudoku.png
diff --git a/test/Makefile b/test/Makefile
index aa0b3294a..b85c8cae1 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -33,6 +33,7 @@ CPPFILES =\
arc.cxx \
ask.cxx \
bitmap.cxx \
+ blocks.cxx \
boxtype.cxx \
browser.cxx \
button.cxx \
@@ -99,6 +100,7 @@ ALL = \
arc$(EXEEXT) \
ask$(EXEEXT) \
bitmap$(EXEEXT) \
+ blocks$(EXEEXT) \
boxtype$(EXEEXT) \
browser$(EXEEXT) \
button$(EXEEXT) \
@@ -198,17 +200,17 @@ install-linux:
-$(MKDIR) $(DESTDIR)/usr/share/applnk/Games
-$(MKDIR) $(DESTDIR)/usr/share/icons/hicolor/32x32/apps
-$(MKDIR) $(DESTDIR)/usr/share/icons/hicolor/128x128/apps
- for game in checkers sudoku; do \
+ for game in blocks checkers sudoku; do \
$(CP) $$game $(DESTDIR)$(bindir); \
$(CHMOD) 755 $(DESTDIR)$(bindir)/$$game; \
- $(CP) $$game.desktop $(DESTDIR)/usr/share/applnk/Games; \
- $(CP) $$game-32.png $(DESTDIR)/usr/share/icons/hicolor/32x32/apps/$$game.png; \
- $(CP) $$game-128.png $(DESTDIR)/usr/share/icons/hicolor/128x128/apps/$$game.png; \
+ $(CP) desktop/$$game.desktop $(DESTDIR)/usr/share/applnk/Games; \
+ $(CP) icons/$$game-32.png $(DESTDIR)/usr/share/icons/hicolor/32x32/apps/$$game.png; \
+ $(CP) icons/$$game-128.png $(DESTDIR)/usr/share/icons/hicolor/128x128/apps/$$game.png; \
done
install-osx:
echo Installing games in $(DESTDIR)/Applications...
- for game in checkers sudoku; do \
+ for game in blocks checkers sudoku; do \
if test ! -d $(DESTDIR)/Applications/$$game.app; then \
$(MKDIR) $(DESTDIR)/Applications/$$game.app; \
$(MKDIR) $(DESTDIR)/Applications/$$game.app/Contents; \
@@ -227,7 +229,7 @@ uninstall:
uninstall-linux:
echo Removing games from $(DESTDIR)$(bindir)...
- for game in checkers sudoku; do \
+ for game in blocks checkers sudoku; do \
$(RM) $(DESTDIR)$(bindir)/$$game; \
$(RM) $(DESTDIR)/usr/share/applnk/Games/$$game.desktop; \
$(RM) $(DESTDIR)/usr/share/icons/hicolor/32x32/apps/$$game.png; \
@@ -236,6 +238,7 @@ uninstall-linux:
uninstall-osx:
echo Removing games from $(DESTDIR)/Applications...
+ $(RM) -r $(DESTDIR)/Applications/blocks.app
$(RM) -r $(DESTDIR)/Applications/checkers.app
$(RM) -r $(DESTDIR)/Applications/sudoku.app
@@ -266,6 +269,12 @@ button$(EXEEXT): button.o
buttons$(EXEEXT): buttons.o
+blocks$(EXEEXT): blocks.o
+ echo Linking $@...
+ $(CXX) $(ARCHFLAGS) $(LDFLAGS) blocks.o -o $@ $(AUDIOLIBS) $(LINKFLTK) $(LDLIBS)
+ $(CP) blocks$(EXEEXT) blocks.app/Contents/MacOS
+ $(POSTBUILD) $@ ../FL/mac.r
+
checkers$(EXEEXT): checkers.o
echo Linking $@...
$(CXX) $(ARCHFLAGS) $(LDFLAGS) checkers.o -o $@ $(LINKFLTK) $(LDLIBS)
diff --git a/test/blocks.app/Contents/Info.plist b/test/blocks.app/Contents/Info.plist
new file mode 100644
index 000000000..dcc528aa1
--- /dev/null
+++ b/test/blocks.app/Contents/Info.plist
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plist version="0.9">
+ <dict>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+
+ <key>CFBundleExecutable</key>
+ <string>blocks</string>
+
+ <key>CFBundleIdentifier</key>
+ <string>com.easysw.blocks</string>
+
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+
+ <key>NSHumanReadableCopyright</key>
+ <string>Copyright 2006 by Michael Sweet</string>
+
+ <key>CFAppleHelpAnchor</key>
+ <string>help</string>
+
+ <key>CFBundleName</key>
+ <string>blocks</string>
+
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+
+ <key>CFBundleSignature</key>
+ <string>BLKS</string>
+
+ <key>CFBundleIconFile</key>
+ <string>blocks.icns</string>
+
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+
+ <key>CFBundleGetInfoString</key>
+ <string>1.0, Copyright 2006 by Michael Sweet</string>
+
+ </dict>
+</plist>
diff --git a/test/blocks.app/Contents/PkgInfo b/test/blocks.app/Contents/PkgInfo
new file mode 100644
index 000000000..103810afb
--- /dev/null
+++ b/test/blocks.app/Contents/PkgInfo
@@ -0,0 +1 @@
+BLKSBlks
diff --git a/test/blocks.app/Contents/Resources/blocks.icns b/test/blocks.app/Contents/Resources/blocks.icns
new file mode 100644
index 000000000..7e7ba24eb
--- /dev/null
+++ b/test/blocks.app/Contents/Resources/blocks.icns
Binary files differ
diff --git a/test/blocks.cxx b/test/blocks.cxx
new file mode 100644
index 000000000..4ecfe665f
--- /dev/null
+++ b/test/blocks.cxx
@@ -0,0 +1,936 @@
+//
+// "$Id$"
+//
+// "Block Attack!" scrolling blocks game using the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2006 by Michael Sweet.
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library 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
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#include <FL/Fl.H>
+#include <FL/Fl_Double_Window.H>
+#include <FL/Fl_Preferences.H>
+#include <FL/Fl_XPM_Image.H>
+#include <FL/fl_draw.H>
+#include <FL/x.H>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <sys/time.h>
+#include <math.h>
+
+// Audio headers...
+#include <config.h>
+
+#ifndef WIN32
+# include <unistd.h>
+#endif // !WIN32
+
+#ifdef HAVE_ALSA_ASOUNDLIB_H
+# define ALSA_PCM_NEW_HW_PARAMS_API
+# include <alsa/asoundlib.h>
+#endif // HAVE_ALSA_ASOUNDLIB_H
+#ifdef __APPLE__
+# include <CoreAudio/AudioHardware.h>
+#endif // __APPLE__
+#ifdef WIN32
+# include <mmsystem.h>
+#endif // WIN32
+
+
+#define BLOCK_COLS 20
+#define BLOCK_ROWS 10
+#define BLOCK_SIZE 32
+#define BLOCK_BLAST 100
+
+#include "pixmaps/blast.xpm"
+Fl_Pixmap blast_pixmap(blast_xpm);
+
+#include "pixmaps/red.xpm"
+Fl_Pixmap red_pixmap(red_xpm);
+#include "pixmaps/red_bomb.xpm"
+Fl_Pixmap red_bomb_pixmap(red_bomb_xpm);
+
+#include "pixmaps/green.xpm"
+Fl_Pixmap green_pixmap(green_xpm);
+#include "pixmaps/green_bomb.xpm"
+Fl_Pixmap green_bomb_pixmap(green_bomb_xpm);
+
+#include "pixmaps/blue.xpm"
+Fl_Pixmap blue_pixmap(blue_xpm);
+#include "pixmaps/blue_bomb.xpm"
+Fl_Pixmap blue_bomb_pixmap(blue_bomb_xpm);
+
+#include "pixmaps/yellow.xpm"
+Fl_Pixmap yellow_pixmap(yellow_xpm);
+#include "pixmaps/yellow_bomb.xpm"
+Fl_Pixmap yellow_bomb_pixmap(yellow_bomb_xpm);
+
+#include "pixmaps/cyan.xpm"
+Fl_Pixmap cyan_pixmap(cyan_xpm);
+#include "pixmaps/cyan_bomb.xpm"
+Fl_Pixmap cyan_bomb_pixmap(cyan_bomb_xpm);
+
+#include "pixmaps/magenta.xpm"
+Fl_Pixmap magenta_pixmap(magenta_xpm);
+#include "pixmaps/magenta_bomb.xpm"
+Fl_Pixmap magenta_bomb_pixmap(magenta_bomb_xpm);
+
+#include "pixmaps/gray.xpm"
+Fl_Pixmap gray_pixmap(gray_xpm);
+#include "pixmaps/gray_bomb.xpm"
+Fl_Pixmap gray_bomb_pixmap(gray_bomb_xpm);
+
+Fl_Pixmap *normal_pixmaps[] =
+{
+ &red_pixmap,
+ &green_pixmap,
+ &blue_pixmap,
+ &yellow_pixmap,
+ &cyan_pixmap,
+ &magenta_pixmap,
+ &gray_pixmap
+};
+Fl_Pixmap *bomb_pixmaps[] =
+{
+ &red_bomb_pixmap,
+ &green_bomb_pixmap,
+ &blue_bomb_pixmap,
+ &yellow_bomb_pixmap,
+ &cyan_bomb_pixmap,
+ &magenta_bomb_pixmap,
+ &gray_bomb_pixmap
+};
+
+
+// Sound class...
+//
+// There are MANY ways to implement sound in a FLTK application.
+// The approach we are using here is to conditionally compile OS-
+// specific code into the application - CoreAudio for MacOS X, the
+// standard Win32 API stuff for Windows, ALSA or X11 for Linux, and
+// X11 for all others. We have to support ALSA on Linux because the
+// current Xorg releases no longer support XBell() or the PC speaker.
+//
+// There are several good cross-platform audio libraries we could also
+// use, such as OpenAL, PortAudio, and SDL, however they were not chosen
+// for this application because of our limited use of sound.
+//
+// Many thanks to Ian MacArthur who provided sample code that led to
+// the CoreAudio implementation you see here!
+class BlockSound {
+ // Private, OS-specific data...
+#ifdef __APPLE__
+ AudioDeviceID device;
+ AudioStreamBasicDescription format;
+ short *data;
+ int remaining;
+
+ static OSStatus audio_cb(AudioDeviceID device,
+ const AudioTimeStamp *current_time,
+ const AudioBufferList *data_in,
+ const AudioTimeStamp *time_in,
+ AudioBufferList *data_out,
+ const AudioTimeStamp *time_out,
+ void *client_data);
+#elif defined(WIN32)
+ HWAVEOUT device;
+ HGLOBAL header_handle;
+ LPWAVEHDR header_ptr;
+ HGLOBAL data_handle;
+ LPSTR data_ptr;
+
+#else
+# ifdef HAVE_ALSA_ASOUNDLIB_H
+ snd_pcm_t *handle;
+# endif // HAVE_ALSA_ASOUNDLIB_H
+#endif // __APPLE__
+
+ public:
+
+ // Common data...
+ static short *sample_data;
+ static int sample_size;
+
+ BlockSound();
+ ~BlockSound();
+
+ void play_explosion(float duration);
+};
+
+// Sound class globals...
+short *BlockSound::sample_data = NULL;
+int BlockSound::sample_size = 0;
+
+
+// Initialize the BlockSound class
+BlockSound::BlockSound() {
+ sample_size = 0;
+
+#ifdef __APPLE__
+ remaining = 0;
+
+ UInt32 size = sizeof(device);
+
+ if (AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice,
+ &size, (void *)&device) != noErr) return;
+
+ size = sizeof(format);
+ if (AudioDeviceGetProperty(device, 0, false, kAudioDevicePropertyStreamFormat,
+ &size, &format) != noErr) return;
+
+ // Set up a format we like...
+ format.mSampleRate = 44100.0; // 44.1kHz
+ format.mChannelsPerFrame = 2; // stereo
+
+ if (AudioDeviceSetProperty(device, NULL, 0, false,
+ kAudioDevicePropertyStreamFormat,
+ sizeof(format), &format) != noErr) return;
+
+ // Check we got linear pcm - what to do if we did not ???
+ if (format.mFormatID != kAudioFormatLinearPCM) return;
+
+ // Attach the callback
+ if (AudioDeviceAddIOProc(device, audio_cb, (void *)this) != noErr) return;
+
+ // Start the device...
+ AudioDeviceStart(device, audio_cb);
+
+ sample_size = (int)format.mSampleRate;
+
+#elif defined(WIN32)
+ WAVEFORMATEX format;
+
+ memset(&format, 0, sizeof(format));
+ format.cbSize = sizeof(format);
+ format.wFormatTag = WAVE_FORMAT_PCM;
+ format.nChannels = 2;
+ format.nSamplesPerSec = 44100;
+ format.nAvgBytesPerSec = 44100 * 4;
+ format.nBlockAlign = 4;
+ format.wBitsPerSample = 16;
+
+ data_handle = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, format.nSamplesPerSec / 5);
+ if (!data_handle) return;
+
+ data_ptr = (LPSTR)GlobalLock(data_handle);
+
+ header_handle = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, sizeof(WAVEHDR));
+ if (!header_handle) return;
+
+ header_ptr = (WAVEHDR *)GlobalLock(header_handle);
+
+ header_ptr->lpData = data_ptr;
+ header_ptr->dwFlags = 0;
+ header_ptr->dwLoops = 0;
+
+ if (waveOutOpen(&device, WAVE_MAPPER, &format, 0, 0, WAVE_ALLOWSYNC)
+ != MMSYSERR_NOERROR) return;
+
+ sample_size = format.nSamplesPerSec;
+
+#else
+# ifdef HAVE_ALSA_ASOUNDLIB_H
+ handle = NULL;
+
+ if (snd_pcm_open(&handle, "default", SND_PCM_STREAM_PLAYBACK, 0) >= 0) {
+ // Initialize PCM sound stuff...
+ snd_pcm_hw_params_t *params;
+
+ snd_pcm_hw_params_alloca(&params);
+ snd_pcm_hw_params_any(handle, params);
+ snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED);
+ snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16);
+ snd_pcm_hw_params_set_channels(handle, params, 2);
+ unsigned rate = 44100;
+ int dir;
+ snd_pcm_hw_params_set_rate_near(handle, params, &rate, &dir);
+ snd_pcm_uframes_t period = (int)rate;
+ snd_pcm_hw_params_set_period_size_near(handle, params, &period, &dir);
+
+ sample_size = rate;
+
+ if (snd_pcm_hw_params(handle, params) < 0) {
+ sample_size = 0;
+ snd_pcm_close(handle);
+ handle = NULL;
+ }
+ }
+# endif // HAVE_ALSA_ASOUNDLIB_H
+#endif // __APPLE__
+
+ if (sample_size) {
+ // Make an explosion sound by passing white noise through a low pass
+ // filter with a decreasing frequency...
+ sample_data = new short[2 * sample_size];
+
+ short *sample_ptr = sample_data;
+ int max_sample = 2 * sample_size - 2;
+
+ *sample_ptr++ = 0;
+ *sample_ptr++ = 0;
+
+ for (int j = max_sample; j > 0; j --, sample_ptr ++) {
+ float freq = (float)j / (float)max_sample;
+ float volume = 32767.0 * (0.5 * sqrt(freq) + 0.5);
+ float sample = 0.0001 * ((rand() % 20001) - 10000);
+
+ *sample_ptr = (int)(volume * freq * sample +
+ (1.0 - freq) * sample_ptr[-2]);
+ }
+ }
+}
+
+
+// Cleanup the BlockSound class
+BlockSound::~BlockSound() {
+#ifdef __APPLE__
+ if (sample_size) {
+ AudioDeviceStop(device, audio_cb);
+ AudioDeviceRemoveIOProc(device, audio_cb);
+ }
+
+#elif defined(WIN32)
+ if (sample_size) {
+ waveOutClose(device);
+
+ GlobalUnlock(header_handle);
+ GlobalFree(header_handle);
+
+ GlobalUnlock(data_handle);
+ GlobalFree(data_handle);
+ }
+
+#else
+# ifdef HAVE_ALSA_ASOUNDLIB_H
+ if (handle) {
+ snd_pcm_drain(handle);
+ snd_pcm_close(handle);
+ }
+# endif // HAVE_ALSA_ASOUNDLIB_H
+#endif // __APPLE__
+
+ if (sample_size) {
+ delete[] sample_data;
+ }
+}
+
+
+#ifdef __APPLE__
+// Callback function for writing audio data...
+OSStatus
+BlockSound::audio_cb(AudioDeviceID device,
+ const AudioTimeStamp *current_time,
+ const AudioBufferList *data_in,
+ const AudioTimeStamp *time_in,
+ AudioBufferList *data_out,
+ const AudioTimeStamp *time_out,
+ void *client_data) {
+ BlockSound *ss = (BlockSound *)client_data;
+ int count;
+ float *buffer;
+
+ if (!ss->remaining) return noErr;
+
+ for (count = data_out->mBuffers[0].mDataByteSize / sizeof(float),
+ buffer = (float*) data_out->mBuffers[0].mData;
+ ss->remaining > 0 && count > 0;
+ count --, ss->data ++, ss->remaining --) {
+ *buffer++ = *(ss->data) / 32767.0;
+ }
+
+ while (count > 0) {
+ *buffer++ = 0.0;
+ count --;
+ }
+
+ return noErr;
+}
+#endif // __APPLE__
+
+
+// Play a note for the given amount of time...
+void BlockSound::play_explosion(float duration) {
+ Fl::check();
+
+ if (duration <= 0.0)
+ return;
+
+ if (duration > 1.0)
+ duration = 1.0;
+
+ int samples = (int)(duration * sample_size);
+ short *sample_ptr = sample_data + 2 * (sample_size - samples);
+
+#ifdef __APPLE__
+ // Point to the next note...
+ data = sample_ptr;
+ remaining = samples * 2;
+
+#elif defined(WIN32)
+ if (sample_size) {
+ memcpy(data_ptr, sample_ptr, samples * 4);
+
+ header_ptr->dwBufferLength = samples * 4;
+ waveOutPrepareHeader(device, header_ptr, sizeof(WAVEHDR));
+
+ waveOutWrite(device, header_ptr, sizeof(WAVEHDR));
+ } else Beep(440, (int)(1000.0 * duration));
+
+#elif defined(HAVE_ALSA_ASOUNDLIB_H)
+ if (handle) {
+ // Use ALSA to play the sound...
+ if (snd_pcm_writei(handle, sample_ptr, samples) < 0) {
+ snd_pcm_prepare(handle);
+ snd_pcm_writei(handle, sample_ptr, samples);
+ }
+ return;
+ }
+#endif // __APPLE__
+}
+
+
+class BlockWindow : public Fl_Double_Window
+{
+ struct Block
+ {
+ int color;
+ bool bomb;
+ int y;
+ };
+
+ struct Column
+ {
+ int num_blocks;
+ Block blocks[BLOCK_ROWS];
+ int x;
+ };
+
+ int num_columns_;
+ Column columns_[BLOCK_COLS];
+ int count_;
+ int high_score_;
+ float interval_;
+ int level_;
+ int num_colors_;
+ int opened_columns_;
+ bool paused_;
+ static Fl_Preferences prefs_;
+ int score_;
+ BlockSound *sound_;
+ char title_[255];
+ int title_y_;
+
+ int bomb(int color);
+ int click(int col, int row);
+ void init();
+ static void timeout_cb(BlockWindow *bw);
+
+ public:
+
+ BlockWindow(int X, int Y, int W, int H, const char *L = 0);
+ BlockWindow(int W, int H, const char *L = 0);
+ ~BlockWindow();
+
+ void draw();
+ int handle(int event);
+ void new_game();
+ int score() { return (score_); }
+};
+
+
+Fl_Preferences BlockWindow::prefs_(Fl_Preferences::USER, "fltk.org", "blocks");
+
+
+int
+main(int argc, char *argv[])
+{
+ BlockWindow *bw = new BlockWindow(BLOCK_COLS * BLOCK_SIZE,
+ BLOCK_ROWS * BLOCK_SIZE + 20,
+ "Block Attack!");
+
+
+ bw->show(argc, argv);
+
+ return (Fl::run());
+}
+
+
+BlockWindow::BlockWindow(int X, int Y, int W, int H, const char *L)
+ : Fl_Double_Window(X, Y, W, H, L)
+{
+ init();
+
+ sound_ = new BlockSound();
+
+ prefs_.get("high_score", high_score_, 0);
+}
+
+
+BlockWindow::BlockWindow(int W, int H, const char *L)
+ : Fl_Double_Window(W, H, L)
+{
+ init();
+
+ sound_ = new BlockSound();
+
+ prefs_.get("high_score", high_score_, 0);
+}
+
+
+BlockWindow::~BlockWindow()
+{
+}
+
+
+int
+BlockWindow::bomb(int color)
+{
+ int i, j;
+ int count;
+ Block *b;
+ Column *c;
+
+
+ if (color >= BLOCK_BLAST)
+ return (0);
+
+ for (i = num_columns_, c = columns_, count = 1; i > 0; i --, c ++)
+ for (j = c->num_blocks, b = c->blocks; j > 0; j --, b ++)
+ if (b->color == color)
+ {
+ b->color = -color;
+ count ++;
+ }
+
+ return (count);
+}
+
+
+int
+BlockWindow::click(int col, int row)
+{
+ Block *b;
+ Column *c;
+ int count, color;
+
+
+ c = columns_ + col;
+ b = c->blocks + row;
+ color = b->color;
+
+ if (color < 0 || color >= BLOCK_BLAST)
+ return (0);
+
+ // Find the bottom block...
+ while (row > 0 && b[-1].color == color)
+ {
+ row --;
+ b --;
+ }
+
+ count = 0;
+
+ while (row < c->num_blocks && b->color == color)
+ {
+ b->color = -color;
+
+ if (col > 0 && row < c[-1].num_blocks &&
+ c[-1].blocks[row].color == color)
+ count += click(col - 1, row);
+
+ if (col < (num_columns_ - 1) && row < c[1].num_blocks &&
+ c[1].blocks[row].color == color)
+ count += click(col + 1, row);
+
+ count ++;
+ row ++;
+ b ++;
+ }
+
+ return (count);
+}
+
+
+void
+BlockWindow::draw()
+{
+ int i, j, xx, yy;
+ Block *b;
+ Column *c;
+
+
+ fl_color(FL_BLACK);
+ fl_rectf(0, 0, w(), h());
+
+ for (i = num_columns_, c = columns_; i > 0; i --, c ++)
+ for (j = c->num_blocks, b = c->blocks; j > 0; j --, b ++)
+ {
+ xx = w() - c->x;
+ yy = h() - BLOCK_SIZE - b->y;
+
+ if (b->color >= BLOCK_BLAST)
+ {
+ b->color ++;
+ blast_pixmap.draw(xx, yy);
+ }
+ else if (b->color < 0)
+ {
+ if (b->bomb)
+ bomb_pixmaps[-b->color - 1]->draw(xx, yy);
+ else
+ normal_pixmaps[-b->color - 1]->draw(xx, yy);
+ }
+ else
+ {
+ if (b->bomb)
+ bomb_pixmaps[b->color - 1]->draw(xx, yy);
+ else
+ normal_pixmaps[b->color - 1]->draw(xx, yy);
+ }
+ }
+
+ if (paused_ || interval_ < 0.0)
+ {
+ const char *s;
+
+ if (interval_ < 0.0)
+ {
+#ifdef DEBUG
+ // Show sample waveform...
+ short *sample_ptr;
+
+ for (i = 0; i < 2; i ++)
+ {
+ fl_color(FL_RED + i);
+ fl_begin_line();
+ for (j = 0, sample_ptr = sound_->sample_data + i;
+ j < sound_->sample_size;
+ j ++, sample_ptr += 2)
+ fl_vertex(j * w() / sound_->sample_size,
+ *sample_ptr * h() / 4 / 65534 + h() / 2);
+ fl_end_line();
+ }
+#endif // DEBUG
+
+ if (num_columns_)
+ s = "Game Over\n\nPress N to Start";
+ else
+ s = "Block Attack!\nby\nMichael R Sweet\n\nPress N to Start";
+ }
+ else if (paused_)
+ s = "Paused\n\nSpace to Continue";
+
+ fl_font(FL_HELVETICA_BOLD, 32);
+ fl_color(FL_BLACK);
+ fl_draw(s, 6, 6, w() - 6, h() - 6, FL_ALIGN_CENTER);
+
+ fl_color(FL_YELLOW);
+ fl_draw(s, 0, 0, w(), h(), FL_ALIGN_CENTER);
+ }
+
+ char s[255];
+
+ sprintf(s, " Score: %d", score_);
+ fl_color(FL_WHITE);
+ fl_font(FL_HELVETICA, 14);
+ fl_draw(s, 0, 0, w(), 20, FL_ALIGN_LEFT);
+
+ sprintf(s, "High Score: %d ", high_score_);
+ fl_draw(s, 0, 0, w(), 20, FL_ALIGN_RIGHT);
+
+ if (level_ > 1 || title_y_ <= 0)
+ {
+ sprintf(s, "Level: %d ", level_);
+ fl_draw(s, 0, 0, w(), 20, FL_ALIGN_CENTER);
+ }
+
+ if (title_y_ > 0 && interval_ > 0.0)
+ {
+ int sz = 14 + title_y_ * 86 / h();
+
+ fl_font(FL_HELVETICA_BOLD, sz);
+ fl_color(FL_YELLOW);
+ fl_draw(title_, 0, title_y_, w(), sz, FL_ALIGN_CENTER);
+ }
+}
+
+
+int
+BlockWindow::handle(int event)
+{
+ int i, j, mx, my, count;
+ Block *b;
+ Column *c;
+
+
+ switch (event)
+ {
+ case FL_SHORTCUT :
+ if (interval_ < 0.0 && Fl::event_key() == 'n')
+ {
+ new_game();
+ return (1);
+ }
+#ifdef DEBUG
+ else if (interval_ > 0.001 && Fl::event_key() == FL_Up)
+ interval_ *= 0.8;
+ else if (interval_ > 0.0 && Fl::event_key() == FL_Down)
+ interval_ *= 1.25;
+#endif // DEBUG
+ else if (interval_ > 0.0 && Fl::event_key() == ' ')
+ {
+ paused_ = !paused_;
+ redraw();
+
+ if (paused_)
+ Fl::remove_timeout((Fl_Timeout_Handler)timeout_cb, (void *)this);
+ else
+ Fl::add_timeout(interval_, (Fl_Timeout_Handler)timeout_cb,
+ (void *)this);
+ }
+ break;
+
+ case FL_PUSH :
+ mx = w() - Fl::event_x() + BLOCK_SIZE;
+ my = h() - Fl::event_y();
+ count = 0;
+
+ for (i = 0, c = columns_; !count && i < num_columns_; i ++, c ++)
+ for (j = 0, b = c->blocks; !count && j < c->num_blocks; j ++, b ++)
+ if (mx >= c->x && mx < (c->x + BLOCK_SIZE) &&
+ my >= b->y && my < (b->y + BLOCK_SIZE))
+ {
+ if (b->bomb)
+ count = bomb(b->color);
+ else
+ count = click(i, j);
+
+ break;
+ }
+
+ if (count < 2)
+ {
+ for (i = 0, c = columns_; i < num_columns_; i ++, c ++)
+ for (j = 0, b = c->blocks; j < c->num_blocks; j ++, b ++)
+ if (b->color < 0)
+ b->color = -b->color;
+ }
+ else
+ {
+ count --;
+ if (b->bomb)
+ {
+ sound_->play_explosion(0.19 + 0.005 * count);
+
+ interval_ *= 0.99;
+ score_ += count;
+ }
+ else
+ {
+ sound_->play_explosion(0.09 + 0.005 * count);
+
+ interval_ *= 0.999;
+ score_ += count * count;
+ }
+
+ if (score_ > high_score_)
+ {
+ high_score_ = score_;
+ prefs_.set("high_score", high_score_);
+ }
+
+ for (i = 0, c = columns_; i < num_columns_; i ++, c ++)
+ for (j = 0, b = c->blocks; j < c->num_blocks; j ++, b ++)
+ if (b->color < 0)
+ b->color = BLOCK_BLAST;
+ }
+ return (1);
+ }
+
+ return (Fl_Double_Window::handle(event));
+}
+
+
+void
+BlockWindow::init()
+{
+ count_ = 0;
+ interval_ = -1.0;
+ level_ = 1;
+ num_colors_ = 3;
+ num_columns_ = 0;
+ paused_ = false;
+ score_ = 0;
+ title_[0] = '\0';
+ title_y_ = 0;
+}
+
+
+void
+BlockWindow::new_game()
+{
+ srand(time(NULL));
+
+ init();
+
+ interval_ = 0.08;
+ opened_columns_ = 0;
+
+ strcpy(title_, "Level: 1");
+ title_y_ = h();
+
+ if (!paused_)
+ Fl::add_timeout(interval_, (Fl_Timeout_Handler)timeout_cb, (void *)this);
+
+ redraw();
+}
+
+
+void
+BlockWindow::timeout_cb(BlockWindow *bw)
+{
+ int i, j;
+ Block *b;
+ Column *c;
+ int lastx, lasty;
+
+
+#ifdef DEBUG
+ struct timeval curtime;
+ static struct timeval lasttime;
+
+
+ gettimeofday(&curtime, NULL);
+ printf("%.3f (%+f - %f)\n",
+ curtime.tv_sec + 0.000001 * curtime.tv_usec,
+ curtime.tv_sec - lasttime.tv_sec +
+ 0.000001 * (curtime.tv_usec - lasttime.tv_usec), bw->interval_);
+ lasttime = curtime;
+#endif // DEBUG
+
+ if (bw->paused_ || bw->interval_ < 0.0)
+ return;
+
+ if (bw->title_y_ > 0)
+ bw->title_y_ -= 5;
+
+ for (i = 0, c = bw->columns_; i < bw->num_columns_; i ++, c ++)
+ for (j = 0, b = c->blocks; j < c->num_blocks; j ++, b ++)
+ if (b->color > (BLOCK_BLAST + 1))
+ {
+ c->num_blocks --;
+
+ if (j < c->num_blocks)
+ memmove(b, b + 1, (c->num_blocks - j) * sizeof(Block));
+
+ j --;
+ b --;
+
+ if (c->num_blocks == 0)
+ {
+ bw->num_columns_ --;
+
+ if (i < bw->num_columns_)
+ memmove(c, c + 1, (bw->num_columns_ - i) * sizeof(Column));
+
+ i --;
+ c --;
+ j = c->num_blocks;
+ }
+ }
+
+ for (i = bw->num_columns_, c = bw->columns_, lastx = c->x; i > 0; i --, c ++)
+ {
+ if (c->x > lastx)
+ c->x -= 8;
+
+ lastx = c->x + BLOCK_SIZE;
+
+ c->x ++;
+
+ for (j = c->num_blocks, b = c->blocks, lasty = 0; j > 0; j --, b ++)
+ {
+ if (b->y > lasty)
+ b->y -= 8;
+
+ lasty = b->y + BLOCK_SIZE;
+ }
+ }
+
+ bw->count_ --;
+
+ if (bw->count_ <= 0)
+ {
+ bw->count_ = BLOCK_SIZE;
+
+ if (bw->num_columns_ == BLOCK_COLS)
+ {
+ bw->interval_ = -1.0;
+ bw->redraw();
+ bw->sound_->play_explosion(0.8);
+ }
+ else
+ {
+ bw->opened_columns_ ++;
+ if (bw->opened_columns_ > (2 * BLOCK_COLS))
+ {
+ bw->interval_ *= 0.95;
+ bw->opened_columns_ = 0;
+
+ if (bw->num_colors_ < 7)
+ bw->num_colors_ ++;
+
+ bw->level_ ++;
+ sprintf(bw->title_, "Level: %d", bw->level_);
+ bw->title_y_ = bw->h();
+ }
+
+ c = bw->columns_;
+
+ if (bw->num_columns_)
+ memmove(c + 1, c, bw->num_columns_ * sizeof(Column));
+
+ bw->num_columns_ ++;
+ c->x = 0;
+ c->num_blocks = BLOCK_ROWS;
+
+ for (j = 0, b = c->blocks; j < BLOCK_ROWS; j ++, b ++)
+ {
+ b->bomb = bw->num_colors_ > 3 && (rand() & 127) < bw->num_colors_;
+ b->color = 1 + (rand() % bw->num_colors_);
+ b->y = j * (BLOCK_SIZE + 8) + 24;
+ }
+ }
+ }
+
+ bw->redraw();
+
+ if (bw->interval_ > 0.0)
+ Fl::repeat_timeout(bw->interval_, (Fl_Timeout_Handler)timeout_cb,
+ (void *)bw);
+}
+
+
+//
+// End of "$Id$".
+//
diff --git a/test/checkers.cxx b/test/checkers.cxx
index d4448d1ff..0f99b99eb 100644
--- a/test/checkers.cxx
+++ b/test/checkers.cxx
@@ -4,7 +4,7 @@
// Checkers game for the Fast Light Tool Kit (FLTK).
//
// Hours of fun: the FLTK checkers game!
-// Based on a very old algorithim, but it still works!
+// Based on a very old algorithm, but it still works!
//
// Copyright 1998-2005 by Bill Spitzak and others.
//
@@ -871,22 +871,22 @@ int VT100main() {
// rather tedious and perhaps fltk should provide a direct support
// to do this:
-#include "black_1.xbm"
-#include "black_2.xbm"
-#include "black_3.xbm"
-#include "black_4.xbm"
-#include "white_1.xbm"
-#include "white_2.xbm"
-#include "white_3.xbm"
-#include "white_4.xbm"
-#include "blackking_1.xbm"
-#include "blackking_2.xbm"
-#include "blackking_3.xbm"
-#include "blackking_4.xbm"
-#include "whiteking_1.xbm"
-#include "whiteking_2.xbm"
-#include "whiteking_3.xbm"
-#include "whiteking_4.xbm"
+#include "pixmaps/black_1.xbm"
+#include "pixmaps/black_2.xbm"
+#include "pixmaps/black_3.xbm"
+#include "pixmaps/black_4.xbm"
+#include "pixmaps/white_1.xbm"
+#include "pixmaps/white_2.xbm"
+#include "pixmaps/white_3.xbm"
+#include "pixmaps/white_4.xbm"
+#include "pixmaps/blackking_1.xbm"
+#include "pixmaps/blackking_2.xbm"
+#include "pixmaps/blackking_3.xbm"
+#include "pixmaps/blackking_4.xbm"
+#include "pixmaps/whiteking_1.xbm"
+#include "pixmaps/whiteking_2.xbm"
+#include "pixmaps/whiteking_3.xbm"
+#include "pixmaps/whiteking_4.xbm"
Fl_Bitmap *bm[4][4];
diff --git a/test/demo.menu b/test/demo.menu
index 4842d847d..be4e8dbd7 100644
--- a/test/demo.menu
+++ b/test/demo.menu
@@ -58,6 +58,7 @@
@e:Mandelbrot:mandelbrot
@e:Fractals:fractals
@e:Puzzle:glpuzzle
+ @e:Block\nAttack!:blocks
@e:Checkers:checkers
@e:Sudoku:sudoku
diff --git a/test/desktop/blocks.desktop b/test/desktop/blocks.desktop
new file mode 100644
index 000000000..f606d4d98
--- /dev/null
+++ b/test/desktop/blocks.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=Block Attack!
+Comment=Block Attack! Game
+TryExec=blocks
+Exec=blocks
+Icon=blocks
+Terminal=false
+Type=Application
+Encoding=UTF-8
+Categories=Application;Game
diff --git a/test/checkers-128.png b/test/desktop/checkers-128.png
index ed0252745..ed0252745 100644
--- a/test/checkers-128.png
+++ b/test/desktop/checkers-128.png
Binary files differ
diff --git a/test/checkers-32.png b/test/desktop/checkers-32.png
index 4adcd6663..4adcd6663 100644
--- a/test/checkers-32.png
+++ b/test/desktop/checkers-32.png
Binary files differ
diff --git a/test/checkers.desktop b/test/desktop/checkers.desktop
index 5e6e55bc0..5e6e55bc0 100644
--- a/test/checkers.desktop
+++ b/test/desktop/checkers.desktop
diff --git a/test/sudoku-128.png b/test/desktop/sudoku-128.png
index 070a41016..070a41016 100644
--- a/test/sudoku-128.png
+++ b/test/desktop/sudoku-128.png
Binary files differ
diff --git a/test/sudoku-32.png b/test/desktop/sudoku-32.png
index 154c27308..154c27308 100644
--- a/test/sudoku-32.png
+++ b/test/desktop/sudoku-32.png
Binary files differ
diff --git a/test/sudoku.desktop b/test/desktop/sudoku.desktop
index 36e4fc5cb..36e4fc5cb 100644
--- a/test/sudoku.desktop
+++ b/test/desktop/sudoku.desktop
diff --git a/test/forms.cxx b/test/forms.cxx
index 115c89cff..a87d3559a 100644
--- a/test/forms.cxx
+++ b/test/forms.cxx
@@ -69,7 +69,7 @@ static VN_struct btypes[]=
{-1}
};
-#include "srs.xbm"
+#include "pixmaps/srs.xbm"
/*************** Callback **********************/
diff --git a/test/icons/blocks-128.png b/test/icons/blocks-128.png
new file mode 100644
index 000000000..41e6d00da
--- /dev/null
+++ b/test/icons/blocks-128.png
Binary files differ
diff --git a/test/icons/blocks-32.png b/test/icons/blocks-32.png
new file mode 100644
index 000000000..073bc0fa9
--- /dev/null
+++ b/test/icons/blocks-32.png
Binary files differ
diff --git a/test/makedepend b/test/makedepend
index 8d77450bb..74f851edf 100644
--- a/test/makedepend
+++ b/test/makedepend
@@ -1,361 +1,380 @@
-# DO NOT DELETE
-
-unittests.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/x.H
-unittests.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-unittests.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Box.H
-unittests.o: ../FL/fl_draw.H
-adjuster.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-adjuster.o: ../FL/Fl_Window.H ../FL/Fl_Adjuster.H ../FL/Fl_Valuator.H
-adjuster.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H
-arc.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-arc.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-arc.o: ../FL/Fl_Widget.H ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H
-arc.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
-ask.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-ask.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H ../FL/Fl_Button.H
-ask.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/fl_ask.H
-bitmap.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-bitmap.o: ../FL/Fl_Button.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H
-bitmap.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
-boxtype.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-boxtype.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-boxtype.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H
-browser.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-browser.o: ../FL/Fl_Select_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-browser.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-browser.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Double_Window.H
-browser.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Int_Input.H
-browser.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_ask.H
-button.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-button.o: ../FL/Fl_Button.H
-buttons.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-buttons.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Return_Button.H
-buttons.o: ../FL/Fl_Button.H ../FL/Fl_Repeat_Button.H ../FL/Fl.H
-buttons.o: ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H
-buttons.o: ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Tooltip.H
-buttons.o: ../FL/Fl_Widget.H
-checkers.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-checkers.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-checkers.o: ../FL/Fl_Widget.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H
-checkers.o: ../FL/fl_draw.H ../FL/Fl_Menu_Item.H ../FL/fl_ask.H black_1.xbm
-checkers.o: black_2.xbm black_3.xbm black_4.xbm white_1.xbm white_2.xbm
-checkers.o: white_3.xbm white_4.xbm blackking_1.xbm blackking_2.xbm
-checkers.o: blackking_3.xbm blackking_4.xbm whiteking_1.xbm whiteking_2.xbm
-checkers.o: whiteking_3.xbm whiteking_4.xbm ../FL/Fl_Box.H ../FL/Fl_Slider.H
-checkers.o: ../FL/Fl_Valuator.H ../FL/Fl_Value_Output.H
-clock.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-clock.o: ../FL/Fl_Clock.H ../FL/Fl_Widget.H ../FL/Fl_Round_Clock.H
-clock.o: ../FL/Fl_Clock.H
-colbrowser.o: ../FL/forms.H ../FL/Fl.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-colbrowser.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-colbrowser.o: ../FL/fl_draw.H ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H
-colbrowser.o: ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H
-colbrowser.o: ../FL/Fl_Box.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-colbrowser.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-colbrowser.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H
-colbrowser.o: ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H
-colbrowser.o: ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H
-colbrowser.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H
-colbrowser.o: ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H
-colbrowser.o: ../FL/fl_show_colormap.H ../FL/filename.H
-colbrowser.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Fl_Double_Window.H
-colbrowser.o: ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H
-colbrowser.o: ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tile.H
-colbrowser.o: ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H ../FL/Fl_Box.H
-colbrowser.o: ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H ../FL/Fl_Input.H
-colbrowser.o: ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H ../FL/fl_ask.H
-colbrowser.o: ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H ../FL/Fl_Positioner.H
-colbrowser.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H
-color_chooser.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-color_chooser.o: ../FL/Fl_Window.H ../FL/Fl_Box.H ../FL/Fl_Button.H
-color_chooser.o: ../FL/fl_show_colormap.H ../FL/Fl_Color_Chooser.H
-color_chooser.o: ../FL/Fl_Group.H ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
-color_chooser.o: ../FL/Fl_Choice.H ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H
-color_chooser.o: ../FL/Fl_Widget.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-color_chooser.o: ../FL/Fl_Image.H ../FL/x.H ../FL/Fl_Window.H
-color_chooser.o: ../FL/Fl_Group.H ../FL/fl_draw.H list_visuals.cxx
-color_chooser.o: ../config.h
-cube.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-cube.o: ../FL/Fl_Window.H ../FL/Fl_Box.H ../FL/Fl_Button.H
-cube.o: ../FL/Fl_Radio_Light_Button.H ../FL/Fl_Light_Button.H
-cube.o: ../FL/Fl_Button.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-cube.o: ../FL/Fl_Widget.H ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H
-cube.o: ../FL/Fl_Group.H ../FL/gl.h
-CubeMain.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-CubeMain.o: CubeViewUI.h ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-CubeMain.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H
-CubeMain.o: ../FL/Fl_Roller.H ../FL/Fl_Valuator.H ../FL/Fl_Slider.H
-CubeMain.o: ../FL/Fl_Box.H CubeView.h ../FL/Fl_Gl_Window.H ../FL/gl.h
-CubeMain.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H
-CubeView.o: CubeView.h ../config.h ../FL/Fl.H ../FL/Enumerations.H
-CubeView.o: ../FL/Fl_Export.H ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H
-CubeView.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/gl.h
-cursor.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-cursor.o: ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H
-cursor.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H
-cursor.o: ../FL/Fl_Choice.H ../FL/fl_draw.H ../FL/Fl_Box.H
-curve.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-curve.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-curve.o: ../FL/Fl_Widget.H ../FL/Fl_Hor_Value_Slider.H
-curve.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-curve.o: ../FL/fl_draw.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
-demo.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-demo.o: ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/filename.H ../FL/x.H
-demo.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-doublebuffer.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-doublebuffer.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-doublebuffer.o: ../FL/Fl_Widget.H ../FL/Fl_Double_Window.H ../FL/Fl_Box.H
-doublebuffer.o: ../FL/fl_draw.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H
-doublebuffer.o: ../FL/Fl_Valuator.H ../FL/math.h
-editor.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H
-editor.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-editor.o: ../FL/Fl_Widget.H ../FL/fl_ask.H ../FL/Fl_File_Chooser.H
-editor.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-editor.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Button.H
-editor.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H
-editor.o: ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H
-editor.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H
-editor.o: ../FL/Fl.H ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-editor.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_File_Input.H
-editor.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H
-editor.o: ../FL/Fl_Menu_Bar.H ../FL/Fl_Text_Buffer.H ../FL/Fl_Text_Editor.H
-editor.o: ../FL/Fl_Text_Display.H ../FL/fl_draw.H ../FL/Fl_Text_Buffer.H
-fast_slow.o: fast_slow.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fast_slow.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-fast_slow.o: ../FL/Fl_Widget.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-fast_slow.o: ../FL/Fl_Box.H
-file_chooser.o: ../FL/Fl_File_Chooser.H ../FL/Fl.H ../FL/Enumerations.H
-file_chooser.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-file_chooser.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H
-file_chooser.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-file_chooser.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Button.H
-file_chooser.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H
-file_chooser.o: ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H
-file_chooser.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-file_chooser.o: ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H
-file_chooser.o: ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-file_chooser.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-file_chooser.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-file_chooser.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/Fl_File_Icon.H
-file_chooser.o: ../FL/Fl_Shared_Image.H ../FL/Fl_PNM_Image.H
-file_chooser.o: ../FL/Fl_Light_Button.H
-fonts.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-fonts.o: ../FL/Fl_Hold_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-fonts.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-fonts.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H ../FL/Fl_Box.H
-fonts.o: ../FL/fl_ask.H
-forms.o: ../FL/forms.H ../FL/Fl.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-forms.o: ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-forms.o: ../FL/fl_draw.H ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H
-forms.o: ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H
-forms.o: ../FL/Fl_Box.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H
-forms.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-forms.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H
-forms.o: ../FL/Fl_Check_Button.H ../FL/Fl_Chart.H ../FL/Fl_Choice.H
-forms.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H
-forms.o: ../FL/Fl_Counter.H ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H
-forms.o: ../FL/fl_show_colormap.H ../FL/filename.H ../FL/Fl_File_Chooser.H
-forms.o: ../FL/Fl.H ../FL/Fl_Double_Window.H ../FL/Fl_Group.H
-forms.o: ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H
-forms.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H
-forms.o: ../FL/Fl_File_Icon.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-forms.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-forms.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/Fl_Input.H
-forms.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H
-forms.o: ../FL/Fl_Timer.H srs.xbm
-fractals.o: ../config.h ../FL/glut.H ../FL/gl.h ../FL/Enumerations.H
-fractals.o: ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H
-fractals.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H fracviewer.h
-fractals.o: ../FL/Fl_Button.H ../FL/Fl_Group.H ../FL/Fl_Window.H
-fullscreen.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-fullscreen.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-fullscreen.o: ../FL/Fl_Widget.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H
-fullscreen.o: ../FL/Fl_Valuator.H ../FL/Fl_Toggle_Light_Button.H
-fullscreen.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/math.h
-fullscreen.o: ../FL/gl.h ../FL/Fl_Gl_Window.H
-gl_overlay.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-gl_overlay.o: ../FL/Fl_Window.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H
-gl_overlay.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/Fl_Toggle_Button.H
-gl_overlay.o: ../FL/Fl_Button.H ../FL/math.h ../FL/gl.h ../FL/Fl_Gl_Window.H
-gl_overlay.o: ../FL/Fl_Window.H ../FL/Fl_Group.H
-glpuzzle.o: ../config.h ../FL/glut.H ../FL/gl.h ../FL/Enumerations.H
-glpuzzle.o: ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H
-glpuzzle.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H trackball.c
-glpuzzle.o: trackball.h
-hello.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-hello.o: ../FL/Fl_Box.H
-help.o: ../FL/Fl_Help_Dialog.H ../FL/Fl.H ../FL/Enumerations.H
-help.o: ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-help.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Help_View.H ../FL/Fl.H
-help.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-help.o: ../FL/fl_draw.H ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-help.o: ../FL/Fl_Group.H ../FL/Fl_Button.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-iconize.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-iconize.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Box.H
-image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-image.o: ../FL/Fl_Button.H ../FL/Fl_Image.H ../FL/Fl_Toggle_Button.H
-image.o: ../FL/Fl_Button.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-image.o: ../FL/Fl_Widget.H list_visuals.cxx ../config.h
-inactive.o: inactive.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-inactive.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-inactive.o: ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Button.H
-inactive.o: ../FL/Fl_Light_Button.H ../FL/Fl_Check_Button.H
-inactive.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Round_Button.H
-inactive.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Input.H
-inactive.o: ../FL/Fl_Input_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H
-inactive.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Value_Output.H
-inactive.o: ../FL/Fl_Box.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-inactive.o: ../FL/Fl_Roller.H ../FL/Fl_Dial.H ../FL/Fl_Clock.H
-input.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-input.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H
-input.o: ../FL/Fl_Float_Input.H ../FL/Fl_Input.H ../FL/Fl_Int_Input.H
-input.o: ../FL/Fl_Secret_Input.H ../FL/Fl_Multiline_Input.H ../FL/Fl_Button.H
-input.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Color_Chooser.H
-input.o: ../FL/Fl_Group.H ../FL/Fl_Box.H ../FL/Fl_Return_Button.H
-input.o: ../FL/Fl_Choice.H ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H
-input_choice.o: ../FL/Fl_Button.H ../FL/Fl_Window.H ../FL/Fl_Input_Choice.H
-input_choice.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-input_choice.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H
-input_choice.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-input_choice.o: ../FL/Fl_Image.H ../FL/fl_draw.H
-keyboard.o: keyboard_ui.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-keyboard.o: keyboard.h ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Output.H
-keyboard.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Widget.H
-keyboard.o: ../FL/Fl_Box.H ../FL/Fl_Dial.H
-label.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-label.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-label.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Hor_Value_Slider.H
-label.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-label.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Input.H
-label.o: ../FL/Fl_Input_.H ../FL/Fl_Choice.H ../FL/fl_draw.H
-line_style.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-line_style.o: ../FL/Fl_Window.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H
-line_style.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/fl_draw.H
-line_style.o: ../FL/Fl_Choice.H
-list_visuals.o: ../config.h
-mandelbrot.o: mandelbrot_ui.h ../FL/Fl.H ../FL/Enumerations.H
-mandelbrot.o: ../FL/Fl_Export.H mandelbrot.h ../FL/Fl_Box.H ../FL/Fl_Slider.H
-mandelbrot.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/Fl_Window.H
-mandelbrot.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Double_Window.H
-mandelbrot.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/fl_draw.H
-menubar.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Box.H
-menubar.o: ../FL/Fl_Window.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H
-menubar.o: ../FL/Fl_Menu_Item.H ../FL/Fl_Widget.H ../FL/Fl_Image.H
-menubar.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Menu_Button.H
-menubar.o: ../FL/Fl_Choice.H ../src/flstring.h ../FL/Fl_Export.H ../config.h
-menubar.o: ../FL/fl_draw.H
-message.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-message.o: ../FL/Fl_Window.H ../FL/fl_ask.H
-minimum.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-minimum.o: ../FL/Fl_Window.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-minimum.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Return_Button.H
-minimum.o: ../FL/Fl_Button.H
-navigation.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-navigation.o: ../FL/Fl_Window.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-navigation.o: ../FL/Fl_Widget.H
-output.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-output.o: ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H
-output.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Box.H
-output.o: ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H
-output.o: ../FL/Fl_Slider.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
-output.o: ../FL/Fl_Input.H ../FL/fl_draw.H ../FL/Fl_Output.H
-output.o: ../FL/Fl_Multiline_Output.H ../FL/Fl_Output.H
-overlay.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-overlay.o: ../FL/Fl_Window.H ../FL/Fl_Overlay_Window.H
-overlay.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-overlay.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/fl_draw.H
-pack.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Button.H
-pack.o: ../FL/Fl_Light_Button.H ../FL/Fl_Window.H ../FL/Fl_Scroll.H
-pack.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H
-pack.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Value_Slider.H
-pack.o: ../FL/Fl_Pack.H ../FL/Fl_Group.H
-pixmap_browser.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-pixmap_browser.o: ../FL/Fl_Box.H ../FL/Fl_Window.H ../FL/Fl_Button.H
-pixmap_browser.o: ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-pixmap_browser.o: ../FL/Fl_File_Chooser.H ../FL/Fl_Double_Window.H
-pixmap_browser.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-pixmap_browser.o: ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_Button.H
-pixmap_browser.o: ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-pixmap_browser.o: ../FL/Fl_Preferences.H ../FL/Fl_Tile.H
-pixmap_browser.o: ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H
-pixmap_browser.o: ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H
-pixmap_browser.o: ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H
-pixmap_browser.o: ../FL/filename.H ../FL/Fl_Check_Button.H
-pixmap_browser.o: ../FL/Fl_Light_Button.H ../FL/Fl_Button.H
-pixmap_browser.o: ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
-pixmap_browser.o: ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/fl_message.H
-pixmap_browser.o: ../FL/fl_ask.H
-pixmap.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H
-pixmap.o: ../FL/Fl_Button.H ../FL/Fl_Pixmap.H ../FL/Fl_Image.H porsche.xpm
-pixmap.o: ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Multi_Label.H
-preferences.o: preferences.h ../FL/Fl.H ../FL/Enumerations.H
-preferences.o: ../FL/Fl_Export.H ../FL/Fl_Preferences.H
-preferences.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-preferences.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Group.H
-preferences.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Choice.H
-preferences.o: ../FL/Fl_Round_Button.H ../FL/Fl_Light_Button.H
-preferences.o: ../FL/Fl_Button.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H
-preferences.o: ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-preferences.o: ../FL/filename.H ../FL/fl_ask.H
-radio.o: radio.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-radio.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-radio.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Return_Button.H
-radio.o: ../FL/Fl_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Check_Button.H
-radio.o: ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Group.H
-resizebox.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-resizebox.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-resizebox.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Radio_Button.H
-resizebox.o: ../FL/Fl_Button.H ../FL/fl_draw.H ../FL/fl_message.H
-resizebox.o: ../FL/fl_ask.H
-resize.o: resize.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-resize.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-resize.o: ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Box.H
-scroll.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-scroll.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-scroll.o: ../FL/Fl_Widget.H ../FL/Fl_Scroll.H ../FL/Fl_Scrollbar.H
-scroll.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Light_Button.H
-scroll.o: ../FL/Fl_Choice.H ../FL/Fl_Box.H ../FL/fl_draw.H ../FL/math.h
-shape.o: ../config.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-shape.o: ../FL/Fl_Window.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H
-shape.o: ../FL/Fl_Valuator.H ../FL/Fl_Widget.H ../FL/math.h ../FL/gl.h
-shape.o: ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-subwindow.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-subwindow.o: ../FL/Fl_Window.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
-subwindow.o: ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H
-subwindow.o: ../FL/Fl_Widget.H ../FL/Fl_Image.H ../FL/Fl_Box.H
-subwindow.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_draw.H
-sudoku.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-sudoku.o: ../FL/Enumerations.H ../FL/Fl_Window.H ../FL/Fl_Button.H
-sudoku.o: ../FL/Fl_Group.H ../FL/fl_ask.H ../FL/fl_draw.H
-sudoku.o: ../FL/Fl_Help_Dialog.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H
-sudoku.o: ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Help_View.H ../FL/Fl.H
-sudoku.o: ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H
-sudoku.o: ../FL/fl_draw.H ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H
-sudoku.o: ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Preferences.H
-sudoku.o: ../FL/Fl_Sys_Menu_Bar.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H
-sudoku.o: ../FL/Fl_Menu_Item.H ../FL/x.H sudoku.xbm
-symbols.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-symbols.o: ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-symbols.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Value_Slider.H
-symbols.o: ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
-tabs.o: tabs.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-tabs.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-tabs.o: ../FL/Fl_Widget.H ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Input.H
-tabs.o: ../FL/Fl_Input_.H ../FL/Fl_Button.H ../FL/fl_ask.H ../FL/Fl_Clock.H
-tabs.o: ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
-threads.o: ../config.h ../FL/fl_ask.H ../FL/Enumerations.H ../FL/Fl_Export.H
-tile.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-tile.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-tile.o: ../FL/Fl_Widget.H ../FL/Fl_Tile.H ../FL/Fl_Box.H
-tiled_image.o: ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-tiled_image.o: ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Pixmap.H
-tiled_image.o: ../FL/Fl_Image.H ../FL/Fl_Tiled_Image.H tile.xpm ../FL/x.H
-tiled_image.o: ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H
-tiled_image.o: list_visuals.cxx ../config.h
-valuators.o: valuators.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H
-valuators.o: ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H
-valuators.o: ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Slider.H
-valuators.o: ../FL/Fl_Valuator.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H
-valuators.o: ../FL/Fl_Adjuster.H ../FL/Fl_Counter.H ../FL/Fl_Dial.H
-valuators.o: ../FL/Fl_Roller.H ../FL/Fl_Value_Input.H ../FL/Fl_Input.H
-valuators.o: ../FL/Fl_Input_.H ../FL/Fl_Value_Output.H ../FL/Fl_Scrollbar.H
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+unittests.o: unittests.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/x.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Box.H \
+ ../FL/fl_draw.H
+adjuster.o: adjuster.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Adjuster.H ../FL/Fl_Valuator.H ../FL/Fl_Box.H
+arc.o: arc.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
+ask.o: ask.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Button.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H ../FL/fl_ask.H
+bitmap.o: bitmap.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Bitmap.H ../FL/Fl_Image.H ../FL/Fl_Toggle_Button.H \
+ ../FL/Fl_Button.H
+blocks.o: blocks.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Preferences.H ../FL/Fl_XPM_Image.H \
+ ../FL/Fl_Pixmap.H ../FL/Fl_Image.H ../FL/fl_draw.H ../FL/x.H \
+ ../config.h pixmaps/blast.xpm pixmaps/red.xpm pixmaps/red_bomb.xpm \
+ pixmaps/green.xpm pixmaps/green_bomb.xpm pixmaps/blue.xpm \
+ pixmaps/blue_bomb.xpm pixmaps/yellow.xpm pixmaps/yellow_bomb.xpm \
+ pixmaps/cyan.xpm pixmaps/cyan_bomb.xpm pixmaps/magenta.xpm \
+ pixmaps/magenta_bomb.xpm pixmaps/gray.xpm pixmaps/gray_bomb.xpm
+boxtype.o: boxtype.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Box.H
+browser.o: browser.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Select_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Button.H ../FL/Fl_Int_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_ask.H
+button.o: button.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H
+buttons.o: buttons.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/Fl_Repeat_Button.H \
+ ../FL/Fl.H ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Tooltip.H \
+ ../FL/Fl_Widget.H
+checkers.o: checkers.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H \
+ ../FL/fl_draw.H ../FL/Fl_Menu_Item.H ../FL/fl_ask.H pixmaps/black_1.xbm \
+ pixmaps/black_2.xbm pixmaps/black_3.xbm pixmaps/black_4.xbm \
+ pixmaps/white_1.xbm pixmaps/white_2.xbm pixmaps/white_3.xbm \
+ pixmaps/white_4.xbm pixmaps/blackking_1.xbm pixmaps/blackking_2.xbm \
+ pixmaps/blackking_3.xbm pixmaps/blackking_4.xbm pixmaps/whiteking_1.xbm \
+ pixmaps/whiteking_2.xbm pixmaps/whiteking_3.xbm pixmaps/whiteking_4.xbm \
+ ../FL/Fl_Box.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Value_Output.H
+clock.o: clock.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Clock.H \
+ ../FL/Fl_Round_Clock.H ../FL/Fl_Clock.H
+colbrowser.o: colbrowser.cxx ../FL/forms.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/fl_draw.H \
+ ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H ../FL/Fl_Image.H \
+ ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H ../FL/Fl_Box.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Chart.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H ../FL/Fl_Counter.H \
+ ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H ../FL/fl_show_colormap.H \
+ ../FL/filename.H ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H \
+ ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H
+color_chooser.o: color_chooser.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/fl_show_colormap.H \
+ ../FL/Fl_Color_Chooser.H ../FL/Fl_Group.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Value_Input.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Image.H \
+ ../FL/x.H ../FL/Fl_Window.H ../FL/fl_draw.H list_visuals.cxx \
+ ../config.h
+cube.o: cube.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Box.H ../FL/Fl_Button.H ../FL/Fl_Radio_Light_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H ../FL/gl.h
+CubeMain.o: CubeMain.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H CubeViewUI.h ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H \
+ ../FL/Fl_Roller.H ../FL/Fl_Valuator.H ../FL/Fl_Slider.H ../FL/Fl_Box.H \
+ CubeView.h ../config.h ../FL/Fl_Gl_Window.H ../FL/gl.h \
+ ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H
+CubeView.o: CubeView.cxx CubeView.h ../config.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Gl_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/gl.h
+cursor.o: cursor.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H ../FL/Fl_Box.H
+curve.o: curve.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H
+demo.o: demo.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H \
+ ../FL/Fl_Button.H ../FL/filename.H ../FL/x.H ../FL/Fl_Window.H
+doublebuffer.o: doublebuffer.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Box.H ../FL/fl_draw.H ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/math.h
+editor.o: editor.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/fl_ask.H \
+ ../FL/Fl_File_Chooser.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Preferences.H ../FL/Fl_Tile.H \
+ ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H ../FL/Fl_Box.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Menu_Bar.H ../FL/Fl_Text_Buffer.H \
+ ../FL/Fl_Text_Editor.H ../FL/Fl_Text_Display.H ../FL/fl_draw.H \
+ ../FL/Fl_Text_Buffer.H
+fast_slow.o: fast_slow.cxx fast_slow.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Box.H
+file_chooser.o: file_chooser.cxx ../FL/Fl_File_Chooser.H ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H \
+ ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Preferences.H ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H \
+ ../FL/Fl_Browser.H ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H \
+ ../FL/filename.H ../FL/Fl_Box.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_File_Icon.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_PNM_Image.H ../FL/Fl_Light_Button.H
+fonts.o: fonts.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Hold_Browser.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/fl_draw.H ../FL/Fl_Box.H ../FL/fl_ask.H
+forms.o: forms.cxx ../FL/forms.H ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Window.H \
+ ../FL/fl_draw.H ../FL/Fl_FormsBitmap.H ../FL/Fl_Bitmap.H \
+ ../FL/Fl_Image.H ../FL/Fl_FormsPixmap.H ../FL/Fl_Pixmap.H \
+ ../FL/Fl_Box.H ../FL/Fl_Browser.H ../FL/Fl_Browser_.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Chart.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Clock.H \
+ ../FL/Fl_Counter.H ../FL/Fl_Dial.H ../FL/Fl_Free.H ../FL/fl_ask.H \
+ ../FL/fl_show_colormap.H ../FL/filename.H ../FL/Fl_File_Chooser.H \
+ ../FL/Fl.H ../FL/Fl_Double_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_File_Icon.H \
+ ../FL/Fl_Box.H ../FL/Fl_Check_Button.H ../FL/Fl_File_Input.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Return_Button.H \
+ ../FL/fl_ask.H ../FL/Fl_Input.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Positioner.H ../FL/Fl_Value_Slider.H ../FL/Fl_Timer.H \
+ pixmaps/srs.xbm
+fractals.o: fractals.cxx ../config.h ../FL/glut.H ../FL/gl.h \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H fracviewer.h \
+ ../FL/Fl_Button.H ../FL/Fl_Group.H ../FL/Fl_Window.H
+fullscreen.o: fullscreen.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Hor_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Toggle_Light_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/math.h ../FL/gl.h \
+ ../FL/Fl_Gl_Window.H
+gl_overlay.o: gl_overlay.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/math.h ../FL/gl.h \
+ ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H
+glpuzzle.o: glpuzzle.cxx ../config.h ../FL/glut.H ../FL/gl.h \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl.H ../FL/Fl_Gl_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H trackball.c \
+ trackball.h
+hello.o: hello.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H
+help.o: help.cxx ../FL/Fl_Help_Dialog.H ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Help_View.H ../FL/Fl.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/fl_draw.H ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H \
+ ../FL/Fl_Group.H ../FL/Fl_Button.H ../FL/Fl_Input.H ../FL/Fl_Input_.H
+iconize.o: iconize.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Box.H
+image.o: image.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Image.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/x.H \
+ ../FL/Fl_Window.H list_visuals.cxx ../config.h
+inactive.o: inactive.cxx inactive.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Group.H ../FL/Fl_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Check_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H ../FL/Fl_Value_Output.H ../FL/Fl_Box.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Roller.H \
+ ../FL/Fl_Dial.H ../FL/Fl_Clock.H
+input.o: input.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Float_Input.H ../FL/Fl_Input.H \
+ ../FL/Fl_Int_Input.H ../FL/Fl_Secret_Input.H ../FL/Fl_Multiline_Input.H \
+ ../FL/Fl_Button.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Color_Chooser.H ../FL/Fl_Group.H ../FL/Fl_Box.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Value_Input.H \
+ ../FL/Fl_Valuator.H
+input_choice.o: input_choice.cxx ../FL/Fl_Button.H ../FL/Fl_Widget.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Input_Choice.H ../FL/Fl.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Menu_Button.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
+keyboard.o: keyboard.cxx keyboard_ui.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H keyboard.h ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Output.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Box.H ../FL/Fl_Dial.H ../FL/Fl_Valuator.H
+label.o: label.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Hor_Value_Slider.H \
+ ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/fl_draw.H
+line_style.o: line_style.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/fl_draw.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H
+list_visuals.o: list_visuals.cxx ../config.h
+mandelbrot.o: mandelbrot.cxx mandelbrot_ui.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H mandelbrot.h ../FL/Fl_Box.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/fl_draw.H
+menubar.o: menubar.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Box.H ../FL/Fl_Widget.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H \
+ ../FL/Fl_Image.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Menu_Button.H ../FL/Fl_Choice.H ../src/flstring.h \
+ ../FL/Fl_Export.H ../config.h ../FL/fl_draw.H
+message.o: message.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/fl_ask.H
+minimum.o: minimum.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Box.H ../FL/Fl_Return_Button.H \
+ ../FL/Fl_Button.H
+navigation.o: navigation.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H
+output.o: output.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Value_Input.H ../FL/Fl_Valuator.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Box.H ../FL/Fl_Hor_Value_Slider.H ../FL/Fl_Value_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_Input.H ../FL/fl_draw.H ../FL/Fl_Output.H \
+ ../FL/Fl_Multiline_Output.H ../FL/Fl_Output.H
+overlay.o: overlay.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Overlay_Window.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Button.H ../FL/fl_draw.H
+pack.o: pack.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Button.H ../FL/Fl_Widget.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Scroll.H \
+ ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/Fl_Value_Slider.H ../FL/Fl_Pack.H ../FL/Fl_Group.H
+pixmap_browser.o: pixmap_browser.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Box.H ../FL/Fl_Widget.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Button.H ../FL/Fl_Shared_Image.H \
+ ../FL/Fl_Image.H ../FL/Fl_File_Chooser.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Menu_Button.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Tile.H ../FL/Fl_File_Browser.H ../FL/Fl_Browser.H \
+ ../FL/Fl_Browser_.H ../FL/Fl_Scrollbar.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_File_Icon.H ../FL/Fl.H ../FL/filename.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Button.H \
+ ../FL/Fl_File_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Return_Button.H ../FL/fl_ask.H ../FL/fl_message.H \
+ ../FL/fl_ask.H
+pixmap.o: pixmap.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Pixmap.H ../FL/Fl_Image.H pixmaps/porsche.xpm \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Multi_Label.H
+preferences.o: preferences.cxx preferences.h ../FL/Fl.H \
+ ../FL/Enumerations.H ../FL/Fl_Export.H ../FL/Fl_Preferences.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Group.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Round_Button.H \
+ ../FL/Fl_Light_Button.H ../FL/Fl_Button.H ../FL/Fl_Box.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/filename.H ../FL/fl_ask.H
+radio.o: radio.cxx radio.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Button.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Check_Button.H ../FL/Fl_Light_Button.H ../FL/Fl_Round_Button.H \
+ ../FL/Fl_Group.H
+resizebox.o: resizebox.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Single_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H \
+ ../FL/Fl_Radio_Button.H ../FL/Fl_Button.H ../FL/fl_draw.H \
+ ../FL/fl_message.H ../FL/fl_ask.H
+resize.o: resize.cxx resize.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Box.H
+scroll.o: scroll.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Scroll.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/Fl_Light_Button.H \
+ ../FL/Fl_Button.H ../FL/Fl_Choice.H ../FL/Fl_Menu_.H \
+ ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Box.H ../FL/fl_draw.H \
+ ../FL/math.h
+shape.o: shape.cxx ../config.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Hor_Slider.H ../FL/Fl_Slider.H ../FL/Fl_Valuator.H \
+ ../FL/math.h ../FL/gl.h ../FL/Fl_Gl_Window.H ../FL/Fl_Window.H
+subwindow.o: subwindow.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Toggle_Button.H ../FL/Fl_Button.H ../FL/Fl_Menu_Button.H \
+ ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/Fl_Image.H ../FL/Fl_Box.H \
+ ../FL/Fl_Input.H ../FL/Fl_Input_.H ../FL/fl_draw.H
+sudoku.o: sudoku.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Enumerations.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Button.H ../FL/Fl_Group.H ../FL/fl_ask.H \
+ ../FL/fl_draw.H ../FL/Fl_Help_Dialog.H ../FL/Fl_Double_Window.H \
+ ../FL/Fl_Window.H ../FL/Fl_Help_View.H ../FL/Fl.H ../FL/Fl_Scrollbar.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H \
+ ../FL/Fl_Shared_Image.H ../FL/Fl_Image.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Preferences.H ../FL/Fl_Sys_Menu_Bar.H \
+ ../FL/Fl_Menu_Bar.H ../FL/Fl_Menu_.H ../FL/Fl_Menu_Item.H ../FL/x.H \
+ ../FL/math.h pixmaps/sudoku.xbm ../config.h
+symbols.o: symbols.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Single_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Value_Slider.H \
+ ../FL/Fl_Slider.H ../FL/Fl_Valuator.H ../FL/fl_draw.H
+tabs.o: tabs.cxx tabs.h ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Tabs.H ../FL/Fl_Group.H ../FL/Fl_Input.H \
+ ../FL/Fl_Input_.H ../FL/Fl_Button.H ../FL/fl_ask.H ../FL/Fl_Clock.H \
+ ../FL/Fl_Return_Button.H ../FL/Fl_Button.H
+threads.o: threads.cxx ../config.h ../FL/fl_ask.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H
+tile.o: tile.cxx ../FL/Fl.H ../FL/Enumerations.H ../FL/Fl_Export.H \
+ ../FL/Fl_Double_Window.H ../FL/Fl_Window.H ../FL/Fl_Group.H \
+ ../FL/Fl_Widget.H ../FL/Fl_Tile.H ../FL/Fl_Box.H
+tiled_image.o: tiled_image.cxx ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Window.H ../FL/Fl_Group.H ../FL/Fl_Widget.H \
+ ../FL/Fl_Button.H ../FL/Fl_Pixmap.H ../FL/Fl_Image.H \
+ ../FL/Fl_Tiled_Image.H pixmaps/tile.xpm ../FL/x.H ../FL/Fl_Window.H \
+ list_visuals.cxx ../config.h
+valuators.o: valuators.cxx valuators.h ../FL/Fl.H ../FL/Enumerations.H \
+ ../FL/Fl_Export.H ../FL/Fl_Double_Window.H ../FL/Fl_Window.H \
+ ../FL/Fl_Group.H ../FL/Fl_Widget.H ../FL/Fl_Box.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Valuator.H ../FL/Fl_Value_Slider.H ../FL/Fl_Slider.H \
+ ../FL/Fl_Value_Input.H ../FL/Fl_Input.H ../FL/Fl_Input_.H \
+ ../FL/Fl_Value_Output.H ../FL/Fl_Scrollbar.H ../FL/Fl_Adjuster.H \
+ ../FL/Fl_Counter.H ../FL/Fl_Spinner.H ../FL/Fl_Group.H ../FL/Fl_Input.H \
+ ../FL/Fl_Repeat_Button.H ../FL/Fl.H ../FL/Fl_Button.H ../FL/Fl_Dial.H \
+ ../FL/Fl_Roller.H
diff --git a/test/pixmap.cxx b/test/pixmap.cxx
index c8a1ceada..ef236b803 100644
--- a/test/pixmap.cxx
+++ b/test/pixmap.cxx
@@ -31,7 +31,7 @@
#include <FL/Fl_Pixmap.H>
#include <stdio.h>
-#include "porsche.xpm"
+#include "pixmaps/porsche.xpm"
#include <FL/Fl_Toggle_Button.H>
diff --git a/test/black_1.xbm b/test/pixmaps/black_1.xbm
index a9d800f98..a9d800f98 100644
--- a/test/black_1.xbm
+++ b/test/pixmaps/black_1.xbm
diff --git a/test/black_2.xbm b/test/pixmaps/black_2.xbm
index b324fd124..b324fd124 100644
--- a/test/black_2.xbm
+++ b/test/pixmaps/black_2.xbm
diff --git a/test/black_3.xbm b/test/pixmaps/black_3.xbm
index ead6e086a..ead6e086a 100644
--- a/test/black_3.xbm
+++ b/test/pixmaps/black_3.xbm
diff --git a/test/black_4.xbm b/test/pixmaps/black_4.xbm
index 4132263e6..4132263e6 100644
--- a/test/black_4.xbm
+++ b/test/pixmaps/black_4.xbm
diff --git a/test/blackking_1.xbm b/test/pixmaps/blackking_1.xbm
index f764eade6..f764eade6 100644
--- a/test/blackking_1.xbm
+++ b/test/pixmaps/blackking_1.xbm
diff --git a/test/blackking_2.xbm b/test/pixmaps/blackking_2.xbm
index 9be617b5a..9be617b5a 100644
--- a/test/blackking_2.xbm
+++ b/test/pixmaps/blackking_2.xbm
diff --git a/test/blackking_3.xbm b/test/pixmaps/blackking_3.xbm
index b4a688360..b4a688360 100644
--- a/test/blackking_3.xbm
+++ b/test/pixmaps/blackking_3.xbm
diff --git a/test/blackking_4.xbm b/test/pixmaps/blackking_4.xbm
index a7078623e..a7078623e 100644
--- a/test/blackking_4.xbm
+++ b/test/pixmaps/blackking_4.xbm
diff --git a/test/pixmaps/blast.xpm b/test/pixmaps/blast.xpm
new file mode 100644
index 000000000..902e3ab24
--- /dev/null
+++ b/test/pixmaps/blast.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * blast_xpm[] = {
+"32 32 32 1",
+" c #905518",
+". c #9F580E",
+"+ c #A36526",
+"@ c #AF6519",
+"# c #BF7429",
+"$ c #C77622",
+"% c #B67B3C",
+"& c #D07518",
+"* c #D88836",
+"= c #E48628",
+"- c #F28514",
+"; c #FF951C",
+"> c #FA9835",
+", c #FF982A",
+"' c #F49F48",
+") c #FFA82D",
+"! c #FFA93F",
+"~ c #FFBA1C",
+"{ c #FFB936",
+"] c #FFBA4C",
+"^ c #FFCA42",
+"/ c #FFD329",
+"( c #FFCF5E",
+"_ c #FFD94C",
+": c #FFE946",
+"< c #FFFB3E",
+"[ c #FFFB55",
+"} c #FEFC69",
+"| c #FFFE82",
+"1 c #FFFFA3",
+"2 c #FEFFCB",
+"3 c #FEFFFC",
+" % . ....@@@#@@.+.+++% ",
+" %%++++.....@######@@@@.++ % ",
+" %%% %++@@.@@@#$$#######@++++%% ",
+" %%+%+####@@$&&=*=&&$$####@++%%+",
+"+%+%#####&&&&&==='===*$$###%%%%+",
+"%+%%%%**=*&&&&>,>,>-=>==*$*##%%%",
+" %#****'=>---,))!),>>>==***#%#+",
+" @%*'''>>>>;;,{{{))))>>>''**#%+",
+" ..@#*'!]]]{)){^__^^{]!!!'''###+",
+" ..@$=']]((^^~~:::/__^{((!>**##@",
+"....&&=>(_|[::/<}[<[::_((!>==###",
+"....&&--!_}|}[<[}[}}}||_]!>>**##",
+"@@$$&&--;{:|1|[<|}|}||}_^]>>=*##",
+"##$$=-,;)~~<121<2|121}}:^])>=*$#",
+"#*'''!]{^_<<<1313332|}}}^{!>>*##",
+"%*'']((|}}||||<333321|[[_^]>==*#",
+"*''''((||112333333321|}[_^]!>=*#",
+"%%*''!]^_[[[}<13332}<[<:_])>>*$#",
+"##*==,,)~_:<[|212311}[</{),,=*$#",
+"#@$$==,;)~/<|1<2|<1}|[:^{)-=&&$@",
+".@@$&&-;)~:|}<<1}[|}[[:^{,-=&$@@",
+"..@@&&-;)(}[/<[|[<<}<:_^{),=&$@.",
+"...@&&=,{_(~~:[[<</[[^~]!>>=&$@@",
+" .@@$&'!({;;{/}::/~/_^)),>=*$#@+",
+" ..@$=''>,-;)^__~^{)^]),,==*$#@@",
+". @##*'==&--){({));;,{>>==$$#@++",
+"%++#%**$&&--,!));;;-->>=&$$##@+%",
+" +%%##@@@@&=>>>>>>=-==='$$#@@+++",
+" %%+@@..&.$&='==-&&&&&$*$#@@.+% ",
+" %%+ ....@$$*==&$&&&@$$##@@+ % ",
+" % ....@#*#$$$#@@@@@##+@++ ",
+" ..@####@@@@@..+@++% "};
diff --git a/test/pixmaps/blue.xpm b/test/pixmaps/blue.xpm
new file mode 100644
index 000000000..703ab9c82
--- /dev/null
+++ b/test/pixmaps/blue.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * blue_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #0000A5",
+"+ c #020681",
+"@ c #0A008F",
+"# c #0001B2",
+"$ c #0100BA",
+"% c #0000D0",
+"& c #0C00C4",
+"* c #0008C4",
+"= c #0B00DB",
+"- c #13252E",
+"; c #171F44",
+"> c #1718B3",
+", c #1616C2",
+"' c #2628CF",
+") c #2C2BC6",
+"! c #2D30BD",
+"~ c #3D40D1",
+"{ c #4342BC",
+"] c #4344CA",
+"^ c #5253E1",
+"/ c #5858D4",
+"( c #5F5ECF",
+"_ c #6A69E7",
+": c #6E6EDD",
+"< c #7273D2",
+"[ c #7E7FDD",
+"} c #7E7FEC",
+"| c #8D8DDF",
+"1 c #8F90EF",
+"2 c #9D9EED",
+"3 c #A6A6E8",
+" ;+.*$##$$**$*$#$*&&.+; ",
+" -@&)_133333333333333|:!$@- ",
+" ;%%}22122222222233333333['$; ",
+" -&'1111111|2|21111|2223|332'&- ",
+" @*}}}}1}}}1}1111111[|[||||||*. ",
+";&/}[}}}}}}}[[[}}}}}[}[[||||[:&;",
+"+'::::_____:::<::__}_}:<<<<<[<)+",
+">)/_/_____::(::::_____:(<<<<<<].",
+"*^//^/////(((((//_^_^_///(((((/$",
+"#]]]]^^{/{{{{/{//^^^^^^///{(((($",
+".]~~~~]{{{{{{{]{]~~~~~~~]{]{{{(.",
+"#))))!!!{{{]!~!!~~'~''~~~]{{{{{.",
+"#))))!!!@!>!!))))''''''~)!!!{{+.",
+"$,,>>>@!>>)>,'''''''''''))!>!!!.",
+"$,,#>>>>.>,,&*%*'*''*',,,,,>>>>#",
+"&%%$#...#&&%*%***%%&*$,***,>#>>#",
+"$&%&*###&&%%&&&&,*&*,##$*$$#$$#$",
+"$&%%$$$*&%&**$$$&&&&&$#$***#,#.#",
+"$$$&$*&%%=&&$##$$**&&$**&&&$$#..",
+".#$$&&%%%%%&,....##$#$$&%%&&$#.#",
+".#$$&%%===%%&#.....###$&%%%&&#.#",
+"$$&&%=====%%$##.@..#.##&&&%%&$$#",
+"$$&&%==%==%&$###.....##$%&%&&$$$",
+"$$$&&%%%%%&&$$###..###$$&%&%&&$$",
+".$$&&&&$$&$$*&&*$$#$$$$$$%%%%%&.",
+"+$$$$&####$&$&&&&&$$&$$$$&%=%%=+",
+";##$$$#....$$&&&$&&%&&$$*&%==%%;",
+" @$,#$#.@..##.#$&&%%%&$&&=%%%%. ",
+" -$*$&&$.......#&&&%&&$&%==%%&- ",
+" ;$&&$#...#...$&%%%&&$&%=%=%; ",
+" -@%&$#..#...#$%&&&&&&&=%.- ",
+" ;+.#$#....#&&%%&&&&#+; "};
diff --git a/test/pixmaps/blue_bomb.xpm b/test/pixmaps/blue_bomb.xpm
new file mode 100644
index 000000000..e9a8b3e02
--- /dev/null
+++ b/test/pixmaps/blue_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * blue_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #010047",
+"+ c #00033E",
+"@ c #010345",
+"# c #010577",
+"$ c #0000A4",
+"% c #0001B7",
+"& c #0000C3",
+"* c #0000D0",
+"= c #13252E",
+"- c #1A2147",
+"; c #1E1E57",
+"> c #2023BC",
+", c #2526CD",
+"' c #343364",
+") c #363699",
+"! c #3237C5",
+"~ c #373BB4",
+"{ c #474875",
+"] c #4E4FD4",
+"^ c #5252C6",
+"/ c #5B5A85",
+"( c #6D6D94",
+"_ c #6666CE",
+": c #6465DE",
+"< c #6E6CAC",
+"[ c #7B7CDA",
+"} c #7C7DEB",
+"| c #8D8DDF",
+"1 c #8F90EF",
+"2 c #9D9EED",
+"3 c #A6A6E8",
+" -#$&%%%%%&&&&%%%&&&$#- ",
+" =$*,:133333333333333|}>%$= ",
+" -&,}22122222322233333333[>%- ",
+" =&,}111111|2|21111|22322332,&= ",
+" $,[1}1}1}}1}1111111[1|||<|||&$ ",
+"-%]}}}}}}}}}[[[}}}}}}[[[||||1:&-",
+"#,:_}:::}::[<((((((<[}}[[[[<[[,#",
+"%!:::::::_<(((((((((/<_:___[__]$",
+"&]]]]]]]://///(////////_^::___]%",
+"%]]]]]]^{{{/{{/{/{</{/{/^^^^^_^%",
+"$!!!!!]'{{{={{{{{{'{{{{{']]~^^^$",
+"%,!,!>)''-{''''''''''''{')]~~~~$",
+"%,>,!>)-'-'-''''''';''''')!!~~~$",
+"&,,$>>--;;-;;;;;;;;;);;;;->>>#!$",
+"&&&,$$;+;+;+;@;;.;;;;;;;;;%>,>>%",
+"%&&&$$++@+..@...;..@.@;@.;%,$%$%",
+"&&*&&%+++..@@@@@@@@@+@++@+%%%%%%",
+"&&&&%%+@+.@@+++@++@@@++++@&%%%$%",
+"%&&&&&+....+++++@+@+@+@@@@&%%%$$",
+"$%%&%&#.@..@+++++++++++@@#&&%$$$",
+"$%%%&*$....@+++++++++++@.$*&&%%$",
+"%%&&***#...@+++-++++++++#***&%%%",
+"&%&&***&...@+++++++++++@$&**&%%%",
+"&%%&****$.@@+++++++++++$&&*&&&&&",
+"$%%&&&&%&$#+@@+++++++#$%&&****&$",
+"#%%%%&%%$%$$#@.@@@+#$%%%%&*****#",
+"-%%%%%%$$$$%%%&%%&&&&%%&&&*****-",
+" $%%%&$$$$$$%$$%&&**&&%&******$ ",
+" =%%&&&$$$$$$$$%&&***%%&*****&= ",
+" -&&&&%$$$$$$$%%***&&&&****&- ",
+" =$&%%%$%$$$$%&&&&&&&&***$= ",
+" -#$%%%%$$$%%&&&&&&&%#- "};
diff --git a/test/pixmaps/cyan.xpm b/test/pixmaps/cyan.xpm
new file mode 100644
index 000000000..c00e3f437
--- /dev/null
+++ b/test/pixmaps/cyan.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * cyan_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #143144",
+"+ c #0A4350",
+"@ c #038080",
+"# c #029795",
+"$ c #00A3A5",
+"% c #00ABAC",
+"& c #02B3B5",
+"* c #00BBBB",
+"= c #00C0C0",
+"- c #19B9BB",
+"; c #33B5B5",
+"> c #00CCCB",
+", c #12C5C5",
+"' c #47B2B1",
+") c #1AC9C9",
+"! c #09D2D1",
+"~ c #37C9CA",
+"{ c #46C5C6",
+"] c #24D9D8",
+"^ c #5CC5C3",
+"/ c #4BD0D1",
+"( c #55D8DA",
+"_ c #72D4D3",
+": c #53E3E3",
+"< c #66E0E2",
+"[ c #7EE2E1",
+"} c #70ECED",
+"| c #94E0E1",
+"1 c #8DEFED",
+"2 c #A1ECEC",
+"3 c #ADE8E6",
+" +@$=*&&&***=*&&&*==$@+ ",
+" .#>![123333222233323|<~*#. ",
+" +,]}1211212222212232333||**+ ",
+" .,]1211111222221112|||||3||>>. ",
+" #)[11111}}11[11111111[|||||[!# ",
+"+*<}<<}}1}1}[[[1}1}}1[[___|_|<>+",
+"@)_[[<}}}}}<[__<<}}}}1[___|^|_)@",
+"%](((<<<<<__/___[}}}}:[__^_^^_^%",
+"-(((((((((_{{_{/_(}:}<<<(___^^/*",
+"&////(/{{{{^/{{^/]:::::(_(/{^{^&",
+"%{//!/{;';{;{{~{{/]:]:]/~~/{^{;%",
+"%==,~,*;;;;'*~~~~~/!]]()~{{{;''#",
+";>/**;;;&;-;;~,)))//!!]~=---;';$",
+"*>=*;%;%;--*,)!)!>)!~!))~=~--%;%",
+";),=;%%%--))))!))!)))~,)),{--&;%",
+"=)>**%$%*=)>!>)),,))--*=)=***;**",
+"*)!>**%&=)!,,,===,,,*;*;==**&*&&",
+"*,>,=***>!),**-*=,,>=***,=*&*&%&",
+"*&==**,>>!>=&%&&***=***=>,=*%%%%",
+"%****>>!!!!>*%%%%%&*&**,>>>==%$$",
+"%%*==>!]]!!>*%%$$%%%*%=,>>>>>*%%",
+"%==,!]]]]]!>*&$$##$%%%&*,>>>*=&;",
+"**=>!]]]]]!>**%$$#%%%%*=,>>>=**&",
+"***,)!!!!!,****=%%#%%%&*=>>>>==*",
+"$*&=,),**,=*======***==**,>>>>>%",
+"@=&-*=&%%&&*==>>======*&=,>]]!!@",
+"+&&=&*&%$%%*****==,>,=*==!!!]]!+",
+" #&&=*&$$#$%%%%*=,>>>=*=,!!!!!# ",
+" .&====%%$%%%$$%=>>>)=*,!]]!!,. ",
+" +*,==*%#$$%#%*=>!>,=-,!]]!!+ ",
+" .#,=*%%%%$#$&=,>,,,=,)!]$. ",
+" +@$&*%%%$$%,,,,,,,,%@+ "};
diff --git a/test/pixmaps/cyan_bomb.xpm b/test/pixmaps/cyan_bomb.xpm
new file mode 100644
index 000000000..d67ad8f77
--- /dev/null
+++ b/test/pixmaps/cyan_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * cyan_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #003A3A",
+"+ c #133244",
+"@ c #004241",
+"# c #0A4551",
+"$ c #084948",
+"% c #1B5353",
+"& c #006C6D",
+"* c #286261",
+"= c #396767",
+"- c #0F8080",
+"; c #019795",
+"> c #507B7C",
+", c #00A7A9",
+"' c #5D8989",
+") c #00B7B7",
+"! c #00C1C1",
+"~ c #2FB2B3",
+"{ c #6D9A9A",
+"] c #00CAC9",
+"^ c #4AB4B3",
+"/ c #05D4D2",
+"( c #36C8C9",
+"_ c #53C4C3",
+": c #46D3D4",
+"< c #61D3D3",
+"[ c #75CECE",
+"} c #6FE2E1",
+"| c #82DFDE",
+"1 c #94E0E1",
+"2 c #89EFED",
+"3 c #A2ECEC",
+" #-,!))~))!)!!)~)!!!,-# ",
+" +;]:}2333333333333331<();+ ",
+" #!/}23333333333333333333[!!# ",
+" +!/322222221332223311111111:!+ ",
+" ;:2222222222|23222233111111|/; ",
+"#!:}|}222222|||}22222}|1[1[[1}]#",
+"-:<}}}}}}}}[^{{{{{{[[2}|[[[[[|!-",
+",:}:}:}}}<{'''''''{'{{[<<|[[[<_,",
+"!:<<:}::_'>'>>'>'''''''[<<<[_<:!",
+")(:::::^>>>>>>>>>>>''''>_::____~",
+",((:::(>===>=>=>>>=>>>>>'(:___^,",
+"~(((](;===#========&&=*=*^(_^^~;",
+")](()_&%%==%=%===*===*==*-~)^~~,",
+"!!!)~,=#.%%#%%%%*%******%=())~~,",
+")]()~,.%%%%%%%%%%%%%%%%%%%()))~)",
+"(!]!)^.....$%$$$$$$$$$$$$$)))))~",
+"!]:])~...%$$.@#@@@@@.@.$@@))))))",
+")]]]!(.$$.@@..@.@@@@@@..@$)))))~",
+"~!)!)!.$$%$.@....@#@.@@@#@()),,,",
+",)!~!(&@@@@$...........@$&]!)),,",
+")))!]]~$$$@$.........@@@$,:]!),,",
+"~)!!///&$$$@@...........&]]]!)))",
+"))!!://!%$$@...........@,]/]])))",
+"!))!///],@#$..........@;]]]]]!]!",
+",)!)!!!!!,&.@#@......*,)!]]]/]!,",
+"-)~!!!)),));&@@@$.@&;!)))!/////-",
+"#)~))),,;,,)))!)!!:]]!!!!]/////#",
+" ;))))),;,,)~~,)!!]/]!)!]/////; ",
+" +)!!!!),,,,,,,)!]]/!()!/////!+ ",
+" #)]!)),,,,,,,)!!/!]!)!////]# ",
+" +;]!),,,,,;,)!]]!!!!!]//,+ ",
+" #-,))));,,,!!]!]!!!)-# "};
diff --git a/test/pixmaps/gray.xpm b/test/pixmaps/gray.xpm
new file mode 100644
index 000000000..924dde9f2
--- /dev/null
+++ b/test/pixmaps/gray.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * gray_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #2C393F",
+"+ c #394649",
+"@ c #666967",
+"# c #737572",
+"$ c #7A7C79",
+"% c #828481",
+"& c #878986",
+"* c #8C8E8B",
+"= c #90928F",
+"- c #939592",
+"; c #979996",
+"> c #999B98",
+", c #9C9E9A",
+"' c #9FA19E",
+") c #A1A0A4",
+"! c #A3A5A2",
+"~ c #A6A8A5",
+"{ c #A9ABA8",
+"] c #A9ACAF",
+"^ c #ABADAA",
+"/ c #AFB1AE",
+"( c #B3B5B3",
+"_ c #B9BBB8",
+": c #BABDC0",
+"< c #C1C3BF",
+"[ c #C2C3C7",
+"} c #C7C9C6",
+"| c #CBCDCB",
+"1 c #D1D3D0",
+"2 c #D9DBD8",
+"3 c #DFE1DE",
+" +@%;-**=---;-=*=;>>%@+ ",
+" .$':[2332233333222231[]-#. ",
+" +)(|33333222333332222221[)-+ ",
+" .;(22233333121333322|12|1|2]'. ",
+" #]|221222221112233222[2||||1]$ ",
+"+)[|[[2[3[3[2[1[[2[222||[[[[|<)+",
+"@~[[||[111[[|[[|2221[2[|}<<[[|~@",
+"%:|<[|[[[|[[[:[[[[[21|[[[_:((_]&",
+"-(::[[[[[:((((]:[[|[||<<[_<:::];",
+"=((((_(({^]](]]](<[[|[[:(:((]((*",
+"&]]((()))!')^(^^]([[<<__(]({~)]%",
+"*~^]])'>-))'){)]^]((:_:]]{)))>)%",
+"=)~!''>)--);){{]^{{^(((])~~!)==%",
+")~)))=**);;)']]{]]]]]]]{~!,)=)-&",
+"-',-**&*=)>)!{]~~~~!)!))])'>-==*",
+")))))&&&=;!~])')))))>)>,'';))-)*",
+"-'!)=**)=)!)')-;>,''-=*-))**==)&",
+"),);))*))]);)*--)>)))-==-)=)*&**",
+"*))-==)'!{!;*&**==---)=)>))*)%&&",
+"%&==))!)]])))*&&**&)**))!'-))&%%",
+"**)=)){^{^~)=&&%$%&&**=)))]))**&",
+"**-)!{]]]]{)))&$%%%*&&*;'''>))**",
+")=),]((((]!)*&&%$%$&&*)-))]);*)*",
+"==*)'!!'!~)*)))&)&&&&&*)>'')))-)",
+"%)*))))-);)-==)))&)&)*=-))!!))'%",
+"@=*=--*&&*==));-)=)=)))*->!]^^]@",
+"+=*=--*%$%&)&-)-))));-=)-){{]]]+",
+" #)*)*)&%$%&*&&*=;)!))*)){]]{~# ",
+" .*)*)*&&%&%%%%));]'))*>]{{])). ",
+" .=))))&%%&%%$&;,!)>-))!]]{~+ ",
+" .#;=&*)$&%%%)))!');-)'{]$. ",
+" +@$$)&)%$$&-,))>),;&@+ "};
diff --git a/test/pixmaps/gray_bomb.xpm b/test/pixmaps/gray_bomb.xpm
new file mode 100644
index 000000000..32d440081
--- /dev/null
+++ b/test/pixmaps/gray_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * gray_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #2C2E2B",
+"+ c #313330",
+"@ c #2E393E",
+"# c #363835",
+"$ c #3B3A3D",
+"% c #3B3D3B",
+"& c #3B464A",
+"* c #454644",
+"= c #48464A",
+"- c #50514F",
+"; c #585A57",
+"> c #616260",
+", c #686967",
+"' c #70716E",
+") c #787A78",
+"! c #818380",
+"~ c #868885",
+"{ c #8B8D8A",
+"] c #8F908D",
+"^ c #939491",
+"/ c #969895",
+"( c #9B9D9A",
+"_ c #A1A3A0",
+": c #A8AAA7",
+"< c #B0B3B0",
+"[ c #B9BBB8",
+"} c #C1C2C0",
+"| c #C9CBC8",
+"1 c #D2D3D1",
+"2 c #D9DBD8",
+"3 c #DFE1DE",
+" &,!/^]]]^////]]]/((!,& ",
+" @)_<12322232333322221}:^'@ ",
+" &(<133333313233332222221}_/& ",
+" @/}221233322113333221111111<_@ ",
+" )_1112223321212223212111}1}1<) ",
+"&^}1111111111}1111221111}}}}1}_&",
+",:}}}111111<:]~]^^^<}11}}}}}}}:,",
+"]<}}}}}}}}]~))~)~~]~]^}}}}}<<}<~",
+"/}<}}}}}_)))))))))~)~)~<}}}<<<<^",
+"]<<<<}<_,',,'''))))))))):<}<<<<]",
+"]<<<<<<,>>>,,,>>>,,),,,,)<<<_::~",
+"]_::<_~>->->->>>>>>>,,,,>^__:^/)",
+"^___((,====-=-->=>>=>=>>=)_(^(^!",
+"^:_(^^=-=-=-=-==-==>-----=__/^^]",
+"^_((^~$$*%=*==-=--======-=_(^(^]",
+"^__(]].+$$$%%*$$$$$*$@*%%=((^^^]",
+"/_:_^]@.+$$$+$++$$+$$$$$+$^^^^]]",
+"^___^^..$##++..$++$+....$$^]^]]]",
+"]^^(^($+$$$$.....++$.$.@$.(^]]~~",
+"~]^^//>+$++.$@.@.@......$>_(]]!~",
+"]]^(__~@$$$$......$.$@$+$)<_^]~~",
+"]^((_<<;##$.$..........$=__:(^]]",
+"^^((:<<^&#$$...........$~____^^]",
+"^^^((___!$+.$.@.....@.$)(___(((^",
+"~^^^__(^^~=$..$.@....=)^/_:::_:~",
+">^^^/^^]]]])=@.$..$=)^^^^(_<:<:,",
+"&]]^^]]))~~^^]]]^/__:(^^(__::::&",
+" )^]^^]]))~~]]]^^(_:_^(^_:<:::) ",
+" @^^(^^]~~])~)~]((___^/(:<_<_(@ ",
+" &^__(]])~]~)~^^_:__(^(_:<:_& ",
+" @)((]]]~~)~)^(__(((((_:<)@ ",
+" &,)]]]]])!]^(__(_((~>& "};
diff --git a/test/pixmaps/green.xpm b/test/pixmaps/green.xpm
new file mode 100644
index 000000000..a7fe81f71
--- /dev/null
+++ b/test/pixmaps/green.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * green_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #022D01",
+"+ c #004300",
+"@ c #007F00",
+"# c #009400",
+"$ c #00A301",
+"% c #00AA00",
+"& c #00B600",
+"* c #04BC0A",
+"= c #00C100",
+"- c #02C805",
+"; c #00CC00",
+"> c #24B329",
+", c #00D400",
+"' c #18CA24",
+") c #3FB740",
+"! c #31C733",
+"~ c #3FC640",
+"{ c #31D633",
+"] c #4FC650",
+"^ c #5DD45D",
+"/ c #5BD957",
+"( c #51DF54",
+"_ c #6BD16D",
+": c #6AE26D",
+"< c #81DF81",
+"[ c #8DDB8C",
+"} c #7EE77F",
+"| c #79EE7A",
+"1 c #8FEF8F",
+"2 c #9DEC9D",
+"3 c #A6E7A5",
+" +@$=*&&&*====&&&===$@+ ",
+" .#;{:123333333333333[:!&#. ",
+" +-;|22222223222223333333<*=+ ",
+" .-,11111111221111122223[332!;. ",
+" #-}1}|}||1|111111}11<<[[[[[<;# ",
+"+*^}}}}|}||}}<<1||||}1<<[[[[[:;+",
+"@':^::|||||:___}}|||:|}_<_[_[_'@",
+"%{^:://///^_^^_^:/|(/::^______~%",
+"*(/////:^^^^_]]^^/((((:^^^]___]=",
+"%~~/~(/~]~]]~]]]/((((((//^]]]]^%",
+"%~!!!!~)))))~]~]~({({{{(~~~]))]$",
+"&!!!!~~))>))~!~!~!{({{(!~~~))))$",
+"&!!!*>>>>>>>>!!'{!{{{{{!!~>~)))$",
+"=-'*>&>%>&!*'--'{-''{-{'!!!%>#>%",
+"*='*>%$%&&'=-{;-'{-='=---=!&!%!%",
+"*--=&%%%&=;--;-=-=;=*&!**-=&&&&&",
+"=-;-=&%&==;;======--*&&&**&&&&&&",
+"*-;-=&**-,;==&&*==-==*&*=-*&&&%&",
+"&&=====;;,;=&&&&&*===&===-=*&&$%",
+"%&**==,,,,;-&%%%%%&&&**-;;;=&%%%",
+"%&&*-;,,,,,;=%%%$$%&%&*-;;;;=&%%",
+"&&=-,,,,,,,;=&$$$#%%%%&=-;;;-&&&",
+"**=-,,,,,,,=*&%$$$$%%%&=-;;;=*&&",
+"*&*=,,,,,,-=&=&&&%%%%&&*=-;;;===",
+"$*&*=-{=*===*=-==&&*&&*===;;;;;%",
+"@*&*==&%%&&*==--======*&*-;,,,;@",
+"+&&&&=&%$%%&=&*===-;;=&*=;,,,,,+",
+" #&&&&&%#$%%&%%&*-;;-=*=-,,,,,# ",
+" .&===&&$$$%$$%&==,;-=*=,,,,,-. ",
+" +&===&%$%%$$$&=;;;-==-,,,,-+ ",
+" .#-=&&%%%$$$&=-;=====;,,$. ",
+" +@$&&&%$$$%==----='&@+ "};
diff --git a/test/pixmaps/green_bomb.xpm b/test/pixmaps/green_bomb.xpm
new file mode 100644
index 000000000..ac186a9cb
--- /dev/null
+++ b/test/pixmaps/green_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * green_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #003700",
+"+ c #003E00",
+"@ c #004405",
+"# c #004600",
+"$ c #005E00",
+"% c #1B541B",
+"& c #006E00",
+"* c #2C602D",
+"= c #008B00",
+"- c #3E6D3F",
+"; c #358335",
+"> c #00A800",
+", c #4E7B4E",
+"' c #00B700",
+") c #00C100",
+"! c #5E895F",
+"~ c #00CD00",
+"{ c #32B12E",
+"] c #40AA3D",
+"^ c #00D800",
+"/ c #28C42B",
+"( c #6D9A6E",
+"_ c #41C442",
+": c #5CCB5D",
+"< c #58DA59",
+"[ c #7EC678",
+"} c #73D173",
+"| c #73E773",
+"1 c #83EB84",
+"2 c #93EB92",
+"3 c #A0E7A0",
+" @&>)'''''))))''')))>&# ",
+" .=~~|2333333333333332|/'=. ",
+" +~^1222233333323333333332''@ ",
+" .)~212122123222222333333333/). ",
+" =~12111111121211112222[3[322~= ",
+"@)<1|11|||||121111||1112}[[[}|~@",
+"=/|||||||||}[!((((([}|}1}}}[}})=",
+">/<:<|<|<|(!!!(!((((((::|}1}}}_>",
+")<<<<<<<:!!!!!!!!!!!!(!}<:<::}:)",
+"'</</<_:-,-!-!,!,,,,,,,,:<<::::'",
+">_//</_,---------,,,;,,,;:___]:>",
+"'/////]-, --------*--;*--]_{_]]>",
+"'/////;.---.--***********;_{{{]>",
+")~))>{**.-.*.%%%*%%*%****%//{{>>",
+"'))/>>..%.*%%%%%#%%%%%%%%%'/'/>'",
+")~))'{...+++@@##%###@@@@#@)'/'/>",
+")~~~)'.@@@@@@@@@@@#%#@@@@@''>'''",
+"))~))'++@@##+++@@#+#@+.+@+'''''>",
+">)))')@####+.++++++++++@@@)''>>>",
+"'>')))&###@#+.....+++@+@#&~)'>>>",
+">''))~>#####+........++@#>^~)'>>",
+"'')~~^^&####++......+.++&)~~~'''",
+"'))~~^^)$###@+.......+++>~~~))''",
+"'/')~^^)>#@+++++......#=~)~~~)))",
+">''))))')>$++@@@#++++$>'))~~~~)>",
+"='''))''>')=&#+#+@+&>)'')~~^^^^=",
+"+'''''>>>>''))')))~)))'''~~^^~~#",
+" ='''''>=>>>>>'')~~~~)))~~^~~^= ",
+" .>)))''>=>>>>>'')~~~'))~^^^~~. ",
+" @))))'>>>>>=>>)~~~))))^^^~~+ ",
+" .=~)'>>>>>>>')~~~))))~^^>. ",
+" #&>'''>>=>>)~))))))>=@ "};
diff --git a/test/pixmaps/magenta.xpm b/test/pixmaps/magenta.xpm
new file mode 100644
index 000000000..e3600fc75
--- /dev/null
+++ b/test/pixmaps/magenta.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * magenta_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #380F3F",
+"+ c #490754",
+"@ c #890089",
+"# c #9E02A1",
+"$ c #A800A6",
+"% c #AF00B1",
+"& c #B900B6",
+"* c #B902BE",
+"= c #C200C3",
+"- c #CC00C8",
+"; c #D100D2",
+"> c #DE00DB",
+", c #CC18CC",
+"' c #C324C3",
+") c #BC33BC",
+"! c #D629D5",
+"~ c #B93DB9",
+"{ c #D23BD2",
+"] c #D34BD2",
+"^ c #CF53D0",
+"/ c #CE5ECE",
+"( c #E551E4",
+"_ c #E366E3",
+": c #D473D4",
+"< c #DD6DDD",
+"[ c #EB7BEC",
+"} c #E683E5",
+"| c #DD8BDD",
+"1 c #F18FF2",
+"2 c #F09BF0",
+"3 c #E7A2E8",
+" +@#=*&%&*====&%&===$@+ ",
+" .@=!_233333333333333|/{*@. ",
+" +;>[22223333332233333333|'=+ ",
+" .=!12111112222122233333333|{-. ",
+" @,}}}}1[1[[1}21111}1|||||3||;# ",
+"+=_<[[[[[[[[}:}[[[[[}}}|||||:<=+",
+"@=<<<_<[__[<<:::[[_[_[<::::|::'@",
+"${_/______</:/:<______<//:::::]$",
+"*]]^]_]_^^^//^//__((___/^///://*",
+"%]]]]]]~^^~^~/~^^((((((]^^~/~//&",
+"$){{{]~~~~~~~])~^]((!((]]^~^~~~#",
+"%{{){')~~~~)))]{)'{{{!{{))~~~~~#",
+"%''')')~#)))''''{!!{{!{{{'~~~~~#",
+"=,='&#$%)&&&',!,,,',,!!''''%~#~$",
+"&,*'$$$$&'',,,-,,-,,'=,',''&)%%%",
+"==-=&$$%%&--,-,,',,==&&==,*&&&&%",
+"=;-;=&$&=;;;==*===,=**%'=&*%'&&%",
+"*=;=*&*&=;==**&*=====&&&*=&*&%%%",
+"%*==*-=;-;-=%%$&&*=&**==;==*%$$$",
+"$%&&*=;;;;;=&$%$$%%*&&*--;==*%%$",
+"%%*==;;>>;;;=%$$#$$%%%*=;;;-=%%%",
+"&&=,-;>>;>;-=%%###$$%%&==--;=&%%",
+"&&*;->>>>>;=&%%$#$$$$$%==;,--=&&",
+"=*&=;;;;;;-&**&&%$$$$%&&-=;;=&==",
+"$*%*===*&===&===***&****==;;;-;$",
+"@&&&*=%$%%*&=---==&===*&&=-;>;;@",
+"+*&&&&&$#$%&**&=&;=-==**=;;;>;;+",
+" @****%$##$%%$&&==;;-=&=-;>;;;@ ",
+" .%&==*%$#$$$#$%&=;;-=&=;;>;-;. ",
+" +====&$$$$$$$&----=*==;>;>;+ ",
+" .#==&%$$%##$%=;;-====;;;#. ",
+" +@#%*%$$##%*===-=-&$@+ "};
diff --git a/test/pixmaps/magenta_bomb.xpm b/test/pixmaps/magenta_bomb.xpm
new file mode 100644
index 000000000..9d4aee2ed
--- /dev/null
+++ b/test/pixmaps/magenta_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * magenta_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #3A033B",
+"+ c #410142",
+"@ c #48004B",
+"# c #6C006C",
+"$ c #541954",
+"% c #840084",
+"& c #9B009D",
+"* c #612F61",
+"= c #AC00AC",
+"- c #792A7D",
+"; c #BA00B9",
+"> c #C200C2",
+", c #813285",
+"' c #D000D0",
+") c #734472",
+"! c #B91EBA",
+"~ c #8E488B",
+"{ c #B034B1",
+"] c #855A85",
+"^ c #CD31CD",
+"/ c #C643C7",
+"( c #967098",
+"_ c #AC6DAC",
+": c #C960CA",
+"< c #D859D8",
+"[ c #E770E7",
+"} c #E376E3",
+"| c #DD7CDD",
+"1 c #EF8BEF",
+"2 c #E894E8",
+"3 c #E7A2E8",
+" @%&>;;=;;>>>>;=;>>>=%@ ",
+" .&'^[1333333333333332:^;%. ",
+" @>'[22233333332333333333|^;@ ",
+" .'^121111112221112333333333^'. ",
+" &^1111111111222111122222_322'& ",
+"@><}}}1[1[[[}}1111[}}}|2|2|_2[>@",
+"%>}[}[[[[[[2_((((((2|[}|||||||>%",
+"=^<<<<<<[:_]((((((](]_:::::|:|/=",
+";<<<<<<<:]]]]]]]]]]]]]]::::::::>",
+";//<^<^:)))])])])])]]]]]<<:{::<=",
+"=/^^^</))))))))))))~))))~//<{:{&",
+";^/^^^%**) )***)*)*)*)*)){/{{{{=",
+";^^!/!-**************-***,{/{{{&",
+";>;!={*.*.*.*$*$$$$$*$*$**!!{{{=",
+";'>!=&..*.*.$$$$$$$$$$$$$$!;!!=!",
+">>>>!{.....$.@+@@@$+$+$+$$;!;!!=",
+";''>>=...++@+++++@@++...++;!;;;;",
+";>'';;.++@@+.+..+++++..+++>;;===",
+";;;>>>+++@++..++.+++++++++>;;===",
+"==;;;>%+@+@++.......++++@#>>;===",
+"=;;>>>=+@+@@+.........++@=''>===",
+";;>>'''#@@+++...........#>'>';==",
+";;>>'''^@@@++..........+=''>>>>;",
+";;;>''''=@++++......+.+&>>''>>;;",
+"=;;>>'>;>=#.++++.....#&;>>'''''=",
+"%!;;>;;===;%#++++++#&;;;;>'''''%",
+"@;;;;;;=&==>;;>;>>>'>>;;>''''''@",
+" &=!;;==&&======>>''>>;>>'''''& ",
+" .;;;>;==&===&=;;>''';;>'''''>. ",
+" @;>>>;=&&==&=;>'>'>>>''''''@ ",
+" .&>>==;==&=&=>'>>>>;>'''{. ",
+" @%======&&=;>'>'>>>!%@ "};
diff --git a/test/porsche.xpm b/test/pixmaps/porsche.xpm
index be33073ff..be33073ff 100644
--- a/test/porsche.xpm
+++ b/test/pixmaps/porsche.xpm
diff --git a/test/porsche1.xpm b/test/pixmaps/porsche1.xpm
index cb53d0e4b..cb53d0e4b 100644
--- a/test/porsche1.xpm
+++ b/test/pixmaps/porsche1.xpm
diff --git a/test/pixmaps/red.xpm b/test/pixmaps/red.xpm
new file mode 100644
index 000000000..69cdddeb0
--- /dev/null
+++ b/test/pixmaps/red.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * red_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #2D0001",
+"+ c #440000",
+"@ c #850000",
+"# c #A20000",
+"$ c #AC0001",
+"% c #B70000",
+"& c #C30000",
+"* c #D10000",
+"= c #AB1111",
+"- c #BF0C10",
+"; c #DD0000",
+"> c #CD191B",
+", c #BB2222",
+"' c #B53A39",
+") c #CF2F30",
+"! c #C33738",
+"~ c #C34746",
+"{ c #E14548",
+"] c #D44D4C",
+"^ c #CC5554",
+"/ c #E25858",
+"( c #DB6161",
+"_ c #D16867",
+": c #E96A6B",
+"< c #E27373",
+"[ c #DA7D7E",
+"} c #EE8283",
+"| c #DD8D8C",
+"1 c #EF9191",
+"2 c #F09D9B",
+"3 c #E9A3A2",
+" +@#&%%%%%&&&&%%%&&&#@+ ",
+" .#*):1333333333333332(!$#. ",
+" +&><22223333332333333333[,%+ ",
+" .&)11111111122111233333333|)*. ",
+" #>}}1}}}}1}}|111}}}||[||||||># ",
+"+%/<<<}}:}<}}[<[}}}}}}[[[|||[(&+",
+"@)_<<<:<::<<_<<<<:::<<<[[[[[[[)@",
+"#)(((/(:::(_____<:::::(____[__!#",
+"%{^](//^^(^^^_^^((///:/(^^_^__^&",
+"%~]]]]]~~~^~^~^^~///{/]^^^~^_^^%",
+"$!!!!!]'~'~~~~~~~{{{{{{{~]~~'^^#",
+"%!){)!''''''!!!!!!!){){!!'~''''#",
+"%,),,,!!,',!,)))))))))))!!!''''#",
+"&>-,,====,=,,>>>>>>)>>>)),,,@''#",
+"%>--=====-->>>>>>>>>>)->>-),,==%",
+"&&&-$==#--&**&&&&&&&---%-------$",
+"&**&&%$%&&*&&&&-&&>&%%-%&&%$$--%",
+"%&*&&%%&&**&&-%%%&*&&%%&%&&%%%$$",
+"%%&&&%&&***&%$%%%%&&%%%&&&&%%$$$",
+"$%%%&&**;**&%$$$$$%%%%&***&&%$##",
+"$%%&&**;****&$$###$%%$%&&***&%%$",
+"%%&&**;;;;**%%#####$$%%%**&*&%$%",
+"%&&&*;*;*;*&%%$####$#$%%&***&&%%",
+"&%%&******&&%%%%$###$%%&&&&*&&&&",
+"#&%&&&&&&&&&&&&&&%%%%&%&&&***&&$",
+"@%%$&&$$$$%%&&&&&&&&%%&%%****;*@",
+"+%%%%&$###$%&%&&&&&**%%&%&*;*;*+",
+" @%$&%%###$$$%$%%&**&&&%**;**&# ",
+" .&%%&&$#######%&&***%&&**;**&. ",
+" +&*&&%$##$##$%&&**&&%&*;*;*+ ",
+" .#&&%%%#$###%&&&&&&&&*;*#. ",
+" +@#$$%%###$&&*&&&&&#@+ "};
diff --git a/test/pixmaps/red_bomb.xpm b/test/pixmaps/red_bomb.xpm
new file mode 100644
index 000000000..b36f5745d
--- /dev/null
+++ b/test/pixmaps/red_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * red_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #340001",
+"+ c #3C0100",
+"@ c #410003",
+"# c #440000",
+"$ c #760000",
+"% c #4E1414",
+"& c #A60000",
+"* c #B70000",
+"= c #5F2928",
+"- c #C30000",
+"; c #CE0000",
+"> c #D90000",
+", c #BE1315",
+"' c #653A3B",
+") c #733C3C",
+"! c #B92223",
+"~ c #D31A1D",
+"{ c #744A49",
+"] c #AE3232",
+"^ c #CD3B3B",
+"/ c #875B5B",
+"( c #C04848",
+"_ c #9A6E6E",
+": c #D35A5A",
+"< c #C57170",
+"[ c #DF6D6D",
+"} c #D97D7D",
+"| c #ED8181",
+"1 c #DD8D8C",
+"2 c #EF9191",
+"3 c #EAA2A1",
+" #$&-*****----***---&$# ",
+" .&;~[2333333333333331[^*&. ",
+" @*~|23233333333333333333}!*# ",
+" .-~222222222332223333333331^-. ",
+" &,|||||||22||222|2|11}111112~& ",
+"@-:|||||||[||}}|||||||}}1<11}:-#",
+"$~[[[[[[[[[}_______<}|[}}<<}<},$",
+"&^:[::[::[</_/______/<<[[[}<<|(&",
+"-(:::^:^[{/////////////<:::::[(-",
+",^^^:^:({{{{{{{{{{{//{/{(:::(::*",
+"&^^^^^:){''{{{{{{{)))))/)((((((&",
+"*^^^^^]'''''''''')'){)))'(]((](&",
+"*,^~!!==''.'===='=)=)='=')!]]]]&",
+"-~,,!!%%.==%=%==%=%=====%=^!]]]&",
+"*~,,&!.%%.%%%%%%%%%%%%%%%%,,,,!*",
+"---~&&...%+%@%@#%#%#%%%%%%,,&,,&",
+"-;;;**%++%+###@@@@#@@@@###***&**",
+"*-;--*.#####@+@#@#@#@@++#@*****&",
+"**-*--######@+.@@@@#++@##@-**&*&",
+"&**-*-$####++.++.+++@+###$--**&&",
+"***-;;&######+.+...++++##&;;-**&",
+"&*--;>>$####@+....+.+.++$;;;-*&*",
+"**--;>>;####@@+.+...@..#&;;----*",
+"***-;;;>*##+++@@.+++.@@&--;;;-*-",
+"&-*-;;-*;*$+#@##+@.@+$&*--;;;;-&",
+"$*******&*&&$###@@+$&****-;>>>>$",
+"#*****&&&&&&***------*-*-;;>>>;#",
+" &*****&&&&*&***---;;-*-;;>;;;& ",
+" .*-*-*&&&&&&&&&-;;;--*-;>>>;-. ",
+" #*;--*&&&&&&&*--;;---->;>>;# ",
+" .&--*&*&&&&&*-;------->>&. ",
+" #$&***&&&&&--;-----*$@ "};
diff --git a/test/srs.xbm b/test/pixmaps/srs.xbm
index b6a9c7440..b6a9c7440 100644
--- a/test/srs.xbm
+++ b/test/pixmaps/srs.xbm
diff --git a/test/sudoku.xbm b/test/pixmaps/sudoku.xbm
index 68b37d1f2..68b37d1f2 100644
--- a/test/sudoku.xbm
+++ b/test/pixmaps/sudoku.xbm
diff --git a/test/tile.xpm b/test/pixmaps/tile.xpm
index ddc656eff..ddc656eff 100644
--- a/test/tile.xpm
+++ b/test/pixmaps/tile.xpm
diff --git a/test/white_1.xbm b/test/pixmaps/white_1.xbm
index 0ade331f6..0ade331f6 100644
--- a/test/white_1.xbm
+++ b/test/pixmaps/white_1.xbm
diff --git a/test/white_2.xbm b/test/pixmaps/white_2.xbm
index b916d1226..b916d1226 100644
--- a/test/white_2.xbm
+++ b/test/pixmaps/white_2.xbm
diff --git a/test/white_3.xbm b/test/pixmaps/white_3.xbm
index 9b721d25b..9b721d25b 100644
--- a/test/white_3.xbm
+++ b/test/pixmaps/white_3.xbm
diff --git a/test/white_4.xbm b/test/pixmaps/white_4.xbm
index 189f497a8..189f497a8 100644
--- a/test/white_4.xbm
+++ b/test/pixmaps/white_4.xbm
diff --git a/test/whiteking_1.xbm b/test/pixmaps/whiteking_1.xbm
index 2a3fd088b..2a3fd088b 100644
--- a/test/whiteking_1.xbm
+++ b/test/pixmaps/whiteking_1.xbm
diff --git a/test/whiteking_2.xbm b/test/pixmaps/whiteking_2.xbm
index 9f2e24d23..9f2e24d23 100644
--- a/test/whiteking_2.xbm
+++ b/test/pixmaps/whiteking_2.xbm
diff --git a/test/whiteking_3.xbm b/test/pixmaps/whiteking_3.xbm
index 95b017d4e..95b017d4e 100644
--- a/test/whiteking_3.xbm
+++ b/test/pixmaps/whiteking_3.xbm
diff --git a/test/whiteking_4.xbm b/test/pixmaps/whiteking_4.xbm
index 6257a5db4..6257a5db4 100644
--- a/test/whiteking_4.xbm
+++ b/test/pixmaps/whiteking_4.xbm
diff --git a/test/pixmaps/yellow.xpm b/test/pixmaps/yellow.xpm
new file mode 100644
index 000000000..4bdd15e02
--- /dev/null
+++ b/test/pixmaps/yellow.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * yellow_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #2A4602",
+"+ c #435B00",
+"@ c #818600",
+"# c #969900",
+"$ c #A3A400",
+"% c #B0AF00",
+"& c #B4B425",
+"* c #BAB800",
+"= c #BABE02",
+"- c #B4B73F",
+"; c #C0C300",
+"> c #C7C905",
+", c #C6C821",
+"' c #CBCC00",
+") c #CAC835",
+"! c #C9C943",
+"~ c #D1D201",
+"{ c #C7C94E",
+"] c #CACB5D",
+"^ c #D8D700",
+"/ c #D9DB3C",
+"( c #D5D67B",
+"_ c #DADB6D",
+": c #DFDE57",
+"< c #DFDF64",
+"[ c #D9DB8A",
+"} c #EAEB76",
+"| c #E7E7A1",
+"1 c #EBEC82",
+"2 c #EEED91",
+"3 c #EEEF9C",
+" +@$;**%**==;=*%*=;;$@+ ",
+" .#'/<2||||||||||||||[_)*#. ",
+" +>^}32233||3|333||||||||(*=+ ",
+" .>'2222222233322223||||||||,'. ",
+" #,1111111112222212122[[[[[[[^# ",
+"+*:_111}}}}1_1(111}1111([[[[[_'+",
+"@,___}}}}}}_____1}}}}}_(((((((,@",
+"$/<<:<<<<<__](]]<}:}<}__](](](!$",
+"*:!<!::::{{]{]]{<:::::::<{]]]]{*",
+"*!!!:!!{{{]{{{{{!}///:::!<{]]]]*",
+"%!))/!!----{!!!!!::///::!!!{---$",
+"%))!))-&-&-&!&!!))/////)!!!!---$",
+"*,,)&*&&&&&&&),))))///,))&&----$",
+"=,,*&&$&&&&&)','''',,',,)))*&$&%",
+"=;,*&$$%%*>>'''/,/'),,'>>,)*&&&%",
+"*>';*&$&*;''',>;;>>'****,*****%%",
+"*'~'**%%;>~'>,;***''****;;******",
+"*>'>;***>'^****;'*>>;***;,**%*%%",
+"%*;*;*''^'~>*%%*****,*;*'>,*%%$%",
+"%****''^~^~;*%%%%%*****''''>=%%$",
+"%**>;'^^^^^'*%$$$$%%%**>''''*%%%",
+"%**>^^^^^^~^*%%$#$$%%%**>'~''=%%",
+"*;*>'^^^^^~;*%%$$$#$$%**'>~';==*",
+";***'^~'^~;;****%%%%%****>'';;*=",
+"%**;;>;**;;*;;;***%***;*;;'^~~>%",
+"@***,**%%****>''>;*;*;***>^~^~~@",
+"+*****%$#%%*****;>>'';***'^~^^~+",
+" #*****$$#%%%%****'''>*;'^~~~~# ",
+" .%;*,;%$$$$$$%**~^'>**>~^^^~>. ",
+" +*>'*%%$%%$$$**>'^';;*~^^~>+ ",
+" .#';*%$$%$$$*;';>>*>;~~^$. ",
+" +@#%**%$$$%>*>>>'*>$@+ "};
diff --git a/test/pixmaps/yellow_bomb.xpm b/test/pixmaps/yellow_bomb.xpm
new file mode 100644
index 000000000..a6735b2a0
--- /dev/null
+++ b/test/pixmaps/yellow_bomb.xpm
@@ -0,0 +1,67 @@
+/* XPM */
+static char * yellow_bomb_xpm[] = {
+"32 32 32 1",
+" c #000100",
+". c #393900",
+"+ c #2A4602",
+"@ c #434101",
+"# c #474900",
+"$ c #435B00",
+"% c #515116",
+"& c #5B5C20",
+"* c #676800",
+"= c #666635",
+"- c #7C7B50",
+"; c #848323",
+"> c #838442",
+", c #8E9200",
+"' c #8A8A5F",
+") c #A6A600",
+"! c #9A9B6D",
+"~ c #B2B102",
+"{ c #AFB132",
+"] c #BAB900",
+"^ c #C1C300",
+"/ c #C6C42C",
+"( c #CFD000",
+"_ c #C7C84F",
+": c #CBCA40",
+"< c #CCCC67",
+"[ c #D7D984",
+"} c #E0E167",
+"| c #E0E07A",
+"1 c #E6E6A0",
+"2 c #EEEE88",
+"3 c #EDED97",
+" $,)]]]~]]]]^]]~]]^^),$ ",
+" +,(/}2111111111111113</~,+ ",
+" $((}33333113133311111111[]^$ ",
+" +^(233223233333233111111111/(+ ",
+" ,^2222222222332222233[[1[[1[() ",
+"$^}2|2}22}22|||22222}22[[[[[[}^$",
+",^}}}|}}}}}[!!'!!!![<|}|<[[[[[^,",
+"):_}}}}}}}!''''''!''!!<|<<<<<<_)",
+"^:}:}}:}<'''-''''''''!'<}_}<<<_]",
+"]_:}/:}{-=--------'>'>--_}_____]",
+"~::/:/_>=-=--=--=--=---->____<<)",
+"~:///:;=============>===={:{{{{)",
+"]^///:>%=.=.========&====>{:{{{,",
+"^^^]~{.=.==.=%%%&&&&&=&&&%/~{{{~",
+"]^^/))....=.%%=%%%%&%%%%%%/~~~~~",
+"^^^^/{.=...%@@@@%#%@%@%%%%]/~/~~",
+"^((^]~...%%@@@@.@@@@@@.@@@]]]~]]",
+"]^((]/..@@@%..@@@@@@@.@.@@]~~]~~",
+"~]]^]]@%@#@@...@@@@@@.@@@@^]~))~",
+")~]]^^;@##@#@........@@@#;^^]~))",
+"~~]]^()#@##@@......@..@@@)((^]~)",
+"~]^^(((*####@..........@*(((^~~]",
+"]]^^(((^##@@@..........@)^^(^]]]",
+"/]]((((()##@..........@)(((((^]]",
+")]~]((^^])*@@@@.....@*,]]^^((((~",
+",]]]]]]~~~~,*@@#@@@*,]]]^^((((^,",
+"$~~]/]~)))~]]]]]^^(((^]]^(((((($",
+" ,]~]~~),))~~~~]]^((^^]]((((((, ",
+" +]]^^^])))))))~^^(((]]^((((((+ ",
+" $^^^]~)))))))]^(((^^](((((($ ",
+" +,(^]~)~))))~]^^^^^/^((({+ ",
+" $,,~]~)),)~^^(^(^^^/,$ "};
diff --git a/test/sudoku.cxx b/test/sudoku.cxx
index e0b926ded..d09f915aa 100644
--- a/test/sudoku.cxx
+++ b/test/sudoku.cxx
@@ -45,7 +45,7 @@
#ifdef WIN32
# include "sudokurc.h"
#elif !defined(__APPLE__)
-# include "sudoku.xbm"
+# include "pixmaps/sudoku.xbm"
#endif // WIN32
// Audio headers...
diff --git a/test/tiled_image.cxx b/test/tiled_image.cxx
index 644cfad38..90feef767 100644
--- a/test/tiled_image.cxx
+++ b/test/tiled_image.cxx
@@ -34,7 +34,7 @@
#include <stdlib.h>
#include <math.h>
-#include "tile.xpm"
+#include "pixmaps/tile.xpm"
Fl_Button *b;
Fl_Window *w;
diff --git a/vcnet/blocks.vcproj b/vcnet/blocks.vcproj
new file mode 100644
index 000000000..6ec12614f
--- /dev/null
+++ b/vcnet/blocks.vcproj
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="blocks"
+ ProjectGUID="{301A1EE3-8AF8-4EB8-9004-473B74E4083C}"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\blocks_"
+ IntermediateDirectory=".\blocks_"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\blocks_/blocks.pch"
+ AssemblerListingLocation=".\blocks_/"
+ ObjectFile=".\blocks_/"
+ ProgramDataBaseFileName=".\blocks_/"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="wsock32.lib comctl32.lib winmm.lib"
+ OutputFile="../test/blocksd.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\lib"
+ IgnoreDefaultLibraryNames="libcd"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\blocks_/blocksd.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\blocks_/blocks.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="4"
+ InlineFunctionExpansion="2"
+ FavorSizeOrSpeed="2"
+ AdditionalIncludeDirectories=".,.."
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;WIN32_LEAN_AND_MEAN;VC_EXTRA_LEAN;WIN32_EXTRA_LEAN"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderFile=".\Release/blocks.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ SuppressStartupBanner="TRUE"
+ CompileAs="0"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="wsock32.lib comctl32.lib winmm.lib"
+ OutputFile="../test/blocks.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="..\lib"
+ IgnoreDefaultLibraryNames="libc"
+ ProgramDatabaseFile=".\Release/blocks.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/blocks.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath="..\test\blocks.cxx">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/visualc/blocks.dsp b/visualc/blocks.dsp
new file mode 100644
index 000000000..58c0e5586
--- /dev/null
+++ b/visualc/blocks.dsp
@@ -0,0 +1,97 @@
+# Microsoft Developer Studio Project File - Name="blocks" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=blocks - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "blocks.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "blocks.mak" CFG="blocks - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "blocks - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "blocks - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "blocks - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MD /GX /Os /Ob2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D "WIN32_EXTRA_LEAN" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 winmm.lib fltk.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libcd" /out:"../test/blocks.exe" /libpath:"..\lib"
+# SUBTRACT LINK32 /pdb:none /incremental:yes
+
+!ELSEIF "$(CFG)" == "blocks - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "blocks_"
+# PROP BASE Intermediate_Dir "blocks_"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "blocks_"
+# PROP Intermediate_Dir "blocks_"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /D "VC_EXTRA_LEAN" /D "WIN32_EXTRA_LEAN" /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 winmm.lib fltkd.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd" /out:"../test/blocksd.exe" /pdbtype:sept /libpath:"..\lib"
+# SUBTRACT LINK32 /pdb:none /incremental:no
+
+!ENDIF
+
+# Begin Target
+
+# Name "blocks - Win32 Release"
+# Name "blocks - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\test\blocks.cxx
+# End Source File
+# End Target
+# End Project