Allow a parameter to TileSetBundlerTask to keep the pngs in the bundle instead of converting to raw and trimming them.

git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@931 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
Mike Thomas
2010-07-01 22:14:06 +00:00
parent 59ba7edcaa
commit 941a6a83b2
2 changed files with 34 additions and 5 deletions
@@ -132,6 +132,18 @@ public class TileSetBundler
public TileSetBundler (File configFile)
throws IOException
{
this(configFile, false);
}
/**
* Constructs a tileset bundler with the specified bundler config
* file and whether to keep pngs as-is or if not, re-encode them.
*/
public TileSetBundler (File configFile, boolean keepRawPngs)
throws IOException
{
_keepRawPngs = keepRawPngs;
// we parse our configuration with a digester
Digester digester = new Digester();
@@ -340,7 +352,7 @@ public class TileSetBundler
File target, TileSetBundle bundle, ImageProvider improv, String imageBase, long newestMod)
throws IOException
{
return createBundleJar(target, bundle, improv, imageBase);
return createBundleJar(target, bundle, improv, imageBase, _keepRawPngs);
}
/**
@@ -353,7 +365,8 @@ public class TileSetBundler
* ObjectTileSet tilesets.
*/
public static boolean createBundleJar (
File target, TileSetBundle bundle, ImageProvider improv, String imageBase)
File target, TileSetBundle bundle, ImageProvider improv, String imageBase,
boolean keepRawPngs)
throws IOException
{
// now we have to create the actual bundle file
@@ -383,7 +396,7 @@ public class TileSetBundler
}
// if this is an object tileset, trim it
if (set instanceof ObjectTileSet) {
if (!keepRawPngs && (set instanceof ObjectTileSet)) {
// set the tileset up with an image provider; we
// need to do this so that we can trim it!
set.setImageProvider(improv);
@@ -418,7 +431,7 @@ public class TileSetBundler
File ifile = new File(imageBase, imagePath);
try {
BufferedImage image = ImageIO.read(ifile);
if (FastImageIO.canWrite(image)) {
if (!keepRawPngs && FastImageIO.canWrite(image)) {
imagePath = adjustImagePath(imagePath);
jar.putNextEntry(new JarEntry(imagePath));
set.setImagePath(imagePath);
@@ -475,6 +488,7 @@ public class TileSetBundler
int didx = imagePath.lastIndexOf(".");
return ((didx == -1) ? imagePath :
imagePath.substring(0, didx)) + ".raw";
}
/** Used to parse our configuration. */
@@ -498,4 +512,7 @@ public class TileSetBundler
/** The digester we use to parse bundle descriptions. */
protected Digester _digester;
/** Whether we should keep pngs as-is rather than re-encoding. */
protected boolean _keepRawPngs;
}
@@ -66,6 +66,15 @@ public class TileSetBundlerTask extends Task
_filesets.add(set);
}
/**
* Note whether we are supposed to use the raw png files directly in the bundle or try to
* re-encode them.
*/
public void setKeepRawPngs (boolean keep)
{
_keepRawPngs = keep;
}
/**
* Performs the actual work of the task.
*/
@@ -137,7 +146,7 @@ public class TileSetBundlerTask extends Task
protected TileSetBundler createBundler ()
throws IOException
{
return new TileSetBundler(_config);
return new TileSetBundler(_config, _keepRawPngs);
}
/**
@@ -161,4 +170,7 @@ public class TileSetBundlerTask extends Task
/** A list of filesets that contain tileset bundle definitions. */
protected ArrayList<FileSet> _filesets = Lists.newArrayList();
/** Whether we should keep raw pngs rather than reencoding them in the bundle. */
protected boolean _keepRawPngs;
}