OSDN Git Service

Added boolean forceSquareOutput for Settings. This can be used to make
authorIndiumIndeed <jarmo.kukkola@gmail.com>
Fri, 25 Jan 2013 15:57:38 +0000 (17:57 +0200)
committerIndiumIndeed <jarmo.kukkola@gmail.com>
Fri, 25 Jan 2013 15:57:38 +0000 (17:57 +0200)
sure that the output images are squares. My main motivation: In OpenGL
ES 1.0, mipmaps require square textures.

extensions/gdx-tools/src/com/badlogic/gdx/tools/imagepacker/TexturePacker2.java

index d20718c..8b1fa5c 100644 (file)
@@ -12,7 +12,8 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
  * See the License for the specific language governing permissions and\r
  * limitations under the License.\r
- ******************************************************************************/
+ ******************************************************************************/\r
+\r
 package com.badlogic.gdx.tools.imagepacker;\r
 \r
 import java.awt.Color;\r
@@ -103,6 +104,14 @@ public class TexturePacker2 {
                        width = Math.max(settings.minWidth, width);\r
                        height = Math.max(settings.minHeight, height);\r
 \r
+                       if (settings.forceSquareOutput) {\r
+                               if (width > height) {\r
+                                       height = width;\r
+                               } else {\r
+                                       width = height;\r
+                               }\r
+                       }\r
+\r
                        File outputFile;\r
                        while (true) {\r
                                outputFile = new File(outputDir, imageName + (fileIndex++ == 0 ? "" : fileIndex) + "." + settings.outputFormat);\r
@@ -131,8 +140,10 @@ public class TexturePacker2 {
                                        int imageHeight = image.getHeight();\r
                                        // Copy corner pixels to fill corners of the padding.\r
                                        g.drawImage(image, rectX - amountX, rectY - amountY, rectX, rectY, 0, 0, 1, 1, null);\r
-                                       g.drawImage(image, rectX + imageWidth, rectY - amountY, rectX + imageWidth + amountX, rectY, imageWidth - 1, 0, imageWidth, 1, null);\r
-                                       g.drawImage(image, rectX - amountX, rectY + imageHeight, rectX, rectY + imageHeight + amountY, 0, imageHeight - 1, 1, imageHeight, null);\r
+                                       g.drawImage(image, rectX + imageWidth, rectY - amountY, rectX + imageWidth + amountX, rectY, imageWidth - 1, 0,\r
+                                               imageWidth, 1, null);\r
+                                       g.drawImage(image, rectX - amountX, rectY + imageHeight, rectX, rectY + imageHeight + amountY, 0, imageHeight - 1,\r
+                                               1, imageHeight, null);\r
                                        g.drawImage(image, rectX + imageWidth, rectY + imageHeight, rectX + imageWidth + amountX, rectY + imageHeight\r
                                                + amountY, imageWidth - 1, imageHeight - 1, imageWidth, imageHeight, null);\r
                                        // Copy edge pixels into padding.\r
@@ -335,6 +346,7 @@ public class TexturePacker2 {
                public boolean rotation;\r
                public int minWidth = 16, minHeight = 16;\r
                public int maxWidth = 1024, maxHeight = 1024;\r
+               public boolean forceSquareOutput = false;\r
                public boolean stripWhitespaceX, stripWhitespaceY;\r
                public int alphaThreshold;\r
                public TextureFilter filterMin = TextureFilter.Nearest, filterMag = TextureFilter.Nearest;\r
@@ -439,4 +451,4 @@ public class TexturePacker2 {
 \r
                process(input, output, packFileName);\r
        }\r
-}
\ No newline at end of file
+}\r