コード例 #1
0
  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();
  }
コード例 #2
0
  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");
  }