8182410: missing 'title' in api/javax/swing/plaf/synth/doc-files/componentProperties.html

8183508: multi_tsc.html should be updated
8181289: Invalid HTML 5 in AWT/Swing docs

Reviewed-by: prr, jjg
This commit is contained in:
Sergey Bylokhov 2017-11-29 15:11:37 -08:00
parent 625c3fd013
commit f968e1a670
18 changed files with 1235 additions and 1210 deletions

View File

@ -1,5 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>AWT Threading Issues</title>
</head>
<!--
Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2002, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -23,16 +29,11 @@
questions.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body bgcolor=white>
<body>
<h1 align=center>AWT Threading Issues</h1>
<h1>AWT Threading Issues</h1>
<a name="ListenersThreads"></a>
<a id="ListenersThreads"></a>
<h2>Listeners and threads</h2>
Unless otherwise noted all AWT listeners are notified on the event
@ -41,7 +42,7 @@ during dispatching, but the changes only effect subsequent notification.
<br>For example, if a key listeners is added from another key listener, the
newly added listener is only notified on subsequent key events.
<a name="Autoshutdown"></a>
<a id="Autoshutdown"></a>
<h2>Auto-shutdown</h2>
According to
@ -84,11 +85,13 @@ this machinery are as follows:
posted to the <code>EventQueue</code> can be coalesced) are
dispatched:
<ul>
<li> Sequentially.
<dl><dd> That is, it is not permitted that several events from
<li>
<dl><dt>Sequentially.
<dd> That is, it is not permitted that several events from
this queue are dispatched simultaneously. </dd></dl>
<li> In the same order as they are enqueued.
<dl><dd> That is, if <code>AWTEvent</code>&nbsp;A is enqueued
<li>
<dl><dt>In the same order as they are enqueued.
<dd> That is, if <code>AWTEvent</code>&nbsp;A is enqueued
to the <code>EventQueue</code> before
<code>AWTEvent</code>&nbsp;B then event B will not be
dispatched before event A.</dd></dl>
@ -168,7 +171,7 @@ the application has made all components undisplayable you should start a
non-daemon thread that blocks forever.
<pre>
<...>
&lt;...&gt;
Runnable r = new Runnable() {
public void run() {
Object o = new Object();
@ -183,7 +186,7 @@ non-daemon thread that blocks forever.
Thread t = new Thread(r);
t.setDaemon(false);
t.start();
<...>
&lt;...&gt;
</pre>
<cite>The Java&trade; Virtual Machine Specification</cite>

View File

@ -1,5 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>AWT Desktop Properties</title>
</head>
<!--
Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -23,14 +29,9 @@
questions.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body bgcolor=white>
<body>
<h1 align=center>AWT Desktop Properties</h1>
<h1>AWT Desktop Properties</h1>
The following refers to standard AWT desktop properties that
may be obtained via the
@ -76,7 +77,7 @@ here, and their value types.
</table>
<h2>Desktop Font Rendering Hints</h2>
<b>Desktop Property: <A name="awt.font.desktophints">"awt.font.desktophints"</A></b>
<b>Desktop Property: <a id="awt.font.desktophints">"awt.font.desktophints"</A></b>
<p>
Modern desktops support various forms of text antialiasing (font smoothing).
<p>
@ -229,7 +230,7 @@ determine that there is a non-null return for any screen device using
the per-device property name.
</ul>
<h2>Mouse Functionality</h2>
<b>Desktop Property: <A name="sun.awt.enableExtraMouseButtons">"sun.awt.enableExtraMouseButtons"</A></b>
<b>Desktop Property: <a id="sun.awt.enableExtraMouseButtons">"sun.awt.enableExtraMouseButtons"</A></b>
<p>
This property determines if events from extra mouse buttons (if they are exist and are
enabled by the underlying operating system) are allowed to be processed and posted into

View File

@ -1,5 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>The AWT Focus Subsystem</title>
</head>
<!--
Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -23,15 +29,8 @@
questions.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>The AWT Focus Subsystem</title>
</head>
<body bgcolor="white">
<h1 align=center>The AWT Focus Subsystem</h1>
<body>
<h1>The AWT Focus Subsystem</h1>
<p>
Prior to Java 2 Standard Edition, JDK 1.4, the AWT focus subsystem
@ -101,7 +100,7 @@
<li><a href=#Incompatibilities>Incompatibilities with Previous Releases</a>
</ul>
<a name="Overview"></a>
<a id="Overview"></a>
<h3>Overview of KeyboardFocusManager</h3>
<p>
The focus model is centralized around a single class,
@ -180,7 +179,7 @@
descendants.
<p>
Here is an example:<br> <img src="FocusCycle.gif" align=middle
Here is an example:<br> <img src="FocusCycle.gif"
alt="Three groups as described below: ABCF BDE and DGH. "><br>
<p>Assume the following:
@ -213,7 +212,7 @@
implementation in the <code>DefaultKeyboardFocusManager</code> class.
<a name="BrowserContexts"></a>
<a id="BrowserContexts"></a>
<h3>KeyboardFocusManager and Browser Contexts</h3>
<p>
Some browsers partition applets in different code bases into separate
@ -229,7 +228,7 @@ contexts there may be, however, there can never be more than one focus
owner, focused Window, or active Window, per ClassLoader.
<a name="KeyEventDispatcher"></a>
<a id="KeyEventDispatcher"></a>
<h3>KeyEventDispatcher and KeyEventPostProcessor</h3>
<p>
While the user's KeyEvents should generally be delivered to the focus
@ -272,7 +271,7 @@ Like KeyEventDispatcher, KeyboardFocusManager also implements
KeyEventPostProcessor, and similar restrictions apply to its use in
that capacity.
<a name="FocusEventAndWindowEvent"></a>
<a id="FocusEventAndWindowEvent"></a>
<h3>FocusEvent and WindowEvent</h3>
<p>
The AWT defines the following six event types central to the focus
@ -296,7 +295,7 @@ model in two different <code>java.awt.event</code> classes:
not a Frame or Dialog) when it is no longer the active Window.
</ol>
<a name="EventDelivery"></a>
<a id="EventDelivery"></a>
<h3>Event Delivery</h3>
<p>
If the focus is not in java application and the user clicks on a focusable
@ -347,7 +346,7 @@ rejects the focus change. See <a href="#FocusAndVetoableChangeListener">Focus
and VetoableChangeListener</a>.
<a name="OppositeComponents"></a>
<a id="OppositeComponents"></a>
<h3>Opposite Components and Windows</h3>
<p>
Each event includes information about the "opposite" Component or
@ -371,7 +370,7 @@ a pure Swing application can ignore this platform restriction when
using the opposite Component of a focus change that occurred within a
top-level Window.
<a name="TemporaryFocusEvents"></a>
<a id="TemporaryFocusEvents"></a>
<h3>Temporary FocusEvents</h3>
<p>
<code>FOCUS_GAINED</code> and <code>FOCUS_LOST</code> events are
@ -416,7 +415,7 @@ behavior for this method can be guaranteed only for lightweight
Components. This method is not intended for general use, but exists
instead as a hook for lightweight Component libraries, such as Swing.
<a name="FocusTraversal"></a>
<a id="FocusTraversal"></a>
<h3>Focus Traversal</h3>
<p>
Each Component defines its own Set of focus traversal keys for a given
@ -491,7 +490,7 @@ current focus owner. If the current focus owner is not a focus cycle
root, then no focus traversal operation occurs.
<a name="FocusTraversalPolicy"></a>
<a id="FocusTraversalPolicy"></a>
<h3>FocusTraversalPolicy</h3>
<p>
@ -627,7 +626,7 @@ InternalFrameFocusTraversalPolicy.
</ol>
<p>
The figure below shows an implicit focus transfer:
<br><img src="ImplicitFocusTransfer.gif" align=middle alt="Implicit focus transfer."><br>
<br><img src="ImplicitFocusTransfer.gif" alt="Implicit focus transfer."><br>
Assume the following:
<ul>
@ -653,7 +652,7 @@ Containers by default.
All other applications, including pure AWT applications, will use
<code>DefaultFocusTraversalPolicy</code> by default.
<a name="FocusTraversalPolicyProviders"></a>
<a id="FocusTraversalPolicyProviders"></a>
<h3>Focus Traversal Policy Providers</h3>
<p>
A Container that isn't a focus cycle root has an option to provide a
@ -740,7 +739,7 @@ All other applications, including pure AWT applications, will use
</ul>
</ul>
<a name="ProgrammaticTraversal"></a>
<a id="ProgrammaticTraversal"></a>
<h3>Programmatic Traversal</h3>
<p>
In addition to user-initiated focus traversal, client code can
@ -811,7 +810,7 @@ and there is no other Component to focus, then the focus owner remains
unchanged.
<a name="Focusability"></a>
<a id="Focusability"></a>
<h3>Focusability</h3>
<p>
A focusable Component can become the focus owner ("focusability") and
@ -825,7 +824,7 @@ default, all Components return true from this method. Client code can
change this default by calling Component.setFocusable(boolean).
<a name="FocusableWindows"></a>
<a id="FocusableWindows"></a>
<h3>Focusable Windows</h3>
<p>
To support palette windows and input methods, client code can prevent
@ -877,7 +876,7 @@ Since not all platforms support cross-Window focus changes (see
all such focus change requests will fail. In this case, the global
focus owner will be cleared and the focused Window will remain unchanged.
<a name="RequestingFocus"></a>
<a id="RequestingFocus"></a>
<h3>Requesting Focus</h3>
<p>
@ -949,7 +948,7 @@ The Component class also supports variants of <code>requestFocus</code> and
a temporary state.
See <a href="#TemporaryFocusEvents">Temporary FocusEvents</a>
<a name="FocusAndPropertyChangeListener"></a>
<a id="FocusAndPropertyChangeListener"></a>
<h3>Focus and PropertyChangeListener</h3>
<p>
Client code can listen to changes in context-wide focus state, or to
@ -1020,7 +1019,7 @@ Window will never see a <code>PropertyChangeEvent</code> for the
<code>focusCycleRoot</code> property.
A Window is always a focus cycle root; this property cannot change.
<p>
<a name="FocusAndVetoableChangeListener"></a>
<a id="FocusAndVetoableChangeListener"></a>
<h3>Focus and VetoableChangeListener</h3>
<p>
The <code>KeyboardFocusManager</code> also supports
@ -1089,7 +1088,7 @@ to anticipate this situation could lead to an infinite cycle of
vetoed focus changes and recovery attempts.
<a name="ZOrder"></a>
<a id="ZOrder"></a>
<h3>Z-Order</h3>
<p>
On some native windowing systems, the Z-order of a Window can affect
@ -1169,7 +1168,7 @@ Microsoft Windows and Solaris is as follows:
application in another VM.
</ul>
<a name="ReplacingDefaultKeyboardFocusManager"></a>
<a id="ReplacingDefaultKeyboardFocusManager"></a>
<h3>Replacing DefaultKeyboardFocusManager</h3>
<p>
<code>KeyboardFocusManager</code>s are pluggable at the browser context
@ -1325,7 +1324,7 @@ and VetoableChangeListener</a>.
events.
</ul>
<a name="Incompatibilities"></a>
<a id="Incompatibilities"></a>
<h3>Incompatibilities with Previous Releases</h3>
<p><b>Cross-platform changes:</b>
<ol>

View File

@ -1,5 +1,11 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>The AWT Modality</title>
</head>
<!--
Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -23,19 +29,9 @@
questions.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<body>
<html>
<head>
<title>The AWT Modality</title>
</head>
<body bgcolor="white">
<h1 align="center">The AWT Modality</h1>
<h1>The AWT Modality</h1>
<p>
This document, together with the API documentation for modality-related
@ -53,7 +49,7 @@
<li><a href="#Examples">Examples</a></li>
</ul>
<a name="Definitions"></a>
<a id="Definitions"></a>
<h3>Definitions</h3>
<p>
@ -63,7 +59,7 @@
Every window belongs to some document &mdash; its root can be found as
the closest ancestor window without an owner.
</p><p>
<a name="ModalBlocked"></a>
<a id="ModalBlocked"></a>
<u>Modal blocked window</u> - a window, that:
</p><ul>
<li>doesn't receive any user input events
@ -95,7 +91,7 @@
an instance of <code>java.awt.Window</code> or any descendant class.
<hr></blockquote>
<a name="ModalityTypes"></a>
<a id="ModalityTypes"></a>
<h3>Modality types</h3>
<p>
@ -159,7 +155,7 @@
dialog may have no effect until it is hidden and then shown again.
<hr></blockquote>
<a name="ShowHideBlocking"></a>
<a id="ShowHideBlocking"></a>
<h3>Show/hide blocking</h3>
<p>
@ -264,7 +260,7 @@
(as in Showing the modal dialog: "M")
are performed for each of them in the order they were initially shown.
<a name="ModalExclusion"></a>
<a id="ModalExclusion"></a>
</p><h3>Modal exclusion</h3>
<p>
@ -290,7 +286,7 @@
may have no effect until it is hidden and then shown again.
</blockquote>
<a name="Related"></a>
<a id="Related"></a>
<h3>Related AWT features</h3>
<p>
@ -334,7 +330,7 @@
If the modal dialog to be hidden does not have focus, the active window remains
unchanged.
<a name="Security"></a>
<a id="Security"></a>
<h3>Security</h3>
<p>
@ -347,7 +343,7 @@
This would prevent, for example, a dialog shown from an applet not to be
blocked by a browser's or JWS's modal dialog.
<a name="PlatformSupport"></a>
<a id="PlatformSupport"></a>
</p><h3>Platform support</h3>
<p>
@ -366,7 +362,7 @@
and a window is marked as E-excluded, this has no effect.
</li></ul>
<a name="Compatibility"></a>
<a id="Compatibility"></a>
<h3>Compatibility</h3>
<p>
@ -377,7 +373,7 @@
but the only distinction between application- and toolkit-modality is for
applets and applications launched from Java Web Start.
<a name="Examples"></a>
<a id="Examples"></a>
</p><h3>Examples</h3>
<table border="0">

View File

@ -1,8 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>BMP Metadata Format Specification</title>
</head>
<!--
Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -26,13 +29,8 @@ or visit www.oracle.com if you need additional information or have any
questions.
-->
<title>BMP Metadata Format Specification</title>
</head>
<body>
<center><h1>
BMP Metadata Format Specification
</h1></center>
<h1>BMP Metadata Format Specification</h1>
The XML schema for the native image metadata format is as follows:

View File

@ -1,8 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>GIF Metadata Format Specification</title>
</head>
<!--
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -26,18 +29,11 @@ or visit www.oracle.com if you need additional information or have any
questions.
-->
<title>GIF Metadata Format Specification</title>
</head>
<body>
<body bgcolor="white">
<center><h1>
GIF Metadata Format Specification
</h1></center>
<a name="gif_stream_metadata_format"></a>
<center><h2>
GIF Stream Metadata Format Specification
</h2></center>
<h1>GIF Metadata Format Specification</h1>
<a id="gif_stream_metadata_format"></a>
<h2>GIF Stream Metadata Format Specification</h2>
<p>
@ -135,10 +131,8 @@ images that do not have their own local color table.
&lt;!-- Max value: 255 (inclusive) --&gt;
]&gt;
</pre>
<a name="gif_image_metadata_format"></a>
<center><h2>
GIF Image Metadata Format Specification
</h2></center>
<a id="gif_image_metadata_format"></a>
<h2>GIF Image Metadata Format Specification</h2>
<p>
The GIF image metadata format encodes the image descriptor, local
@ -350,8 +344,7 @@ advanced only on user input.
</pre>
<p>
<a name="mapping"></a>
<center>
<a id="mapping"></a>
<table border=1>
<caption><b>Mapping of Standard to GIF Native Stream Metadata</b></caption>
<tr>
@ -399,9 +392,7 @@ advanced only on user input.
<td>/Version@value</td>
</tr>
</table>
</center>
<center>
<table border=1>
<caption><b>Mapping of Standard to GIF Native Image Metadata</b></caption>
<tr>
@ -443,7 +434,6 @@ advanced only on user input.
"TRUE")</td>
</tr>
</table>
</center>
</body>
</html>

View File

@ -1,8 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>JPEG Metadata Format Specification and Usage Notes</title>
</head>
<!--
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -26,14 +29,9 @@ or visit www.oracle.com if you need additional information or have any
questions.
-->
<title>JPEG Metadata Format Specification and Usage Notes</title>
</head>
<body>
<body bgcolor="white">
<center><h1>
JPEG Metadata Format Specification and Usage Notes
</h1></center>
<h1>JPEG Metadata Format Specification and Usage Notes</h1>
<p>
<a href=#metadata>JPEG Metadata</a><br>
@ -58,7 +56,7 @@ code has exhausted native memory.
The JPEG writer does not support replacing pixels.
<h2>
<a name=metadata>JPEG Metadata</a>
<a id=metadata>JPEG Metadata</a>
</h2>
JPEG metadata consists of the data contained in marker segments in a JPEG
stream. The image metadata object returned from a read describes the
@ -105,7 +103,7 @@ is set on the reader, stream metadata will not be available, but image
metadata will.
<h2>
<a name=abbrev>Abbreviated Streams</a>
<a id=abbrev>Abbreviated Streams</a>
</h2>
Both the reader and the writer retain their tables from one operation to the
next, thus permitting the use of abbreviated streams quite naturally, with a
@ -145,7 +143,7 @@ supplied to <code>ImageWriter.prepareWriteSequence</code>, then a tables-only
image containing default visually lossless tables is written.
<h2>
<a name=tables>Sources of Tables</a>
<a id=tables>Sources of Tables</a>
</h2>
<p>
Images are written with tables if tables are present in their metadata objects
@ -193,7 +191,7 @@ Note that if no image metadata object is specified for a particular image, a
default object is used, which includes default tables.
<h2>
<a name=color>Colorspace Transformations and Conventional Markers</a>
<a id=color>Colorspace Transformations and Conventional Markers</a>
</h2>
Colorspace transformations are controlled by the destination type for
both reading and writing of images. When <code>Raster</code>s are
@ -208,7 +206,7 @@ to any listeners.
<p>
<a name=optcolor><b>Optional ColorSpace support:</b></a>
<a id=optcolor><b>Optional ColorSpace support:</b></a>
Handling of PhotoYCC (YCC), PhotoYCCA (YCCA), RGBA and YCbCrA color spaces
by the standard plugin, as described below, is dependent on capabilities
of the libraries used to interpret the JPEG data. Thus all consequential
@ -509,7 +507,7 @@ in the frame header node of the metadata object, regardless of color space.)
</ul>
<h2>
<a name=thumbs>Thumbnail Images</a>
<a id=thumbs>Thumbnail Images</a>
</h2>
Thumbnails are supported by the use of JFIF and JFIF extension marker segments.
Thumbnails provided on the write methods determine the thumbnails that will be
@ -604,7 +602,7 @@ of image, the thumbnails are ignored and a warning is sent to any warning
listeners.
<h2>
<a name=prog>Progressive Encoding</a>
<a id=prog>Progressive Encoding</a>
</h2>
Progressive encoding must be enabled on the <code>ImageWriteParam</code>
@ -624,7 +622,7 @@ itself are ignored, and a warning will be sent to any warning listeners if
any such tables are present.
<h2>
<a name=tree>Native Metadata Format Tree Structure and Editing</a>
<a id=tree>Native Metadata Format Tree Structure and Editing</a>
</h2>
The DTDs below describe just the trees of metadata objects actually returned
@ -881,7 +879,7 @@ The <code>setFromTree</code> operation, when given a tree in the standard
format, performs a <code>reset</code> followed by a merge of the new tree.
<h2>
<a name=image>Image Metadata DTD</a>
<a id=image>Image Metadata DTD</a>
</h2>
<pre>
@ -1147,7 +1145,7 @@ format, performs a <code>reset</code> followed by a merge of the new tree.
</pre>
<h2>
<a name=stream>Stream Metadata DTD</a>
<a id=stream>Stream Metadata DTD</a>
</h2>
<pre>

View File

@ -1,8 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>PNG Metadata Format Specification</title>
</head>
<!--
Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -26,14 +29,9 @@ or visit www.oracle.com if you need additional information or have any
questions.
-->
<title>PNG Metadata Format Specification</title>
</head>
<body>
<body bgcolor="white">
<center><h1>
PNG Metadata Format Specification
</h1></center>
<h1>PNG Metadata Format Specification</h1>
<p>

View File

@ -1,8 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Standard Metadata Format Specification</title>
</head>
<!--
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -26,14 +29,9 @@ or visit www.oracle.com if you need additional information or have any
questions.
-->
<title>Standard Metadata Format Specification</title>
</head>
<body>
<body bgcolor="white">
<center><h1>
Standard (Plug-in Neutral) Metadata Format Specification
</h1></center>
<h1>Standard (Plug-in Neutral) Metadata Format Specification</h1>
<p> The plug-in neutral "javax_imageio_1.0" format consists
of a root node named "javax_imageio_1.0" which has child

View File

@ -1,8 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>TIFF Metadata Format Specification and Usage Notes</title>
</head>
<!--
Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -26,66 +29,47 @@ or visit www.oracle.com if you need additional information or have any
questions.
-->
<title>TIFF Metadata Format Specification and Usage Notes</title>
</head>
<body>
<body bgcolor="white">
<h1>TIFF Metadata Format Specification and Usage Notes</h1>
<center><h1>
TIFF Metadata Format Specification and Usage Notes
</h1></center>
<p>
<a href="#Reading">Reading Images</a><br/>
<font size="-1">
<a href="#Reading">Reading Images</a>
<ul>
<li><a href="#ColorConversionRead">Color Conversion</a></li>
<li><a href="#ColorSpacesRead">Color Spaces</a></li>
<li><a href="#ICCProfilesRead">ICC Profiles</a></li>
<li><a href="#MetadataIssuesRead">Metadata Issues</a>
<font size="-2">
<ul>
<li><a href="#MapNativeStandard">Native to Standard Metadata Mapping</a></li>
</ul>
</font>
</li>
<li><a href="#ExifRead">Reading Exif Images</a>
<font size="-2">
<ul>
<li><a href="#ExifReadTIFF">Reading Uncompressed Exif Images</a></li>
<li><a href="#ExifReadJPEG">Reading Compressed Exif Images</a></li>
</ul>
</font>
</li>
</ul>
</font>
<a href="#Writing">Writing Images</a><br/>
<font size="-1">
<ul>
<li><a href="#Compression">Compression</a></li>
<li><a href="#ColorConversionWrite">Color Conversion</a></li>
<li><a href="#ICCProfilesWrite">ICC Profiles</a></li>
<li><a href="#MetadataIssuesWrite">Metadata Issues</a></li>
<font size="-2">
<li><a href="#MetadataIssuesWrite">Metadata Issues</a>
<ul>
<li><a href="#MapStandardNative">Standard to Native Metadata Mapping</a></li>
</ul>
</font>
<li><a href="#ExifWrite">Writing Exif Images</a>
<font size="-2">
<ul>
<li><a href="#ExifWriteTIFF">Writing Uncompressed Exif Images</a></li>
<li><a href="#ExifWriteJPEG">Writing Compressed Exif Images</a></li>
</ul>
</font>
</li>
</ul>
</font>
<a href="#StreamMetadata">Native Stream Metadata Format</a><br/>
<a href="#ImageMetadata">Native Image Metadata Format</a>
</p>
<h3><a name="Reading"/>Reading Images</h3>
<h3><a id="Reading">Reading Images</a></h3>
TIFF images are read by an <a href="../../ImageReader.html">ImageReader</a>
which may be controlled by its public interface as well as via a supplied
@ -95,14 +79,14 @@ which may be controlled by its public interface as well as via a supplied
<!-- Table? -->
<h4><a name="ColorConversionRead"/>Color Conversion</h4>
<h4><a id="ColorConversionRead">Color Conversion</a></h4>
<p>If the source image data
have photometric type CIE L*a*b* or YCbCr, and the destination color space
type is RGB, then the source image data will be automatically converted to
RGB using an internal color converter.</p>
<h4><a name="ColorSpacesRead"/>Color Spaces</h4>
<h4><a id="ColorSpacesRead">Color Spaces</a></h4>
The raw color space assigned by default, i.e., in the absence of a
user-supplied <a href="../../ImageTypeSpecifier.html">ImageTypeSpecifier</a>,
@ -112,7 +96,7 @@ will be the first among the following which applies:
<li>A color space created from the <a href="#ICCProfilesRead">ICC Profile</a>
metadata field if it is present and compatible with the image data
layout.</li>
<a name="nonICCProfile"><li>sRGB if the image is monochrome/bilevel
<li><a id="nonICCProfile"></a>sRGB if the image is monochrome/bilevel
(a two-level color map is created internally).</li>
<li>sRGB if the image is palette-color.</li>
<li>Linear RGB if the image has three samples per pixel, has photometric type
@ -136,7 +120,7 @@ has more than four samples per pixel regardless of the number of bits per
sample.</li>
</ul>
<p><a name="DefaultCMYK"/>The normalized color coordinate transformations
<p><a id="DefaultCMYK"></a>The normalized color coordinate transformations
used for the default CMYK color space are defined as follows:
<ul>
@ -160,9 +144,8 @@ if(K != 1) {
</pre>
</li>
</ul>
</p>
<p><a name="GenericCS"/>The generic color space used when no other color space
<p><a id="GenericCS"></a>The generic color space used when no other color space
can be inferred is provided merely to enable the data to be loaded. It is not
intended to provide accurate conversions of any kind.</p>
@ -171,7 +154,7 @@ foregoing, then an <code>ImageTypeSpecifier</code> should be
supplied to the reader and should be derived from a color space which is correct
for the data in question.</p>
<h4><a name="ICCProfilesRead"/>ICC Profiles</h4>
<h4><a id="ICCProfilesRead">ICC Profiles</a></h4>
If an ICC profile is contained in the image metadata
(<a href="../../plugins/tiff/BaselineTIFFTagSet.html">
@ -203,7 +186,6 @@ and set the <code>ImageTypeSpecifier</code> using
<code>ImageReadParam.setDestinationType</code>.</li>
<li>Pass the parameter object to the appropriate <code>read</code> method.</li>
</ol>
</p>
<p>If the inferred color space not based on the ICC Profile field is compatible
with the ICC profile-based color space, then a second
@ -214,7 +196,7 @@ space will be included in the
more than one type, the first one will be based on the ICC profile and the
second on the inferred color space.</p>
<h4><a name="MetadataIssuesRead"/>Metadata Issues</h4>
<h4><a id="MetadataIssuesRead">Metadata Issues</a></h4>
By default all recognized fields in the TIFF image file directory (IFD) are
loaded into the native image metadata object. Which fields are loaded may be
@ -244,7 +226,7 @@ object may simplify gaining access to metadata values. An instance of
object returned by the TIFF reader using the
<code>TIFFDirectory.createFromMetadata</code> method.</p>
<h5><a name="MapNativeStandard"/>
<h5><a id="MapNativeStandard"></a>
Mapping of TIFF Native Image Metadata to the Standard Metadata Format</h5>
The derivation of standard metadata format
@ -252,7 +234,6 @@ The derivation of standard metadata format
elements from <a href="#ImageMetadata">TIFF native image metadata</a> is given
in the following table.
<p>
<table border="1">
<tr>
<th>Standard Metadata Element</th>
@ -261,9 +242,9 @@ in the following table.
<tr>
<td>/Chroma/ColorSpaceType@name</td>
<td>PhotometricInterpretation: WhiteIsZero, BlackIsZero, TransparencyMask =
"GRAY"; RGB, PaletteColor => "RGB"; CMYK => "CMYK";
YCbCr => "YCbCr";
CIELab, ICCLab => "Lab".</td>
"GRAY"; RGB, PaletteColor =&gt; "RGB"; CMYK =&gt; "CMYK";
YCbCr =&gt; "YCbCr";
CIELab, ICCLab =&gt; "Lab".</td>
</tr>
<tr>
<td>/Chroma/NumChannels@value</td>
@ -271,7 +252,7 @@ CIELab, ICCLab => "Lab".</td>
</tr>
<tr>
<td>/Chroma/BlackIsZero@value</td>
<td>"TRUE" <=> PhotometricInterpretation => WhiteIsZero</td>
<td>"TRUE" &lt;=&gt; PhotometricInterpretation =&gt; WhiteIsZero</td>
</tr>
<tr>
<td>/Chroma/Palette</td>
@ -279,28 +260,28 @@ CIELab, ICCLab => "Lab".</td>
</tr>
<tr>
<td>/Compression/CompressionTypeName@value</td>
<td>Compression: Uncompressed => "none"; CCITT 1D => "CCITT
<td>Compression: Uncompressed =&gt; "none"; CCITT 1D =&gt; "CCITT
RLE";
Group 3 Fax => "CCITT T.4"; Group 4 Fax => "CCITT T.6";
LZW => "LZW";
JPEG => "Old JPEG"; New JPEG => "JPEG"; Zlib =>> "ZLib"; PackBits =>
Group 3 Fax =&gt; "CCITT T.4"; Group 4 Fax =&gt; "CCITT T.6";
LZW =&gt; "LZW";
JPEG =&gt; "Old JPEG"; New JPEG =&gt; "JPEG"; Zlib =&gt;&gt; "ZLib"; PackBits =&gt;
"PackBits";
Deflate => "Deflate"; Exif JPEG => "JPEG".</td>
Deflate =&gt; "Deflate"; Exif JPEG =&gt; "JPEG".</td>
</tr>
<tr>
<td>/Compression/Lossless@value</td>
<td>Compression: JPEG or New JPEG => "FALSE"; otherwise "TRUE".</td>
<td>Compression: JPEG or New JPEG =&gt; "FALSE"; otherwise "TRUE".</td>
</tr>
<tr>
<td>/Data/PlanarConfiguration@value</td>
<td>Chunky => "PixelInterleaved"; Planar => "PlaneInterleaved".</td>
<td>Chunky =&gt; "PixelInterleaved"; Planar =&gt; "PlaneInterleaved".</td>
</tr>
<tr>
<td>/Data/SampleFormat@value</td>
<td>PhotometricInterpretation PaletteColor => "Index";
SampleFormat unsigned integer data => "UnsignedIntegral";
SampleFormat two's complement signed integer data => "SignedIntegral";
SampleFormat IEEE floating point data => "Real";
<td>PhotometricInterpretation PaletteColor =&gt; "Index";
SampleFormat unsigned integer data =&gt; "UnsignedIntegral";
SampleFormat two's complement signed integer data =&gt; "SignedIntegral";
SampleFormat IEEE floating point data =&gt; "Real";
otherwise element not emitted.
</td>
</tr>
@ -310,8 +291,8 @@ otherwise element not emitted.
</tr>
<tr>
<td>/Data/SampleMSB@value</td>
<td>FillOrder: left-to-right => space-separated list of BitsPerSample-1;
right-to-left => space-separated list of 0s.</td>
<td>FillOrder: left-to-right =&gt; space-separated list of BitsPerSample-1;
right-to-left =&gt; space-separated list of 0s.</td>
</tr>
<tr>
<td>/Dimension/PixelAspectRatio@value</td>
@ -343,9 +324,9 @@ right-to-left => space-separated list of 0s.</td>
</tr>
<tr>
<td>/Document/SubimageInterpretation@value</td>
<td>NewSubFileType: transparency => "TransparencyMask";
reduced-resolution => "ReducedResolution";
single page => "SinglePage".</td>
<td>NewSubFileType: transparency =&gt; "TransparencyMask";
reduced-resolution =&gt; "ReducedResolution";
single page =&gt; "SinglePage".</td>
</tr>
<tr>
<td>/Document/ImageCreationTime@value</td>
@ -357,24 +338,23 @@ single page => "SinglePage".</td>
Artist, HostComputer, InkNames, Copyright:
/Text/TextEntry@keyword = field name,
/Text/TextEntry@value = field value.<br>
Example: TIFF Software field => /Text/TextEntry@keyword = "Software",
Example: TIFF Software field =&gt; /Text/TextEntry@keyword = "Software",
/Text/TextEntry@value = Name and version number of the software package(s)
used to create the image.</td>
</tr>
<tr>
<td>/Transparency/Alpha@value</td>
<td>ExtraSamples: associated alpha => "premultiplied";
unassociated alpha => "nonpremultiplied".</td>
<td>ExtraSamples: associated alpha =&gt; "premultiplied";
unassociated alpha =&gt; "nonpremultiplied".</td>
</tr>
</table>
</p>
<h4><a name="ExifRead"/>Reading Exif Images</h4>
<h4><a id="ExifRead">Reading Exif Images</a></h4>
The TIFF reader may be used to read an uncompressed Exif image or the
contents of the <tt>APP1</tt> marker segment of a compressed Exif image.
contents of the <code>APP1</code> marker segment of a compressed Exif image.
<h5><a name="ExifReadTIFF"/>Reading Uncompressed Exif Images</h5>
<h5><a id="ExifReadTIFF">Reading Uncompressed Exif Images</a></h5>
An uncompressed Exif image is a one- or two-page uncompressed TIFF image
with a specific ordering of its IFD and image data content. Each pixel
@ -406,12 +386,12 @@ Note that the Exif thumbnail is treated as a separate page in the TIFF
stream and not as a thumbnail, i.e.,
<code>tiffReader.hasThumbnails(0)</code> will return <code>false</code>.
<h5><a name="ExifReadJPEG"/>Reading Compressed Exif Images</h5>
<h5><a id="ExifReadJPEG">Reading Compressed Exif Images</a></h5>
A compressed Exif image is a 3-band ISO/IEC 10918-1 baseline DCT JPEG stream
with an inserted <tt>APP1</tt> marker segment. The parameters of the marker
with an inserted <code>APP1</code> marker segment. The parameters of the marker
segment after the length are the 6-byte sequence
<code>{'E',&nbsp;'x',&nbsp;'i',&nbsp;'f',&nbsp;0x00,&nbsp;0x00}</code></code>
<code>{'E',&nbsp;'x',&nbsp;'i',&nbsp;'f',&nbsp;0x00,&nbsp;0x00}</code>
followed by a complete TIFF stream. The embedded TIFF stream contains a primary
IFD describing the JPEG image optionally followed by a thumbnail IFD and
compressed or uncompressed thumbnail image data. Note that the embedded TIFF
@ -419,12 +399,12 @@ stream does not contain any image data associated with the primary IFD
nor any descriptive fields which duplicate information found in the JPEG
stream itself.
<p>The parameter content of the <tt>APP1</tt> marker segment may be obtained
<p>The parameter content of the <code>APP1</code> marker segment may be obtained
from the user object of the associated <code>Node</code> in a
<tt>javax_imageio_jpeg_image_1.0</tt> native image metadata tree extracted
<code>javax_imageio_jpeg_image_1.0</code> native image metadata tree extracted
from the image metadata object returned by the JPEG reader. This APP1 Exif
node will be a child of the node named "markerSequence" and will
have name <tt>unknown</tt> and an attribute named <tt>MarkerTag</tt> with
have name <code>unknown</code> and an attribute named <code>MarkerTag</code> with
integral value <code>0xE1</code> (<code>String</code> value
<code>"225"</code>). The user object of this node will be a byte array
which starts with the six bytes <code>{'E', 'x', 'i', 'f', '0', '0'}</code>.
@ -472,9 +452,8 @@ IFDs in the embedded TIFF stream including those corresponding to empty
images. Calling <code>tiffReader.read(0,&nbsp;readParam)</code> will throw
an exception as the primary image in the embedded TIFF stream is always
empty; the primary image should be obtained using the JPEG reader itself.
</p>
<h3><a name="Writing"/>Writing Images</h3>
<h3><a id="Writing">Writing Images</a></h3>
TIFF images are written by a <a href="../../ImageWriter.html">ImageWriter</a> which may be
controlled by its public interface as well as via a supplied
@ -482,7 +461,7 @@ controlled by its public interface as well as via a supplied
by the <code>getDefaultWriteParam()</code> method of the TIFF <code>ImageWriter</code>,
the <code>canWriteTiles()</code> and <code>canWriteCompressed()</code> methods
will return <code>true</code>; the <code>canOffsetTiles()</code> and
<code>canWriteProgressive()</code> methods will return <code>false</code>.</p>
<code>canWriteProgressive()</code> methods will return <code>false</code>.
The TIFF writer supports many optional capabilities including writing tiled
images, inserting images, writing or inserting empty images, and replacing image
@ -502,7 +481,7 @@ both dimensions.</p>
<!-- Table? -->
<h4><a name="Compression"/>Compression</h4>
<h4><a id="Compression">Compression</a></h4>
The compression type may be set via the <code>setCompressionType()</code> method of
the <code>ImageWriteParam</code> after setting the compression mode to
@ -592,21 +571,21 @@ replacement capability of the TIFF writer.
<p> If ZLib/Deflate or JPEG compression is used, the compression quality
may be set. For ZLib/Deflate the supplied floating point quality value is
rescaled to the range <tt>[1,&nbsp;9]</tt> and truncated to an integer
rescaled to the range <code>[1,&nbsp;9]</code> and truncated to an integer
to derive the Deflate compression level. For JPEG the floating point
quality value is passed directly to the JPEG writer plug-in which
interprets it in the usual way.</p>
<h4><a name="ColorConversionWrite"/>Color Conversion</h4>
<h4><a id="ColorConversionWrite">Color Conversion</a></h4>
<p>If the source image data
color space type is RGB, and the destination photometric type is CIE L*a*b* or
YCbCr, then the source image data will be automatically converted from
RGB using an internal color converter.</p>
<h4><a name="ICCProfilesWrite"/>ICC Profiles</h4>
<h4><a id="ICCProfilesWrite">ICC Profiles</a></h4>
An <tt>ICC Profile</tt> field will be written if either:
An <code>ICC Profile</code> field will be written if either:
<ul>
<li>one is present in the native image metadata
<a href="../IIOMetadata.html">IIOMetadata</a> instance supplied to the writer,
@ -614,50 +593,50 @@ or</li>
<li>the <a href="../../../../java/awt/color/ColorSpace.html">ColorSpace</a>
of the destination <code>ImageTypeSpecifier</code> is an instance of
<code>ICC_ColorSpace</code> which is not one of the standard
color spaces defined by the <tt>CS_*</tt> constants in the
color spaces defined by the <code>CS_*</code> constants in the
<code>ColorSpace</code> class. The destination type is set via
<code>ImageWriteParam.setDestinationType(ImageTypeSpecifier)</code> and defaults
to the <code>ImageTypeSpecifier</code> of the image being written.
</li>
</ul>
<h4><a name="MetadataIssuesWrite"/>Metadata Issues</h4>
<h4><a id="MetadataIssuesWrite">Metadata Issues</a></h4>
Some behavior of the writer is affected by or may affect the contents of
the image metadata which may be supplied by the user.
<p>For bilevel images, the <tt>FillOrder</tt>, and <tt>T4Options</tt>
<p>For bilevel images, the <code>FillOrder</code>, and <code>T4Options</code>
fields affect the output data. The data will be filled right-to-left if
<tt>FillOrder</tt> is present with a value of 2
<code>FillOrder</code> is present with a value of 2
(<code>BaselineTIFFTagSet.FILL_ORDER_RIGHT_TO_LEFT</code>)
and will be filled left-to-right otherwise. The value of <tt>T4Options</tt>
and will be filled left-to-right otherwise. The value of <code>T4Options</code>
specifies whether the data should be 1D- or 2D-encoded and whether EOL
padding should be used.</p>
<p>For all images the value of the <tt>RowsPerStrip</tt> field is used
<p>For all images the value of the <code>RowsPerStrip</code> field is used
to the set the number of rows per strip if the image is not tiled. The
default number of rows per strip is either 8 or the number of rows which
would fill no more than 8 kilobytes, whichever is larger.</p>
<p>For all images the tile dimensions may be set using the <tt>TileWidth</tt>
and <tt>TileLength</tt> field values if the tiling mode is
<p>For all images the tile dimensions may be set using the <code>TileWidth</code>
and <code>TileLength</code> field values if the tiling mode is
<code>ImageWriteParam.MODE_COPY_FROM_METADATA</code>. If this mode
is set but the fields are not, their respective default values are the image
width and height.</p>
<p>When using JPEG-in-TIFF compression, a <tt>JPEGTables</tt> field will be
<p>When using JPEG-in-TIFF compression, a <code>JPEGTables</code> field will be
written to the IFD and abbreviated JPEG streams to each strip or tile if and
only if a <tt>JPEGTables</tt> field is contained in the metadata object
provided to the writer. If the contents of the <tt>JPEGTables</tt> field is
only if a <code>JPEGTables</code> field is contained in the metadata object
provided to the writer. If the contents of the <code>JPEGTables</code> field is
a valid tables-only JPEG stream, then it will be used; otherwise the contents
of the field will be replaced with default visually lossless tables. If no
such <tt>JPEGTables</tt> field is present in the metadata, then no
<tt>JPEGTables</tt> field will be written to the output and each strip or
such <code>JPEGTables</code> field is present in the metadata, then no
<code>JPEGTables</code> field will be written to the output and each strip or
tile will be written as a separate, self-contained JPEG stream.</p>
<p>When using Deflate/ZLib or LZW compression, if the image has 8 bits per
sample, a horizontal differencing predictor will be used if the
<tt>Predictor</tt> field is present with a value of 2
<code>Predictor</code> field is present with a value of 2
(<code>BaselineTIFFTagSet.PREDICTOR_HORIZONTAL_DIFFERENCING</code>).
If prediction is so requested but the image does not have
8 bits per sample the field will be reset to have the value 1
@ -667,30 +646,30 @@ If prediction is so requested but the image does not have
<p>Some fields may be added or modified:
<ul>
<li><tt>PhotometricInterpretation</tt> if not present.</li>
<li><tt>PlanarConfiguration</tt> if this field is present with value
<tt>Planar</tt> is is reset to <tt>Chunky</tt>.</li>
<li><tt>Compression</tt> always.</li>
<li><tt>BitsPerSample</tt> if the image is not bilevel.</li>
<li><tt>SamplesPerPixel</tt> always.</li>
<li><tt>ExtraSamples</tt> if an alpha channel is present.</li>
<li><tt>SampleFormat</tt> if not present and the data are 16- or 32-bit
<li><code>PhotometricInterpretation</code> if not present.</li>
<li><code>PlanarConfiguration</code> if this field is present with value
<code>Planar</code> is is reset to <code>Chunky</code>.</li>
<li><code>Compression</code> always.</li>
<li><code>BitsPerSample</code> if the image is not bilevel.</li>
<li><code>SamplesPerPixel</code> always.</li>
<li><code>ExtraSamples</code> if an alpha channel is present.</li>
<li><code>SampleFormat</code> if not present and the data are 16- or 32-bit
integers or floating point.</li>
<li><tt>ColorMap</tt> if the <tt>PhotometricInterpretation</tt> is
<tt>RGBPalette</tt>.</li>
<li><tt>ImageWidth</tt> and <tt>ImageLength</tt> always.</li>
<li><tt>TileWidth</tt>, <tt>TileLength</tt>, <tt>TileOffsets</tt>, and
<tt>TileByteCounts</tt> if a tiled image is being written.</li>
<li><tt>RowsPerStrip</tt>, <tt>StripOffsets</tt>, and <tt>StripByteCounts</tt>
<li><code>ColorMap</code> if the <code>PhotometricInterpretation</code> is
<code>RGBPalette</code>.</li>
<li><code>ImageWidth</code> and <code>ImageLength</code> always.</li>
<li><code>TileWidth</code>, <code>TileLength</code>, <code>TileOffsets</code>, and
<code>TileByteCounts</code> if a tiled image is being written.</li>
<li><code>RowsPerStrip</code>, <code>StripOffsets</code>, and <code>StripByteCounts</code>
if a tiled image is <i>not</i> being written.</li>
<li><tt>XResolution</tt>, <tt>YResolution</tt>, and <tt>ResolutionUnit</tt>
<li><code>XResolution</code>, <code>YResolution</code>, and <code>ResolutionUnit</code>
if none of these is present.</li>
<li><tt>YCbCrSubsampling</tt> and <tt>YCbCrPositioning</tt> if the
<li><code>YCbCrSubsampling</code> and <code>YCbCrPositioning</code> if the
photometric interpretation is YCbCr and the compression type is not JPEG
(only [1,&nbsp;1] subsampling and cosited positioning are supported for
non-JPEG YCbCr output).</li>
<li><tt>YCbCrSubsampling</tt>, <tt>YCbCrPositioning</tt>, and
<tt>ReferenceBlackWhite</tt>: if the compression type is JPEG and the color
<li><code>YCbCrSubsampling</code>, <code>YCbCrPositioning</code>, and
<code>ReferenceBlackWhite</code>: if the compression type is JPEG and the color
space is RGB these will be reset to [2,&nbsp;2] centered subsampling with no
headroom/footroom (0:255,128:255,128:255).</li>
</ul>
@ -698,24 +677,23 @@ headroom/footroom (0:255,128:255,128:255).</li>
<p>Some fields may be removed:
<ul>
<li><tt>BitsPerSample</tt> if the image is bilevel.</li>
<li><tt>ExtraSamples</tt> if the image does not have an alpha channel.</li>
<li><tt>ColorMap</tt> if the photometric interpretation is not
<tt>RGBPalette</tt>.</li>
<li><tt>TileWidth</tt>, <tt>TileLength</tt>, <tt>TileOffsets</tt>, and
<tt>TileByteCounts</tt> if tiling <i>is not</i> being used.</li>
<li><tt>RowsPerStrip</tt>, <tt>StripOffsets</tt>, and <tt>StripByteCounts</tt>
<li><code>BitsPerSample</code> if the image is bilevel.</li>
<li><code>ExtraSamples</code> if the image does not have an alpha channel.</li>
<li><code>ColorMap</code> if the photometric interpretation is not
<code>RGBPalette</code>.</li>
<li><code>TileWidth</code>, <code>TileLength</code>, <code>TileOffsets</code>, and
<code>TileByteCounts</code> if tiling <i>is not</i> being used.</li>
<li><code>RowsPerStrip</code>, <code>StripOffsets</code>, and <code>StripByteCounts</code>
if tiling <i>is</i> being used.</li>
<li><tt>YCbCrSubsampling</tt>, <tt>YCbCrPositioning</tt>, and
<tt>ReferenceBlackWhite</tt> if the compression type is JPEG and the
<li><code>YCbCrSubsampling</code>, <code>YCbCrPositioning</code>, and
<code>ReferenceBlackWhite</code> if the compression type is JPEG and the
color space is grayscale.</li>
<li><tt>JPEGProc</tt>, <tt>JPEGInterchangeFormat</tt>,
<tt>JPEGInterchangeFormatLength</tt>, <tt>JPEGRestartInterval</tt>,
<tt>JPEGLosslessPredictors</tt>, <tt>JPEGPointTransforms</tt>,
<tt>JPEGQTables</tt>, <tt>JPEGDCTables</tt>, and
<tt>JPEGACTables</tt> if the compression type is JPEG.</li>
<li><code>JPEGProc</code>, <code>JPEGInterchangeFormat</code>,
<code>JPEGInterchangeFormatLength</code>, <code>JPEGRestartInterval</code>,
<code>JPEGLosslessPredictors</code>, <code>JPEGPointTransforms</code>,
<code>JPEGQTables</code>, <code>JPEGDCTables</code>, and
<code>JPEGACTables</code> if the compression type is JPEG.</li>
</ul>
</p>
<p>Other fields present in the supplied metadata are uninterpreted and will
be written as supplied.</p>
@ -735,7 +713,7 @@ field to be written a <code>TIFFField</code> may be added to the
<code>IIOMetadata</code> object so obtained may then be passed to the TIFF
writer.</p>
<h5><a name="MapStandardNative"/>
<h5><a id="MapStandardNative"></a>
Mapping of the Standard Metadata Format to TIFF Native Image Metadata</h5>
The derivation of <a href="#ImageMetadata">TIFF native image metadata</a>
@ -743,7 +721,6 @@ elements from the standard metadata format
<a href="standard_metadata.html">javax_imageio_1.0</a> is
given in the following table.
<p>
<table border="1">
<tr>
<th>TIFF Field</th>
@ -754,10 +731,10 @@ given in the following table.
PhotometricInterpretation
</td>
<td>/Chroma/ColorSpaceType@name: "GRAY" and /Chroma/BlackIsZero@value = "FALSE"
=> WhiteIsZero; "GRAY" and /Document/SubimageInterpretation@value =
"TransparencyMask" => TransparencyMask; "RGB" and /Chroma/Palette present =>
PaletteColor; "GRAY" => BlackIsZero; "RGB" => RGB; "YCbCr" => YCbCr;
"CMYK" => CMYK; "Lab" => CIELab.</td>
=&gt; WhiteIsZero; "GRAY" and /Document/SubimageInterpretation@value =
"TransparencyMask" =&gt; TransparencyMask; "RGB" and /Chroma/Palette present =&gt;
PaletteColor; "GRAY" =&gt; BlackIsZero; "RGB" =&gt; RGB; "YCbCr" =&gt; YCbCr;
"CMYK" =&gt; CMYK; "Lab" =&gt; CIELab.</td>
</tr>
<tr>
<td>SamplesPerPixel</td>
@ -769,21 +746,21 @@ PaletteColor; "GRAY" => BlackIsZero; "RGB" => RGB; "YCbCr" => YCbCr;
</tr>
<tr>
<td>Compression</td>
<td>/Compression/CompressionTypeName@value: "none" => Uncompressed;
"CCITT RLE" => CCITT 1D; "CCITT T.4" => Group 3 Fax; "CCITT T.6" => Group 4
Fax; "LZW" => LZW; "Old JPEG" => JPEG; "JPEG" => New JPEG; "ZLib" => ZLib;
"PackBits" => PackBits; "Deflate" => Deflate.</td>
<td>/Compression/CompressionTypeName@value: "none" =&gt; Uncompressed;
"CCITT RLE" =&gt; CCITT 1D; "CCITT T.4" =&gt; Group 3 Fax; "CCITT T.6" =&gt; Group 4
Fax; "LZW" =&gt; LZW; "Old JPEG" =&gt; JPEG; "JPEG" =&gt; New JPEG; "ZLib" =&gt; ZLib;
"PackBits" =&gt; PackBits; "Deflate" =&gt; Deflate.</td>
</tr>
<tr>
<td>PlanarConfiguration</td>
<td>/Data/PlanarConfiguration@value: "PixelInterleaved" => Chunky;
"PlaneInterleaved" => Planar.</td>
<td>/Data/PlanarConfiguration@value: "PixelInterleaved" =&gt; Chunky;
"PlaneInterleaved" =&gt; Planar.</td>
</tr>
<tr>
<td>SampleFormat</td>
<td>/Data/SampleFormat@value: "SignedIntegral" => two's complement signed
integer data; "UnsignedIntegral" => unsigned integer data; "Real" =>
IEEE floating point data; "Index" => unsigned integer data.
<td>/Data/SampleFormat@value: "SignedIntegral" =&gt; two's complement signed
integer data; "UnsignedIntegral" =&gt; unsigned integer data; "Real" =&gt;
IEEE floating point data; "Index" =&gt; unsigned integer data.
</td>
</tr>
<tr>
@ -792,8 +769,8 @@ IEEE floating point data; "Index" => unsigned integer data.
</tr>
<tr>
<td>FillOrder</td>
<td>/Data/SampleMSB@value: if all values in space-separated list are 0s =>
right-to-left; otherwise => left-to-right.
<td>/Data/SampleMSB@value: if all values in space-separated list are 0s =&gt;
right-to-left; otherwise =&gt; left-to-right.
</td>
</tr>
<tr>
@ -826,9 +803,9 @@ right-to-left; otherwise => left-to-right.
</tr>
<tr>
<td>NewSubFileType</td>
<td>/Document/SubimageInterpretation@value: "TransparencyMask" =>
transparency mask; "ReducedResolution" => reduced-resolution;
"SinglePage" => single page.</td>
<td>/Document/SubimageInterpretation@value: "TransparencyMask" =&gt;
transparency mask; "ReducedResolution" =&gt; reduced-resolution;
"SinglePage" =&gt; single page.</td>
</tr>
<tr>
<td>DateTime</td>
@ -843,29 +820,28 @@ TIFF Fields, e.g., "Software", then the field is added with content
</tr>
<tr>
<td>ExtraSamples</td>
<td>/Transparency/Alpha@value: "premultiplied" => associated alpha, count 1;
"nonpremultiplied" => unassociated alpha, count 1.</td>
<td>/Transparency/Alpha@value: "premultiplied" =&gt; associated alpha, count 1;
"nonpremultiplied" =&gt; unassociated alpha, count 1.</td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</table>
</p>
<h4><a name="ExifWrite"/>Writing Exif Images</h4>
<h4><a id="ExifWrite">Writing Exif Images</a></h4>
The TIFF writer may be used to write an uncompressed Exif image or the
contents of the <tt>APP1</tt> marker segment of a compressed Exif image.
contents of the <code>APP1</code> marker segment of a compressed Exif image.
<h5><a name="ExifWriteTIFF"/>Writing Uncompressed Exif Images</h5>
<h5><a id="ExifWriteTIFF">Writing Uncompressed Exif Images</a></h5>
When writing a sequence of images each image is normally recorded as
{IFD,&nbsp;IFD Value,&nbsp;Image Data}. The Exif specification requires
that an uncompressed Exif image be structured as follows:
<a id="ExifStructure"></a>
<ol>
<a name="ExifStructure"/>
<li>Image File Header</li>
<li>Primary IFD</li>
<li>Primary IFD Value</li>
@ -925,9 +901,9 @@ written:
}
</code></pre>
<h5><a name="ExifWriteJPEG"/>Writing Compressed Exif Images</h5>
<h5><a id="ExifWriteJPEG">Writing Compressed Exif Images</a></h5>
The structure of the embedded TIFF stream in the <tt>APP1</tt> segment of a
The structure of the embedded TIFF stream in the <code>APP1</code> segment of a
compressed Exif image is identical to the <a href="#ExifStructure">
uncompressed Exif image structure</a> except that there are no primary
image data, i.e., the primary IFD does not refer to any image data.
@ -1013,7 +989,7 @@ image data, i.e., the primary IFD does not refer to any image data.
Node tree = jpegImageMetadata.getAsTree(nativeFormat);
NodeList children = tree.getChildNodes();
int numChildren = children.getLength();
for (int i = 0; i < numChildren; i++) {
for (int i = 0; i &lt; numChildren; i++) {
Node child = children.item(i);
if (child.getNodeName().equals("markerSequence")) {
child.appendChild(app1Node);
@ -1032,7 +1008,7 @@ The <code>"unknown"</code> node created above would be appended to the
and written to the JPEG stream when the primary image is written using
the JPEG writer.
<h3><a name="StreamMetadata"/>Stream Metadata</h3>
<h3><a id="StreamMetadata">Stream Metadata</a></h3>
The DTD for the TIFF native stream metadata format is as follows:
@ -1049,7 +1025,7 @@ The DTD for the TIFF native stream metadata format is as follows:
]&gt;
</pre>
<h3><a name="ImageMetadata"/>Image Metadata</h3>
<h3><a id="ImageMetadata">Image Metadata</a></h3>
The DTD for the TIFF native image metadata format is as follows:

View File

@ -1,8 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>WBMP Metadata Format Specification</title>
</head>
<!--
Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -26,13 +29,8 @@ or visit www.oracle.com if you need additional information or have any
questions.
-->
<title>WBMP Metadata Format Specification</title>
</head>
<body>
<center><h1>
WBMP Metadata Format Specification
</h1></center>
<h1>WBMP Metadata Format Specification</h1>
The XML schema for the native image metadata format is as follows:

View File

@ -113,7 +113,7 @@
*
* <h2> Standard Plug-in Notes</h2>
*
* <h3><a name="gif_plugin_notes">Standard plug-in for GIF image format</a></h3>
* <h3><a id="gif_plugin_notes">Standard plug-in for GIF image format</a></h3>
* ImageIO provides {@code ImageReader} and {@code ImageWriter}plug-ins for the
* <a href="http://www.w3.org/Graphics/GIF/spec-gif89a.txt"> Graphics
* Interchange Format (GIF)</a> image format. These are the "standard" GIF

View File

@ -80,7 +80,7 @@
* attribute category, and the {@code Copies} instance represents the attribute
* value.
*
* <h4><a name="role"></a>Attribute Roles</h4>
* <h4><a id="role"></a>Attribute Roles</h4>
* When submitting a print job to a printer, the client provides the attributes
* describing the characteristics of the print data, such as the document name,
* and how the print data should be printed, such as double-sided, five copies.

View File

@ -32,7 +32,7 @@
* <em>The Java Tutorial</em>. For other resources, see
* <a href="#related">Related Documentation</a>.
*
* <h2><a name="threading">Swing's Threading Policy</a></h2>
* <h2><a id="threading">Swing's Threading Policy</a></h2>
* In general Swing is not thread safe. All Swing components and related
* classes, unless otherwise documented, must be accessed on the event
* dispatching thread.
@ -110,7 +110,7 @@
* href="http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html">
* Concurrency in Swing</a>.
*
* <h2><a name="related">Related Documentation</a></h2>
* <h2><a id="related">Related Documentation</a></h2>
* For overviews, tutorials, examples, guides, and other documentation,
* please see:
* <ul>

View File

@ -1,16 +1,37 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Using the Multiplexing Look and Feel</TITLE>
</HEAD>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Using the Multiplexing Look and Feel</title>
</head>
<!--
Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
<b>
<font size=+3>
Using the Multiplexing Look and Feel
</font>
</b>
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
<body>
<h1>Using the Multiplexing Look and Feel</h1>
<blockquote>
<hr>
@ -18,8 +39,8 @@ Using the Multiplexing Look and Feel
<i>
This document is based on an article
originally published in
<a href="http://www.oracle.com/technetwork/java/javase/tech/articles-jsp-139072.html" target="_top"><em>The Swing
Connection</em></a>.
<a href="http://www.oracle.com/technetwork/java/javase/tech/articles-jsp-139072.html"
target="_top"><em>The Swing Connection</em></a>.
</i>
</p>
<hr>
@ -65,22 +86,19 @@ This document has the following sections:
Before reading further, you should be familiar
with the concept of pluggable look and feels.
For basic information, see
<a href="https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html">How to Set the Look and Feel</a>,
a section in
<em>The Java Tutorial</em>.
<a href="https://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html">
How to Set the Look and Feel</a>, a section in <em>The Java Tutorial</em>.
For architectural details, you can read
<a
href="http://www.oracle.com/technetwork/java/architecture-142923.html#pluggable">Pluggable look-and-feel architecture</a>, a section within
href="http://www.oracle.com/technetwork/java/architecture-142923.html#pluggable">
Pluggable look-and-feel architecture</a>, a section within
a <em>Swing Connection</em> article.
</p>
<p>
<a name="overview"></a>
<hr width=100% align=LEFT size=2>
<b>
<font color="#000080" size="+2">Overview</font>
</b>
<a id="overview"></a>
<hr>
<h2>Overview</h2>
<p>
@ -109,7 +127,7 @@ of those classes as well.
<p>
This approach has at least two shortcomings:
<ul type="DISC">
<ul>
<li>First, each subclass must use what is
essentially a copy of the same code, potentially creating a difficult
support situation for the developer.<br></li>
@ -143,12 +161,9 @@ is called (unsurprisingly)
the Multiplexing look and feel.
<p>
<a name="howtouse"></a>
<hr width=100% align=LEFT size=2>
<b>
<font color="#000080" size="+2">How to Use Auxiliary Look and Feels</font>
</b>
<a id="howtouse"></a>
<hr>
<h2>How to Use Auxiliary Look and Feels</h2>
<p>
It's easy to use auxiliary look and feels with Swing. To instruct
@ -199,12 +214,9 @@ of the UIs obtained from the default and auxiliary look and feels.
</p>
<p>
<a name="howtowrite"></a>
<hr width=100% align=LEFT size=2>
<b>
<font color="#000080" size="+2">Tips for Writing an Auxiliary Look and Feel</font>
</b>
<a id="howtowrite"></a>
<hr>
<h2>Tips for Writing an Auxiliary Look and Feel</h2>
<p>
An auxiliary look and feel is like any other look and feel,
@ -239,12 +251,9 @@ and creating subclasses of the
the <code>javax.swing.plaf</code> package.
</p>
<p>
<br>
<a name="dosanddonts">
<font color="#000080" size="+1"><b>Dos and Don'ts</b></font>
<a id="dosanddonts">
<h3>Dos and Don'ts</h3>
</a>
</p>
<p>
The following paragraphs provide some general recommendations for developing
@ -252,11 +261,11 @@ auxiliary look and feels.
</p>
<p>
<font color="#000080"><b>Use the <code>installUI</code> method
<h4>Use the <code>installUI</code> method
to perform all initialization,
and the <code>uninstallUI</code> method
to perform all cleanup.</b></font>
</p>
to perform all cleanup.</h4>
<blockquote>
The <code>installUI</code> and <code>uninstallUI</code>
methods are invoked when a component's look and feel is set.
@ -265,25 +274,23 @@ a chance to add listeners on the component and its data model.
Similarly, the <code>uninstallUI</code> method
lets the previous UI object remove its listeners.
</blockquote>
<p> <font color="#000080"><b>Don't extend
visual look and feels.</b></font></p>
<h4><b>Don't extend visual look and feels.</b></h4>
<blockquote>
We recommended that you <i>don't</i> implement
UI classes of an auxiliary look and feel as subclasses of the
UI classes of a visual look and feel. Why not? Because they might
UI classes of a visual look and feel. Why not? Because they might
accidentally inherit code that installs listeners on a component
object or renders the component on the display. As a result,
object or renders the component on the display. As a result,
your auxiliary look and feel would compete with the default look
and feel rather than cooperating with it.<br>
<br>
Instead, we recommend that the UI classes of an auxiliary look
and feel directly extend the abstract UI classes in the <code>javax.swing.plaf</code>
package. By using this strategy, the developer of an auxiliary
package. By using this strategy, the developer of an auxiliary
look and feel can avoid competing with the default look and feel.
</blockquote>
<p> <font color="#000080"><b>Override all UI-specific methods
your UI classes inherit.</b></font>
</p>
<h4><b>Override all UI-specific methods your UI classes inherit.</b></h4>
<blockquote>
We recommend that each UI class of
an auxiliary look and feel override the methods
@ -300,15 +307,12 @@ lets the previous UI object remove its listeners.
look and feel does not override this method, all
opaque components appear as blank areas on the screen!
</blockquote>
<p>
<br>
<a name="uidefaults">
<font color="#000080" size="+1"><b>Extending UIDefaults</b></font>
</a>
<a id="uidefaults"></a>
<h3>Extending UIDefaults</h3>
<p>In many cases, you
might want an auxiliary look and feel to be &quot;incomplete.&quot; That
might want an auxiliary look and feel to be &quot;incomplete.&quot; That
is, you might not need to support the complete set
of components.
For example, an auxiliary look and feel might choose
@ -331,49 +335,47 @@ lets the previous UI object remove its listeners.
</p>
<p><code>public class MyAuxLookAndFeel
extends LookAndFeel {<br>
    ...<br>
    public UIDefaults getDefaults() {<br>
        <b>UIDefaults table = <br>
...<br>
public UIDefaults getDefaults() {<br>
<b>UIDefaults table = <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
new MyAuxUIDefaults();<br>
</b>        Object[] uiDefaults = {<br>
          &quot;ButtonUI&quot;, &quot;MyAuxButtonUI&quot;,<br>
          ...<br>
        }<br>
        table.putDefaults(uiDefaults);<br>
        return table;<br>
    }<br>
</b> Object[] uiDefaults = {<br>
&quot;ButtonUI&quot;, &quot;MyAuxButtonUI&quot;,<br>
...<br>
}<br>
table.putDefaults(uiDefaults);<br>
return table;<br>
}<br>
}<br>
<br>
<b>class MyAuxUIDefaults extends UIDefaults {<br>
    protected void getUIError(String msg) {<br>
        //System.err.println<br>
protected void getUIError(String msg) {<br>
//System.err.println<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp; (&quot;An
annoying message!&quot;);<br>
    }<br>
}<br>
}</b></code></p>
<p>
In the preceding example, an auxiliary look and feel named <code>MyAux</code>
creates a <code>UIDefaults</code> subclass
that overrides the <code>getUIError</code>
method. The <code>getUIError</code>
method. The <code>getUIError</code>
method is the method that is invoked when Swing cannot find a UI
object in a look and feel. By merely doing nothing in this method,
object in a look and feel. By merely doing nothing in this method,
you can avoid the error message.</p>
<p>
<br>
<a name="defaultui">
<b><font color="#000080" size="+1">Examining Other UI Objects</font></b>
</a>
<a id="defaultui"></a>
<h3>Examining Other UI Objects</h3>
<p>In
rare instances, a UI object from an auxiliary look and feel
may be interested in the default UI object used by the component. In
may be interested in the default UI object used by the component. In
these cases, the UI object from auxiliary look and feel can obtain
the UI from a component by calling its <code>getUI</code>
method. The returned UI is an instance of one of the multiplexing
method. The returned UI is an instance of one of the multiplexing
look and feel UI classes (for example, <code>MultiButtonUI</code>).
The UI object from the auxiliary look and feel can call the <code>getUIs</code>
method of the returned object to obtain an array containing a complete list
@ -382,17 +384,16 @@ In the preceding example, an auxiliary look and feel named <code>MyAux</code>
</p>
<p>
<a name="implementation"></a>
<hr width=100% align=LEFT size=2>
<font color="#000080" size="+2"><b>How the Multiplexing Look and Feel
Is Implemented</b></font>
<a id="implementation"></a>
<hr>
<h2>How the Multiplexing Look and Feel Is Implemented</h2>
<p>
The Multiplexing look and feel
(represented by
<code>javax.swing.plaf.multi.MultiLookAndFeel</code>)
is meant to be transparent to
all developers and users. It should &quot;just work&quot; -- and
all developers and users. It should &quot;just work&quot; -- and
it is used only when the user tells Swing to use an auxiliary look
and feel.</p>
@ -417,7 +418,7 @@ all developers and users.
and feels,
referring to these UIs in the following manner:
<ul type="DISC">
<ul>
<li> The UI object from the default look
and feel is always the first to be created. After that, a UI object
is created from each auxiliary look and feel in the order
@ -459,10 +460,9 @@ all developers and users.
<p>
<a name="custom"></a>
<hr width=100% align=LEFT size=2>
<font color="#000080" size="+2"><b>How to Provide a Custom Multiplexing Look
and Feel</b></font>
<a id="custom"></a>
<hr>
<h2>How to Provide a Custom Multiplexing Look and Feel</h2>
<p>While
we hope the behavior of the Multiplexing look and feel is
@ -474,7 +474,7 @@ and Feel</b></font>
<p> To do that, all the user has to do is modify
the <code>$JDKHOME/conf/swing.properties</code>
file to include a definition of the <code>swing.plaf.multiplexinglaf</code>
property. Swing then treats the <code>swing.plaf.multiplexinglaf</code>
property. Swing then treats the <code>swing.plaf.multiplexinglaf</code>
property as a <code>LookAndFeel</code>
subclass that supports multiplexing.
</p>
@ -498,5 +498,5 @@ of auxiliary look and feels will most likely have developed and
tested against our Multiplexing look and feel.
</p>
</BODY>
</HTML>
</body>
</html>

View File

@ -1,8 +1,34 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!doctype html>
<html lang="en">
<head>
<title></title>
<meta charset="utf-8"/>
<title>Nimbus colors</title>
</head>
<!--
Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
<body>
<h1 id="primaryColors">Primary Colors</h1>
<table summary="Nimbus primary colors">

View File

@ -1,8 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Component Specific Properties</title>
</head>
<!--
Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
@ -24,16 +27,17 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
</head>
<body bgcolor="white">
<h3>Component Specific Properties</h3>
<p> The look, and to some degree the feel of Synth
can be customized by way of component specific properties.
These properties are accessed from <a
href="../SynthStyle.html">SynthStyle#get</a>. Refer to <a href="synthFileFormat.html#e.property">synth file format</a> for examples of how to specify these properties in a synth configuration file.</p>
<p>
can be customized by way of component specific properties.
These properties are accessed from <a
href="../SynthStyle.html">SynthStyle#get</a>. Refer to <a
href="synthFileFormat.html#e.property">synth file format</a> for examples
of how to specify these properties in a synth configuration file.</p>
<p>
This file specifies the expected class type each of the values
are to take. The behavior of supplying the wrong type is
unspecified: typically a <code>ClassCastException</code> is
@ -66,7 +70,7 @@ the following properties: </p>
</tbody>
</table>
<br>
<h4><a name="JButton">JButton</a></h4>
<h4><a id="JButton">JButton</a></h4>
<p> JButton paints text using the TEXT_FOREGROUND ColorType. In addition
to the <a href="#buttonProperties">Button properties</a>, JButton
supports the following property: </p>
@ -89,7 +93,7 @@ button that is receiving focus. </td>
</tbody>
</table>
<br>
<h4><a name="JCheckBox">JCheckBox</a></h4>
<h4><a id="JCheckBox">JCheckBox</a></h4>
<p> JCheckBox paints text using the TEXT_FOREGROUND ColorType. In
addition to the <a href="#buttonProperties">Button properties</a>,
JCheckBox supports the following property: </p>
@ -111,7 +115,7 @@ JCheckBox supports the following property: </p>
</tbody>
</table>
<br>
<h4><a name="JComboBox">JComboBox</a></h4>
<h4><a id="JComboBox">JComboBox</a></h4>
<p> JComboBox is a composite component that consists of the following
child Components: </p>
<table border="1" summary="JComboBox child components">
@ -339,7 +343,7 @@ of the file chooser.<br>
</tbody>
</table>
<br>
<h4><a name="JInternalFrame"></a>JInternalFrame</h4>
<h4><a id="JInternalFrame"></a>JInternalFrame</h4>
<h5>JInternalFrame Specific Properties</h5>
<table cellpadding="2" cellspacing="2" border="1" summary="JInternalFrame specific properties"
style="text-align: left; width: 100%;">
@ -369,7 +373,7 @@ the system menu will be shown.<br>
</tbody>
</table>
<br>
<h4><a name="JInternalFrameTitlePane"></a>JInternalFrameTitlePane</h4>
<h4><a id="JInternalFrameTitlePane"></a>JInternalFrameTitlePane</h4>
<p>JInternalFrameTitlePane is the control bar located at the top of the
internal frame similar to that found in a frame.<br>
</p>
@ -469,7 +473,7 @@ abililty to close the internal frame.
</tbody>
</table>
<br>
<h4><a name="JList">JList</a></h4>
<h4><a id="JList">JList</a></h4>
<p> JList's sets the name of the renderer to List.renderer. JList
supports the following properties: </p>
<h5>JList Specific Properties</h5>
@ -508,7 +512,7 @@ is not invoked. </td>
</tbody>
</table>
<br>
<h4><a name="menuProperties">Menu Properties</a></h4>
<h4><a id="menuProperties">Menu Properties</a></h4>
<p> The Menu classes (JCheckBoxMenuItem, JMenu, JMenuItem, and
JRadioButtonMenuItem) all support the same set of properties and behave
similarly. Each component consists of two Regions: the region
@ -593,7 +597,7 @@ RadioButtonMenuItem. </p>
</tbody>
</table>
<br>
<h4><a name="JOptionPane">JOptionPane</a></h4>
<h4><a id="JOptionPane">JOptionPane</a></h4>
<p> JOptionPane is a composite component and may consist of numerous child
components, they are: OptionPane.button, OptionPane.label,
OptionPane.comboBox, OptionPane.scrollPane, OptionPane.list,
@ -709,7 +713,7 @@ it follows the other buttons. </td>
</tbody>
</table>
<br>
<h4><a name="JProgressBar"></a>JProgressBar<br>
<h4><a id="JProgressBar"></a>JProgressBar<br>
</h4>
<h5>JProgressBar Specific Properties<br>
</h5>
@ -749,7 +753,7 @@ the bouncing box per frame when the progress bar is indeterminate.<br>
</tr>
</tbody>
</table>
<h4><a name="JRadioButton">JRadioButton</a></h4>
<h4><a id="JRadioButton">JRadioButton</a></h4>
<p> JRadioButton paints text using the TEXT_FOREGROUND ColorType. In
addition to the <a href="#buttonProperties">Button properties</a>,
JRadioButton supports the following property: </p>
@ -771,7 +775,7 @@ JRadioButton supports the following property: </p>
</tbody>
</table>
<br>
<h4><a name="JScrollBar">JScrollBar</a></h4>
<h4><a id="JScrollBar">JScrollBar</a></h4>
<p> JScrollBar is a composite component that consists of the following
child Components: </p>
<table border="1" summary="JScrollBar child components">
@ -841,7 +845,7 @@ will be made equal. </td>
</tbody>
</table>
<br>
<h4><a name="Separator">Separators</a></h4>
<h4><a id="Separator">Separators</a></h4>
<p> All of the separator classes, JSeparator, JPopupMenu.Separator and
JToolBar.Separator use the same property: </p>
<table border="1" summary="Separator classes common properties">
@ -875,14 +879,15 @@ preferred size will include the Insets. </td>
<td>ToolBar.separatorSize</td>
<td>Dimension</td>
<td>null </td>
<td>The value of this is passed to the <code>javax.swing.JToolBar$Separator#setSeparatorSize(java.awt.Dimension)</code>
method. If unspecified <code>setSeparatorSize</code> is not
invoked. </td>
<td>The value of this is passed to the
<code>javax.swing.JToolBar$Separator#setSeparatorSize(java.awt.Dimension)</code>
method. If unspecified <code>setSeparatorSize</code> is not invoked.
</td>
</tr>
</tbody>
</table>
<br>
<h4><a name="JScrollPane">JScrollPane</a></h4>
<h4><a id="JScrollPane">JScrollPane</a></h4>
<p>
JScrollPane is unique in that it provides a method for setting
the Border around the JViewport with JViewport throwing an
@ -913,7 +918,7 @@ invoked. </td>
</tbody>
</table>
<br>
<h4><a name="JSplitPane">JSplitPane</a></h4>
<h4><a id="JSplitPane">JSplitPane</a></h4>
<p> JSplitPane is a composite component that will contain a divider and
potentially two buttons, if setOneTouchExpandable(true) has been
invoked. The two buttons will be named:
@ -962,7 +967,7 @@ setOneTouchExpandable. </td>
</tbody>
</table>
<br>
<h4><a name="JSlider"></a>JSlider</h4>
<h4><a id="JSlider"></a>JSlider</h4>
<h5>JSlider Specific Properties</h5>
<table cellpadding="2" cellspacing="2" border="1" summary="JSlider specific properties"
style="text-align: left; width: 100%;">
@ -1022,7 +1027,7 @@ of the slider.<br>
</tbody>
</table>
<br>
<h4><a name="JTabbedPane"></a>JTabbedPane</h4>
<h4><a id="JTabbedPane"></a>JTabbedPane</h4>
<h5>JTabbedPane Specific Properties</h5>
<table cellpadding="2" cellspacing="2" border="1" summary="JTabbedPane specific properties"
style="text-align: left; width: 100%;">
@ -1084,7 +1089,7 @@ selected tab.<br>
</tbody>
</table>
<br>
<h4><a name="JTable">JTable</a></h4>
<h4><a id="JTable">JTable</a></h4>
<p> JTable sets the name of the renderer to Table.cellRenderer.
JTable supports the following properties: </p>
<h5>JTable Specific Properties</h5>
@ -1129,7 +1134,7 @@ renderer will only succeed if it is a Synth Border. </td>
</tbody>
</table>
<br>
<h4><a name="JTree">JTree</a></h4>
<h4><a id="JTree">JTree</a></h4>
<p> JTree sets the name of the renderer to Tree.renderer, the name of
the editor is Tree.cellEditor.</p>
<h5>JTree Specific Properties</h5>
@ -1212,7 +1217,7 @@ and <a href="synthFileFormat.html#e.graphicsUtils">binding it</a> to the tree.</
</tr>
</tbody>
</table>
<h4><a name="JToggleButton">JToggleButton</a></h4>
<h4><a id="JToggleButton">JToggleButton</a></h4>
<p> JToggleButton paints text using the TEXT_FOREGROUND ColorType. In
addition to the <a href="#buttonProperties">Button properties</a>,
JToggleButton supports the following property: </p>
@ -1234,7 +1239,7 @@ JToggleButton supports the following property: </p>
</tbody>
</table>
<br>
<h4><a name="buttonProperties">Button Properties</a></h4>
<h4><a id="buttonProperties">Button Properties</a></h4>
<p> Each of the Button classes (JButton, JCheckBox, JRadioButton,
JToggleButton and SynthArrowButton) support a similar set of properties.
These properties are: </p>
@ -1250,23 +1255,29 @@ These properties are: </p>
<td>prefix.contentAreaFilled</td>
<td>Integer</td>
<td>true </td>
<td>Refer to the javadoc of <code>javax.swing.AbstractButton#contentAreaFilled(boolean)</code> for details
of how this is used. It is up to the Painter to properly honor this
property. </td>
<td>Refer to the javadoc of
<code>javax.swing.AbstractButton#contentAreaFilled(boolean)</code>
for details of how this is used. It is up to the Painter to properly honor
this property.
</td>
</tr>
<tr>
<td>prefix.iconTextGap</td>
<td>Integer</td>
<td>If unspecified, JButton.setIconTextGap is not invoked. </td>
<td>Padding between the icon and text. Refer to the javadoc of <code>javax.swing.AbstractButton#setIconTextGap(int)</code> for details of how
this is used. </td>
<td>If unspecified, JButton.setIconTextGap is not invoked.</td>
<td>Padding between the icon and text. Refer to the javadoc of
<code>javax.swing.AbstractButton#setIconTextGap(int)</code>
for details of how this is used.
</td>
</tr>
<tr>
<td>prefix.margin</td>
<td>Insets</td>
<td>Empty Insets (0, 0, 0, 0) </td>
<td>Margin for the JButton. Refer to the javadoc of <code>javax.swing.AbstractButton#setMargin(java.awt.Insets)</code> for details
of how the margin is used. </td>
<td>Margin for the JButton. Refer to the javadoc of
<code>javax.swing.AbstractButton#setMargin(java.awt.Insets)</code> for
details of how the margin is used.
</td>
</tr>
<tr>
<td>prefix.textShiftOffset</td>
@ -1281,7 +1292,7 @@ the button is in a pressed state and does not have a pressed icon. </td>
<p> <code>Prefix</code> is one of: Button, CheckBox, RadioButton or
JToggleButton.<br>
</p>
<h4><a name="textProperties"></a>Text Properties<br>
<h4><a id="textProperties"></a>Text Properties<br>
</h4>
<table cellpadding="2" cellspacing="2" border="1" summary="Text properties"
style="text-align: left; width: 100%;">

View File

@ -1,7 +1,33 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>Synth File Format</title>
<!--
Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
<style type="text/css">
div.dtd-fragment {
width: 100%;
@ -19,13 +45,16 @@ div.example {
</head>
<body>
<h2><a name="file">File Format</a></h2>
<h2><a id="file">File Format</a></h2>
<p>
Synth's file format (<a href="synth.dtd">dtd</a>)
allows for specifying all the pieces
necessary to create your own look and feel. A synth file is
loaded by way of the <A HREF="../../../../../javax/swing/plaf/synth/SynthLookAndFeel.html#load(java.io.InputStream,%20java.lang.Class)">SynthLookAndFeel.load(InputStream, Class)</a> or
<a href="../../../../../javax/swing/plaf/synth/SynthLookAndFeel.html#load(java.net.URL)">SynthLookAndFeel.load(URL)</a> methods.
loaded by way of the <A
HREF="../../../../../javax/swing/plaf/synth/SynthLookAndFeel.html#load(java.io.InputStream,%20java.lang.Class)">
SynthLookAndFeel.load(InputStream, Class)</a> or
<a href="../../../../../javax/swing/plaf/synth/SynthLookAndFeel.html#load(java.net.URL)">
SynthLookAndFeel.load(URL)</a> methods.
The following example uses the <code>load</code> method to configure
a <code>SynthLookAndFeel</code> and sets it as the current look
and feel:
@ -51,8 +80,10 @@ div.example {
</pre>
</div>
<p>
The method <a href="../../../../../javax/swing/plaf/synth/SynthLookAndFeel.html#load(java.net.URL)">SynthLookAndFeel.load(URL)</a> can be
used, for instance, to load a look and feel from any of the following:
The method <a
href="../../../../../javax/swing/plaf/synth/SynthLookAndFeel.html#load(java.net.URL)">
SynthLookAndFeel.load(URL)</a> can be used, for instance, to load a look
and feel from any of the following:
</p>
<ul>
<li>File, e.g. <code>file:///C:/java/synth/laf/laf.xml</code></li>
@ -70,7 +101,7 @@ div.example {
<h3>The synth element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.synth">synth</a> ((<a href="#ee.beansPersistance">%beansPersistance;</a>) | <a href="#e.style">style</a> | <a href="#e.bind">bind</a> | <a href="#e.font">font</a> | <a href="#e.color">color</a> |
&lt;!ELEMENT <a id="e.synth">synth</a> ((<a href="#ee.beansPersistance">%beansPersistance;</a>) | <a href="#e.style">style</a> | <a href="#e.bind">bind</a> | <a href="#e.font">font</a> | <a href="#e.color">color</a> |
<a href="#e.imagePainter">imagePainter</a> | <a href="#e.imageIcon">imageIcon</a> | <a href="#e.defaultsProperty">defaultsProperty</a>)*>
&lt;!ATTLIST synth
<a href="#synth.version">version</a> CDATA #IMPLIED
@ -78,7 +109,7 @@ div.example {
</pre>
</div>
<p><em>Attribute definitions</em></p>
<dl><dt><a name="synth.version"><samp>version</samp></a></dt>
<dl><dt><a id="synth.version"><samp>version</samp></a></dt>
<dd>File format version, should be 1</dd>
</dl>
<p>
@ -90,7 +121,7 @@ div.example {
<h3>The style element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.style">style</a> (<a href="#e.property">property</a> | <a href="#e.defaultsProperty">defaultsProperty</a> | <a href="#e.state">state</a> | <a href="#e.font">font</a> | <a href="#e.graphicsUtils">graphicsUtils</a> |
&lt;!ELEMENT <a id="e.style">style</a> (<a href="#e.property">property</a> | <a href="#e.defaultsProperty">defaultsProperty</a> | <a href="#e.state">state</a> | <a href="#e.font">font</a> | <a href="#e.graphicsUtils">graphicsUtils</a> |
<a href="#e.insets">insets</a> | <a href="#e.painter">painter</a> | <a href="#e.imagePainter">imagePainter</a> | <a href="#e.opaque">opaque</a> | (<a href="#ee.beansPersistance">%beansPersistance;</a>) |
<a href="#e.imageIcon">imageIcon</a>)*>
&lt;!ATTLIST style
@ -101,9 +132,9 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="style.id"><samp>id</samp></a></dt>
<dt><a id="style.id"><samp>id</samp></a></dt>
<dd>Unique identifier for the style.</dd>
<dt><a name="style.clone"><samp>clone</samp></a></dt>
<dt><a id="style.clone"><samp>clone</samp></a></dt>
<dd>Identifier of a previously defined style that is copied
and used for the new style. This provides a convenient
mechanism for overriding only a portion of an existing
@ -144,7 +175,7 @@ div.example {
<h3>The state element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.state">state</a> (<a href="#e.color">color</a> | <a href="#e.font">font</a> | <a href="#e.painter">painter</a> | <a href="#e.imagePainter">imagePainter</a> | (<a href="#ee.beansPersistance">%beansPersistance;</a>) |
&lt;!ELEMENT <a id="e.state">state</a> (<a href="#e.color">color</a> | <a href="#e.font">font</a> | <a href="#e.painter">painter</a> | <a href="#e.imagePainter">imagePainter</a> | (<a href="#ee.beansPersistance">%beansPersistance;</a>) |
<a href="#e.property">property</a> | <a href="#e.imageIcon">imageIcon</a>)*>
&lt;!ATTLIST state
<a href="#state.id">id</a> ID #IMPLIED
@ -156,19 +187,19 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="state.id"><samp>id</samp></a></dt>
<dt><a id="state.id"><samp>id</samp></a></dt>
<dd>Unique identifier for the state.</dd>
<dt><a name="state.clone"><samp>clone</samp></a></dt>
<dt><a id="state.clone"><samp>clone</samp></a></dt>
<dd>Identifier of a previously defined state that is copied
and used for the new state.</dd>
<dt><a name="state.value"><samp>value</samp></a></dt>
<dt><a id="state.value"><samp>value</samp></a></dt>
<dd>Identifies the state of the Component the properties are to apply
to. This is a list of: ENABLED,
MOUSE_OVER, PRESSED, DISABLED, FOCUSED, SELECTED or
DEFAULT. Multiple states should
be separated by 'and.' If you do not specify a value, the
contents apply to all states.
<dt><a name="state.idref"><samp>idref</samp></a></dt>
<dt><a id="state.idref"><samp>idref</samp></a></dt>
<dd>Indicates this state should be the same as a previously
defined state. This is useful for multiple styles that
wish to share the same visual properties for a particular
@ -220,7 +251,7 @@ div.example {
<h3>The font element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.font">font</a> EMPTY>
&lt;!ELEMENT <a id="e.font">font</a> EMPTY>
&lt;!ATTLIST font
<a href="#font.id">id</a> ID #IMPLIED
<a href="#font.idref">clone</a> IDREF #IMPLIED
@ -232,18 +263,18 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="font.id"><samp>id</samp></a></dt>
<dt><a id="font.id"><samp>id</samp></a></dt>
<dd>Unique identifier for the Font.</dd>
<dt><a name="font.idref"><samp>idref</samp></a></dt>
<dt><a id="font.idref"><samp>idref</samp></a></dt>
<dd>Identifier of a previously defined font.</dd>
<dt><a name="font.name"><samp>name</samp></a></dt>
<dt><a id="font.name"><samp>name</samp></a></dt>
<dd>Name of the font.
<dt><a name="font.style"><samp>style</samp></a></dt>
<dt><a id="font.style"><samp>style</samp></a></dt>
<dd>Style of the font. This is a list of the styles defined by
Font separated by spaces: PLAIN, BOLD or ITALIC. If
unspecified PLAIN is used.
</dd>
<dt><a name="font.size"><samp>size</samp></a></dt>
<dt><a id="font.size"><samp>size</samp></a></dt>
<dd>Size of the font, in pixels</dd>
</dl>
<p>
@ -289,7 +320,7 @@ div.example {
<h3>The color element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.color">color</a> EMPTY>
&lt;!ELEMENT <a id="e.color">color</a> EMPTY>
&lt;!ATTLIST color
<a href="#color.id">id</a> ID #IMPLIED
<a href="#color.idref">idref</a> IDREF #IMPLIED
@ -300,11 +331,11 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="color.id"><samp>id</samp></a></dt>
<dt><a id="color.id"><samp>id</samp></a></dt>
<dd>Unique identifier for the color.</dd>
<dt><a name="color.idref"><samp>idref</samp></a></dt>
<dt><a id="color.idref"><samp>idref</samp></a></dt>
<dd>Identifier of a previously defined color.</dd>
<dt><a name="color.type"><samp>type</samp></a></dt>
<dt><a id="color.type"><samp>type</samp></a></dt>
<dd>Describes where this color should be used. This is
typically one of the constants defined by ColorType:
FOREGROUND, BACKGROUND, TEXT_FOREGROUND, TEXT_BACKGROUND
@ -314,7 +345,7 @@ div.example {
is useful for subclasses of synth that define additional
color types.
</dd>
<dt><a name="color.value"><samp>value</samp></a></dt>
<dt><a id="color.value"><samp>value</samp></a></dt>
<dd>
Value for the color. This accepts the following forms.
<ul>
@ -366,7 +397,7 @@ div.example {
<h3>The property element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.property">property</a> EMPTY>
&lt;!ELEMENT <a id="e.property">property</a> EMPTY>
&lt;!ATTLIST property
<a href="#property.key">key</a> CDATA #REQUIRED
<a href="#property.type">type</a> (idref|boolean|dimension|insets|integer|string) "idref"
@ -376,11 +407,11 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="property.key"><samp>key</samp></a></dt>
<dt><a id="property.key"><samp>key</samp></a></dt>
<dd>Name of the property.</dd>
<dt><a name="property.type"><samp>type</samp></a></dt>
<dt><a id="property.type"><samp>type</samp></a></dt>
<dd>Indicates the type of the property.</dd>
<dt><a name="property.value"><samp>value</samp></a></dt>
<dt><a id="property.value"><samp>value</samp></a></dt>
<dd>Value for the property. For boolean properties this will be
be true or false, for integer properties this will be a
valid integer, for dimensions this will be the width and
@ -438,7 +469,7 @@ div.example {
</div>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.defaultsProperty">defaultsProperty</a> EMPTY>
&lt;!ELEMENT <a id="e.defaultsProperty">defaultsProperty</a> EMPTY>
&lt;!ATTLIST defaultsProperty
<a href="#defaultsProperty.key">key</a> CDATA #REQUIRED
<a href="#defaultsProperty.type">type</a> (idref|boolean|dimension|insets|integer|string) "idref"
@ -448,11 +479,11 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="defaultsProperty.key"><samp>key</samp></a></dt>
<dt><a id="defaultsProperty.key"><samp>key</samp></a></dt>
<dd>Name of the property.</dd>
<dt><a name="defaultsProperty.type"><samp>type</samp></a></dt>
<dt><a id="defaultsProperty.type"><samp>type</samp></a></dt>
<dd>Indicates the type of the property.</dd>
<dt><a name="defaultsProperty.value"><samp>value</samp></a></dt>
<dt><a id="defaultsProperty.value"><samp>value</samp></a></dt>
<dd>Value for the property. For boolean properties this will be
true or false, for integer properties this will be a
valid integer, for dimensions this will be the width and
@ -488,7 +519,7 @@ div.example {
<h3>The graphicsUtils element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.graphicsUtils">graphicsUtils</a> EMPTY>
&lt;!ELEMENT <a id="e.graphicsUtils">graphicsUtils</a> EMPTY>
&lt;!ATTLIST graphicsUtils
<a href="#graphicsUtils.idref">idref</a> IDREF #REQUIRED
&gt;
@ -496,7 +527,7 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="graphicsUtils.idref"><samp>idref</samp></a></dt>
<dt><a id="graphicsUtils.idref"><samp>idref</samp></a></dt>
<dd>Identifer of a previously defined SynthGraphicsUtils object
that is to be used as the SynthGraphicsUtils for the current
<a href="#e.style">style</a>.</dd>
@ -520,7 +551,7 @@ div.example {
<h3>The insets element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.insets">insets</a> EMPTY>
&lt;!ELEMENT <a id="e.insets">insets</a> EMPTY>
&lt;!ATTLIST insets
<a href="#insets.id">id</a> ID #IMPLIED
<a href="#insets.idref">idref</a> IDREF #IMPLIED
@ -533,17 +564,17 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="insets.id"><samp>id</samp></a></dt>
<dt><a id="insets.id"><samp>id</samp></a></dt>
<dd>Unique identifier for the Insets.</dd>
<dt><a name="insets.idref"><samp>idref</samp></a></dt>
<dt><a id="insets.idref"><samp>idref</samp></a></dt>
<dd>Identifier of a previously defined Insets.</dd>
<dt><a name="insets.top"><samp>top</samp></a></dt>
<dt><a id="insets.top"><samp>top</samp></a></dt>
<dd>Top component of the Insets.</dd>
<dt><a name="insets.bottom"><samp>bottom</samp></a></dt>
<dt><a id="insets.bottom"><samp>bottom</samp></a></dt>
<dd>Bottom component of the Insets.</dd>
<dt><a name="insets.left"><samp>left</samp></a></dt>
<dt><a id="insets.left"><samp>left</samp></a></dt>
<dd>Left component of the Insets.</dd>
<dt><a name="insets.right"><samp>right</samp></a></dt>
<dt><a id="insets.right"><samp>right</samp></a></dt>
<dd>Right component of the Insets.</dd>
</dl>
<p>
@ -564,7 +595,7 @@ div.example {
<h3>The bind element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.bind">bind</a> EMPTY>
&lt;!ELEMENT <a id="e.bind">bind</a> EMPTY>
&lt;!ATTLIST bind
<a href="#bind.style">style</a> IDREF #REQUIRED
<a href="#bind.type">type</a> (name|region) #REQUIRED
@ -574,12 +605,12 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="bind.style"><samp>style</samp></a></dt>
<dt><a id="bind.style"><samp>style</samp></a></dt>
<dd>Unique identifier of a previously defined style.</dd>
<dt><a name="bind.type"><samp>type</samp></a></dt>
<dt><a id="bind.type"><samp>type</samp></a></dt>
<dd>One of name or region. For type name component.getName() is used,
otherwise the name of the Region is used.</dd>
<dt><a name="bind.key"><samp>key</samp></a></dt>
<dt><a id="bind.key"><samp>key</samp></a></dt>
<dd>Regular expression applied to the name of the Component, or the
name of the Region, depending upon the value of
<a href="#bind.type">type</a>.</dd>
@ -673,7 +704,7 @@ div.example {
<h3>The painter element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.painter">painter</a> EMPTY>
&lt;!ELEMENT <a id="e.painter">painter</a> EMPTY>
&lt;!ATTLIST painter
<a href="#painter.idref">idref</a> IDREF #IMPLIED
<a href="#painter.method">method</a> CDATA #IMPLIED
@ -683,9 +714,9 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="painter.idref"><samp>idref</samp></a></dt>
<dt><a id="painter.idref"><samp>idref</samp></a></dt>
<dd>Identifier of a previously defined SynthPainter.</dd>
<dt><a name="painter.method"><samp>method</samp></a></dt>
<dt><a id="painter.method"><samp>method</samp></a></dt>
<dd>Identifies the SynthPainter method this is to be used for. The name
corresponds to the method name of a paint method in SynthPainter
with the paint prefix dropped, the remainder is case
@ -694,7 +725,7 @@ div.example {
'buttonBackground' or 'buttonbackground'. If this is
not specified the painter is used for all methods that don't have a
a specific painter for them.</dd>
<dt><a name="painter.direction"><samp>direction</samp></a></dt>
<dt><a id="painter.direction"><samp>direction</samp></a></dt>
<dd>Identifies the direction, or orientation, this painter is to be
used for. This is only useful for the SynthPainter methods that take
a direction or orientation. If this is not specified the painter is
@ -787,7 +818,7 @@ div.example {
<h3>The imagePainter element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.imagePainter">imagePainter</a> EMPTY>
&lt;!ELEMENT <a id="e.imagePainter">imagePainter</a> EMPTY>
&lt;!ATTLIST imagePainter
<a href="#imagePainter.id">id</a> ID #IMPLIED
<a href="#imagePainter.method">method</a> CDATA #IMPLIED
@ -803,9 +834,9 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="imagePainter.id"><samp>id</samp></a></dt>
<dt><a id="imagePainter.id"><samp>id</samp></a></dt>
<dd>Unique identifier for the imagePainter.</dd>
<dt><a name="imagePainter.method"><samp>method</samp></a></dt>
<dt><a id="imagePainter.method"><samp>method</samp></a></dt>
<dd>Identifies the SynthPainter method this is to be used for. The name
corresponds to the method name of a paint method in SynthPainter
with the paint prefix dropped, the remainder is case
@ -814,29 +845,29 @@ div.example {
'buttonBackground' or 'buttonbackground'. If this is
not specified the painter is used for all methods that don't have a
a specific painter for them.</dd>
<dt><a name="imagePainter.direction"><samp>direction</samp></a></dt>
<dt><a id="imagePainter.direction"><samp>direction</samp></a></dt>
<dd>Identifies the direction, or orientation, this image is to be
used for. This is only useful for the SynthPainter methods that take
a direction or orientation. If this is not specified the image is
used for all directions.</dd>
<dt><a name="imagePainter.path"><samp>path</samp></a></dt>
<dt><a id="imagePainter.path"><samp>path</samp></a></dt>
<dd>Path to the image. Path to the image. If SynthLookAndFeel.load is
passed a Class this will use the Class method getResource (with with the
Class suplied to the load method). If load is passed a URL this will use the
URL constructor URL(context, path) to resolve the path.</dd>
<dt><a name="imagePainter.sourceInsets"><samp>sourceInsets</samp></a></dt>
<dt><a id="imagePainter.sourceInsets"><samp>sourceInsets</samp></a></dt>
<dd>Insets on the source image. This is top, left, bottom, right with
each component separated by a space.</dd>
<dt><a name="imagePainter.destinationInsets"><samp>destinationInsets</samp></a></dt>
<dt><a id="imagePainter.destinationInsets"><samp>destinationInsets</samp></a></dt>
<dd>Insets of the destination image. This is top, left, bottom, right with
each component separated by a space. If not specified the
<a href="#imagePainter.sourceInsets">sourceInsets</a> are used.</dd>
<dt><a name="imagePainter.painterCenter"><samp>paintCenter</samp></a></dt>
<dt><a id="imagePainter.painterCenter"><samp>paintCenter</samp></a></dt>
<dd>Whether or not the center of the image should be drawn.</dd>
<dt><a name="imagePainter.stretch"><samp>stretch</samp></a></dt>
<dt><a id="imagePainter.stretch"><samp>stretch</samp></a></dt>
<dd>Whether or not the north, south, east and west components of the
resulting image should be scaled or tiled.</dd>
<dt><a name="imagePainter.center"><samp>center</samp></a></dt>
<dt><a id="imagePainter.center"><samp>center</samp></a></dt>
<dd>Whether or not the image is centered.</dd>
</dl>
<p>
@ -883,7 +914,7 @@ div.example {
<h3>The imageIcon element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.imageIcon">imageIcon</a> EMPTY>
&lt;!ELEMENT <a id="e.imageIcon">imageIcon</a> EMPTY>
&lt;!ATTLIST imageIcon
<a href="#imageIcon.id">id</a> ID #REQUIRED
<a href="#imageIcon.path">path</a> CDATA #REQUIRED
@ -892,9 +923,9 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="imageIcon.id"><samp>id</samp></a></dt>
<dt><a id="imageIcon.id"><samp>id</samp></a></dt>
<dd>Unique identifier for the imageIcon.</dd>
<dt><a name="imageIcon.path"><samp>path</samp></a></dt>
<dt><a id="imageIcon.path"><samp>path</samp></a></dt>
<dd>Path to the image. This uses the Class method
getResource to resolve the path, with the Class supplied to
SynthLookAndFeel.load.</dd>
@ -917,7 +948,7 @@ div.example {
<h3>The opaque element</h3>
<div class="dtd-fragment">
<pre class="dtd-fragment">
&lt;!ELEMENT <a name="e.opaque">opaque</a> EMPTY>
&lt;!ELEMENT <a id="e.opaque">opaque</a> EMPTY>
&lt;!ATTLIST opaque
<a href="#opaque.value">value</a> (true|false) "true"
&gt;
@ -925,7 +956,7 @@ div.example {
</div>
<p><em>Attribute definitions</em></p>
<dl>
<dt><a name="opaque.value"><samp>id</samp></a></dt>
<dt><a id="opaque.value"><samp>id</samp></a></dt>
<dd>Whether or not the style should be opaque, if unspecified the style
is opaque.</dd>
</dl>
@ -945,12 +976,14 @@ div.example {
</pre>
</div>
<h3><a name="ee.beansPersistance">The beansPersistance entity</a></h3>
<h3><a id="ee.beansPersistance">The beansPersistance entity</a></h3>
<p>
Beans persistance can be used to embed any Object. This is
typically used for embedding your own Painters, but can be used
for other arbritrary objects as well. Refer to <a
href="http://www.oracle.com/technetwork/java/persistence3-139471.html">http://www.oracle.com/technetwork/java/persistence3-139471.html</a> for details on beans persistance.
href="http://www.oracle.com/technetwork/java/persistence3-139471.html">
http://www.oracle.com/technetwork/java/persistence3-139471.html</a>
for details on beans persistance.
<h3>Backing Style</h3>