You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by eb...@apache.org on 2013/11/26 11:50:21 UTC

svn commit: r1545605 - in /commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging: formats/png/PngWriter.java util/UnicodeUtils.java

Author: ebourg
Date: Tue Nov 26 10:50:21 2013
New Revision: 1545605

URL: http://svn.apache.org/r1545605
Log:
Merged UnicodeUtils into PngWriter

Removed:
    commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/util/UnicodeUtils.java
Modified:
    commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java

Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java
URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java?rev=1545605&r1=1545604&r2=1545605&view=diff
==============================================================================
--- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java (original)
+++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/png/PngWriter.java Tue Nov 26 10:50:21 2013
@@ -20,6 +20,7 @@ import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -34,7 +35,6 @@ import org.apache.commons.imaging.palett
 import org.apache.commons.imaging.palette.SimplePalette;
 import org.apache.commons.imaging.util.Debug;
 import org.apache.commons.imaging.util.ParamMap;
-import org.apache.commons.imaging.util.UnicodeUtils;
 
 public class PngWriter {
     private final boolean verbose;
@@ -130,14 +130,11 @@ public class PngWriter {
 
     private void writeChunkiTXt(final OutputStream os, final PngText.Itxt text)
             throws IOException, ImageWriteException {
-        if (!UnicodeUtils.isValidISO_8859_1(text.keyword)) {
-            throw new ImageWriteException(
-                    "Png tEXt chunk keyword is not ISO-8859-1: " + text.keyword);
-        }
-        if (!UnicodeUtils.isValidISO_8859_1(text.languageTag)) {
-            throw new ImageWriteException(
-                    "Png tEXt chunk language tag is not ISO-8859-1: "
-                            + text.languageTag);
+        if (!isValidISO_8859_1(text.keyword)) {
+            throw new ImageWriteException("Png tEXt chunk keyword is not ISO-8859-1: " + text.keyword);
+        }
+        if (!isValidISO_8859_1(text.languageTag)) {
+            throw new ImageWriteException("Png tEXt chunk language tag is not ISO-8859-1: " + text.languageTag);
         }
 
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -162,15 +159,13 @@ public class PngWriter {
         writeChunk(os, PngConstants.iTXt_CHUNK_TYPE.toByteArray(), baos.toByteArray());
     }
 
-    private void writeChunkzTXt(final OutputStream os, final PngText.Ztxt text)
+    private void writeChunkzTXt(final OutputStream os, final PngText.Ztxt text) 
             throws IOException, ImageWriteException {
-        if (!UnicodeUtils.isValidISO_8859_1(text.keyword)) {
-            throw new ImageWriteException(
-                    "Png zTXt chunk keyword is not ISO-8859-1: " + text.keyword);
-        }
-        if (!UnicodeUtils.isValidISO_8859_1(text.text)) {
-            throw new ImageWriteException(
-                    "Png zTXt chunk text is not ISO-8859-1: " + text.text);
+        if (!isValidISO_8859_1(text.keyword)) {
+            throw new ImageWriteException("Png zTXt chunk keyword is not ISO-8859-1: " + text.keyword);
+        }
+        if (!isValidISO_8859_1(text.text)) {
+            throw new ImageWriteException("Png zTXt chunk text is not ISO-8859-1: " + text.text);
         }
 
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -190,13 +185,11 @@ public class PngWriter {
 
     private void writeChunktEXt(final OutputStream os, final PngText.Text text)
             throws IOException, ImageWriteException {
-        if (!UnicodeUtils.isValidISO_8859_1(text.keyword)) {
-            throw new ImageWriteException(
-                    "Png tEXt chunk keyword is not ISO-8859-1: " + text.keyword);
-        }
-        if (!UnicodeUtils.isValidISO_8859_1(text.text)) {
-            throw new ImageWriteException(
-                    "Png tEXt chunk text is not ISO-8859-1: " + text.text);
+        if (!isValidISO_8859_1(text.keyword)) {
+            throw new ImageWriteException("Png tEXt chunk keyword is not ISO-8859-1: " + text.keyword);
+        }
+        if (!isValidISO_8859_1(text.text)) {
+            throw new ImageWriteException("Png tEXt chunk text is not ISO-8859-1: " + text.text);
         }
 
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -211,6 +204,16 @@ public class PngWriter {
         writeChunk(os, PngConstants.tEXt_CHUNK_TYPE.toByteArray(), baos.toByteArray());
     }
 
+    private boolean isValidISO_8859_1(final String s) {
+        try {
+            final String roundtrip = new String(s.getBytes("ISO-8859-1"), "ISO-8859-1");
+            return s.equals(roundtrip);
+        } catch (final UnsupportedEncodingException e) {
+            // should never be thrown.
+            throw new RuntimeException("Error parsing string.", e);
+        }
+    }
+    
     private void writeChunkXmpiTXt(final OutputStream os, final String xmpXml)
             throws IOException {