private void writePackFile(File outputDir, Array<Page> pages, String packFileName) throws IOException { if (!packFileName.endsWith(".pack")) packFileName = packFileName + ".pack"; File packFile = new File(outputDir, packFileName); if (packFile.exists() && false) { // Make sure there aren't duplicate names. TextureAtlasData textureAtlasData = new TextureAtlasData(new FileHandle(packFile), new FileHandle(packFile), false); for (Page page : pages) { for (Rect rect : page.outputRects) { String rectName = Rect.getAtlasName(rect.name, settings.flattenPaths); for (Region region : textureAtlasData.getRegions()) { if (region.name.equals(rectName)) { throw new GdxRuntimeException( "A region with the name \"" + rectName + "\" has already been packed: " + rect.name); } } } } } FileWriter writer = new FileWriter(packFile, true); for (Page page : pages) { writer.write("\n" + page.imageName + "\n"); writer.write("format: " + settings.format + "\n"); writer.write("filter: " + settings.filterMin + "," + settings.filterMag + "\n"); writer.write("repeat: " + getRepeatValue() + "\n"); for (Rect rect : page.outputRects) { // System.out.println("rect.name = " + rect.name); writeRect(writer, page, rect, rect.name); for (Alias alias : rect.aliases) { Rect aliasRect = new Rect(); aliasRect.set(rect); alias.apply(aliasRect); writeRect(writer, page, aliasRect, alias.name); } } } writer.close(); }
private void writeRect(FileWriter writer, Page page, Rect rect, String name) throws IOException { writer.write(Rect.getAtlasName(name, settings.flattenPaths) + "\n"); writer.write(" rotate: " + rect.rotated + "\n"); writer.write( " xy: " + (page.x + rect.x) + ", " + (page.y + page.height - rect.height - rect.y) + "\n"); writer.write(" size: " + rect.regionWidth + ", " + rect.regionHeight + "\n"); if (rect.splits != null) { writer.write( " split: " // + rect.splits[0] + ", " + rect.splits[1] + ", " + rect.splits[2] + ", " + rect.splits[3] + "\n"); } if (rect.pads != null) { if (rect.splits == null) writer.write(" split: 0, 0, 0, 0\n"); writer.write( " pad: " + rect.pads[0] + ", " + rect.pads[1] + ", " + rect.pads[2] + ", " + rect.pads[3] + "\n"); } writer.write(" orig: " + rect.originalWidth + ", " + rect.originalHeight + "\n"); writer.write( " offset: " + rect.offsetX + ", " + (rect.originalHeight - rect.regionHeight - rect.offsetY) + "\n"); writer.write(" index: " + rect.index + "\n"); }