It's not a perfect solution, but make it so we can call the tile trimming task and
not actually write out new image to a file if we don't need to. This cuts my tileset building from 42 seconds to 22 when no files have changed (as opposed to 4 when it was skipping it altogether, but winding up with a hosed tsbundles.dat), so it's at least a decent bit better. git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@391 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
@@ -87,25 +87,28 @@ public class DirectoryTileSetBundler extends TileSetBundler
|
||||
|
||||
try {
|
||||
// create a trimmed object tileset, which will
|
||||
// write the trimmed tileset image to the destination
|
||||
// output stream
|
||||
// write the trimmed tileset image to the destination output stream
|
||||
File outFile = new File(target, imagePath);
|
||||
FileOutputStream fout = null;
|
||||
|
||||
if (outFile.lastModified() > newestMod) {
|
||||
// Our file's newer than the newest bundle mod - up to date.
|
||||
// So don't actually do anything
|
||||
|
||||
// FIXME: We can't just skip it, since we would've normally trimmed it,
|
||||
// so we need to get an appropriate TrimmedObjectTileSet added to our
|
||||
// bundle in place of this old ObjectTileSet.
|
||||
//continue;
|
||||
// TODO: Ideally, we'd like to skip re-trimming altogether, since that's
|
||||
// expensive, but for the moment, we're at least doing half as much by
|
||||
// not writing out the trimmed image.
|
||||
|
||||
} else {
|
||||
// It's changed, so let's open the file & do all that jazz
|
||||
outFile.getParentFile().mkdirs();
|
||||
fout = new FileOutputStream(outFile);
|
||||
}
|
||||
outFile.getParentFile().mkdirs();
|
||||
FileOutputStream fout = new FileOutputStream(outFile);
|
||||
|
||||
TrimmedObjectTileSet tset =
|
||||
TrimmedObjectTileSet.trimObjectTileSet(
|
||||
(ObjectTileSet)set, fout, "png");
|
||||
TrimmedObjectTileSet.trimObjectTileSet((ObjectTileSet)set, fout, "png");
|
||||
tset.setImagePath(imagePath);
|
||||
// replace the original set with the trimmed
|
||||
// tileset in the tileset bundle
|
||||
// replace the original set with the trimmed tileset in the tileset bundle
|
||||
bundle.addTileSet(tileSetId, tset);
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -151,11 +151,13 @@ public class TileSetTrimmer
|
||||
xoff += tb.width;
|
||||
}
|
||||
|
||||
// write out trimmed image
|
||||
if (imgFormat == null || FastImageIO.FILE_SUFFIX.equals(imgFormat)) {
|
||||
FastImageIO.write(image, destImage);
|
||||
} else {
|
||||
ImageIO.write(image, imgFormat, destImage);
|
||||
if (destImage != null) {
|
||||
// write out trimmed image
|
||||
if (imgFormat == null || FastImageIO.FILE_SUFFIX.equals(imgFormat)) {
|
||||
FastImageIO.write(image, destImage);
|
||||
} else {
|
||||
ImageIO.write(image, imgFormat, destImage);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user