]> granicus.if.org Git - libjpeg-turbo/commitdiff
Allow TJCompressor and TJDecompressor to be used with a try-with-resources statement...
authorDRC <dcommander@users.sourceforge.net>
Tue, 7 Jul 2015 16:39:03 +0000 (16:39 +0000)
committerDRC <dcommander@users.sourceforge.net>
Tue, 7 Jul 2015 16:39:03 +0000 (16:39 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@1594 632fc199-4ca6-4c93-a231-07263d6284db

ChangeLog.txt
java/doc/org/libjpegturbo/turbojpeg/TJCompressor.html
java/doc/org/libjpegturbo/turbojpeg/TJDecompressor.html
java/doc/org/libjpegturbo/turbojpeg/TJTransformer.html
java/doc/org/libjpegturbo/turbojpeg/package-tree.html
java/doc/overview-tree.html
java/org/libjpegturbo/turbojpeg/TJCompressor.java
java/org/libjpegturbo/turbojpeg/TJDecompressor.java
turbojpeg-jni.c

index d9df904c40d1d0c0cba16107dc12f13d8ad1e7e5..f0c804ef7409c3d7294008dfcb025ed96fd5bb2a 100644 (file)
@@ -11,6 +11,10 @@ use of AltiVec instructions.
 [2] Added a new libjpeg API function (jpeg_skip_scanlines()) that can be used
 to partially decode a JPEG image.  See libjpeg.txt for more details.
 
+[3] The TJCompressor and TJDecompressor classes in the TurboJPEG Java API now
+implement the Closeable interface, so those classes can be used with a
+try-with-resources statement.
+
 
 1.4.1
 =====
index b7fa3db4c4e5b70c29fc86894c907f831f2fb256..88f5644395cbc4ef4ed3f4da57812eafa13b3cc9 100644 (file)
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.io.Closeable, java.lang.AutoCloseable</dd>
+</dl>
 <hr>
 <br>
 <pre>public class <span class="strong">TJCompressor</span>
-extends java.lang.Object</pre>
+extends java.lang.Object
+implements java.io.Closeable</pre>
 <div class="block">TurboJPEG compressor</div>
 </li>
 </ul>
@@ -828,10 +833,15 @@ public&nbsp;byte[]&nbsp;encodeYUV(java.awt.image.BufferedImage&nbsp;srcImage,
 <li class="blockList">
 <h4>close</h4>
 <pre>public&nbsp;void&nbsp;close()
-           throws java.lang.Exception</pre>
+           throws java.io.IOException</pre>
 <div class="block">Free the native structures associated with this compressor instance.</div>
-<dl><dt><span class="strong">Throws:</span></dt>
-<dd><code>java.lang.Exception</code></dd></dl>
+<dl>
+<dt><strong>Specified by:</strong></dt>
+<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.io.Closeable</code></dd>
+<dt><strong>Specified by:</strong></dt>
+<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.lang.AutoCloseable</code></dd>
+<dt><span class="strong">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd></dl>
 </li>
 </ul>
 <a name="finalize()">
index dc1dcbdcf9ca19107bc654dd5348c3d3a9abb5af..73859d577f1bb0d1a75881e14ef0623e715c3728 100644 (file)
 <ul class="blockList">
 <li class="blockList">
 <dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.io.Closeable, java.lang.AutoCloseable</dd>
+</dl>
+<dl>
 <dt>Direct Known Subclasses:</dt>
 <dd><a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg">TJTransformer</a></dd>
 </dl>
 <hr>
 <br>
 <pre>public class <span class="strong">TJDecompressor</span>
-extends java.lang.Object</pre>
+extends java.lang.Object
+implements java.io.Closeable</pre>
 <div class="block">TurboJPEG decompressor</div>
 </li>
 </ul>
@@ -1162,10 +1167,15 @@ public&nbsp;byte[]&nbsp;decompressToYUV(int&nbsp;flags)
 <li class="blockList">
 <h4>close</h4>
 <pre>public&nbsp;void&nbsp;close()
-           throws java.lang.Exception</pre>
+           throws java.io.IOException</pre>
 <div class="block">Free the native structures associated with this decompressor instance.</div>
-<dl><dt><span class="strong">Throws:</span></dt>
-<dd><code>java.lang.Exception</code></dd></dl>
+<dl>
+<dt><strong>Specified by:</strong></dt>
+<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.io.Closeable</code></dd>
+<dt><strong>Specified by:</strong></dt>
+<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.lang.AutoCloseable</code></dd>
+<dt><span class="strong">Throws:</span></dt>
+<dd><code>java.io.IOException</code></dd></dl>
 </li>
 </ul>
 <a name="finalize()">
index 32c92bb80ae1a4e630f18273c98a5759028953f7..8366afdadc7988166de5f1c3eb94bcc95bff1684 100644 (file)
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>java.io.Closeable, java.lang.AutoCloseable</dd>
+</dl>
 <hr>
 <br>
 <pre>public class <span class="strong">TJTransformer</span>
index 1033ee56fbe48ca319a0ff47b670642a839dda5f..cda685779233eaab9cda80a4a14c0ccf150aec66 100644 (file)
@@ -80,8 +80,8 @@
 </ul>
 </li>
 <li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJ</span></a></li>
-<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJCompressor</span></a></li>
-<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJDecompressor</span></a>
+<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJCompressor</span></a> (implements java.io.Closeable)</li>
+<li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJDecompressor</span></a> (implements java.io.Closeable)
 <ul>
 <li type="circle">org.libjpegturbo.turbojpeg.<a href="../../../org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJTransformer</span></a></li>
 </ul>
index eae18a1384ddce3634d0f2248764180a8414aa4f..c5a0ab9cbfab0c335e5295f45f80b9b72e8583fb 100644 (file)
@@ -84,8 +84,8 @@
 </ul>
 </li>
 <li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJ.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJ</span></a></li>
-<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJCompressor</span></a></li>
-<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJDecompressor</span></a>
+<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJCompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJCompressor</span></a> (implements java.io.Closeable)</li>
+<li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJDecompressor.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJDecompressor</span></a> (implements java.io.Closeable)
 <ul>
 <li type="circle">org.libjpegturbo.turbojpeg.<a href="org/libjpegturbo/turbojpeg/TJTransformer.html" title="class in org.libjpegturbo.turbojpeg"><span class="strong">TJTransformer</span></a></li>
 </ul>
index 6ec581a5dfd868def86e7fb965052d446b831442..37fd604744893b4b3f2aea3f1528553997464eef 100644 (file)
@@ -30,11 +30,12 @@ package org.libjpegturbo.turbojpeg;
 
 import java.awt.image.*;
 import java.nio.*;
+import java.io.*;
 
 /**
  * TurboJPEG compressor
  */
-public class TJCompressor {
+public class TJCompressor implements Closeable {
 
   private static final String NO_ASSOC_ERROR =
     "No source image is associated with this instance";
@@ -567,7 +568,7 @@ public class TJCompressor {
   /**
    * Free the native structures associated with this compressor instance.
    */
-  public void close() throws Exception {
+  public void close() throws IOException {
     if (handle != 0)
       destroy();
   }
@@ -583,7 +584,7 @@ public class TJCompressor {
 
   private native void init() throws Exception;
 
-  private native void destroy() throws Exception;
+  private native void destroy() throws IOException;
 
   // JPEG size in bytes is returned
   private native int compress(byte[] srcBuf, int width, int pitch,
index 7ec557f93df0bfebd16806249c305ef9d7dbc4c4..70022479afb91cefd4c4adea2e558c32ffd736c0 100644 (file)
@@ -30,11 +30,12 @@ package org.libjpegturbo.turbojpeg;
 
 import java.awt.image.*;
 import java.nio.*;
+import java.io.*;
 
 /**
  * TurboJPEG decompressor
  */
-public class TJDecompressor {
+public class TJDecompressor implements Closeable {
 
   private static final String NO_ASSOC_ERROR =
     "No JPEG image is associated with this instance";
@@ -833,7 +834,7 @@ public class TJDecompressor {
   /**
    * Free the native structures associated with this decompressor instance.
    */
-  public void close() throws Exception {
+  public void close() throws IOException {
     if (handle != 0)
       destroy();
   }
@@ -849,7 +850,7 @@ public class TJDecompressor {
 
   private native void init() throws Exception;
 
-  private native void destroy() throws Exception;
+  private native void destroy() throws IOException;
 
   private native void decompressHeader(byte[] srcBuf, int size)
     throws Exception;
index 1bf478f11e8f282b958d5466119354dcec85affc..04e2dc3aa3237cc0ae2590bc27b2bf6d4e92cb52 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C)2011-2014 D. R. Commander.  All Rights Reserved.
+ * Copyright (C)2011-2015 D. R. Commander.  All Rights Reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
        goto bailout;  \
 }
 
+#define _throwio(msg) {  \
+       jclass _exccls=(*env)->FindClass(env, "java/io/IOException");  \
+       if(!_exccls) goto bailout;  \
+       (*env)->ThrowNew(env, _exccls, msg);  \
+       goto bailout;  \
+}
+
 #define bailif0(f) {if(!(f)) {  \
        char temps[80];  \
        snprintf(temps, 80, "Unexpected NULL condition in line %d", __LINE__);  \
@@ -531,7 +538,7 @@ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_destroy
 
        gethandle();
 
-       if(tjDestroy(handle)==-1) _throw(tjGetErrorStr());
+       if(tjDestroy(handle)==-1) _throwio(tjGetErrorStr());
        (*env)->SetLongField(env, obj, _fid, 0);
 
        bailout: