History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/com/sun/imageio/plugins/jpeg/JPEGMetadataFormat.java (1 of 18352 files). Show all

Unified · Split

java/pkg/com/sun/imageio/plugins/jpeg/JPEGMetadataFormat.java+157−0
@@ -0,0 +1,157 @@
1/*
2 * Copyright (c) 2001, 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
26package com.sun.imageio.plugins.jpeg;
27
28import javax.imageio.metadata.IIOMetadataFormat;
29import javax.imageio.metadata.IIOMetadataFormatImpl;
30import javax.imageio.ImageTypeSpecifier;
31import javax.imageio.plugins.jpeg.JPEGQTable;
32import javax.imageio.plugins.jpeg.JPEGHuffmanTable;
33
34import java.util.List;
35import java.util.ArrayList;
36
37abstract class JPEGMetadataFormat extends IIOMetadataFormatImpl {
38 // 2-byte length reduces max to 65533
39 private static final int MAX_JPEG_DATA_SIZE = 65533;
40
41 String resourceBaseName = this.getClass().getName() + "Resources";
42
43 JPEGMetadataFormat(String formatName, int childPolicy) {
44 super(formatName, childPolicy);
45 setResourceBaseName(resourceBaseName);
46 }
47
48 // Format shared between image and stream formats
49 void addStreamElements(String parentName) {
50 addElement("dqt", parentName, 1, 4);
51
52 addElement("dqtable", "dqt", CHILD_POLICY_EMPTY);
53
54 addAttribute("dqtable",
55 "elementPrecision",
56 DATATYPE_INTEGER,
57 false,
58 "0");
59 List tabids = new ArrayList();
60 tabids.add("0");
61 tabids.add("1");
62 tabids.add("2");
63 tabids.add("3");
64 addAttribute("dqtable",
65 "qtableId",
66 DATATYPE_INTEGER,
67 true,
68 null,
69 tabids);
70 addObjectValue("dqtable",
71 JPEGQTable.class,
72 true,
73 null);
74
75 addElement("dht", parentName, 1, 4);
76 addElement("dhtable", "dht", CHILD_POLICY_EMPTY);
77 List classes = new ArrayList();
78 classes.add("0");
79 classes.add("1");
80 addAttribute("dhtable",
81 "class",
82 DATATYPE_INTEGER,
83 true,
84 null,
85 classes);
86 addAttribute("dhtable",
87 "htableId",
88 DATATYPE_INTEGER,
89 true,
90 null,
91 tabids);
92 addObjectValue("dhtable",
93 JPEGHuffmanTable.class,
94 true,
95 null);
96
97
98 addElement("dri", parentName, CHILD_POLICY_EMPTY);
99 addAttribute("dri",
100 "interval",
101 DATATYPE_INTEGER,
102 true,
103 null,
104 "0", "65535",
105 true, true);
106
107 addElement("com", parentName, CHILD_POLICY_EMPTY);
108 addAttribute("com",
109 "comment",
110 DATATYPE_STRING,
111 false,
112 null);
113 addObjectValue("com", byte[].class, 1, MAX_JPEG_DATA_SIZE);
114
115 addElement("unknown", parentName, CHILD_POLICY_EMPTY);
116 addAttribute("unknown",
117 "MarkerTag",
118 DATATYPE_INTEGER,
119 true,
120 null,
121 "0", "255",
122 true, true);
123 addObjectValue("unknown", byte[].class, 1, MAX_JPEG_DATA_SIZE);
124 }
125
126 public boolean canNodeAppear(String elementName,
127 ImageTypeSpecifier imageType) {
128 // Just check if it appears in the format
129 if (isInSubtree(elementName, getRootName())){
130 return true;
131 }
132 return false;
133 }
134
135 /**
136 * Returns <code>true</code> if the named element occurs in the
137 * subtree of the format starting with the node named by
138 * <code>subtreeName</code>, including the node
139 * itself. <code>subtreeName</code> may be any node in
140 * the format. If it is not, an
141 * <code>IllegalArgumentException</code> is thrown.
142 */
143 protected boolean isInSubtree(String elementName,
144 String subtreeName) {
145 if (elementName.equals(subtreeName)) {
146 return true;
147 }
148 String [] children = getChildNames(elementName);
149 for (int i=0; i < children.length; i++) {
150 if (isInSubtree(elementName, children[i])) {
151 return true;
152 }
153 }
154 return false;
155 }
156
157}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t