Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkItxt.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,188 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.chunks, class: PngChunkItxt">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.chunks;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.ByteArrayInputStream;</span>
+<span class="source-line-no">020</span><span id="line-20">import 
java.io.IOException;</span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.nio.charset.StandardCharsets;</span>
+<span class="source-line-no">022</span><span id="line-22">import 
java.util.zip.InflaterInputStream;</span>
+<span class="source-line-no">023</span><span id="line-23"></span>
+<span class="source-line-no">024</span><span id="line-24">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
org.apache.commons.imaging.common.Allocator;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
org.apache.commons.imaging.common.BinaryFunctions;</span>
+<span class="source-line-no">027</span><span id="line-27">import 
org.apache.commons.imaging.formats.png.AbstractPngText;</span>
+<span class="source-line-no">028</span><span id="line-28">import 
org.apache.commons.imaging.formats.png.PngConstants;</span>
+<span class="source-line-no">029</span><span id="line-29">import 
org.apache.commons.io.IOUtils;</span>
+<span class="source-line-no">030</span><span id="line-30"></span>
+<span class="source-line-no">031</span><span id="line-31">public class 
PngChunkItxt extends AbstractPngTextChunk {</span>
+<span class="source-line-no">032</span><span id="line-32"></span>
+<span class="source-line-no">033</span><span id="line-33">    private final 
String keyword;</span>
+<span class="source-line-no">034</span><span id="line-34">    private final 
String text;</span>
+<span class="source-line-no">035</span><span id="line-35"></span>
+<span class="source-line-no">036</span><span id="line-36">    /**</span>
+<span class="source-line-no">037</span><span id="line-37">     * The language 
tag defined in [RFC-3066] indicates the human language used by the translated 
keyword and the text. Unlike the keyword, the language tag is</span>
+<span class="source-line-no">038</span><span id="line-38">     * 
case-insensitive. It is an ISO 646.IRV:1991 [ISO 646] string consisting of 
hyphen-separated words of 1-8 alphanumeric characters each (for example 
cn,</span>
+<span class="source-line-no">039</span><span id="line-39">     * en-uk, 
no-bok, x-klingon, x-KlInGoN). If the first word is two or three letters long, 
it is an ISO language code [ISO-639]. If the language tag is empty,</span>
+<span class="source-line-no">040</span><span id="line-40">     * the language 
is unspecified.</span>
+<span class="source-line-no">041</span><span id="line-41">     */</span>
+<span class="source-line-no">042</span><span id="line-42">    private final 
String languageTag;</span>
+<span class="source-line-no">043</span><span id="line-43"></span>
+<span class="source-line-no">044</span><span id="line-44">    private final 
String translatedKeyword;</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">    public 
PngChunkItxt(final int length, final int chunkType, final int crc, final byte[] 
bytes) throws ImagingException, IOException {</span>
+<span class="source-line-no">047</span><span id="line-47">        
super(length, chunkType, crc, bytes);</span>
+<span class="source-line-no">048</span><span id="line-48">        int 
terminator = BinaryFunctions.findNull(bytes, "PNG iTXt chunk keyword is not 
terminated.");</span>
+<span class="source-line-no">049</span><span id="line-49"></span>
+<span class="source-line-no">050</span><span id="line-50">        keyword = 
new String(bytes, 0, terminator, StandardCharsets.ISO_8859_1);</span>
+<span class="source-line-no">051</span><span id="line-51">        int index = 
terminator + 1;</span>
+<span class="source-line-no">052</span><span id="line-52"></span>
+<span class="source-line-no">053</span><span id="line-53">        final int 
compressionFlag = bytes[index++];</span>
+<span class="source-line-no">054</span><span id="line-54">        if 
(compressionFlag != 0 &amp;&amp; compressionFlag != 1) {</span>
+<span class="source-line-no">055</span><span id="line-55">            throw 
new ImagingException("PNG iTXt chunk has invalid compression flag: " + 
compressionFlag);</span>
+<span class="source-line-no">056</span><span id="line-56">        }</span>
+<span class="source-line-no">057</span><span id="line-57"></span>
+<span class="source-line-no">058</span><span id="line-58">        final 
boolean compressed = compressionFlag == 1;</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">        final int 
compressionMethod = bytes[index++];</span>
+<span class="source-line-no">061</span><span id="line-61">        if 
(compressed &amp;&amp; compressionMethod != 
PngConstants.COMPRESSION_DEFLATE_INFLATE) {</span>
+<span class="source-line-no">062</span><span id="line-62">            throw 
new ImagingException("PNG iTXt chunk has unexpected compression method: " + 
compressionMethod);</span>
+<span class="source-line-no">063</span><span id="line-63">        }</span>
+<span class="source-line-no">064</span><span id="line-64"></span>
+<span class="source-line-no">065</span><span id="line-65">        terminator = 
BinaryFunctions.findNull(bytes, index, "PNG iTXt chunk language tag is not 
terminated.");</span>
+<span class="source-line-no">066</span><span id="line-66">        languageTag 
= new String(bytes, index, terminator - index, 
StandardCharsets.ISO_8859_1);</span>
+<span class="source-line-no">067</span><span id="line-67">        index = 
terminator + 1;</span>
+<span class="source-line-no">068</span><span id="line-68"></span>
+<span class="source-line-no">069</span><span id="line-69">        terminator = 
BinaryFunctions.findNull(bytes, index, "PNG iTXt chunk translated keyword is 
not terminated.");</span>
+<span class="source-line-no">070</span><span id="line-70">        
translatedKeyword = new String(bytes, index, terminator - index, 
StandardCharsets.UTF_8);</span>
+<span class="source-line-no">071</span><span id="line-71">        index = 
terminator + 1;</span>
+<span class="source-line-no">072</span><span id="line-72"></span>
+<span class="source-line-no">073</span><span id="line-73">        if 
(compressed) {</span>
+<span class="source-line-no">074</span><span id="line-74">            final 
int compressedTextLength = bytes.length - index;</span>
+<span class="source-line-no">075</span><span id="line-75"></span>
+<span class="source-line-no">076</span><span id="line-76">            final 
byte[] compressedText = Allocator.byteArray(compressedTextLength);</span>
+<span class="source-line-no">077</span><span id="line-77">            
System.arraycopy(bytes, index, compressedText, 0, compressedTextLength);</span>
+<span class="source-line-no">078</span><span id="line-78"></span>
+<span class="source-line-no">079</span><span id="line-79">            text = 
new String(IOUtils.toByteArray(new InflaterInputStream(new 
ByteArrayInputStream(compressedText))), StandardCharsets.UTF_8);</span>
+<span class="source-line-no">080</span><span id="line-80"></span>
+<span class="source-line-no">081</span><span id="line-81">        } else 
{</span>
+<span class="source-line-no">082</span><span id="line-82">            text = 
new String(bytes, index, bytes.length - index, StandardCharsets.UTF_8);</span>
+<span class="source-line-no">083</span><span id="line-83">        }</span>
+<span class="source-line-no">084</span><span id="line-84">    }</span>
+<span class="source-line-no">085</span><span id="line-85"></span>
+<span class="source-line-no">086</span><span id="line-86">    @Override</span>
+<span class="source-line-no">087</span><span id="line-87">    public 
AbstractPngText getContents() {</span>
+<span class="source-line-no">088</span><span id="line-88">        return new 
AbstractPngText.Itxt(keyword, text, languageTag, translatedKeyword);</span>
+<span class="source-line-no">089</span><span id="line-89">    }</span>
+<span class="source-line-no">090</span><span id="line-90"></span>
+<span class="source-line-no">091</span><span id="line-91">    /**</span>
+<span class="source-line-no">092</span><span id="line-92">     * @return Gets 
the keyword.</span>
+<span class="source-line-no">093</span><span id="line-93">     */</span>
+<span class="source-line-no">094</span><span id="line-94">    @Override</span>
+<span class="source-line-no">095</span><span id="line-95">    public String 
getKeyword() {</span>
+<span class="source-line-no">096</span><span id="line-96">        return 
keyword;</span>
+<span class="source-line-no">097</span><span id="line-97">    }</span>
+<span class="source-line-no">098</span><span id="line-98"></span>
+<span class="source-line-no">099</span><span id="line-99">    /**</span>
+<span class="source-line-no">100</span><span id="line-100">     * @return Gets 
the text.</span>
+<span class="source-line-no">101</span><span id="line-101">     */</span>
+<span class="source-line-no">102</span><span id="line-102">    @Override</span>
+<span class="source-line-no">103</span><span id="line-103">    public String 
getText() {</span>
+<span class="source-line-no">104</span><span id="line-104">        return 
text;</span>
+<span class="source-line-no">105</span><span id="line-105">    }</span>
+<span class="source-line-no">106</span><span id="line-106"></span>
+<span class="source-line-no">107</span><span id="line-107">    public String 
getTranslatedKeyword() {</span>
+<span class="source-line-no">108</span><span id="line-108">        return 
translatedKeyword;</span>
+<span class="source-line-no">109</span><span id="line-109">    }</span>
+<span class="source-line-no">110</span><span id="line-110">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkPhys.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkPhys.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkPhys.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.chunks, class: PngChunkPhys">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.chunks;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import static 
org.apache.commons.imaging.common.BinaryFunctions.read4Bytes;</span>
+<span class="source-line-no">020</span><span id="line-20">import static 
org.apache.commons.imaging.common.BinaryFunctions.readByte;</span>
+<span class="source-line-no">021</span><span id="line-21"></span>
+<span class="source-line-no">022</span><span id="line-22">import 
java.io.ByteArrayInputStream;</span>
+<span class="source-line-no">023</span><span id="line-23">import 
java.io.IOException;</span>
+<span class="source-line-no">024</span><span id="line-24"></span>
+<span class="source-line-no">025</span><span id="line-25">public class 
PngChunkPhys extends PngChunk {</span>
+<span class="source-line-no">026</span><span id="line-26"></span>
+<span class="source-line-no">027</span><span id="line-27">    private final 
int pixelsPerUnitXAxis;</span>
+<span class="source-line-no">028</span><span id="line-28">    private final 
int pixelsPerUnitYAxis;</span>
+<span class="source-line-no">029</span><span id="line-29">    private final 
int unitSpecifier;</span>
+<span class="source-line-no">030</span><span id="line-30"></span>
+<span class="source-line-no">031</span><span id="line-31">    public 
PngChunkPhys(final int length, final int chunkType, final int crc, final byte[] 
bytes) throws IOException {</span>
+<span class="source-line-no">032</span><span id="line-32">        
super(length, chunkType, crc, bytes);</span>
+<span class="source-line-no">033</span><span id="line-33">        final 
ByteArrayInputStream is = new ByteArrayInputStream(bytes);</span>
+<span class="source-line-no">034</span><span id="line-34">        
pixelsPerUnitXAxis = read4Bytes("PixelsPerUnitXAxis", is, "Not a Valid PNG 
File: pHYs Corrupt", getByteOrder());</span>
+<span class="source-line-no">035</span><span id="line-35">        
pixelsPerUnitYAxis = read4Bytes("PixelsPerUnitYAxis", is, "Not a Valid PNG 
File: pHYs Corrupt", getByteOrder());</span>
+<span class="source-line-no">036</span><span id="line-36">        
unitSpecifier = readByte("Unit specifier", is, "Not a Valid PNG File: pHYs 
Corrupt");</span>
+<span class="source-line-no">037</span><span id="line-37">    }</span>
+<span class="source-line-no">038</span><span id="line-38"></span>
+<span class="source-line-no">039</span><span id="line-39">    public int 
getPixelsPerUnitXAxis() {</span>
+<span class="source-line-no">040</span><span id="line-40">        return 
pixelsPerUnitXAxis;</span>
+<span class="source-line-no">041</span><span id="line-41">    }</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">    public int 
getPixelsPerUnitYAxis() {</span>
+<span class="source-line-no">044</span><span id="line-44">        return 
pixelsPerUnitYAxis;</span>
+<span class="source-line-no">045</span><span id="line-45">    }</span>
+<span class="source-line-no">046</span><span id="line-46"></span>
+<span class="source-line-no">047</span><span id="line-47">    public int 
getUnitSpecifier() {</span>
+<span class="source-line-no">048</span><span id="line-48">        return 
unitSpecifier;</span>
+<span class="source-line-no">049</span><span id="line-49">    }</span>
+<span class="source-line-no">050</span><span id="line-50"></span>
+<span class="source-line-no">051</span><span id="line-51">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkPlte.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkPlte.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkPlte.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.chunks, class: PngChunkPlte">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.chunks;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import static 
org.apache.commons.imaging.common.BinaryFunctions.readByte;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.io.ByteArrayInputStream;</span>
+<span class="source-line-no">022</span><span id="line-22">import 
java.io.IOException;</span>
+<span class="source-line-no">023</span><span id="line-23">import 
java.util.Arrays;</span>
+<span class="source-line-no">024</span><span id="line-24"></span>
+<span class="source-line-no">025</span><span id="line-25">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
org.apache.commons.imaging.common.Allocator;</span>
+<span class="source-line-no">027</span><span id="line-27">import 
org.apache.commons.imaging.formats.png.GammaCorrection;</span>
+<span class="source-line-no">028</span><span id="line-28"></span>
+<span class="source-line-no">029</span><span id="line-29">public class 
PngChunkPlte extends PngChunk {</span>
+<span class="source-line-no">030</span><span id="line-30">    private final 
int[] rgb;</span>
+<span class="source-line-no">031</span><span id="line-31"></span>
+<span class="source-line-no">032</span><span id="line-32">    public 
PngChunkPlte(final int length, final int chunkType, final int crc, final byte[] 
bytes) throws ImagingException, IOException {</span>
+<span class="source-line-no">033</span><span id="line-33">        
super(length, chunkType, crc, bytes);</span>
+<span class="source-line-no">034</span><span id="line-34"></span>
+<span class="source-line-no">035</span><span id="line-35">        final 
ByteArrayInputStream is = new ByteArrayInputStream(bytes);</span>
+<span class="source-line-no">036</span><span id="line-36"></span>
+<span class="source-line-no">037</span><span id="line-37">        if (length % 
3 != 0) {</span>
+<span class="source-line-no">038</span><span id="line-38">            throw 
new ImagingException("PLTE: wrong length: " + length);</span>
+<span class="source-line-no">039</span><span id="line-39">        }</span>
+<span class="source-line-no">040</span><span id="line-40"></span>
+<span class="source-line-no">041</span><span id="line-41">        final int 
count = length / 3;</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">        rgb = 
Allocator.intArray(count);</span>
+<span class="source-line-no">044</span><span id="line-44"></span>
+<span class="source-line-no">045</span><span id="line-45">        for (int i = 
0; i &lt; count; i++) {</span>
+<span class="source-line-no">046</span><span id="line-46">            final 
int red = readByte("red[" + i + "]", is, "Not a Valid PNG File: PLTE 
Corrupt");</span>
+<span class="source-line-no">047</span><span id="line-47">            final 
int green = readByte("green[" + i + "]", is, "Not a Valid PNG File: PLTE 
Corrupt");</span>
+<span class="source-line-no">048</span><span id="line-48">            final 
int blue = readByte("blue[" + i + "]", is, "Not a Valid PNG File: PLTE 
Corrupt");</span>
+<span class="source-line-no">049</span><span id="line-49">            rgb[i] = 
0xff000000 | (0xff &amp; red) &lt;&lt; 16 | (0xff &amp; green) &lt;&lt; 8 | 
(0xff &amp; blue) &lt;&lt; 0;</span>
+<span class="source-line-no">050</span><span id="line-50">        }</span>
+<span class="source-line-no">051</span><span id="line-51">    }</span>
+<span class="source-line-no">052</span><span id="line-52"></span>
+<span class="source-line-no">053</span><span id="line-53">    public void 
correct(final GammaCorrection gammaCorrection) {</span>
+<span class="source-line-no">054</span><span id="line-54">        
Arrays.setAll(rgb, i -&gt; gammaCorrection.correctArgb(rgb[i]));</span>
+<span class="source-line-no">055</span><span id="line-55">    }</span>
+<span class="source-line-no">056</span><span id="line-56"></span>
+<span class="source-line-no">057</span><span id="line-57">    public int[] 
getRgb() {</span>
+<span class="source-line-no">058</span><span id="line-58">        return 
rgb.clone();</span>
+<span class="source-line-no">059</span><span id="line-59">    }</span>
+<span class="source-line-no">060</span><span id="line-60"></span>
+<span class="source-line-no">061</span><span id="line-61">    // public void 
printPalette() {</span>
+<span class="source-line-no">062</span><span id="line-62">    // 
Debug.debug();</span>
+<span class="source-line-no">063</span><span id="line-63">    // 
Debug.debug("palette");</span>
+<span class="source-line-no">064</span><span id="line-64">    // for (int i = 
0; i &lt; rgb.length; i++) {</span>
+<span class="source-line-no">065</span><span id="line-65">    // 
Debug.debug("\t" + "palette[" + i + "];", rgb[i] + " (0x"</span>
+<span class="source-line-no">066</span><span id="line-66">    // + 
Integer.toHexString(rgb[i]) + ")");</span>
+<span class="source-line-no">067</span><span id="line-67">    //</span>
+<span class="source-line-no">068</span><span id="line-68">    // }</span>
+<span class="source-line-no">069</span><span id="line-69">    // 
Debug.debug();</span>
+<span class="source-line-no">070</span><span id="line-70">    // }</span>
+<span class="source-line-no">071</span><span id="line-71"></span>
+<span class="source-line-no">072</span><span id="line-72">    public int 
getRgb(final int index) throws ImagingException {</span>
+<span class="source-line-no">073</span><span id="line-73">        if (index 
&lt; 0 || index &gt;= rgb.length) {</span>
+<span class="source-line-no">074</span><span id="line-74">            throw 
new ImagingException("PNG: unknown Palette reference: " + index);</span>
+<span class="source-line-no">075</span><span id="line-75">        }</span>
+<span class="source-line-no">076</span><span id="line-76">        return 
rgb[index];</span>
+<span class="source-line-no">077</span><span id="line-77">    }</span>
+<span class="source-line-no">078</span><span id="line-78"></span>
+<span class="source-line-no">079</span><span id="line-79">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkScal.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.chunks, class: PngChunkScal">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.chunks;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.nio.charset.StandardCharsets;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">022</span><span id="line-22">import 
org.apache.commons.imaging.common.BinaryFunctions;</span>
+<span class="source-line-no">023</span><span id="line-23"></span>
+<span class="source-line-no">024</span><span id="line-24">public class 
PngChunkScal extends PngChunk {</span>
+<span class="source-line-no">025</span><span id="line-25"></span>
+<span class="source-line-no">026</span><span id="line-26">    private final 
double unitsPerPixelXAxis;</span>
+<span class="source-line-no">027</span><span id="line-27">    private final 
double unitsPerPixelYAxis;</span>
+<span class="source-line-no">028</span><span id="line-28">    private final 
int unitSpecifier;</span>
+<span class="source-line-no">029</span><span id="line-29"></span>
+<span class="source-line-no">030</span><span id="line-30">    public 
PngChunkScal(final int length, final int chunkType, final int crc, final byte[] 
bytes) throws ImagingException {</span>
+<span class="source-line-no">031</span><span id="line-31">        
super(length, chunkType, crc, bytes);</span>
+<span class="source-line-no">032</span><span id="line-32"></span>
+<span class="source-line-no">033</span><span id="line-33">        
unitSpecifier = bytes[0];</span>
+<span class="source-line-no">034</span><span id="line-34">        if 
(getUnitSpecifier() != 1 &amp;&amp; getUnitSpecifier() != 2) {</span>
+<span class="source-line-no">035</span><span id="line-35">            throw 
new ImagingException("PNG sCAL invalid unit specifier: " + 
getUnitSpecifier());</span>
+<span class="source-line-no">036</span><span id="line-36">        }</span>
+<span class="source-line-no">037</span><span id="line-37"></span>
+<span class="source-line-no">038</span><span id="line-38">        final int 
separator = BinaryFunctions.findNull(bytes, "PNG sCAL x and y axis value 
separator not found.");</span>
+<span class="source-line-no">039</span><span id="line-39">        final int 
xIndex = 1;</span>
+<span class="source-line-no">040</span><span id="line-40">        final String 
xStr = new String(bytes, xIndex, separator - 1, 
StandardCharsets.ISO_8859_1);</span>
+<span class="source-line-no">041</span><span id="line-41">        
unitsPerPixelXAxis = toDouble(xStr);</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">        final int 
yIndex = separator + 1;</span>
+<span class="source-line-no">044</span><span id="line-44">        if (yIndex 
&gt;= length) {</span>
+<span class="source-line-no">045</span><span id="line-45">            throw 
new ImagingException("PNG sCAL chunk missing the y axis value.");</span>
+<span class="source-line-no">046</span><span id="line-46">        }</span>
+<span class="source-line-no">047</span><span id="line-47"></span>
+<span class="source-line-no">048</span><span id="line-48">        final String 
yStr = new String(bytes, yIndex, length - yIndex, 
StandardCharsets.ISO_8859_1);</span>
+<span class="source-line-no">049</span><span id="line-49">        
unitsPerPixelYAxis = toDouble(yStr);</span>
+<span class="source-line-no">050</span><span id="line-50">    }</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">    public int 
getUnitSpecifier() {</span>
+<span class="source-line-no">053</span><span id="line-53">        return 
unitSpecifier;</span>
+<span class="source-line-no">054</span><span id="line-54">    }</span>
+<span class="source-line-no">055</span><span id="line-55"></span>
+<span class="source-line-no">056</span><span id="line-56">    public double 
getUnitsPerPixelXAxis() {</span>
+<span class="source-line-no">057</span><span id="line-57">        return 
unitsPerPixelXAxis;</span>
+<span class="source-line-no">058</span><span id="line-58">    }</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">    public double 
getUnitsPerPixelYAxis() {</span>
+<span class="source-line-no">061</span><span id="line-61">        return 
unitsPerPixelYAxis;</span>
+<span class="source-line-no">062</span><span id="line-62">    }</span>
+<span class="source-line-no">063</span><span id="line-63"></span>
+<span class="source-line-no">064</span><span id="line-64">    private double 
toDouble(final String str) throws ImagingException {</span>
+<span class="source-line-no">065</span><span id="line-65">        try {</span>
+<span class="source-line-no">066</span><span id="line-66">            return 
Double.parseDouble(str);</span>
+<span class="source-line-no">067</span><span id="line-67">        } catch 
(final NumberFormatException e) {</span>
+<span class="source-line-no">068</span><span id="line-68">            throw 
new ImagingException("PNG sCAL error reading axis value - " + str);</span>
+<span class="source-line-no">069</span><span id="line-69">        }</span>
+<span class="source-line-no">070</span><span id="line-70">    }</span>
+<span class="source-line-no">071</span><span id="line-71">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkText.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkText.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkText.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.chunks, class: PngChunkText">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.chunks;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.nio.charset.StandardCharsets;</span>
+<span class="source-line-no">020</span><span id="line-20">import 
java.util.logging.Level;</span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.util.logging.Logger;</span>
+<span class="source-line-no">022</span><span id="line-22"></span>
+<span class="source-line-no">023</span><span id="line-23">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">024</span><span id="line-24">import 
org.apache.commons.imaging.common.BinaryFunctions;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
org.apache.commons.imaging.formats.png.AbstractPngText;</span>
+<span class="source-line-no">026</span><span id="line-26"></span>
+<span class="source-line-no">027</span><span id="line-27">public class 
PngChunkText extends AbstractPngTextChunk {</span>
+<span class="source-line-no">028</span><span id="line-28"></span>
+<span class="source-line-no">029</span><span id="line-29">    private static 
final Logger LOGGER = Logger.getLogger(PngChunkText.class.getName());</span>
+<span class="source-line-no">030</span><span id="line-30"></span>
+<span class="source-line-no">031</span><span id="line-31">    private final 
String keyword;</span>
+<span class="source-line-no">032</span><span id="line-32">    private final 
String text;</span>
+<span class="source-line-no">033</span><span id="line-33"></span>
+<span class="source-line-no">034</span><span id="line-34">    public 
PngChunkText(final int length, final int chunkType, final int crc, final byte[] 
bytes) throws ImagingException {</span>
+<span class="source-line-no">035</span><span id="line-35">        
super(length, chunkType, crc, bytes);</span>
+<span class="source-line-no">036</span><span id="line-36">        final int 
index = BinaryFunctions.findNull(bytes, "PNG tEXt chunk keyword is not 
terminated.");</span>
+<span class="source-line-no">037</span><span id="line-37">        keyword = 
new String(bytes, 0, index, StandardCharsets.ISO_8859_1);</span>
+<span class="source-line-no">038</span><span id="line-38">        final int 
textLength = bytes.length - (index + 1);</span>
+<span class="source-line-no">039</span><span id="line-39">        text = new 
String(bytes, index + 1, textLength, StandardCharsets.ISO_8859_1);</span>
+<span class="source-line-no">040</span><span id="line-40">        if 
(LOGGER.isLoggable(Level.FINEST)) {</span>
+<span class="source-line-no">041</span><span id="line-41">            
LOGGER.finest("Keyword: " + keyword);</span>
+<span class="source-line-no">042</span><span id="line-42">            
LOGGER.finest("Text: " + text);</span>
+<span class="source-line-no">043</span><span id="line-43">        }</span>
+<span class="source-line-no">044</span><span id="line-44">    }</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">    @Override</span>
+<span class="source-line-no">047</span><span id="line-47">    public 
AbstractPngText getContents() {</span>
+<span class="source-line-no">048</span><span id="line-48">        return new 
AbstractPngText.Text(keyword, text);</span>
+<span class="source-line-no">049</span><span id="line-49">    }</span>
+<span class="source-line-no">050</span><span id="line-50"></span>
+<span class="source-line-no">051</span><span id="line-51">    /**</span>
+<span class="source-line-no">052</span><span id="line-52">     * @return 
Returns the keyword.</span>
+<span class="source-line-no">053</span><span id="line-53">     */</span>
+<span class="source-line-no">054</span><span id="line-54">    @Override</span>
+<span class="source-line-no">055</span><span id="line-55">    public String 
getKeyword() {</span>
+<span class="source-line-no">056</span><span id="line-56">        return 
keyword;</span>
+<span class="source-line-no">057</span><span id="line-57">    }</span>
+<span class="source-line-no">058</span><span id="line-58"></span>
+<span class="source-line-no">059</span><span id="line-59">    /**</span>
+<span class="source-line-no">060</span><span id="line-60">     * @return 
Returns the text.</span>
+<span class="source-line-no">061</span><span id="line-61">     */</span>
+<span class="source-line-no">062</span><span id="line-62">    @Override</span>
+<span class="source-line-no">063</span><span id="line-63">    public String 
getText() {</span>
+<span class="source-line-no">064</span><span id="line-64">        return 
text;</span>
+<span class="source-line-no">065</span><span id="line-65">    }</span>
+<span class="source-line-no">066</span><span id="line-66"></span>
+<span class="source-line-no">067</span><span id="line-67">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/chunks/PngChunkZtxt.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.chunks, class: PngChunkZtxt">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.chunks;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.ByteArrayInputStream;</span>
+<span class="source-line-no">020</span><span id="line-20">import 
java.io.IOException;</span>
+<span class="source-line-no">021</span><span id="line-21">import 
java.nio.charset.StandardCharsets;</span>
+<span class="source-line-no">022</span><span id="line-22">import 
java.util.zip.InflaterInputStream;</span>
+<span class="source-line-no">023</span><span id="line-23"></span>
+<span class="source-line-no">024</span><span id="line-24">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">025</span><span id="line-25">import 
org.apache.commons.imaging.common.Allocator;</span>
+<span class="source-line-no">026</span><span id="line-26">import 
org.apache.commons.imaging.common.BinaryFunctions;</span>
+<span class="source-line-no">027</span><span id="line-27">import 
org.apache.commons.imaging.formats.png.AbstractPngText;</span>
+<span class="source-line-no">028</span><span id="line-28">import 
org.apache.commons.imaging.formats.png.PngConstants;</span>
+<span class="source-line-no">029</span><span id="line-29">import 
org.apache.commons.io.IOUtils;</span>
+<span class="source-line-no">030</span><span id="line-30"></span>
+<span class="source-line-no">031</span><span id="line-31">public class 
PngChunkZtxt extends AbstractPngTextChunk {</span>
+<span class="source-line-no">032</span><span id="line-32"></span>
+<span class="source-line-no">033</span><span id="line-33">    private final 
String keyword;</span>
+<span class="source-line-no">034</span><span id="line-34">    private final 
String text;</span>
+<span class="source-line-no">035</span><span id="line-35"></span>
+<span class="source-line-no">036</span><span id="line-36">    public 
PngChunkZtxt(final int length, final int chunkType, final int crc, final byte[] 
bytes) throws ImagingException, IOException {</span>
+<span class="source-line-no">037</span><span id="line-37">        
super(length, chunkType, crc, bytes);</span>
+<span class="source-line-no">038</span><span id="line-38"></span>
+<span class="source-line-no">039</span><span id="line-39">        int index = 
BinaryFunctions.findNull(bytes, "PNG zTXt chunk keyword is 
unterminated.");</span>
+<span class="source-line-no">040</span><span id="line-40">        keyword = 
new String(bytes, 0, index, StandardCharsets.ISO_8859_1);</span>
+<span class="source-line-no">041</span><span id="line-41">        
index++;</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">        final int 
compressionMethod = bytes[index++];</span>
+<span class="source-line-no">044</span><span id="line-44">        if 
(compressionMethod != PngConstants.COMPRESSION_DEFLATE_INFLATE) {</span>
+<span class="source-line-no">045</span><span id="line-45">            throw 
new ImagingException("PNG zTXt chunk has unexpected compression method: " + 
compressionMethod);</span>
+<span class="source-line-no">046</span><span id="line-46">        }</span>
+<span class="source-line-no">047</span><span id="line-47"></span>
+<span class="source-line-no">048</span><span id="line-48">        final int 
compressedTextLength = bytes.length - index;</span>
+<span class="source-line-no">049</span><span id="line-49">        final byte[] 
compressedText = Allocator.byteArray(compressedTextLength);</span>
+<span class="source-line-no">050</span><span id="line-50">        
System.arraycopy(bytes, index, compressedText, 0, compressedTextLength);</span>
+<span class="source-line-no">051</span><span id="line-51"></span>
+<span class="source-line-no">052</span><span id="line-52">        text = new 
String(IOUtils.toByteArray(new InflaterInputStream(new 
ByteArrayInputStream(compressedText))), StandardCharsets.ISO_8859_1);</span>
+<span class="source-line-no">053</span><span id="line-53">    }</span>
+<span class="source-line-no">054</span><span id="line-54"></span>
+<span class="source-line-no">055</span><span id="line-55">    @Override</span>
+<span class="source-line-no">056</span><span id="line-56">    public 
AbstractPngText getContents() {</span>
+<span class="source-line-no">057</span><span id="line-57">        return new 
AbstractPngText.Ztxt(keyword, text);</span>
+<span class="source-line-no">058</span><span id="line-58">    }</span>
+<span class="source-line-no">059</span><span id="line-59"></span>
+<span class="source-line-no">060</span><span id="line-60">    /**</span>
+<span class="source-line-no">061</span><span id="line-61">     * Gets the 
keyword.</span>
+<span class="source-line-no">062</span><span id="line-62">     *</span>
+<span class="source-line-no">063</span><span id="line-63">     * @return the 
keyword.</span>
+<span class="source-line-no">064</span><span id="line-64">     */</span>
+<span class="source-line-no">065</span><span id="line-65">    @Override</span>
+<span class="source-line-no">066</span><span id="line-66">    public String 
getKeyword() {</span>
+<span class="source-line-no">067</span><span id="line-67">        return 
keyword;</span>
+<span class="source-line-no">068</span><span id="line-68">    }</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70">    /**</span>
+<span class="source-line-no">071</span><span id="line-71">     * Gets the 
text.</span>
+<span class="source-line-no">072</span><span id="line-72">     *</span>
+<span class="source-line-no">073</span><span id="line-73">     * @return the 
text.</span>
+<span class="source-line-no">074</span><span id="line-74">     */</span>
+<span class="source-line-no">075</span><span id="line-75">    @Override</span>
+<span class="source-line-no">076</span><span id="line-76">    public String 
getText() {</span>
+<span class="source-line-no">077</span><span id="line-77">        return 
text;</span>
+<span class="source-line-no">078</span><span id="line-78">    }</span>
+<span class="source-line-no">079</span><span id="line-79"></span>
+<span class="source-line-no">080</span><span id="line-80">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilter.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilter.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilter.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,105 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.scanlinefilters, interface: 
ScanlineFilter">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.scanlinefilters;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.IOException;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">022</span><span id="line-22"></span>
+<span class="source-line-no">023</span><span id="line-23">public interface 
ScanlineFilter {</span>
+<span class="source-line-no">024</span><span id="line-24"></span>
+<span class="source-line-no">025</span><span id="line-25">    void 
unfilter(byte[] src, byte[] dst, byte[] up) throws ImagingException, 
IOException;</span>
+<span class="source-line-no">026</span><span id="line-26"></span>
+<span class="source-line-no">027</span><span id="line-27">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterAverage.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterAverage.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterAverage.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,129 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.scanlinefilters, class: 
ScanlineFilterAverage">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.scanlinefilters;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.IOException;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">022</span><span id="line-22"></span>
+<span class="source-line-no">023</span><span id="line-23">public class 
ScanlineFilterAverage implements ScanlineFilter {</span>
+<span class="source-line-no">024</span><span id="line-24">    private final 
int bytesPerPixel;</span>
+<span class="source-line-no">025</span><span id="line-25"></span>
+<span class="source-line-no">026</span><span id="line-26">    public 
ScanlineFilterAverage(final int bytesPerPixel) {</span>
+<span class="source-line-no">027</span><span id="line-27">        
this.bytesPerPixel = bytesPerPixel;</span>
+<span class="source-line-no">028</span><span id="line-28">    }</span>
+<span class="source-line-no">029</span><span id="line-29"></span>
+<span class="source-line-no">030</span><span id="line-30">    @Override</span>
+<span class="source-line-no">031</span><span id="line-31">    public void 
unfilter(final byte[] src, final byte[] dst, final byte[] up) throws 
ImagingException, IOException {</span>
+<span class="source-line-no">032</span><span id="line-32">        for (int i = 
0; i &lt; src.length; i++) {</span>
+<span class="source-line-no">033</span><span id="line-33">            int raw 
= 0;</span>
+<span class="source-line-no">034</span><span id="line-34">            final 
int prevIndex = i - bytesPerPixel;</span>
+<span class="source-line-no">035</span><span id="line-35">            if 
(prevIndex &gt;= 0) {</span>
+<span class="source-line-no">036</span><span id="line-36">                raw 
= dst[prevIndex];</span>
+<span class="source-line-no">037</span><span id="line-37">            }</span>
+<span class="source-line-no">038</span><span id="line-38"></span>
+<span class="source-line-no">039</span><span id="line-39">            int 
prior = 0;</span>
+<span class="source-line-no">040</span><span id="line-40">            if (up 
!= null) {</span>
+<span class="source-line-no">041</span><span id="line-41">                
prior = up[i];</span>
+<span class="source-line-no">042</span><span id="line-42">            }</span>
+<span class="source-line-no">043</span><span id="line-43"></span>
+<span class="source-line-no">044</span><span id="line-44">            final 
int average = ((0xff &amp; raw) + (0xff &amp; prior)) / 2;</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">            dst[i] = 
(byte) ((src[i] + average) % 256);</span>
+<span class="source-line-no">047</span><span id="line-47">            // 
dst[i] = src[i];</span>
+<span class="source-line-no">048</span><span id="line-48">            // 
dst[i] = (byte) 255;</span>
+<span class="source-line-no">049</span><span id="line-49">        }</span>
+<span class="source-line-no">050</span><span id="line-50">    }</span>
+<span class="source-line-no">051</span><span id="line-51">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterNone.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterNone.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterNone.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.scanlinefilters, class: 
ScanlineFilterNone">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.scanlinefilters;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.IOException;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">022</span><span id="line-22"></span>
+<span class="source-line-no">023</span><span id="line-23">public class 
ScanlineFilterNone implements ScanlineFilter {</span>
+<span class="source-line-no">024</span><span id="line-24"></span>
+<span class="source-line-no">025</span><span id="line-25">    @Override</span>
+<span class="source-line-no">026</span><span id="line-26">    public void 
unfilter(final byte[] src, final byte[] dst, final byte[] up) throws 
ImagingException, IOException {</span>
+<span class="source-line-no">027</span><span id="line-27">        
System.arraycopy(src, 0, dst, 0, src.length);</span>
+<span class="source-line-no">028</span><span id="line-28">    }</span>
+<span class="source-line-no">029</span><span id="line-29">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterPaeth.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterPaeth.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterPaeth.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,155 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.scanlinefilters, class: 
ScanlineFilterPaeth">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.scanlinefilters;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.IOException;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">022</span><span id="line-22"></span>
+<span class="source-line-no">023</span><span id="line-23">public class 
ScanlineFilterPaeth implements ScanlineFilter {</span>
+<span class="source-line-no">024</span><span id="line-24">    private final 
int bytesPerPixel;</span>
+<span class="source-line-no">025</span><span id="line-25"></span>
+<span class="source-line-no">026</span><span id="line-26">    public 
ScanlineFilterPaeth(final int bytesPerPixel) {</span>
+<span class="source-line-no">027</span><span id="line-27">        
this.bytesPerPixel = bytesPerPixel;</span>
+<span class="source-line-no">028</span><span id="line-28">    }</span>
+<span class="source-line-no">029</span><span id="line-29"></span>
+<span class="source-line-no">030</span><span id="line-30">    private int 
paethPredictor(final int a, final int b, final int c) {</span>
+<span class="source-line-no">031</span><span id="line-31">        // ; a = 
left, b = above, c = upper left</span>
+<span class="source-line-no">032</span><span id="line-32">        final int p 
= a + b - c; // ; initial estimate</span>
+<span class="source-line-no">033</span><span id="line-33">        final int pa 
= Math.abs(p - a); // ; distances to a, b, c</span>
+<span class="source-line-no">034</span><span id="line-34">        final int pb 
= Math.abs(p - b);</span>
+<span class="source-line-no">035</span><span id="line-35">        final int pc 
= Math.abs(p - c);</span>
+<span class="source-line-no">036</span><span id="line-36">        // ; return 
nearest of a,b,c,</span>
+<span class="source-line-no">037</span><span id="line-37">        // ; 
breaking ties in order a,b,c.</span>
+<span class="source-line-no">038</span><span id="line-38">        if (pa &lt;= 
pb &amp;&amp; pa &lt;= pc) {</span>
+<span class="source-line-no">039</span><span id="line-39">            return 
a;</span>
+<span class="source-line-no">040</span><span id="line-40">        }</span>
+<span class="source-line-no">041</span><span id="line-41">        if (pb &lt;= 
pc) {</span>
+<span class="source-line-no">042</span><span id="line-42">            return 
b;</span>
+<span class="source-line-no">043</span><span id="line-43">        }</span>
+<span class="source-line-no">044</span><span id="line-44">        return 
c;</span>
+<span class="source-line-no">045</span><span id="line-45">    }</span>
+<span class="source-line-no">046</span><span id="line-46"></span>
+<span class="source-line-no">047</span><span id="line-47">    @Override</span>
+<span class="source-line-no">048</span><span id="line-48">    public void 
unfilter(final byte[] src, final byte[] dst, final byte[] up) throws 
ImagingException, IOException {</span>
+<span class="source-line-no">049</span><span id="line-49">        for (int i = 
0; i &lt; src.length; i++) {</span>
+<span class="source-line-no">050</span><span id="line-50">            int left 
= 0;</span>
+<span class="source-line-no">051</span><span id="line-51">            final 
int prevIndex = i - bytesPerPixel;</span>
+<span class="source-line-no">052</span><span id="line-52">            if 
(prevIndex &gt;= 0) {</span>
+<span class="source-line-no">053</span><span id="line-53">                left 
= dst[prevIndex];</span>
+<span class="source-line-no">054</span><span id="line-54">            }</span>
+<span class="source-line-no">055</span><span id="line-55"></span>
+<span class="source-line-no">056</span><span id="line-56">            int 
above = 0;</span>
+<span class="source-line-no">057</span><span id="line-57">            if (up 
!= null) {</span>
+<span class="source-line-no">058</span><span id="line-58">                
above = up[i];</span>
+<span class="source-line-no">059</span><span id="line-59">            }</span>
+<span class="source-line-no">060</span><span id="line-60">            // above 
= 255;</span>
+<span class="source-line-no">061</span><span id="line-61"></span>
+<span class="source-line-no">062</span><span id="line-62">            int 
upperLeft = 0;</span>
+<span class="source-line-no">063</span><span id="line-63">            if 
(prevIndex &gt;= 0 &amp;&amp; up != null) {</span>
+<span class="source-line-no">064</span><span id="line-64">                
upperLeft = up[prevIndex];</span>
+<span class="source-line-no">065</span><span id="line-65">            }</span>
+<span class="source-line-no">066</span><span id="line-66">            // 
upperLeft = 255;</span>
+<span class="source-line-no">067</span><span id="line-67"></span>
+<span class="source-line-no">068</span><span id="line-68">            final 
int paethPredictor = paethPredictor(0xff &amp; left, 0xff &amp; above, 0xff 
&amp; upperLeft);</span>
+<span class="source-line-no">069</span><span id="line-69"></span>
+<span class="source-line-no">070</span><span id="line-70">            dst[i] = 
(byte) ((src[i] + paethPredictor) % 256);</span>
+<span class="source-line-no">071</span><span id="line-71">            // 
dst[i] = (byte) ((src[i] + paethPredictor) );</span>
+<span class="source-line-no">072</span><span id="line-72">            // 
dst[i] = src[i];</span>
+<span class="source-line-no">073</span><span id="line-73"></span>
+<span class="source-line-no">074</span><span id="line-74">            // 
dst[i] = (byte) 0;</span>
+<span class="source-line-no">075</span><span id="line-75">        }</span>
+<span class="source-line-no">076</span><span id="line-76">    }</span>
+<span class="source-line-no">077</span><span id="line-77">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file

Added: 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterSub.html
==============================================================================
--- 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterSub.html
 (added)
+++ 
websites/production/commons/content/proper/commons-imaging/apidocs/src-html/org/apache/commons/imaging/formats/png/scanlinefilters/ScanlineFilterSub.html
 Wed May 15 13:26:03 2024
@@ -0,0 +1,126 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+<!-- Generated by javadoc (17) -->
+<title>Source code</title>
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="description" content="source: package: 
org.apache.commons.imaging.formats.png.scanlinefilters, class: 
ScanlineFilterSub">
+<meta name="generator" content="javadoc/SourceToHTMLConverter">
+<link rel="stylesheet" type="text/css" 
href="../../../../../../../../stylesheet.css" title="Style">
+</head>
+<body class="source-page">
+<main role="main">
+<div class="source-container">
+<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
+<span class="source-line-no">002</span><span id="line-2"> * Licensed to the 
Apache Software Foundation (ASF) under one or more</span>
+<span class="source-line-no">003</span><span id="line-3"> * contributor 
license agreements.  See the NOTICE file distributed with</span>
+<span class="source-line-no">004</span><span id="line-4"> * this work for 
additional information regarding copyright ownership.</span>
+<span class="source-line-no">005</span><span id="line-5"> * The ASF licenses 
this file to You under the Apache License, Version 2.0</span>
+<span class="source-line-no">006</span><span id="line-6"> * (the "License"); 
you may not use this file except in compliance with</span>
+<span class="source-line-no">007</span><span id="line-7"> * the License.  You 
may obtain a copy of the License at</span>
+<span class="source-line-no">008</span><span id="line-8"> *</span>
+<span class="source-line-no">009</span><span id="line-9"> *      
http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="source-line-no">010</span><span id="line-10"> *</span>
+<span class="source-line-no">011</span><span id="line-11"> * Unless required 
by applicable law or agreed to in writing, software</span>
+<span class="source-line-no">012</span><span id="line-12"> * distributed under 
the License is distributed on an "AS IS" BASIS,</span>
+<span class="source-line-no">013</span><span id="line-13"> * WITHOUT 
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+<span class="source-line-no">014</span><span id="line-14"> * See the License 
for the specific language governing permissions and</span>
+<span class="source-line-no">015</span><span id="line-15"> * limitations under 
the License.</span>
+<span class="source-line-no">016</span><span id="line-16"> */</span>
+<span class="source-line-no">017</span><span id="line-17">package 
org.apache.commons.imaging.formats.png.scanlinefilters;</span>
+<span class="source-line-no">018</span><span id="line-18"></span>
+<span class="source-line-no">019</span><span id="line-19">import 
java.io.IOException;</span>
+<span class="source-line-no">020</span><span id="line-20"></span>
+<span class="source-line-no">021</span><span id="line-21">import 
org.apache.commons.imaging.ImagingException;</span>
+<span class="source-line-no">022</span><span id="line-22"></span>
+<span class="source-line-no">023</span><span id="line-23">public class 
ScanlineFilterSub implements ScanlineFilter {</span>
+<span class="source-line-no">024</span><span id="line-24">    private final 
int bytesPerPixel;</span>
+<span class="source-line-no">025</span><span id="line-25"></span>
+<span class="source-line-no">026</span><span id="line-26">    public 
ScanlineFilterSub(final int bytesPerPixel) {</span>
+<span class="source-line-no">027</span><span id="line-27">        
this.bytesPerPixel = bytesPerPixel;</span>
+<span class="source-line-no">028</span><span id="line-28">    }</span>
+<span class="source-line-no">029</span><span id="line-29"></span>
+<span class="source-line-no">030</span><span id="line-30">    @Override</span>
+<span class="source-line-no">031</span><span id="line-31">    public void 
unfilter(final byte[] src, final byte[] dst, final byte[] up) throws 
ImagingException, IOException {</span>
+<span class="source-line-no">032</span><span id="line-32">        for (int i = 
0; i &lt; src.length; i++) {</span>
+<span class="source-line-no">033</span><span id="line-33">            final 
int prevIndex = i - bytesPerPixel;</span>
+<span class="source-line-no">034</span><span id="line-34">            if 
(prevIndex &gt;= 0) {</span>
+<span class="source-line-no">035</span><span id="line-35">                
dst[i] = (byte) ((src[i] + dst[prevIndex]) % 256);</span>
+<span class="source-line-no">036</span><span id="line-36">                // 
dst[i] = 0xff &amp; (src[i] + src[prevIndex]);</span>
+<span class="source-line-no">037</span><span id="line-37">            } else 
{</span>
+<span class="source-line-no">038</span><span id="line-38">                
dst[i] = src[i];</span>
+<span class="source-line-no">039</span><span id="line-39">            }</span>
+<span class="source-line-no">040</span><span id="line-40"></span>
+<span class="source-line-no">041</span><span id="line-41">            // if 
(i&lt;10)</span>
+<span class="source-line-no">042</span><span id="line-42">            // 
System.out.println("\t" + i + ": " + dst[i] + " (" + src[i] +</span>
+<span class="source-line-no">043</span><span id="line-43">            // ", " 
+ prevIndex + ")");</span>
+<span class="source-line-no">044</span><span id="line-44"></span>
+<span class="source-line-no">045</span><span id="line-45">            // 
dst[i] = src[i];</span>
+<span class="source-line-no">046</span><span id="line-46">        }</span>
+<span class="source-line-no">047</span><span id="line-47">    }</span>
+<span class="source-line-no">048</span><span id="line-48">}</span>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</main>
+</body>
+</html>
\ No newline at end of file


Reply via email to