Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 17 java.desktop.jmod - Desktop Module
JDK 17 java.desktop.jmod is the JMOD file for JDK 17 Desktop module.
JDK 17 Desktop module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\java.desktop.jmod.
JDK 17 Desktop module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Desktop module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\java.desktop.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ com/sun/imageio/plugins/tiff/TIFFLZWDecompressor.java
/* * Copyright (c) 2005, 2021, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package com.sun.imageio.plugins.tiff; import java.io.IOException; import javax.imageio.IIOException; import javax.imageio.plugins.tiff.BaselineTIFFTagSet; import com.sun.imageio.plugins.common.ReaderUtil; class TIFFLZWDecompressor extends TIFFDecompressor { private static final int CLEAR_CODE = 256; private static final int EOI_CODE = 257; private static final int FIRST_CODE = 258; private static final int[] andTable = { 511, 1023, 2047, 4095 }; private int predictor; // whether to reverse the bits in each byte of the input data, i.e., // convert right-to-left fill order (lsb) to left-to-right (msb). private boolean flipBits; private byte[] srcData; private byte[] dstData; private int srcIndex; private int dstIndex; private byte[][] stringTable; private int tableIndex, bitsToGet = 9; private int nextData = 0; private int nextBits = 0; public TIFFLZWDecompressor(int predictor, int fillOrder) throws IIOException { super(); if (predictor != BaselineTIFFTagSet.PREDICTOR_NONE && predictor != BaselineTIFFTagSet.PREDICTOR_HORIZONTAL_DIFFERENCING) { throw new IIOException("Illegal value for Predictor in " + "TIFF file"); } this.predictor = predictor; flipBits = fillOrder == BaselineTIFFTagSet.FILL_ORDER_RIGHT_TO_LEFT; } public void decodeRaw(byte[] b, int dstOffset, int bitsPerPixel, int scanlineStride) throws IOException { // Check bitsPerSample. if (predictor == BaselineTIFFTagSet.PREDICTOR_HORIZONTAL_DIFFERENCING) { int len = bitsPerSample.length; for(int i = 0; i < len; i++) { if(bitsPerSample[i] != 8) { throw new IIOException (bitsPerSample[i] + "-bit samples "+ "are not supported for Horizontal "+ "differencing Predictor"); } } } stream.seek(offset); byte[] sdata = ReaderUtil. staggeredReadByteStream(stream, byteCount); if (flipBits) { for (int i = 0; i < byteCount; i++) { sdata[i] = TIFFFaxDecompressor.flipTable[sdata[i] & 0xff]; } } int bytesPerRow = (srcWidth*bitsPerPixel + 7)/8; byte[] buf; int bufOffset; if(bytesPerRow == scanlineStride) { buf = b; bufOffset = dstOffset; } else { buf = new byte[bytesPerRow*srcHeight]; bufOffset = 0; } int numBytesDecoded = decode(sdata, 0, buf, bufOffset); if(bytesPerRow != scanlineStride) { int off = 0; for (int y = 0; y < srcHeight; y++) { System.arraycopy(buf, off, b, dstOffset, bytesPerRow); off += bytesPerRow; dstOffset += scanlineStride; } } } public int decode(byte[] sdata, int srcOffset, byte[] ddata, int dstOffset) throws IOException { if (sdata[0] == (byte)0x00 && sdata[1] == (byte)0x01) { throw new IIOException ("TIFF 5.0-style LZW compression is not supported!"); } this.srcData = sdata; this.dstData = ddata; this.srcIndex = srcOffset; this.dstIndex = dstOffset; this.nextData = 0; this.nextBits = 0; initializeStringTable(); int code, oldCode = 0; byte[] string; while ((code = getNextCode()) != EOI_CODE) { if (code == CLEAR_CODE) { initializeStringTable(); code = getNextCode(); if (code == EOI_CODE) { break; } writeString(stringTable[code]); oldCode = code; } else { if (code < tableIndex) { string = stringTable[code]; writeString(string); addStringToTable(stringTable[oldCode], string[0]); oldCode = code; } else { string = stringTable[oldCode]; string = composeString(string, string[0]); writeString(string); addStringToTable(string); oldCode = code; } } } if (predictor == BaselineTIFFTagSet.PREDICTOR_HORIZONTAL_DIFFERENCING) { int step = planar || samplesPerPixel == 1 ? 1 : samplesPerPixel; int samplesPerRow = step * srcWidth; int off = dstOffset + step; for (int j = 0; j < srcHeight; j++) { int count = off; for (int i = step; i < samplesPerRow; i++) { dstData[count] += dstData[count - step]; count++; } off += samplesPerRow; } } return dstIndex - dstOffset; } /** * Initialize the string table. */ public void initializeStringTable() { stringTable = new byte[4096][]; for (int i = 0; i < CLEAR_CODE; i++) { stringTable[i] = new byte[1]; stringTable[i][0] = (byte)i; } tableIndex = FIRST_CODE; bitsToGet = 9; } /** * Write out the string just uncompressed. */ public void writeString(byte[] string) { if(dstIndex < dstData.length) { int maxIndex = Math.min(string.length, dstData.length - dstIndex); for (int i=0; i < maxIndex; i++) { dstData[dstIndex++] = string[i]; } } } /** * Add a new string to the string table. */ public void addStringToTable(byte[] oldString, byte newString) { int length = oldString.length; byte[] string = new byte[length + 1]; System.arraycopy(oldString, 0, string, 0, length); string[length] = newString; // Add this new String to the table stringTable[tableIndex++] = string; if (tableIndex == 511) { bitsToGet = 10; } else if (tableIndex == 1023) { bitsToGet = 11; } else if (tableIndex == 2047) { bitsToGet = 12; } } /** * Add a new string to the string table. */ public void addStringToTable(byte[] string) { // Add this new String to the table stringTable[tableIndex++] = string; if (tableIndex == 511) { bitsToGet = 10; } else if (tableIndex == 1023) { bitsToGet = 11; } else if (tableIndex == 2047) { bitsToGet = 12; } } /** * Append {@code newString} to the end of {@code oldString}. */ public byte[] composeString(byte[] oldString, byte newString) { int length = oldString.length; byte[] string = new byte[length + 1]; System.arraycopy(oldString, 0, string, 0, length); string[length] = newString; return string; } // Returns the next 9, 10, 11 or 12 bits public int getNextCode() { // Attempt to get the next code. The exception is caught to make // this robust to cases wherein the EndOfInformation code has been // omitted from a strip. Examples of such cases have been observed // in practice. try { nextData = (nextData << 8) | (srcData[srcIndex++] & 0xff); nextBits += 8; if (nextBits < bitsToGet) { nextData = (nextData << 8) | (srcData[srcIndex++] & 0xff); nextBits += 8; } int code = (nextData >> (nextBits - bitsToGet)) & andTable[bitsToGet - 9]; nextBits -= bitsToGet; return code; } catch (ArrayIndexOutOfBoundsException e) { // Strip not terminated as expected: return EndOfInformation code. return EOI_CODE; } } }
⏎ com/sun/imageio/plugins/tiff/TIFFLZWDecompressor.java
Or download all of them as a single archive file:
File name: java.desktop-17.0.5-src.zip File size: 9152233 bytes Release date: 2022-09-13 Download
⇒ JDK 17 java.instrument.jmod - Instrument Module
2023-09-16, 33246👍, 0💬
Popular Posts:
JDK 17 jdk.localedata.jmod is the JMOD file for JDK 17 Localedata module. JDK 17 Locale Data module ...
Saxon is an open source product available under the Mozilla Public License. It provides implementati...
What is the sax\Counter.java provided in the Apache Xerces package? I have Apache Xerces 2.11.0 inst...
What Is log4j-1.2.13.jar? I got the JAR file from logging-log4j-1.2.13.zip .log4j-1.2.13.jar is the ...
Apache Log4j IOStreams is a Log4j API extension that provides numerous classes from java.io that can...