diff -u -r image.orig/SConscript image/SConscript
--- image.orig/SConscript	2008-08-24 02:37:18.000000000 +0200
+++ image/SConscript	2009-03-06 21:12:25.000000000 +0100
@@ -29,6 +29,48 @@
                          32e.png 33c.png 34c.png 37e.png 38c.png
                          41cv.png""")
 
+voyager_base_images = Split ("""11c_base.png 12c_base.png 15c_base.png 16c_base.png""")
+
+voyager_segment_image = Split ("""voyager_segments.png""")
+
+base_images = voyager_base_images       # some day there may be others
+
+segment_images = voyager_segment_image  # some day there may be others
+
+#-----------------------------------------------------------------------------
+# convert PNG files to PNM for manipulation
+#-----------------------------------------------------------------------------
+
+PNG2PNM = Builder (action = "/opt/local/bin/pngtopnm $SOURCE >$TARGET",
+                   suffix = ".pnm",
+                   src_suffix = ".png")
+
+env.Append (BUILDERS = { 'PNG2PNM' : PNG2PNM })
+
+voyager_pnm_images = [env.PNG2PNM(src) for src in voyager_base_images]
+
+voyager_segment_pnm = env.PNG2PNM (voyager_segment_image)
+
+#-----------------------------------------------------------------------------
+# build Voyager PNG images from the PNM pieces (base image + segment image)
+#-----------------------------------------------------------------------------
+
+vimg_env = env.Clone ()
+
+def VPNM2PNG_Emitter (target, source, env):
+    source.append (voyager_segment_pnm)
+    return (target, source)
+
+VPNM2PNG = Builder (action = "/opt/local/bin/pnmcat -lr $SOURCES | /opt/local/bin/pnmtopng -compression 9 >$TARGET",
+                   suffix = ".png",
+                   src_suffix = "_base.pnm",
+                   emitter = VPNM2PNG_Emitter)
+
+vimg_env.Append (BUILDERS = { 'VPNM2PNG' : VPNM2PNG })
+
+
+derived_images = [vimg_env.VPNM2PNG(src) for src in voyager_pnm_images]
+
 #-----------------------------------------------------------------------------
 # Export 41CV image for use in building Nonpareil executable
 #-----------------------------------------------------------------------------
@@ -36,18 +78,24 @@
 env.Append (IMAGE_41CV = File ('41cv.png'))
 
 #-----------------------------------------------------------------------------
+# Default targets
+#-----------------------------------------------------------------------------
+
+Default (derived_images)
+
+#-----------------------------------------------------------------------------
 # Install image files
 #-----------------------------------------------------------------------------
 
 env.Alias (target = 'install',
            source = env.Install (dir = env ['destdir'] + env ['libdir'],
-                                 source = unmod_images))
+                                 source = unmod_images + derived_images))
 
 #-----------------------------------------------------------------------------
 # source tarball
 #-----------------------------------------------------------------------------
 
-dist_files = ['SConscript'] + unmod_images
+dist_files = ['SConscript'] + unmod_images + base_images + segment_images
 
 env.Distribute (source_release_dir, dist_files)
 
@@ -59,4 +107,4 @@
 
 if env ['target'] == 'win32':
     Import ('win32_bin_dist_dir')
-    Install (win32_bin_dist_dir, unmod_images)
+    Install (win32_bin_dist_dir, unmod_images + derived_images)
Only in image: voyager_segments.png
