summaryrefslogtreecommitdiffstats
path: root/awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java
diff options
context:
space:
mode:
Diffstat (limited to 'awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java')
-rw-r--r--awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java123
1 files changed, 123 insertions, 0 deletions
diff --git a/awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java b/awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java
new file mode 100644
index 0000000..2f3a9a8
--- /dev/null
+++ b/awt/javax/imageio/plugins/jpeg/JPEGImageReadParam.java
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package javax.imageio.plugins.jpeg;
+
+import javax.imageio.ImageReadParam;
+
+/**
+ * The JPEGImageReadParam class provides functionality to set Huffman tables and
+ * quantization tables when using the JPEG reader plug-in.
+ *
+ * @since Android 1.0
+ */
+public class JPEGImageReadParam extends ImageReadParam {
+
+ /**
+ * The q tables.
+ */
+ private JPEGQTable qTables[];
+
+ /**
+ * The dc huffman tables.
+ */
+ private JPEGHuffmanTable dcHuffmanTables[];
+
+ /**
+ * The ac huffman tables.
+ */
+ private JPEGHuffmanTable acHuffmanTables[];
+
+ /**
+ * Instantiates a new JPEGImageReadParam.
+ */
+ public JPEGImageReadParam() {
+ }
+
+ /**
+ * Returns true if tables are set, false otherwise.
+ *
+ * @return true, if tables are set, false otherwise.
+ */
+ public boolean areTablesSet() {
+ return qTables != null;
+ }
+
+ /**
+ * Sets the quantization and Huffman tables for using in decoding streams.
+ *
+ * @param qTables
+ * the quantization tables.
+ * @param DCHuffmanTables
+ * the standart DC Huffman tables.
+ * @param ACHuffmanTables
+ * the standart AC huffman tables.
+ */
+ public void setDecodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables,
+ JPEGHuffmanTable[] ACHuffmanTables) {
+ if (qTables == null || DCHuffmanTables == null || ACHuffmanTables == null) {
+ throw new IllegalArgumentException("Invalid JPEG table arrays");
+ }
+ if (DCHuffmanTables.length != ACHuffmanTables.length) {
+ throw new IllegalArgumentException("Invalid JPEG table arrays");
+ }
+ if (qTables.length > 4 || DCHuffmanTables.length > 4) {
+ throw new IllegalArgumentException("Invalid JPEG table arrays");
+ }
+
+ // Do the shallow copy, it should be enough
+ this.qTables = qTables.clone();
+ dcHuffmanTables = DCHuffmanTables.clone();
+ acHuffmanTables = ACHuffmanTables.clone();
+ }
+
+ /**
+ * Unset all decoded tables.
+ */
+ public void unsetDecodeTables() {
+ qTables = null;
+ dcHuffmanTables = null;
+ acHuffmanTables = null;
+ }
+
+ /**
+ * Gets the quantization tables.
+ *
+ * @return the quantization tables, or null.
+ */
+ public JPEGQTable[] getQTables() {
+ return qTables == null ? null : qTables.clone();
+ }
+
+ /**
+ * Gets the DC Huffman tables.
+ *
+ * @return the DC Huffman tables which are set, or null.
+ */
+ public JPEGHuffmanTable[] getDCHuffmanTables() {
+ return dcHuffmanTables == null ? null : dcHuffmanTables.clone();
+ }
+
+ /**
+ * Gets the AC Huffman tables.
+ *
+ * @return the AC Huffman tables which are set, or null.
+ */
+ public JPEGHuffmanTable[] getACHuffmanTables() {
+ return acHuffmanTables == null ? null : acHuffmanTables.clone();
+ }
+}