1 /* 2 * Copyright (c) 2001, 2005, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.imageio.plugins.jpeg; 27 28 import java.util.ListResourceBundle; 29 30 public class JPEGImageMetadataFormatResources 31 extends JPEGMetadataFormatResources { 32 33 static final Object[][] imageContents = { 34 // Node name, followed by description 35 { "JPEGvariety", "A node grouping all marker segments specific to the variety of stream being read/written (e.g. JFIF) - may be empty" }, 36 { "markerSequence", "A node grouping all non-jfif marker segments" }, 37 { "app0jfif", "A JFIF APP0 marker segment" }, 38 { "app14Adobe", "An Adobe APP14 marker segment" }, 39 { "sof", "A Start Of Frame marker segment" }, 40 { "sos", "A Start Of Scan marker segment" }, 41 { "app0JFXX", "A JFIF extension marker segment" }, 42 { "app2ICC", "An ICC profile APP2 marker segment" }, 43 { "JFIFthumbJPEG", 44 "A JFIF thumbnail in JPEG format (no JFIF segments permitted)" }, 45 { "JFIFthumbPalette", "A JFIF thumbnail as an RGB indexed image" }, 46 { "JFIFthumbRGB", "A JFIF thumbnail as an RGB image" }, 47 { "componentSpec", "A component specification for a frame" }, 48 { "scanComponentSpec", "A component specification for a scan" }, 49 50 // Node name + "/" + AttributeName, followed by description 51 { "app0JFIF/majorVersion", 52 "The major JFIF version number" }, 53 { "app0JFIF/minorVersion", 54 "The minor JFIF version number" }, 55 { "app0JFIF/resUnits", 56 "The resolution units for Xdensity and Ydensity " 57 + "(0 = no units, just aspect ratio; 1 = dots/inch; 2 = dots/cm)" }, 58 { "app0JFIF/Xdensity", 59 "The horizontal density or aspect ratio numerator" }, 60 { "app0JFIF/Ydensity", 61 "The vertical density or aspect ratio denominator" }, 62 { "app0JFIF/thumbWidth", 63 "The width of the thumbnail, or 0 if there isn't one" }, 64 { "app0JFIF/thumbHeight", 65 "The height of the thumbnail, or 0 if there isn't one" }, 66 { "app0JFXX/extensionCode", 67 "The JFXX extension code identifying thumbnail type: " 68 + "(16 = JPEG, 17 = indexed, 19 = RGB" }, 69 { "JFIFthumbPalette/thumbWidth", 70 "The width of the thumbnail" }, 71 { "JFIFthumbPalette/thumbHeight", 72 "The height of the thumbnail" }, 73 { "JFIFthumbRGB/thumbWidth", 74 "The width of the thumbnail" }, 75 { "JFIFthumbRGB/thumbHeight", 76 "The height of the thumbnail" }, 77 { "app14Adobe/version", 78 "The version of Adobe APP14 marker segment" }, 79 { "app14Adobe/flags0", 80 "The flags0 variable of an APP14 marker segment" }, 81 { "app14Adobe/flags1", 82 "The flags1 variable of an APP14 marker segment" }, 83 { "app14Adobe/transform", 84 "The color transform applied to the image " 85 + "(0 = Unknown, 1 = YCbCr, 2 = YCCK)" }, 86 { "sof/process", 87 "The JPEG process (0 = Baseline sequential, " 88 + "1 = Extended sequential, 2 = Progressive)" }, 89 { "sof/samplePrecision", 90 "The number of bits per sample" }, 91 { "sof/numLines", 92 "The number of lines in the image" }, 93 { "sof/samplesPerLine", 94 "The number of samples per line" }, 95 { "sof/numFrameComponents", 96 "The number of components in the image" }, 97 { "componentSpec/componentId", 98 "The id for this component" }, 99 { "componentSpec/HsamplingFactor", 100 "The horizontal sampling factor for this component" }, 101 { "componentSpec/VsamplingFactor", 102 "The vertical sampling factor for this component" }, 103 { "componentSpec/QtableSelector", 104 "The quantization table to use for this component" }, 105 { "sos/numScanComponents", 106 "The number of components in the scan" }, 107 { "sos/startSpectralSelection", 108 "The first spectral band included in this scan" }, 109 { "sos/endSpectralSelection", 110 "The last spectral band included in this scan" }, 111 { "sos/approxHigh", 112 "The highest bit position included in this scan" }, 113 { "sos/approxLow", 114 "The lowest bit position included in this scan" }, 115 { "scanComponentSpec/componentSelector", 116 "The id of this component" }, 117 { "scanComponentSpec/dcHuffTable", 118 "The huffman table to use for encoding DC coefficients" }, 119 { "scanComponentSpec/acHuffTable", 120 "The huffman table to use for encoding AC coefficients" } 121 }; 122 JPEGImageMetadataFormatResources()123 public JPEGImageMetadataFormatResources() {} 124 getContents()125 protected Object[][] getContents() { 126 // return a copy of the combined commonContents and imageContents; 127 // in theory we want a deep clone of the combined arrays, 128 // but since it only contains (immutable) Strings, this shallow 129 // copy is sufficient 130 Object[][] combinedContents = 131 new Object[commonContents.length + imageContents.length][2]; 132 int combined = 0; 133 for (int i = 0; i < commonContents.length; i++, combined++) { 134 combinedContents[combined][0] = commonContents[i][0]; 135 combinedContents[combined][1] = commonContents[i][1]; 136 } 137 for (int i = 0; i < imageContents.length; i++, combined++) { 138 combinedContents[combined][0] = imageContents[i][0]; 139 combinedContents[combined][1] = imageContents[i][1]; 140 } 141 return combinedContents; 142 } 143 } 144