--- a/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java Wed Sep 25 14:48:39 2019 +0530
@@ -75,7 +75,7 @@
private BufferCapabilities bufferCaps;
private long pConfigInfo;
private ContextCapabilities oglCaps;
- private OGLContext context;
+ private final OGLContext context;
private final Object disposerReferent = new Object();
private final int maxTextureSize;
@@ -105,7 +105,7 @@
this.pConfigInfo = configInfo;
this.oglCaps = oglCaps;
this.maxTextureSize = maxTextureSize;
- context = new OGLContext(OGLRenderQueue.getInstance(), this);
+ context = new OGLContext(OGLRenderQueue.getInstance());
// add a record to the Disposer so that we destroy the native
// CGLGraphicsConfigInfo data when this object goes away
--- a/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2019, 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
@@ -48,8 +48,9 @@
native void validate(int xoff, int yoff, int width, int height, boolean isOpaque);
- private native void initOps(long pConfigInfo, long pPeerData, long layerPtr,
- int xoff, int yoff, boolean isOpaque);
+ private native void initOps(OGLGraphicsConfig gc, long pConfigInfo,
+ long pPeerData, long layerPtr, int xoff,
+ int yoff, boolean isOpaque);
protected CGLSurfaceData(CGLGraphicsConfig gc, ColorModel cm, int type,
int width, int height) {
@@ -74,7 +75,7 @@
pPeerData = pView.getAWTView();
isOpaque = pView.isOpaque();
}
- initOps(pConfigInfo, pPeerData, 0, 0, 0, isOpaque);
+ initOps(gc, pConfigInfo, pPeerData, 0, 0, 0, isOpaque);
}
protected CGLSurfaceData(CGLLayer layer, CGLGraphicsConfig gc,
@@ -90,7 +91,7 @@
layerPtr = layer.getPointer();
isOpaque = layer.isOpaque();
}
- initOps(pConfigInfo, 0, layerPtr, 0, 0, isOpaque);
+ initOps(gc, pConfigInfo, 0, layerPtr, 0, 0, isOpaque);
}
@Override //SurfaceData
--- a/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m Wed Sep 25 14:48:39 2019 +0530
@@ -1408,10 +1408,8 @@
JNF_COCOA_ENTER(env);
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
- NSWindow *window = [view window];
-
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
-
+ NSWindow *window = [view window];
ret = (jint)[[AWTWindow getNSWindowDisplayID_AppKitThread: window] intValue];
}];
--- a/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl/CGLSurfaceData.m Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl/CGLSurfaceData.m Wed Sep 25 14:48:39 2019 +0530
@@ -131,31 +131,6 @@
}
/**
- * Returns a pointer (as a jlong) to the native CGLGraphicsConfigInfo
- * associated with the given OGLSDOps. This method can be called from
- * shared code to retrieve the native GraphicsConfig data in a platform-
- * independent manner.
- */
-jlong
-OGLSD_GetNativeConfigInfo(OGLSDOps *oglsdo)
-{
- J2dTraceLn(J2D_TRACE_INFO, "OGLSD_GetNativeConfigInfo");
-
- if (oglsdo == NULL) {
- J2dRlsTraceLn(J2D_TRACE_ERROR, "OGLSD_GetNativeConfigInfo: ops are null");
- return 0L;
- }
-
- CGLSDOps *cglsdo = (CGLSDOps *)oglsdo->privOps;
- if (cglsdo == NULL) {
- J2dRlsTraceLn(J2D_TRACE_ERROR, "OGLSD_GetNativeConfigInfo: cgl ops are null");
- return 0L;
- }
-
- return ptr_to_jlong(cglsdo->configInfo);
-}
-
-/**
* Makes the given GraphicsConfig's context current to its associated
* "scratch" surface. If there is a problem making the context current,
* this method will return NULL; otherwise, returns a pointer to the
@@ -359,7 +334,7 @@
JNIEXPORT void JNICALL
Java_sun_java2d_opengl_CGLSurfaceData_initOps
- (JNIEnv *env, jobject cglsd,
+ (JNIEnv *env, jobject cglsd, jobject gc,
jlong pConfigInfo, jlong pPeerData, jlong layerPtr,
jint xoff, jint yoff, jboolean isOpaque)
{
@@ -367,8 +342,22 @@
J2dTraceLn1(J2D_TRACE_INFO, " pPeerData=%p", jlong_to_ptr(pPeerData));
J2dTraceLn2(J2D_TRACE_INFO, " xoff=%d, yoff=%d", (int)xoff, (int)yoff);
+ gc = (*env)->NewGlobalRef(env, gc);
+ if (gc == NULL) {
+ JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed.");
+ return;
+ }
+
OGLSDOps *oglsdo = (OGLSDOps *)
SurfaceData_InitOps(env, cglsd, sizeof(OGLSDOps));
+ if (oglsdo == NULL) {
+ (*env)->DeleteGlobalRef(env, gc);
+ JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed.");
+ return;
+ }
+ // later the graphicsConfig will be used for deallocation of oglsdo
+ oglsdo->graphicsConfig = gc;
+
CGLSDOps *cglsdo = (CGLSDOps *)malloc(sizeof(CGLSDOps));
if (cglsdo == NULL) {
JNU_ThrowOutOfMemoryError(env, "creating native cgl ops");
--- a/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_Ports.cpp Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_Ports.cpp Wed Sep 25 14:48:39 2019 +0530
@@ -414,11 +414,18 @@
AudioControl **audioControls, int offset, int len) {
void *jControl = NULL;
PortControl *control = (PortControl *)calloc(1, sizeof(PortControl));
+ if (control == NULL) {
+ return NULL;
+ }
float precision = 0.01;
control->type = type;
control->controlCount = len;
control->audioControls = (AudioControl **)malloc(len * sizeof(AudioControl *));
+ if (control->audioControls == NULL) {
+ free(control);
+ return NULL;
+ }
memcpy(control->audioControls, audioControls + offset, len * sizeof(AudioControl *));
switch (control->type) {
@@ -482,6 +489,9 @@
OS_ERROR1(err, "PORT_GetControls (portIndex = %d) get OwnedObject values", portIndex);
} else {
mixer->deviceControls = (AudioControl *)calloc(mixer->deviceControlCount, sizeof(AudioControl));
+ if (mixer->deviceControls == NULL) {
+ return;
+ }
for (int i = 0; i < mixer->deviceControlCount; i++) {
AudioControl *control = &mixer->deviceControls[i];
@@ -615,10 +625,16 @@
if (err == noErr) {
CFIndex length = CFStringGetLength(cfname) + 1;
channelName = (char *)malloc(length);
+ if (channelName == NULL) {
+ return;
+ }
CFStringGetCString(cfname, channelName, length, kCFStringEncodingUTF8);
CFRelease(cfname);
} else {
channelName = (char *)malloc(16);
+ if (channelName == NULL) {
+ return;
+ }
sprintf(channelName, "Ch %d", ch);
}
--- a/src/java.desktop/share/classes/java/awt/BorderLayout.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/BorderLayout.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -92,11 +92,10 @@
* Here is an example of five buttons in an applet laid out using
* the {@code BorderLayout} layout manager:
* <p>
- * <img src="doc-files/BorderLayout-1.gif"
- * alt="Diagram of an applet demonstrating BorderLayout.
- * Each section of the BorderLayout contains a Button corresponding to its position in the layout, one of:
- * North, West, Center, East, or South."
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/BorderLayout-1.gif" alt="Diagram of an applet
+ * demonstrating BorderLayout. Each section of the BorderLayout contains a
+ * Button corresponding to its position in the layout, one of: North, West,
+ * Center, East, or South." style="margin: 7px 10px;">
* <p>
* The code for this applet is as follows:
*
--- a/src/java.desktop/share/classes/java/awt/Button.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/Button.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -40,8 +40,8 @@
* depicts three views of a "{@code Quit}" button as it appears
* under the Solaris operating system:
* <p>
- * <img src="doc-files/Button-1.gif" alt="The following context describes the graphic"
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/Button-1.gif" alt="The following context describes the
+ * graphic" style="margin: 7px 10px;">
* <p>
* The first view shows the button as it appears normally.
* The second view shows the button
--- a/src/java.desktop/share/classes/java/awt/Checkbox.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/Checkbox.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -52,8 +52,8 @@
* This image depicts the check boxes and grid layout
* created by this code example:
* <p>
- * <img src="doc-files/Checkbox-1.gif" alt="The following context describes the graphic."
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/Checkbox-1.gif" alt="The following context describes the
+ * graphic." style="margin: 7px 10px;">
* <p>
* The button labeled {@code one} is in the "on" state, and the
* other two are in the "off" state. In this example, which uses the
--- a/src/java.desktop/share/classes/java/awt/CheckboxGroup.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/CheckboxGroup.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -46,9 +46,9 @@
* <p>
* This image depicts the check box group created by this example:
* <p>
- * <img src="doc-files/CheckboxGroup-1.gif"
- * alt="Shows three checkboxes, arranged vertically, labeled one, two, and three. Checkbox one is in the on state."
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/CheckboxGroup-1.gif" alt="Shows three checkboxes,
+ * arranged vertically, labeled one, two, and three. Checkbox one is in the on
+ * state." style="margin: 7px 10px;">
*
* @author Sami Shaio
* @see java.awt.Checkbox
--- a/src/java.desktop/share/classes/java/awt/CheckboxMenuItem.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/CheckboxMenuItem.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -52,7 +52,7 @@
* <img src="doc-files/MenuBar-1.gif"
* alt="Menu labeled Examples, containing items Basic, Simple, Check, and More
* Examples. The Check item is a CheckBoxMenuItem instance, in the off state."
- * style="float:center; margin: 7px 10px;">
+ * style="margin: 7px 10px;">
* <p>
* The item labeled {@code Check} shows a check box menu item
* in its "off" state.
--- a/src/java.desktop/share/classes/java/awt/Choice.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/Choice.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -51,8 +51,8 @@
* After this choice menu has been added to a panel,
* it appears as follows in its normal state:
* <p>
- * <img src="doc-files/Choice-1.gif" alt="The following text describes the graphic"
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/Choice-1.gif" alt="The following text describes the
+ * graphic" style="margin: 7px 10px;">
* <p>
* In the picture, {@code "Green"} is the current choice.
* Pushing the mouse button down on the object causes a menu to
--- a/src/java.desktop/share/classes/java/awt/FlowLayout.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/FlowLayout.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -54,7 +54,7 @@
* <p>
* <img src="doc-files/FlowLayout-1.gif"
* ALT="Graphic of Layout for Three Buttons"
- * style="float:center; margin: 7px 10px;">
+ * style="margin: 7px 10px;">
* <p>
* Here is the code for this applet:
*
--- a/src/java.desktop/share/classes/java/awt/Frame.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/Frame.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -83,10 +83,10 @@
* of the primary screen in the virtual device, negative coordinates
* are possible, as shown in the following figure.
* <p>
- * <img src="doc-files/MultiScreen.gif"
- * alt="Diagram of virtual device encompassing three physical screens and one primary physical screen. The primary physical screen
- * shows (0,0) coords while a different physical screen shows (-80,-100) coords."
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/MultiScreen.gif" alt="Diagram of virtual device
+ * encompassing three physical screens and one primary physical screen. The
+ * primary physical screen shows (0,0) coords while a different physical screen
+ * shows (-80,-100) coords." style="margin: 7px 10px;">
* <p>
* In such an environment, when calling {@code setLocation},
* you must pass a virtual coordinate to this method. Similarly,
--- a/src/java.desktop/share/classes/java/awt/GridBagLayout.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/GridBagLayout.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -116,64 +116,49 @@
* <dt>{@link GridBagConstraints#anchor}
* <dd>Specifies where the component should be positioned in its display area.
* There are three kinds of possible values: absolute, orientation-relative,
- * and baseline-relative
+ * and baseline-relative.
* Orientation relative values are interpreted relative to the container's
* {@code ComponentOrientation} property while absolute values
* are not. Baseline relative values are calculated relative to the
* baseline. Valid values are:
*
- * <table class="striped" style="margin: 0px auto">
- * <caption>Absolute, relative and baseline values as described above</caption>
- * <thead>
- * <tr>
- * <th><p style="text-align:center">Absolute Values</th>
- * <th><p style="text-align:center">Orientation Relative Values</th>
- * <th><p style="text-align:center">Baseline Relative Values</th>
- * </tr>
- * </thead>
- * <tbody>
- * <tr>
- * <td>
- * <ul style="list-style-type:none">
- * <li>{@code GridBagConstraints.NORTH}</li>
- * <li>{@code GridBagConstraints.SOUTH}</li>
- * <li>{@code GridBagConstraints.WEST}</li>
- * <li>{@code GridBagConstraints.EAST}</li>
- * <li>{@code GridBagConstraints.NORTHWEST}</li>
- * <li>{@code GridBagConstraints.NORTHEAST}</li>
- * <li>{@code GridBagConstraints.SOUTHWEST}</li>
- * <li>{@code GridBagConstraints.SOUTHEAST}</li>
- * <li>{@code GridBagConstraints.CENTER} (the default)</li>
+ * <ul>
+ * <li>Absolute Values:
+ * <ul>
+ * <li>{@code GridBagConstraints.NORTH}
+ * <li>{@code GridBagConstraints.SOUTH}
+ * <li>{@code GridBagConstraints.WEST}
+ * <li>{@code GridBagConstraints.EAST}
+ * <li>{@code GridBagConstraints.NORTHWEST}
+ * <li>{@code GridBagConstraints.NORTHEAST}
+ * <li>{@code GridBagConstraints.SOUTHWEST}
+ * <li>{@code GridBagConstraints.SOUTHEAST}
+ * <li>{@code GridBagConstraints.CENTER} (the default)
+ * </ul>
+ * <li>Orientation Relative Values:
+ * <ul >
+ * <li>{@code GridBagConstraints.PAGE_START}
+ * <li>{@code GridBagConstraints.PAGE_END}
+ * <li>{@code GridBagConstraints.LINE_START}
+ * <li>{@code GridBagConstraints.LINE_END}
+ * <li>{@code GridBagConstraints.FIRST_LINE_START}
+ * <li>{@code GridBagConstraints.FIRST_LINE_END}
+ * <li>{@code GridBagConstraints.LAST_LINE_START}
+ * <li>{@code GridBagConstraints.LAST_LINE_END}
+ * </ul>
+ * <li>Baseline Relative Values:
+ * <ul>
+ * <li>{@code GridBagConstraints.BASELINE}
+ * <li>{@code GridBagConstraints.BASELINE_LEADING}
+ * <li>{@code GridBagConstraints.BASELINE_TRAILING}
+ * <li>{@code GridBagConstraints.ABOVE_BASELINE}
+ * <li>{@code GridBagConstraints.ABOVE_BASELINE_LEADING}
+ * <li>{@code GridBagConstraints.ABOVE_BASELINE_TRAILING}
+ * <li>{@code GridBagConstraints.BELOW_BASELINE}
+ * <li>{@code GridBagConstraints.BELOW_BASELINE_LEADING}
+ * <li>{@code GridBagConstraints.BELOW_BASELINE_TRAILING}
+ * </ul>
* </ul>
- * </td>
- * <td>
- * <ul style="list-style-type:none">
- * <li>{@code GridBagConstraints.PAGE_START}</li>
- * <li>{@code GridBagConstraints.PAGE_END}</li>
- * <li>{@code GridBagConstraints.LINE_START}</li>
- * <li>{@code GridBagConstraints.LINE_END}</li>
- * <li>{@code GridBagConstraints.FIRST_LINE_START}</li>
- * <li>{@code GridBagConstraints.FIRST_LINE_END}</li>
- * <li>{@code GridBagConstraints.LAST_LINE_START}</li>
- * <li>{@code GridBagConstraints.LAST_LINE_END}</li>
- * </ul>
- * </td>
- * <td>
- * <ul style="list-style-type:none">
- * <li>{@code GridBagConstraints.BASELINE}</li>
- * <li>{@code GridBagConstraints.BASELINE_LEADING}</li>
- * <li>{@code GridBagConstraints.BASELINE_TRAILING}</li>
- * <li>{@code GridBagConstraints.ABOVE_BASELINE}</li>
- * <li>{@code GridBagConstraints.ABOVE_BASELINE_LEADING}</li>
- * <li>{@code GridBagConstraints.ABOVE_BASELINE_TRAILING}</li>
- * <li>{@code GridBagConstraints.BELOW_BASELINE}</li>
- * <li>{@code GridBagConstraints.BELOW_BASELINE_LEADING}</li>
- * <li>{@code GridBagConstraints.BELOW_BASELINE_TRAILING}</li>
- * </ul>
- * </td>
- * </tr>
- * </tbody>
- * </table>
* <dt>{@link GridBagConstraints#weightx},
* {@link GridBagConstraints#weighty}
* <dd>Used to determine how to distribute space, which is
@@ -201,14 +186,10 @@
* <p>
* The following figure shows a baseline layout and includes a
* component that spans rows:
- * <table class="borderless" style="margin: 0px auto">
- * <caption>Baseline Layout</caption>
- * <tr style="text-align:center">
- * <td>
- * <img src="doc-files/GridBagLayout-baseline.png"
- * alt="The following text describes this graphic (Figure 1)." style="float:center">
- * </td>
- * </table>
+ * <p style="text-align: center">
+ * <img src="doc-files/GridBagLayout-baseline.png"
+ * alt="The following text describes this graphic (Figure 1).">
+ * </p>
* This layout consists of three components:
* <ul><li>A panel that starts in row 0 and ends in row 1. The panel
* has a baseline-resize behavior of {@code CONSTANT_DESCENT} and has
@@ -257,20 +238,21 @@
* left-to-right container and Figure 3 shows the layout for a horizontal,
* right-to-left container.
*
- * <table class="borderless" style="margin: 0px auto">
- * <caption style="width:600;display:none">Figures</caption>
- * <tr style="text-align:center">
- * <td>
- * <img src="doc-files/GridBagLayout-1.gif" alt="The preceding text describes this graphic (Figure 1)." style="float:center; margin: 7px 10px;">
- * </td>
- * <td>
- * <img src="doc-files/GridBagLayout-2.gif" alt="The preceding text describes this graphic (Figure 2)." style="float:center; margin: 7px 10px;">
- * </td>
- * <tr style="text-align:center">
- * <td>Figure 2: Horizontal, Left-to-Right</td>
- * <td>Figure 3: Horizontal, Right-to-Left</td>
- * </tr>
- * </table>
+ * <div style="margin:0 auto;width:680px;text-align:center;font-weight:bold">
+ * <div style="float:left">
+ * <p><img src="doc-files/GridBagLayout-1.gif"
+ * alt="The preceding text describes this graphic (Figure 2)."
+ * style="margin: 7px 10px;">
+ * <p>Figure 2: Horizontal, Left-to-Right
+ * </div>
+ * <div style="float:right">
+ * <p><img src="doc-files/GridBagLayout-2.gif"
+ * alt="The preceding text describes this graphic (Figure 3)."
+ * style="margin: 7px 10px;">
+ * <p>Figure 3: Horizontal, Right-to-Left
+ * </div>
+ * <br style="clear:both;">
+ * </div>
* <p>
* Each of the ten components has the {@code fill} field
* of its associated {@code GridBagConstraints} object
--- a/src/java.desktop/share/classes/java/awt/GridLayout.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/GridLayout.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -55,26 +55,21 @@
* If the container's {@code ComponentOrientation} property is horizontal
* and right-to-left, the example produces the output shown in Figure 2.
*
- * <table style="float:center;width:600">
- * <caption style="display:none">Figures</caption>
- * <tr style="text-align:center">
- * <td><img SRC="doc-files/GridLayout-1.gif"
- * alt="Shows 6 buttons in rows of 2. Row 1 shows buttons 1 then 2.
- * Row 2 shows buttons 3 then 4. Row 3 shows buttons 5 then 6.">
- * </td>
- *
- * <td style="text-align:center"><img SRC="doc-files/GridLayout-2.gif"
- * alt="Shows 6 buttons in rows of 2. Row 1 shows buttons 2 then 1.
- * Row 2 shows buttons 4 then 3. Row 3 shows buttons 6 then 5.">
- * </td>
- * </tr>
- *
- * <tr style="text-align:center">
- * <td>Figure 1: Horizontal, Left-to-Right</td>
- *
- * <td>Figure 2: Horizontal, Right-to-Left</td>
- * </tr>
- * </table>
+ * <div style="margin:0 auto;width:600px;text-align:center;font-weight:bold">
+ * <div style="float:left">
+ * <p><img SRC="doc-files/GridLayout-1.gif"
+ * alt="Shows 6 buttons in rows of 2. Row 1 shows buttons 1 then 2.
+ * Row 2 shows buttons 3 then 4. Row 3 shows buttons 5 then 6.">
+ * <p>Figure 1: Horizontal, Left-to-Right
+ * </div>
+ * <div style="float:right">
+ * <p><img SRC="doc-files/GridLayout-2.gif"
+ * alt="Shows 6 buttons in rows of 2. Row 1 shows buttons 2 then 1.
+ * Row 2 shows buttons 4 then 3. Row 3 shows buttons 6 then 5.">
+ * <p>Figure 2: Horizontal, Right-to-Left
+ * </div>
+ * <br style="clear:both;">
+ * </div>
* <p>
* When both the number of rows and the number of columns have
* been set to non-zero values, either by a constructor or
--- a/src/java.desktop/share/classes/java/awt/Label.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/Label.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -45,8 +45,8 @@
* <p>
* produces the following labels:
* <p>
- * <img src="doc-files/Label-1.gif" alt="Two labels: 'Hi There!' and 'Another label'"
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/Label-1.gif" alt="Two labels: 'Hi There!' and
+ * 'Another label'" style="margin: 7px 10px;">
*
* @author Sami Shaio
* @since 1.0
--- a/src/java.desktop/share/classes/java/awt/List.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/List.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -61,7 +61,8 @@
* scrolling list:
* <p>
* <img src="doc-files/List-1.gif"
- * alt="Shows a list containing: Venus, Earth, JavaSoft, and Mars. Javasoft is selected." style="float:center; margin: 7px 10px;">
+ * alt="Shows a list containing: Venus, Earth, JavaSoft, and Mars. Javasoft is
+ * selected." style="margin: 7px 10px;">
* <p>
* If the List allows multiple selections, then clicking on
* an item that is already selected deselects it. In the preceding
--- a/src/java.desktop/share/classes/java/awt/MenuBar.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/MenuBar.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -50,9 +50,9 @@
* This is what a menu bar might look like:
* <p>
* <img src="doc-files/MenuBar-1.gif"
- * alt="Diagram of MenuBar containing 2 menus: Examples and Options.
- * Examples menu is expanded showing items: Basic, Simple, Check, and More Examples."
- * style="float:center; margin: 7px 10px;">
+ * alt="Diagram of MenuBar containing 2 menus: Examples and Options. Examples
+ * menu is expanded showing items: Basic, Simple, Check, and More Examples."
+ * style="margin: 7px 10px;">
* <p>
* A menu bar handles keyboard shortcuts for menu items, passing them
* along to its child menus.
--- a/src/java.desktop/share/classes/java/awt/MenuItem.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/MenuItem.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -51,8 +51,8 @@
* a simple labeled menu item.
* <p>
* This picture of a menu bar shows five menu items:
- * <IMG SRC="doc-files/MenuBar-1.gif" alt="The following text describes this graphic."
- * style="float:center; margin: 7px 10px;">
+ * <IMG SRC="doc-files/MenuBar-1.gif" alt="The following text describes this
+ * graphic." style="margin: 7px 10px;">
* <br style="clear:left;">
* The first two items are simple menu items, labeled
* {@code "Basic"} and {@code "Simple"}.
--- a/src/java.desktop/share/classes/java/awt/Scrollbar.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/Scrollbar.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -41,8 +41,8 @@
* scroll bars could be used as slider controls to pick
* the red, green, and blue components of a color:
* <p>
- * <img src="doc-files/Scrollbar-1.gif" alt="Image shows 3 vertical sliders, side-by-side."
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/Scrollbar-1.gif" alt="Image shows 3 vertical sliders,
+ * side-by-side." style="margin: 7px 10px;">
* <p>
* Each scroll bar in this example could be created with
* code similar to the following:
@@ -59,8 +59,8 @@
* Here is an example of a scroll bar that represents a range:
* <p>
* <img src="doc-files/Scrollbar-2.gif"
- * alt="Image shows horizontal slider with starting range of 0 and ending range of 300. The slider thumb is labeled 60."
- * style="float:center; margin: 7px 10px;">
+ * alt="Image shows horizontal slider with starting range of 0 and ending range
+ * of 300. The slider thumb is labeled 60." style="margin: 7px 10px;">
* <p>
* The value range represented by the bubble in this example
* is the <em>visible amount</em>. The horizontal scroll bar
--- a/src/java.desktop/share/classes/java/awt/TextArea.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/TextArea.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -41,8 +41,8 @@
* <p>
* The following image shows the appearance of a text area:
* <p>
- * <img src="doc-files/TextArea-1.gif" alt="A TextArea showing the word 'Hello!'"
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/TextArea-1.gif" alt="A TextArea showing the word
+ * 'Hello!'" style="margin: 7px 10px;">
* <p>
* This text area could be created by the following line of code:
*
--- a/src/java.desktop/share/classes/java/awt/TextField.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/TextField.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -41,8 +41,8 @@
* text fields of varying widths. Two of these text fields
* display the predefined text {@code "Hello"}.
* <p>
- * <img src="doc-files/TextField-1.gif" alt="The preceding text describes this image."
- * style="float:center; margin: 7px 10px;">
+ * <img src="doc-files/TextField-1.gif" alt="The preceding text describes this
+ * image." style="margin: 7px 10px;">
* <p>
* Here is the code that produces these four text fields:
*
--- a/src/java.desktop/share/classes/java/awt/Window.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/Window.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 2019, 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
@@ -96,8 +96,9 @@
* possible, as shown in the following figure.
* <p>
* <img src="doc-files/MultiScreen.gif"
- * alt="Diagram shows virtual device containing 4 physical screens. Primary physical screen shows coords (0,0), other screen shows (-80,-100)."
- * style="float:center; margin: 7px 10px;">
+ * alt="Diagram shows virtual device containing 4 physical screens. Primary
+ * physical screen shows coords (0,0), other screen shows (-80,-100)."
+ * style="margin: 7px 10px;">
* <p>
* In such an environment, when calling {@code setLocation},
* you must pass a virtual coordinate to this method. Similarly,
--- a/src/java.desktop/share/classes/java/awt/doc-files/DesktopProperties.html Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/doc-files/DesktopProperties.html Wed Sep 25 14:48:39 2019 +0530
@@ -5,7 +5,7 @@
<title>AWT Desktop Properties</title>
</head>
<!--
- Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2005, 2019, 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
@@ -57,22 +57,26 @@
The following table summarizes the desktop properties documented
here, and their value types.
<br><br>
-<table>
-<tr bgcolor="#ccccff">
-<th>Property Name</th>
-<th>Value Type</th>
-<th>Summary Description</th>
+<table border=1>
+<thead>
+<tr>
+<th scope="col">Property Name</th>
+<th scope="col">Value Type</th>
+<th scope="col">Summary Description</th>
</tr>
+</thead>
+<tbody>
<tr>
-<td><A href="#awt.font.desktophints">awt.font.desktophints</A></td>
+<th scope="row"><A href="#awt.font.desktophints">awt.font.desktophints</A></th>
<td>{@link java.util.Map java.util.Map}</td>
<td>Font smoothing (text antialiasing) settings.</td>
</tr>
<tr>
-<td><A href="#sun.awt.enableExtraMouseButtons">sun.awt.enableExtraMouseButtons</A></td>
+<th scope="row"><A href="#sun.awt.enableExtraMouseButtons">sun.awt.enableExtraMouseButtons</A></th>
<td>{@link java.lang.Boolean java.lang.Boolean}</td>
<td>Controls if mouse events from extra buttons are to be generated or not</td>
</tr>
+</tbody>
</table>
<h2>Desktop Font Rendering Hints</h2>
--- a/src/java.desktop/share/classes/java/awt/doc-files/Modality.html Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/doc-files/Modality.html Wed Sep 25 14:48:39 2019 +0530
@@ -9,7 +9,7 @@
</style>
</head>
<!--
- Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2005, 2019, 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
@@ -57,14 +57,14 @@
<h2>Definitions</h2>
<p>
- <u>Document</u> - a window without an owner that, together with
+ Document - a window without an owner that, together with
all its child hierarchy, may be operated on as a single self-contained
document.
Every window belongs to some document — its root can be found as
the closest ancestor window without an owner.
</p><p>
<a id="ModalBlocked"></a>
- <u>Modal blocked window</u> - a window, that:
+ Modal blocked window - a window, that:
</p><ul>
<li>doesn't receive any user input events
</li><li>doesn't receive input focus
@@ -78,15 +78,15 @@
<hr>
</blockquote>
<p>
- <u>Modal dialog</u> - a dialog that blocks some windows while it is
+ Modal dialog - a dialog that blocks some windows while it is
visible. The blocked windows are determined according to the dialog's
scope of blocking.
</p><p>
- <u>Modal excluded window</u> - a window that stays unblocked
+ Modal excluded window - a window that stays unblocked
while the modal dialog is visible. If a window is modal excluded
then all its owned windows and child components are also excluded.
</p><p>
- <u>Scope of blocking (SB)</u> - the set of windows (instances of
+ Scope of blocking (SB) - the set of windows (instances of
<code>java.awt.Window</code> and all derived classes) that are blocked by
the modal dialog while it is visible.
<blockquote><hr>
@@ -109,20 +109,20 @@
A dialog is, by default, modeless. A modal dialog is, by default,
application-modal.
<ol>
- <li><u>Modeless dialogs</u><br>
+ <li>Modeless dialogs<br>
A modeless dialog doesn't block any windows while visible.
- </li><li><u>Document-modal dialogs</u><br>
+ </li><li>Document-modal dialogs<br>
A document-modal dialog blocks all windows from the same
document except those from its child hierarchy. The document root
is determined as the closest ancestor window without an
owner.
- </li><li><u>Application-modal dialogs</u><br>
+ </li><li>Application-modal dialogs<br>
An application-modal dialog blocks all windows from the same
application except for those from its child hierarchy.
If there are several applets launched in a browser, they can be
treated either as separate applications or a single application.
This behavior is implementation-dependent.
- </li><li><u>Toolkit-modal dialogs</u><br>
+ </li><li>Toolkit-modal dialogs<br>
A toolkit-modal dialog blocks all windows that run in the same
toolkit except those from its child hierarchy. If there
are several applets launched all of them run with the same toolkit,
@@ -163,13 +163,13 @@
<h2>Show/hide blocking</h2>
<p>
- <u>Showing the window or modeless dialog: "F"</u><br>
+ Showing the window or modeless dialog: "F"<br>
All the visible modal dialogs are looked through — if F is from the SB
of one of them, it becomes blocked by it. If there are several such
dialogs, the first shown is used. If no such dialogs exist, F remains
unblocked.
</p><p>
- <u>Showing the modal dialog: "M"</u><br>
+ Showing the modal dialog: "M"<br>
When modal dialog M is shown, all the visible windows fall into one of
three distinct groups:
<ul>
@@ -188,57 +188,57 @@
second one become blocked by M, and all the windows from the third group
remain untouched.
</p><p>
- <u>In typical cases</u>, when no child dialogs are shown before their owners,
+ In typical cases, when no child dialogs are shown before their owners,
this rule can be simplified. (The following, simplified case, may
leave out some details).
</p><p>
- <u>Showing the document-modal dialog: "M"</u><br>
+ Showing the document-modal dialog: "M"<br>
All the visible application- and toolkit-modal dialogs are looked
through — if M is from the SB of one of them,
it becomes blocked by it. If there are several such dialogs,
the first shown is used. If no such dialogs exist, M remains unblocked.
</p><p>
- <u>Showing the application-modal dialog: "M"</u><br>
+ Showing the application-modal dialog: "M"<br>
All the visible toolkit-modal dialogs are looked through —
if M is from the SB of one of them, it becomes blocked by it.
If there are several such dialogs, the first shown is used.
If no such dialogs exist, M remains unblocked.
</p><p>
- <u>Showing the toolkit-modal dialog: "M"</u><br>
+ Showing the toolkit-modal dialog: "M"<br>
M remains unblocked.
<table border="1">
- <caption>The Standard Blocking Matrix</caption>
+ <caption>The Standard Blocking Matrix</caption>
<tbody><tr>
- <td>current/shown</td>
- <td>frame & modeless</td>
- <td>document</td>
- <td>application</td>
- <td>toolkit</td>
+ <th scope="col">current/shown</th>
+ <th scope="col">frame & modeless</th>
+ <th scope="col">document</th>
+ <th scope="col">application</th>
+ <th scope="col">toolkit</th>
</tr>
<tr>
- <td>-</td>
+ <th scope="row">-</th>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
- <td>document</td>
+ <th scope="row">document</th>
<td>blocked</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
- <td>application</td>
+ <th scope="row">application</th>
<td>blocked</td>
<td>blocked</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
- <td>toolkit</td>
+ <th scope="row">toolkit</th>
<td>blocked</td>
<td>blocked</td>
<td>blocked</td>
@@ -250,11 +250,11 @@
After the modal dialog is shown, all the windows from its SB are blocked,
except those that block this modal dialog.
</p><p>
- <u>Hiding the window or modeless dialog: "F"</u><br>
+ Hiding the window or modeless dialog: "F"<br>
If F was blocked by any modal dialog M, it becomes unblocked and is
removed from M's blocked windows list.
</p><p>
- <u>Hiding the modal dialog: "M"</u><br>
+ Hiding the modal dialog: "M"<br>
If M was blocked by any other modal dialog, for example, "N",
it becomes unblocked and
is removed from N's blocked windows list. Then, all the windows and dialogs
@@ -273,11 +273,11 @@
</li></ul>
By default, a window's modal exclusion property is turned off.
<ol>
- <li><u>Application-modal exclusion</u><br>
+ <li>Application-modal exclusion<br>
If a window is application-modal excluded, it is not blocked by any
application-modal dialogs. Also, it is not blocked by document-modal
dialogs from outside of its child hierarchy.
- </li><li><u>Toolkit-modal exclusion</u><br>
+ </li><li>Toolkit-modal exclusion<br>
If a window is toolkit-modal excluded, it is not blocked
by any application- or toolkit-modal dialogs. Also, it is not
blocked by document-modal dialogs from outside of their child hierarchy.
@@ -285,19 +285,19 @@
<blockquote>
<hr>
<b>Implementation note</b>: Changing the modal exclusion type for a visible window
- may have no effect until it is hidden and then shown again.
+ may have no effect until it is hidden and then shown again.<hr>
</blockquote>
<a id="Related"></a>
<h2>Related AWT features</h2>
<p>
- <u>Always-On-Top</u><br>
+ Always-On-Top<br>
When a modal dialog that is not always-on-top blocks an always-on-top window,
their relative Z-order is unspecified and platform-dependent.
</p>
<p>
- <u>The <code>toFront()</code> and <code>toBack()</code> methods</u><br>
+ The <code>toFront()</code> and <code>toBack()</code> methods<br>
A modal dialog should always be above all its blocked windows. Thus, if a blocked
window is brought to the front, its blocking dialog, if any, is also brought to the
front and remains above the blocked window. Likewise, if a modal dialog is sent to
@@ -305,7 +305,7 @@
blocking dialog.
</p>
<p>
- <u>Minimizing, maximizing and closing blocked windows</u><br>
+ Minimizing, maximizing and closing blocked windows<br>
When a modal dialog blocks a window, the user may not be able to maximize or
minimize the blocked window— however, the actual behavior is unspecified
and platform-dependent. In any case, the user can't close the blocked window
@@ -314,13 +314,13 @@
window.
</p>
<p>
- <u>Blocked windows activations</u><br>
+ Blocked windows activations<br>
When the user selects a blocked window, it may be brought to the front, along
with the blocking modal dialog which would then become the active window—
however, the actual behavior is unspecified and platform-dependent.
</p>
<p>
- <u>Hiding a modal dialog</u><br>
+ Hiding a modal dialog<br>
When the modal dialog that currently has focus is hidden, it is unspecified
and platform-dependent, which other window will become the active window.
Any of the following may become the active window:
@@ -378,87 +378,67 @@
<a id="Examples"></a>
</p><h2>Examples</h2>
- <table border="0">
- <tbody><tr>
- <td style="text-align:left" >
- <ol>
- <li>Frame "F" is shown<br>
- <li>Document-modal dialog "D<sub>i</sub>" is shown<br>
- <li>F becomes blocked by D<sub>i</sub> — it's in the same document<br>
- <li>Document-modal dialog "D<sub>ii</sub>" is shown<br>
- <li>D<sub>i</sub> becomes blocked by D<sub>ii</sub> — it's in the
- same document<br>
- </ol>
- <br>
- </td>
- <td>
- <img src="modal-example1.gif" alt="Example 1">
- <br>
- </td>
- </tr>
- <tr>
- <td style="text-align:left">
- <ol>
- <li>Frame "F" is shown<br>
- <li>Document-modal dialog "D<sub>i</sub>" is shown<br>
- <li>F becomes blocked by D<sub>i</sub> — it's in the same document<br>
- <li>Document-modal dialog "D<sub>ii</sub>" is shown<br>
- <li>D<sub>i</sub> becomes blocked by D<sub>ii</sub> —
- it's in the same document<br>
- <li>D<sub>i</sub> is hidden<br>
- <li>F becomes blocked by D<sub>ii</sub> — it's in the same document<br>
- </ol>
- <br>
- </td>
- <td>
- <img src="modal-example2.gif" alt="Example 2">
- <br>
- </td>
- </tr>
- <tr>
- <td style="text-align:left">
- <ol>
- <li>Frame "F" is shown<br>
- <li>Toolkit-modal dialog "D<sub>i</sub>" is created, but not shown<br>
- <li>Document-modal dialog "D<sub>ii</sub>" is shown<br>
- <li>F becomes blocked by D<sub>ii</sub> — it's in the same document<br>
- <li>Application-modal dialog "D<sub>iii</sub>" is shown<br>
- <li>D<sub>ii</sub> becomes blocked by D<sub>iii</sub> —
- it's in the same application<br>
- <li>D<sub>i</sub> is shown<br>
- <li>D<sub>i</sub> becomes blocked by D<sub>ii</sub> — it's its owner<br>
- <li>D<sub>iii</sub> remains unblocked — it blocks D<sub>ii</sub> and
- D<sub>ii</sub> blocks D<sub>i</sub><br>
- </ol>
- <br>
- </td>
- <td>
- <img src="modal-example3.gif" alt="Example 3">
- <br>
- </td>
- </tr>
- <tr>
- <td style="text-align:left">
- <ol>
- <li>Frame "F" is shown<br>
- <li>Toolkit-modal dialog "D<sub>i</sub>" is created, but not shown<br>
- <li>Document-modal dialog "D<sub>ii</sub>" is shown<br>
- <li>F becomes blocked by D<sub>ii</sub> — it's in the same document<br>
- <li>Application-modal dialog "D<sub>iii</sub>" is shown<br>
- <li>D<sub>ii</sub> becomes blocked by D<sub>iii</sub> — it's in the
- same application<br>
- <li>D<sub>i</sub> is shown<br>
- <li>D<sub>iii</sub> becomes blocked by D<sub>i</sub> — D<sub>i</sub>
- is not blocked<br>
- <li>D<sub>i</sub> remains unblocked<br>
- </ol>
- <br>
- </td>
- <td>
- <img src="modal-example4.gif" alt="Example 4">
- <br>
- </td>
- </tr>
- </tbody></table>
+ <h3>Example 1</h3>
+ <ol style="float: left">
+ <li>Frame F is shown<br>
+ <li>Document-modal dialog D<sub>i</sub> is shown<br>
+ <li>F becomes blocked by D<sub>i</sub> — it's in the same document<br>
+ <li>Document-modal dialog D<sub>ii</sub> is shown<br>
+ <li>D<sub>i</sub> becomes blocked by D<sub>ii</sub> — it's in the
+ same document<br>
+ </ol>
+ <p style="float: left; margin-left: 1em">
+ <img src="modal-example1.gif" alt="Example 1">
+ </p>
+
+ <h3 style="clear: left">Example 2</h3>
+ <ol style="float: left">
+ <li>Frame F is shown<br>
+ <li>Document-modal dialog D<sub>i</sub> is shown<br>
+ <li>F becomes blocked by D<sub>i</sub> — it's in the same document<br>
+ <li>Document-modal dialog D<sub>ii</sub> is shown<br>
+ <li>D<sub>i</sub> becomes blocked by D<sub>ii</sub> — it's in the
+ same document<br>
+ </ol>
+ <p style="float: left; margin-left: 1em">
+ <img src="modal-example2.gif" alt="Example 2">
+ </p>
+
+ <h3 style="clear: left">Example 3</h3>
+ <ol style="float: left">
+ <li>Frame F is shown<br>
+ <li>Toolkit-modal dialog D<sub>i</sub> is created, but not shown<br>
+ <li>Document-modal dialog D<sub>ii</sub> is shown<br>
+ <li>F becomes blocked by D<sub>ii</sub> — it's in the same document<br>
+ <li>Application-modal dialog D<sub>iii</sub> is shown<br>
+ <li>D<sub>ii</sub> becomes blocked by D<sub>iii</sub> —
+ it's in the same application<br>
+ <li>D<sub>i</sub> is shown<br>
+ <li>D<sub>i</sub> becomes blocked by D<sub>ii</sub> — it's its owner<br>
+ <li>D<sub>iii</sub> remains unblocked — it blocks D<sub>ii</sub> and
+ D<sub>ii</sub> blocks D<sub>i</sub><br>
+ </ol>
+ <p style="float: left; margin-left: 1em">
+ <img src="modal-example3.gif" alt="Example 3">
+ </p>
+
+ <h3 style="clear: left">Example 4</h3>
+ <ol style="float: left">
+ <li>Frame F is shown<br>
+ <li>Toolkit-modal dialog D<sub>i</sub> is created, but not shown<br>
+ <li>Document-modal dialog D<sub>ii</sub> is shown<br>
+ <li>F becomes blocked by D<sub>ii</sub> — it's in the same document<br>
+ <li>Application-modal dialog D<sub>iii</sub> is shown<br>
+ <li>D<sub>ii</sub> becomes blocked by D<sub>iii</sub> — it's in the
+ same application<br>
+ <li>D<sub>i</sub> is shown<br>
+ <li>D<sub>iii</sub> becomes blocked by D<sub>i</sub> — D<sub>i</sub>
+ is not blocked<br>
+ <li>D<sub>i</sub> remains unblocked<br>
+ </ol>
+ <p style="float: left; margin-left: 1em">
+ <img src="modal-example4.gif" alt="Example 4">
+ </p>
+ <br style="clear:both;">
</main>
</body></html>
--- a/src/java.desktop/share/classes/java/awt/font/NumericShaper.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/font/NumericShaper.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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
@@ -116,17 +116,19 @@
* </thead>
* <tbody>
* <tr>
- * <th scope="row" rowspan="2">Arabic
+ * <th scope="rowgroup" rowspan="2">Arabic
* <td>{@link NumericShaper#ARABIC NumericShaper.ARABIC}
* <br>
* {@link NumericShaper#EASTERN_ARABIC NumericShaper.EASTERN_ARABIC}
* <td>{@link NumericShaper#EASTERN_ARABIC NumericShaper.EASTERN_ARABIC}
* </tr>
* <tr>
- * <th scope="row">{@link NumericShaper.Range#ARABIC}
+ * <td>{@link NumericShaper.Range#ARABIC}
* <br>
* {@link NumericShaper.Range#EASTERN_ARABIC}
* <td>{@link NumericShaper.Range#EASTERN_ARABIC}
+ * </tbody>
+ * <tbody>
* <tr>
* <th scope="row">Tai Tham
* <td>{@link NumericShaper.Range#TAI_THAM_HORA}
--- a/src/java.desktop/share/classes/java/awt/geom/Path2D.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/java/awt/geom/Path2D.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2019, 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
@@ -892,83 +892,83 @@
* <caption>Constants</caption>
* <thead>
* <tr>
- * <th>Constant Name</th>
- * <th>Byte Value</th>
- * <th>Followed by</th>
- * <th>Description</th>
+ * <th scope="col">Constant Name</th>
+ * <th scope="col">Byte Value</th>
+ * <th scope="col">Followed by</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td>{@code SERIAL_STORAGE_FLT_ARRAY}</td>
+ * <th scope="row">{@code SERIAL_STORAGE_FLT_ARRAY}</th>
* <td>0x30</td>
* <td></td>
* <td>A hint that the original {@code Path2D} object stored
* the coordinates in a Java array of floats.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_STORAGE_DBL_ARRAY}</td>
+ * <th scope="row">{@code SERIAL_STORAGE_DBL_ARRAY}</th>
* <td>0x31</td>
* <td></td>
* <td>A hint that the original {@code Path2D} object stored
* the coordinates in a Java array of doubles.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_FLT_MOVETO}</td>
+ * <th scope="row">{@code SERIAL_SEG_FLT_MOVETO}</th>
* <td>0x40</td>
* <td>2 floats</td>
* <td>A {@link #moveTo moveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_FLT_LINETO}</td>
+ * <th scope="row">{@code SERIAL_SEG_FLT_LINETO}</th>
* <td>0x41</td>
* <td>2 floats</td>
* <td>A {@link #lineTo lineTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_FLT_QUADTO}</td>
+ * <th scope="row">{@code SERIAL_SEG_FLT_QUADTO}</th>
* <td>0x42</td>
* <td>4 floats</td>
* <td>A {@link #quadTo quadTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_FLT_CUBICTO}</td>
+ * <th scope="row">{@code SERIAL_SEG_FLT_CUBICTO}</th>
* <td>0x43</td>
* <td>6 floats</td>
* <td>A {@link #curveTo curveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_DBL_MOVETO}</td>
+ * <th scope="row">{@code SERIAL_SEG_DBL_MOVETO}</th>
* <td>0x50</td>
* <td>2 doubles</td>
* <td>A {@link #moveTo moveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_DBL_LINETO}</td>
+ * <th scope="row">{@code SERIAL_SEG_DBL_LINETO}</th>
* <td>0x51</td>
* <td>2 doubles</td>
* <td>A {@link #lineTo lineTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_DBL_QUADTO}</td>
+ * <th scope="row">{@code SERIAL_SEG_DBL_QUADTO}</th>
* <td>0x52</td>
* <td>4 doubles</td>
* <td>A {@link #curveTo curveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_DBL_CUBICTO}</td>
+ * <th scope="row">{@code SERIAL_SEG_DBL_CUBICTO}</th>
* <td>0x53</td>
* <td>6 doubles</td>
* <td>A {@link #curveTo curveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_CLOSE}</td>
+ * <th scope="row">{@code SERIAL_SEG_CLOSE}</th>
* <td>0x60</td>
* <td></td>
* <td>A {@link #closePath closePath} path segment.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_PATH_END}</td>
+ * <th scope="row">{@code SERIAL_PATH_END}</th>
* <td>0x61</td>
* <td></td>
* <td>There are no more path segments following.</td>
@@ -1666,83 +1666,83 @@
* <caption>Constants</caption>
* <thead>
* <tr>
- * <th>Constant Name</th>
- * <th>Byte Value</th>
- * <th>Followed by</th>
- * <th>Description</th>
+ * <th scope="col">Constant Name</th>
+ * <th scope="col">Byte Value</th>
+ * <th scope="col">Followed by</th>
+ * <th scope="col">Description</th>
* </tr>
* </thead>
* <tbody>
* <tr>
- * <td>{@code SERIAL_STORAGE_FLT_ARRAY}</td>
+ * <th scope="row">{@code SERIAL_STORAGE_FLT_ARRAY}</th>
* <td>0x30</td>
* <td></td>
* <td>A hint that the original {@code Path2D} object stored
* the coordinates in a Java array of floats.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_STORAGE_DBL_ARRAY}</td>
+ * <th scope="row">{@code SERIAL_STORAGE_DBL_ARRAY}</th>
* <td>0x31</td>
* <td></td>
* <td>A hint that the original {@code Path2D} object stored
* the coordinates in a Java array of doubles.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_FLT_MOVETO}</td>
+ * <th scope="row">{@code SERIAL_SEG_FLT_MOVETO}</th>
* <td>0x40</td>
* <td>2 floats</td>
* <td>A {@link #moveTo moveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_FLT_LINETO}</td>
+ * <th scope="row">{@code SERIAL_SEG_FLT_LINETO}</th>
* <td>0x41</td>
* <td>2 floats</td>
* <td>A {@link #lineTo lineTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_FLT_QUADTO}</td>
+ * <th scope="row">{@code SERIAL_SEG_FLT_QUADTO}</th>
* <td>0x42</td>
* <td>4 floats</td>
* <td>A {@link #quadTo quadTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_FLT_CUBICTO}</td>
+ * <th scope="row">{@code SERIAL_SEG_FLT_CUBICTO}</th>
* <td>0x43</td>
* <td>6 floats</td>
* <td>A {@link #curveTo curveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_DBL_MOVETO}</td>
+ * <th scope="row">{@code SERIAL_SEG_DBL_MOVETO}</th>
* <td>0x50</td>
* <td>2 doubles</td>
* <td>A {@link #moveTo moveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_DBL_LINETO}</td>
+ * <th scope="row">{@code SERIAL_SEG_DBL_LINETO}</th>
* <td>0x51</td>
* <td>2 doubles</td>
* <td>A {@link #lineTo lineTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_DBL_QUADTO}</td>
+ * <th scope="row">{@code SERIAL_SEG_DBL_QUADTO}</th>
* <td>0x52</td>
* <td>4 doubles</td>
* <td>A {@link #curveTo curveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_DBL_CUBICTO}</td>
+ * <th scope="row">{@code SERIAL_SEG_DBL_CUBICTO}</th>
* <td>0x53</td>
* <td>6 doubles</td>
* <td>A {@link #curveTo curveTo} path segment follows.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_SEG_CLOSE}</td>
+ * <th scope="row">{@code SERIAL_SEG_CLOSE}</th>
* <td>0x60</td>
* <td></td>
* <td>A {@link #closePath closePath} path segment.</td>
* </tr>
* <tr>
- * <td>{@code SERIAL_PATH_END}</td>
+ * <th scope="row">{@code SERIAL_PATH_END}</th>
* <td>0x61</td>
* <td></td>
* <td>There are no more path segments following.</td>
--- a/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/gif_metadata.html Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/gif_metadata.html Wed Sep 25 14:48:39 2019 +0530
@@ -5,7 +5,7 @@
<title>GIF Metadata Format Specification</title>
</head>
<!--
-Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2000, 2019, 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
@@ -347,92 +347,120 @@
<a id="mapping"></a>
<table border=1>
<caption><b>Mapping of Standard to GIF Native Stream Metadata</b></caption>
+<thead>
<tr>
-<th>Standard Metadata Component</th>
-<th>GIF Native Stream Metadata Component</th>
+<th scope="col">Index</th>
+<th scope="col">Standard Metadata Component</th>
+<th scope="col">GIF Native Stream Metadata Component</th>
</tr>
+</thead>
+<tbody>
<tr>
+<th scope="row">1</th>
<td>/Chroma/Palette/PaletteEntry@index</td>
<td>/GlobalColorTable/ColorTableEntry@index</td>
</tr>
<tr>
+<th scope="row">2</th>
<td>/Chroma/Palette/PaletteEntry@red</td>
<td>/GlobalColorTable/ColorTableEntry@red</td>
</tr>
<tr>
+<th scope="row">3</th>
<td>/Chroma/Palette/PaletteEntry@green</td>
<td>/GlobalColorTable/ColorTableEntry@green</td>
</tr>
<tr>
+<th scope="row">4</th>
<td>/Chroma/Palette/PaletteEntry@blue</td>
<td>/GlobalColorTable/ColorTableEntry@blue</td>
</tr>
<tr>
+<th scope="row">5</th>
<td>/Chroma/BackgroundIndex@value</td>
<td>/GlobalColorTable@backgroundColorIndex</td>
</tr>
<tr>
+<th scope="row">6</th>
<td>/Data/BitsPerSample@value</td>
<td>/LogicalScreenDescriptor@colorResolution</td>
</tr>
<tr>
+<th scope="row">7</th>
<td>/Dimension/PixelAspectRatio@value</td>
<td>/LogicalScreenDescriptor@pixelAspectRatio</td>
</tr>
<tr>
+<th scope="row">8</th>
<td>/Dimension/HorizontalScreenSize@value</td>
<td>/LogicalScreenDescriptor@logicalScreenWidth</td>
</tr>
<tr>
+<th scope="row">9</th>
<td>/Dimension/VerticalScreenSize@value</td>
<td>/LogicalScreenDescriptor@logicalScreenHeight</td>
</tr>
<tr>
+<th scope="row">10</th>
<td>/Document/FormatVersion@value</td>
<td>/Version@value</td>
</tr>
+</tbody>
</table>
<table border=1>
<caption><b>Mapping of Standard to GIF Native Image Metadata</b></caption>
+<thead>
<tr>
-<th>Standard Metadata Component</th>
-<th>GIF Native Image Metadata Component</th>
+<th scope="col">Index</th>
+<th scope="col">Standard Metadata Component</th>
+<th scope="col">GIF Native Image Metadata Component</th>
</tr>
+</thead>
+<tbody>
<tr>
+<th scope="row">1</th>
<td>/Chroma/Palette/PaletteEntry@index</td>
<td>/LocalColorTable/ColorTableEntry@index</td>
</tr>
<tr>
+<th scope="row">2</th>
<td>/Chroma/Palette/PaletteEntry@red</td>
<td>/LocalColorTable/ColorTableEntry@red</td>
</tr>
<tr>
+<th scope="row">3</th>
<td>/Chroma/Palette/PaletteEntry@green</td>
<td>/LocalColorTable/ColorTableEntry@green</td>
</tr>
<tr>
+<th scope="row">4</th>
<td>/Chroma/Palette/PaletteEntry@blue</td>
<td>/LocalColorTable/ColorTableEntry@blue</td>
</tr>
<tr>
+<th scope="row">5</th>
<td>/Dimension/HorizontalPixelOffset@value</td>
<td>/ImageDescriptor@imageLeftPosition</td>
</tr>
<tr>
+<th scope="row">6</th>
<td>/Dimension/VerticalPixelOffset@value</td>
<td>/ImageDescriptor@imageTopPosition</td>
</tr>
<tr>
+<th scope="row">7</th>
<td>/Text/TextEntry@value</td>
<td>/CommentExtensions/CommentExtension@value</td>
</tr>
<tr>
+<th scope="row">8</th>
<td>/Transparency/TransparentIndex@value</td>
<td>/GraphicControlExtension@transparentColorIndex
(/GraphicControlExtension@transparentColorFlag is also set to
"TRUE")</td>
</tr>
+</tbody>
</table>
</main>
</body>
--- a/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/tiff_metadata.html Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/imageio/metadata/doc-files/tiff_metadata.html Wed Sep 25 14:48:39 2019 +0530
@@ -5,7 +5,7 @@
<title>TIFF Metadata Format Specification and Usage Notes</title>
</head>
<!--
-Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2015, 2019, 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
@@ -235,11 +235,16 @@
in the following table.
<table border="1">
+<thead>
<tr>
-<th>Standard Metadata Element</th>
-<th>Derivation from TIFF Fields</th>
+<th scope="col">Index</th>
+<th scope="col">Standard Metadata Element</th>
+<th scope="col">Derivation from TIFF Fields</th>
</tr>
+</thead>
+<tbody>
<tr>
+<th scope="row">1</th>
<td>/Chroma/ColorSpaceType@name</td>
<td>PhotometricInterpretation: WhiteIsZero, BlackIsZero, TransparencyMask =
"GRAY"; RGB, PaletteColor => "RGB"; CMYK => "CMYK";
@@ -247,18 +252,22 @@
CIELab, ICCLab => "Lab".</td>
</tr>
<tr>
+<th scope="row">2</th>
<td>/Chroma/NumChannels@value</td>
<td>SamplesPerPixel</td>
</tr>
<tr>
+<th scope="row">3</th>
<td>/Chroma/BlackIsZero@value</td>
<td>"TRUE" <=> PhotometricInterpretation => WhiteIsZero</td>
</tr>
<tr>
+<th scope="row">4</th>
<td>/Chroma/Palette</td>
<td>ColorMap</td>
</tr>
<tr>
+<th scope="row">5</th>
<td>/Compression/CompressionTypeName@value</td>
<td>Compression: Uncompressed => "none"; CCITT 1D => "CCITT
RLE";
@@ -269,14 +278,17 @@
Deflate => "Deflate"; Exif JPEG => "JPEG".</td>
</tr>
<tr>
+<th scope="row">6</th>
<td>/Compression/Lossless@value</td>
<td>Compression: JPEG or New JPEG => "FALSE"; otherwise "TRUE".</td>
</tr>
<tr>
+<th scope="row">7</th>
<td>/Data/PlanarConfiguration@value</td>
<td>Chunky => "PixelInterleaved"; Planar => "PlaneInterleaved".</td>
</tr>
<tr>
+<th scope="row">8</th>
<td>/Data/SampleFormat@value</td>
<td>PhotometricInterpretation PaletteColor => "Index";
SampleFormat unsigned integer data => "UnsignedIntegral";
@@ -286,53 +298,65 @@
</td>
</tr>
<tr>
+<th scope="row">9</th>
<td>/Data/BitsPerSample@value</td>
<td>BitsPerSample as a space-separated list.</td>
</tr>
<tr>
+<th scope="row">10</th>
<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>
</tr>
<tr>
+<th scope="row">11</th>
<td>/Dimension/PixelAspectRatio@value</td>
<td>(1/XResolution)/(1/YResolution)</td>
</tr>
<tr>
+<th scope="row">12</th>
<td>/Dimension/ImageOrientation@value</td>
<td>Orientation</td>
</tr>
<tr>
+<th scope="row">13</th>
<td>/Dimension/HorizontalPixelSize@value</td>
<td>1/XResolution in millimeters if ResolutionUnit is not None.</td>
</tr>
<tr>
+<th scope="row">14</th>
<td>/Dimension/VerticalPixelSize@value</td>
<td>1/YResolution in millimeters if ResolutionUnit is not None.</td>
</tr>
<tr>
+<th scope="row">15</th>
<td>/Dimension/HorizontalPosition@value</td>
<td>XPosition in millimeters if ResolutionUnit is not None.</td>
</tr>
<tr>
+<th scope="row">16</th>
<td>/Dimension/VerticalPosition@value</td>
<td>YPosition in millimeters if ResolutionUnit is not None.</td>
</tr>
<tr>
+<th scope="row">17</th>
<td>/Document/FormatVersion@value</td>
<td>6.0</td>
</tr>
<tr>
+<th scope="row">18</th>
<td>/Document/SubimageInterpretation@value</td>
<td>NewSubFileType: transparency => "TransparencyMask";
reduced-resolution => "ReducedResolution";
single page => "SinglePage".</td>
</tr>
<tr>
+<th scope="row">19</th>
<td>/Document/ImageCreationTime@value</td>
<td>DateTime</td>
</tr>
<tr>
+<th scope="row">20</th>
<td>/Text/TextEntry</td>
<td>DocumentName, ImageDescription, Make, Model, PageName, Software,
Artist, HostComputer, InkNames, Copyright:
@@ -343,10 +367,12 @@
used to create the image.</td>
</tr>
<tr>
+<th scope="row">21</th>
<td>/Transparency/Alpha@value</td>
<td>ExtraSamples: associated alpha => "premultiplied";
unassociated alpha => "nonpremultiplied".</td>
</tr>
+</tbody>
</table>
<h3><a id="ExifRead">Reading Exif Images</a></h3>
@@ -490,40 +516,55 @@
<table border=1>
<caption><b>Supported Compression Types</b></caption>
-<tr><th>Compression Type</th> <th>Description</th> <th>Reference</th></tr>
+<thead>
<tr>
+ <th scope="col">Index</th>
+ <th scope="col">Compression Type</th>
+ <th scope="col">Description</th>
+ <th scope="col">Reference</th></tr>
+<tr>
+</thead>
+<tbody>
+<th scope="row">1</th>
<td>CCITT RLE</td>
<td>Modified Huffman compression</td>
<td>TIFF 6.0 Specification, Section 10</td>
</tr>
<tr>
+<th scope="row">2</th>
<td>CCITT T.4</td>
<td>CCITT T.4 bilevel encoding/Group 3 facsimile compression</td>
<td>TIFF 6.0 Specification, Section 11</td>
</tr>
<tr>
+<th scope="row">3</th>
<td>CCITT T.6</td>
<td>CCITT T.6 bilevel encoding/Group 4 facsimile compression</td>
<td>TIFF 6.0 Specification, Section 11</td></tr>
<tr>
+<th scope="row">4</th>
<td>LZW</td>
<td>LZW compression</td>
<td>TIFF 6.0 Specification, Section 13</td></tr>
<tr>
+<th scope="row">5</th>
<td>JPEG</td>
<td>"New" JPEG-in-TIFF compression</td>
<td>TIFF Technical Note #2</td></tr>
<tr>
+<th scope="row">6</th>
<td>ZLib</td>
<td>"Deflate/Inflate" compression (see note following this table)</td>
<td>Adobe Photoshop® TIFF Technical Notes</td>
</tr>
<tr>
+<th scope="row">7</th>
<td>PackBits</td>
<td>Byte-oriented, run length compression</td>
<td>TIFF 6.0 Specification, Section 9</td>
</tr>
<tr>
+<th scope="row">8</th>
<td>Deflate</td>
<td>"Zip-in-TIFF" compression (see note following this table)</td>
<td><a href="https://tools.ietf.org/html/rfc1950">
@@ -532,10 +573,12 @@
DEFLATE Compressed Data Format Specification</a></td>
</tr>
<tr>
+<th scope="row">9</th>
<td>Exif JPEG</td>
<td>Exif-specific JPEG compression (see note following this table)</td>
<td><a href="http://www.exif.org/Exif2-2.PDF">Exif 2.2 Specification</a>
(PDF), section 4.5.5, "Basic Structure of Thumbnail Data"</td>
+</tbody>
</table>
<p>
@@ -721,11 +764,16 @@
given in the following table.
<table border="1">
+<thead>
<tr>
-<th>TIFF Field</th>
-<th>Derivation from Standard Metadata Elements</th>
+<th scope="col">Index</th>
+<th scope="col">TIFF Field</th>
+<th scope="col">Derivation from Standard Metadata Elements</th>
</tr>
+</thead>
+<tbody>
<tr>
+<th scope="row">1</th>
<td>
PhotometricInterpretation
</td>
@@ -736,14 +784,17 @@
"CMYK" => CMYK; "Lab" => CIELab.</td>
</tr>
<tr>
+<th scope="row">2</th>
<td>SamplesPerPixel</td>
<td>/Chroma/NumChannels@value</td>
</tr>
<tr>
+<th scope="row">3</th>
<td>ColorMap</td>
<td>/Chroma/Palette</td>
</tr>
<tr>
+<th scope="row">4</th>
<td>Compression</td>
<td>/Compression/CompressionTypeName@value: "none" => Uncompressed;
"CCITT RLE" => CCITT 1D; "CCITT T.4" => Group 3 Fax; "CCITT T.6" => Group 4
@@ -751,11 +802,13 @@
"PackBits" => PackBits; "Deflate" => Deflate.</td>
</tr>
<tr>
+<th scope="row">5</th>
<td>PlanarConfiguration</td>
<td>/Data/PlanarConfiguration@value: "PixelInterleaved" => Chunky;
"PlaneInterleaved" => Planar.</td>
</tr>
<tr>
+<th scope="row">6</th>
<td>SampleFormat</td>
<td>/Data/SampleFormat@value: "SignedIntegral" => two's complement signed
integer data; "UnsignedIntegral" => unsigned integer data; "Real" =>
@@ -763,54 +816,65 @@
</td>
</tr>
<tr>
+<th scope="row">7</th>
<td>BitsPerSample</td>
<td>/Data/BitsPerSample@value: space-separated list parsed to char array.</td>
</tr>
<tr>
+<th scope="row">8</th>
<td>FillOrder</td>
<td>/Data/SampleMSB@value: if all values in space-separated list are 0s =>
right-to-left; otherwise => left-to-right.
</td>
</tr>
<tr>
+<th scope="row">9</th>
<td>XResolution</td>
<td>(10 / /Dimension/HorizontalPixelSize@value) or
(10 / (/Dimension/VerticalPixelSize@value *
/Dimension/PixelAspectRatio@value))</td>
</tr>
<tr>
+<th scope="row">10</th>
<td>YResolution</td>
<td>(10 / /Dimension/VerticalPixelSize@value) or
(10 / (/Dimension/HorizontalPixelSize@value /
/Dimension/PixelAspectRatio@value))</td>
</tr>
<tr>
+<th scope="row">11</th>
<td>ResolutionUnit</td>
<td>Centimeter if XResolution or YResolution set; otherwise None.</td>
</tr>
<tr>
+<th scope="row">12</th>
<td>Orientation</td>
<td>/Dimension/ImageOrientation@value</td>
</tr>
<tr>
+<th scope="row">13</th>
<td>XPosition</td>
<td>/Dimension/HorizontalPosition@value / 10</td>
</tr>
<tr>
+<th scope="row">14</th>
<td>YPosition</td>
<td>/Dimension/VerticalPosition@value / 10</td>
</tr>
<tr>
+<th scope="row">15</th>
<td>NewSubFileType</td>
<td>/Document/SubimageInterpretation@value: "TransparencyMask" =>
transparency mask; "ReducedResolution" => reduced-resolution;
"SinglePage" => single page.</td>
</tr>
<tr>
+<th scope="row">16</th>
<td>DateTime</td>
<td>/Document/ImageCreationTime@value</td>
</tr>
<tr>
+<th scope="row">17</th>
<td>DocumentName, ImageDescription, Make, Model, PageName, Software,
Artist, HostComputer, InkNames, Copyright</td>
<td>/Text/TextEntry: if /Text/TextEntry@keyword is the name of any of the
@@ -818,14 +882,12 @@
/Text/TextEntry@value and count 1.</td>
</tr>
<tr>
+<th scope="row">18</th>
<td>ExtraSamples</td>
<td>/Transparency/Alpha@value: "premultiplied" => associated alpha, count 1;
"nonpremultiplied" => unassociated alpha, count 1.</td>
</tr>
-<tr>
-<td></td>
-<td></td>
-</tr>
+</tbody>
</table>
<h3><a id="ExifWrite">Writing Exif Images</a></h3>
--- a/src/java.desktop/share/classes/javax/print/attribute/standard/Finishings.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/print/attribute/standard/Finishings.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2019, 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
@@ -40,50 +40,31 @@
* determines what constitutes a "copy" for purposes of finishing.
* <p>
* Standard Finishings values are:
- * <table class="borderless" style="width:100%;margin: 0px auto">
- * <caption>Standard Finishings values</caption>
- * <tr>
- * <td style="width:10%">
- * <td style="width:27%">{@link #NONE NONE}
- * <td style="width:27%">{@link #STAPLE STAPLE}
- * <td style="width:36%">{@link #EDGE_STITCH EDGE_STITCH}
- * <tr>
- * <td>
- * <td>{@link #BIND BIND}
- * <td>{@link #SADDLE_STITCH SADDLE_STITCH}
- * <td>{@link #COVER COVER}
- * <td>
- * </table>
+ * <ul>
+ * <li>{@link #NONE NONE}
+ * <li>{@link #STAPLE STAPLE}
+ * <li>{@link #EDGE_STITCH EDGE_STITCH}
+ * <li>{@link #BIND BIND}
+ * <li>{@link #SADDLE_STITCH SADDLE_STITCH}
+ * <li>{@link #COVER COVER}
+ * </ul>
* <p>
* The following {@code Finishings} values are more specific; they indicate a
* corner or an edge as if the document were a portrait document:
- * <table class="borderless" style="width:100%;margin: 0px auto">
- * <caption>Specific Finishings values</caption>
- * <tr>
- * <td style="width:10%">
- * <td style="width:27%">{@link #STAPLE_TOP_LEFT STAPLE_TOP_LEFT}
- * <td style="width:27%">{@link #EDGE_STITCH_LEFT EDGE_STITCH_LEFT}
- * <td style="width:27%">{@link #STAPLE_DUAL_LEFT STAPLE_DUAL_LEFT}
- * <td style="width:9%">
- * <tr>
- * <td style="width:10%">
- * <td style="width:27%">{@link #STAPLE_BOTTOM_LEFT STAPLE_BOTTOM_LEFT}
- * <td style="width:27%">{@link #EDGE_STITCH_TOP EDGE_STITCH_TOP}
- * <td style="width:27%">{@link #STAPLE_DUAL_TOP STAPLE_DUAL_TOP}
- * <td style="width:9%">
- * <tr>
- * <td style="width:10%">
- * <td style="width:27%">{@link #STAPLE_TOP_RIGHT STAPLE_TOP_RIGHT}
- * <td style="width:27%">{@link #EDGE_STITCH_RIGHT EDGE_STITCH_RIGHT}
- * <td style="width:27%">{@link #STAPLE_DUAL_RIGHT STAPLE_DUAL_RIGHT}
- * <td style="width:9%">
- * <tr>
- * <td style="width:10%">
- * <td style="width:27%">{@link #STAPLE_BOTTOM_RIGHT STAPLE_BOTTOM_RIGHT}
- * <td style="width:27%">{@link #EDGE_STITCH_BOTTOM EDGE_STITCH_BOTTOM}
- * <td style="width:27%">{@link #STAPLE_DUAL_BOTTOM STAPLE_DUAL_BOTTOM}
- * <td style="width:9%">
- * </table>
+ * <ul>
+ * <li>{@link #STAPLE_TOP_LEFT STAPLE_TOP_LEFT}
+ * <li>{@link #EDGE_STITCH_LEFT EDGE_STITCH_LEFT}
+ * <li>{@link #STAPLE_DUAL_LEFT STAPLE_DUAL_LEFT}
+ * <li>{@link #STAPLE_BOTTOM_LEFT STAPLE_BOTTOM_LEFT}
+ * <li>{@link #EDGE_STITCH_TOP EDGE_STITCH_TOP}
+ * <li>{@link #STAPLE_DUAL_TOP STAPLE_DUAL_TOP}
+ * <li>{@link #STAPLE_TOP_RIGHT STAPLE_TOP_RIGHT}
+ * <li>{@link #EDGE_STITCH_RIGHT EDGE_STITCH_RIGHT}
+ * <li>{@link #STAPLE_DUAL_RIGHT STAPLE_DUAL_RIGHT}
+ * <li>{@link #STAPLE_BOTTOM_RIGHT STAPLE_BOTTOM_RIGHT}
+ * <li>{@link #EDGE_STITCH_BOTTOM EDGE_STITCH_BOTTOM}
+ * <li>{@link #STAPLE_DUAL_BOTTOM STAPLE_DUAL_BOTTOM}
+ * </ul>
* <p>
* The STAPLE_<i>XXX</i> values are specified with respect to the document as if
* the document were a portrait document. If the document is actually a
--- a/src/java.desktop/share/classes/javax/swing/BoxLayout.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/swing/BoxLayout.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -36,16 +36,12 @@
* vertically or horizontally. The components will not wrap so, for
* example, a vertical arrangement of components will stay vertically
* arranged when the frame is resized.
- * <table class="borderless" style="float:right">
- * <caption>Example:</caption>
- * <TR>
- * <TD style="text-align:center">
- * <P STYLE="TEXT-ALIGN:CENTER"><IMG SRC="doc-files/BoxLayout-1.gif"
- * alt="The following text describes this graphic."
- * WIDTH="191" HEIGHT="201" STYLE="FLOAT:BOTTOM; BORDER:0">
- * </TD>
- * </TR>
- * </TABLE>
+ * <div style="float:right;text-align:center">
+ * <p><b>Example:</b>
+ * <p><img src="doc-files/BoxLayout-1.gif"
+ * alt="The following text describes this graphic."
+ * width="191" height="201">
+ * </div>
* <p>
* Nesting multiple panels with different combinations of horizontal and
* vertical gives an effect similar to GridBagLayout, without the
--- a/src/java.desktop/share/classes/javax/swing/JLayeredPane.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/swing/JLayeredPane.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -47,16 +47,12 @@
* <a href="https://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html">How to Use a Layered Pane</a>,
* a section in <em>The Java Tutorial</em>.
*
- * <table class="borderless" style="float:right">
- * <caption>Example</caption>
- * <TR>
- * <TD style="text-align:center">
- * <P STYLE="TEXT-ALIGN:CENTER"><IMG SRC="doc-files/JLayeredPane-1.gif"
- * alt="The following text describes this image."
- * WIDTH="269" HEIGHT="264" STYLE="FLOAT:BOTTOM; BORDER=0">
- * </TD>
- * </TR>
- * </TABLE>
+ * <div style="float:right;text-align:center">
+ * <p><b>Example:</b>
+ * <p><img src="doc-files/JLayeredPane-1.gif"
+ * alt="The following text describes this image."
+ * width="269" height="264">
+ * </div>
* For convenience, <code>JLayeredPane</code> divides the depth-range
* into several different layers. Putting a component into one of those
* layers makes it easy to ensure that components overlap properly,
--- a/src/java.desktop/share/classes/javax/swing/JRootPane.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/swing/JRootPane.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -71,15 +71,11 @@
* a given component.
* </blockquote>
*
- * <table class="borderless" style="float:right">
- * <caption>Example</caption>
- * <tr>
- * <td style="text-align:center">
- * <img src="doc-files/JRootPane-2.gif"
- * alt="The following text describes this graphic." HEIGHT=386 WIDTH=349>
- * </td>
- * </tr>
- * </table>
+ * <div style="float:right;text-align:center;font-weight:bold">
+ * <p>Example:
+ * <p><img src="doc-files/JRootPane-2.gif"
+ * alt="the following text describes this graphic." height=386 width=349>
+ * </div>
* The diagram at right shows the structure of a <code>JRootPane</code>.
* A <code>JRootpane</code> is made up of a <code>glassPane</code>,
* an optional <code>menuBar</code>, and a <code>contentPane</code>.
--- a/src/java.desktop/share/classes/javax/swing/JScrollPane.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/swing/JScrollPane.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -55,16 +55,12 @@
* a section in <em>The Java Tutorial</em>. Note that
* <code>JScrollPane</code> does not support heavyweight components.
*
- * <table class="borderless" style="float:right">
- * <caption>Example</caption>
- * <TR>
- * <TD style="text-align:center">
- * <P STYLE="TEXT-ALIGN:CENTER"><IMG SRC="doc-files/JScrollPane-1.gif"
- * alt="The following text describes this image."
- * WIDTH="256" HEIGHT="248" STYLE="FLOAT:BOTTOM; BORDER:0px">
- * </TD>
- * </TR>
- * </TABLE>
+ * <div style="float:right;text-align:center">
+ * <p><b>Example:</b>
+ * <p><img src="doc-files/JScrollPane-1.gif"
+ * alt="The following text describes this image."
+ * width="256" height="248">
+ * </div>
* The <code>JViewport</code> provides a window,
* or "viewport" onto a data
* source -- for example, a text file. That data source is the
--- a/src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/componentProperties.html Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/componentProperties.html Wed Sep 25 14:48:39 2019 +0530
@@ -3,9 +3,10 @@
<head>
<meta charset="utf-8"/>
<title>Component Specific Properties</title>
+ <style type="text/css">tbody th {font-weight:normal;text-align:left}</style>
</head>
<!--
-Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
+Copyright (c) 2003, 2019, 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
@@ -56,14 +57,14 @@
<table border="1">
<caption>ArrowButton Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>ArrowButton.size</td>
+ <th scope="row">ArrowButton.size</th>
<td>Integer</td>
<td>16 </td>
<td>Preferred size of the arrow button. </td>
@@ -78,14 +79,14 @@
<table border="1">
<caption>JButton Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>Button.defaultButtonFollowsFocus</td>
+ <th scope="row">Button.defaultButtonFollowsFocus</th>
<td>Boolean</td>
<td>true </td>
<td>Whether or not the default JButton should change to the
@@ -101,14 +102,14 @@
<table border="1">
<caption>JCheckBox Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>CheckBox.icon</td>
+ <th scope="row">CheckBox.icon</th>
<td>Icon</td>
<td>null </td>
<td>Icon used to render the check. </td>
@@ -122,44 +123,44 @@
<table border="1">
<caption>JComboBox child components</caption>
<thead><tr>
- <th>Name</th>
- <th>Type</th>
- <th>Description </th>
+ <th scope="col">Name</th>
+ <th scope="col">Type</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>ComboBox.arrowButton</td>
+ <th scope="row">ComboBox.arrowButton</th>
<td>SynthArrowButton </td>
<td>Renders the drop down indicator. </td>
</tr>
<tr>
- <td>ComboBox.list</td>
+ <th scope="row">ComboBox.list</th>
<td>JList </td>
<td>JList used to render the values. </td>
</tr>
<tr>
- <td>ComboBox.listRenderer</td>
+ <th scope="row">ComboBox.listRenderer</th>
<td>Component </td>
<td>The renderer used for the JComboBox's JList. </td>
</tr>
<tr>
- <td>ComboBox.popup</td>
+ <th scope="row">ComboBox.popup</th>
<td>JPopupMenu </td>
<td>JPopupMenu used to show the ComboBox.list of the JComboBox. </td>
</tr>
<tr>
- <td>ComboBox.renderer</td>
+ <th scope="row">ComboBox.renderer</th>
<td>Component </td>
<td>The renderer used for the JComboBox. This is ONLY set if
the renderer is a UIResource. </td>
</tr>
<tr>
- <td>ComboBox.scrollPane</td>
+ <th scope="row">ComboBox.scrollPane</th>
<td>JScrollPane </td>
<td>JScrollPane containing the JList. </td>
</tr>
<tr>
- <td>ComboBox.textField</td>
+ <th scope="row">ComboBox.textField</th>
<td>JTextField </td>
<td>The editor. </td>
</tr>
@@ -170,14 +171,14 @@
<table border="1">
<caption>JComboBox Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>ComboBox.showPopupOnNavigation</td>
+ <th scope="row">ComboBox.showPopupOnNavigation</th>
<td>Boolean</td>
<td>false </td>
<td>Whether or not the JPopupMenu should appear when navigating
@@ -189,18 +190,19 @@
<h2>JFileChooser</h2>
<table cellpadding="2" cellspacing="2" border="1" style="width: 100%; text-align: left;">
<caption>JFileChooser Specific Properties</caption>
- <tbody>
+ <thead>
<tr>
- <th style="vertical-align: top; text-align: center;">Property</th>
- <th style="vertical-align: top; text-align: center;">Expected Type<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Property</th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Expected Type<br>
+ </th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Default Value<br>
</th>
- <th style="vertical-align: top; text-align: center;">Default Value<br>
- </th>
- <th style="vertical-align: top; text-align: center;">Description</th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Description</th>
</tr>
+ </thead> <tbody>
<tr>
- <td style="vertical-align: top;">FileChooser.cancelIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileChooser.cancelIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -210,8 +212,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileChooser.okIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileChooser.okIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -221,8 +223,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileView.directoryIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileView.directoryIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -231,8 +233,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileView.fileIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileView.fileIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -241,8 +243,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileView.computerIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileView.computerIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -253,8 +255,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileView.hardDriveIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileView.hardDriveIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -265,8 +267,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileView.floppyDriveIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileView.floppyDriveIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -276,8 +278,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileChooser.newFolderIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileChooser.newFolderIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -287,8 +289,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileChooser.upFolderIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileChooser.upFolderIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -298,8 +300,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileChooser.homeFolderIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileChooser.homeFolderIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -309,8 +311,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileChooser.detailsViewIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileChooser.detailsViewIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -320,8 +322,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileChooser.listViewIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileChooser.listViewIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -332,8 +334,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">FileChooser.viewMenuIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">FileChooser.viewMenuIcon<br>
+ </th>
<td style="vertical-align: top;">Icon<br>
</td>
<td style="vertical-align: top;">null<br>
@@ -348,20 +350,20 @@
<h2><a id="JInternalFrame"></a>JInternalFrame</h2>
<table cellpadding="2" cellspacing="2" border="1" style="text-align: left; width: 100%;">
<caption>JInternalFrame Specific Properties</caption>
- <tbody>
- <tr>
- <th style="vertical-align: top; text-align: center;">Property<br>
+ <thead><tr>
+ <th scope="col" style="vertical-align: top; text-align: center;">Property<br>
</th>
- <th style="vertical-align: top; text-align: center;">Expected Type<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Expected Type<br>
</th>
- <th style="vertical-align: top; text-align: center;">DefaultValue<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">DefaultValue<br>
</th>
- <th style="vertical-align: top; text-align: center;">Description<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Description<br>
</th>
</tr>
+ </thead> <tbody>
<tr>
- <td style="vertical-align: top;">InternalFrame.icon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">InternalFrame.icon<br>
+ </th>
<td style="vertical-align: top;">Icon</td>
<td style="vertical-align: top;">null<br>
</td>
@@ -380,20 +382,20 @@
</p>
<table cellpadding="2" cellspacing="2" border="1" style="text-align: left; width: 100%;">
<caption>JInternalFrameTitlePane Specific Properties</caption>
- <tbody>
- <tr>
- <th style="vertical-align: top; text-align: center;">Property<br>
+ <thead><tr>
+ <th scope="col" style="vertical-align: top; text-align: center;">Property<br>
</th>
- <th style="vertical-align: top; text-align: center;">Expected Type<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Expected Type<br>
</th>
- <th style="vertical-align: top; text-align: center;">Default Value<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Default Value<br>
</th>
- <th style="vertical-align: top; text-align: center;">Description<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Description<br>
</th>
</tr>
+ </thead> <tbody>
<tr>
- <td style="vertical-align: top;">InternalFrameTitlePane.maximizeIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">InternalFrameTitlePane.maximizeIcon<br>
+ </th>
<td style="vertical-align: top;">Icon</td>
<td style="vertical-align: top;">null<br>
</td>
@@ -402,8 +404,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">InternalFrameTitlePane.minimizeIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">InternalFrameTitlePane.minimizeIcon<br>
+ </th>
<td style="vertical-align: top;">Icon</td>
<td style="vertical-align: top;">null<br>
</td>
@@ -412,8 +414,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">InternalFrameTitlePane.iconifyIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">InternalFrameTitlePane.iconifyIcon<br>
+ </th>
<td style="vertical-align: top;">Icon</td>
<td style="vertical-align: top;">null<br>
</td>
@@ -422,8 +424,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">InternalFrameTitlePane.closeIcon<br>
- </td>
+ <th scope="row" style="vertical-align: top;">InternalFrameTitlePane.closeIcon<br>
+ </th>
<td style="vertical-align: top;">Icon</td>
<td style="vertical-align: top;">null<br>
</td>
@@ -432,8 +434,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">InternalFrameTitlePane.titleSpacing<br>
- </td>
+ <th scope="row" style="vertical-align: top;">InternalFrameTitlePane.titleSpacing<br>
+ </th>
<td style="vertical-align: top;">Integer</td>
<td style="vertical-align: top;">2</td>
<td style="vertical-align: top;">Space between the
@@ -441,8 +443,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">InternalFrameTitlePane.buttonSpacing<br>
- </td>
+ <th scope="row" style="vertical-align: top;">InternalFrameTitlePane.buttonSpacing<br>
+ </th>
<td style="vertical-align: top;">Integer</td>
<td style="vertical-align: top;">2</td>
<td style="vertical-align: top;">Space between the buttons on
@@ -450,8 +452,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">InternalFrameTitlePane.maxFrameIconSize<br>
- </td>
+ <th scope="row" style="vertical-align: top;">InternalFrameTitlePane.maxFrameIconSize<br>
+ </th>
<td style="vertical-align: top;">Dimension</td>
<td style="vertical-align: top;">16x16</td>
<td style="vertical-align: top;">Maximum size of the frame
@@ -460,8 +462,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">InternalFrameTitlePane.titleAlignment<br>
- </td>
+ <th scope="row" style="vertical-align: top;">InternalFrameTitlePane.titleAlignment<br>
+ </th>
<td style="vertical-align: top;">leading|trailing|center</td>
<td style="vertical-align: top;">leading</td>
<td style="vertical-align: top;">Alignment for the title.
@@ -479,14 +481,14 @@
<table border="1">
<caption>JList Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>List.rendererUseListColors</td>
+ <th scope="row">List.rendererUseListColors</th>
<td>Boolean</td>
<td>true </td>
<td>If true the renderers state is not updated, and the text
@@ -495,7 +497,7 @@
updated and the colors will instead come from the Style. </td>
</tr>
<tr>
- <td>List.rendererUseUIBorder</td>
+ <th scope="row">List.rendererUseUIBorder</th>
<td>Boolean</td>
<td>true </td>
<td>If true setBorder on the renderer will succeed regardless
@@ -503,7 +505,7 @@
only succeed if it is a Synth Border. </td>
</tr>
<tr>
- <td>List.cellHeight</td>
+ <th scope="row">List.cellHeight</th>
<td>Integer</td>
<td>-1 </td>
<td>Cell height of the JList. Is this is -1, <code>setFixedCellHeight</code>
@@ -523,14 +525,14 @@
<table border="1">
<caption>Menu classes common properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>prefix.acceleratorDelimiter</td>
+ <th scope="row">prefix.acceleratorDelimiter</th>
<td>String</td>
<td>+ </td>
<td>String separator between the description of the modifiers
@@ -538,7 +540,7 @@
</td>
</tr>
<tr>
- <td>prefix.arrowIcon</td>
+ <th scope="row">prefix.arrowIcon</th>
<td>Icon</td>
<td>null </td>
<td>Icon drawn to the right of the text (or left when the
@@ -546,7 +548,7 @@
typically only defined for JMenu. </td>
</tr>
<tr>
- <td>prefix.checkIcon</td>
+ <th scope="row">prefix.checkIcon</th>
<td>Icon</td>
<td>null </td>
<td>Icon drawn to the left of the text (or right when the
@@ -555,7 +557,7 @@
to provide the check or radio button. </td>
</tr>
<tr>
- <td>prefix.margin</td>
+ <th scope="row">prefix.margin</th>
<td>Insets</td>
<td>Empty Insets (0, 0, 0, 0) </td>
<td>Margin for the JMenuItem. Refer to the javadoc of
@@ -563,7 +565,7 @@
of how the margin is used. </td>
</tr>
<tr>
- <td>prefix.textIconGap</td>
+ <th scope="row">prefix.textIconGap</th>
<td>Integer</td>
<td>4 </td>
<td>Padding between the icon and text. Refer to the javadoc for
@@ -578,20 +580,20 @@
<table border="1">
<caption>JMenu specific properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>Menu.delay</td>
+ <th scope="row">Menu.delay</th>
<td>Integer</td>
<td>200 </td>
<td>Sets the delay before the menu appears. </td>
</tr>
<tr>
- <td>Menu.shortcutKeys</td>
+ <th scope="row">Menu.shortcutKeys</th>
<td>int[]</td>
<td>KeyEvent.ALT_MASK </td>
<td>Array of the KeyEvent modifiers to use for shortcut keys. </td>
@@ -607,26 +609,26 @@
<table border="1">
<caption>JOptionPane Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>OptionPane.buttonAreaBorder</td>
+ <th scope="row">OptionPane.buttonAreaBorder</th>
<td>Border </td>
<td>null </td>
<td>Border around the button area. </td>
</tr>
<tr>
- <td>OptionPane.buttonClickThreshhold</td>
+ <th scope="row">OptionPane.buttonClickThreshhold</th>
<td>Integer </td>
<td>0 </td>
<td>Passed to the created buttons setMultiClickThreshhold. </td>
</tr>
<tr>
- <td>OptionPane.buttonOrientation</td>
+ <th scope="row">OptionPane.buttonOrientation</th>
<td>Integer </td>
<td>SwingConstants.CENTER </td>
<td>How the buttons should be layed out, one of
@@ -634,80 +636,80 @@
(this will be flipped when in a right to left locale). </td>
</tr>
<tr>
- <td>OptionPane.buttonPadding</td>
+ <th scope="row">OptionPane.buttonPadding</th>
<td>Integer </td>
<td>6 </td>
<td>Amount of space between buttons. </td>
</tr>
<tr>
- <td>OptionPane.cancelIcon</td>
+ <th scope="row">OptionPane.cancelIcon</th>
<td>Icon </td>
<td>null </td>
<td>Icon for the cancel button. </td>
</tr>
<tr>
- <td>OptionPane.errorIcon</td>
+ <th scope="row">OptionPane.errorIcon</th>
<td>Icon </td>
<td>null </td>
<td>Icon used for ERROR_MESSAGE. </td>
</tr>
<tr>
- <td>OptionPane.informationIcon</td>
+ <th scope="row">OptionPane.informationIcon</th>
<td>Icon </td>
<td>null </td>
<td>Icon used for INFORMATION_MESSAGE. </td>
</tr>
<tr>
- <td>OptionPane.isYesLast</td>
+ <th scope="row">OptionPane.isYesLast</th>
<td>Boolean </td>
<td>false </td>
<td>If true the 'yes' button leads other buttons, otherwise
it follows the other buttons. </td>
</tr>
<tr>
- <td>OptionPane.questionIcon</td>
+ <th scope="row">OptionPane.questionIcon</th>
<td>Icon </td>
<td>null </td>
<td>Icon used for error QUESTION_MESSAGE. </td>
</tr>
<tr>
- <td>OptionPane.minimumSize</td>
+ <th scope="row">OptionPane.minimumSize</th>
<td>Dimension </td>
<td>262x90</td>
<td>Minimum size for the JOptionPane. </td>
</tr>
<tr>
- <td>OptionPane.noIcon</td>
+ <th scope="row">OptionPane.noIcon</th>
<td>Icon </td>
<td>null </td>
<td>Icon for the no button. </td>
</tr>
<tr>
- <td>OptionPane.okIcon</td>
+ <th scope="row">OptionPane.okIcon</th>
<td>Icon </td>
<td>null </td>
<td>Icon for the ok button. </td>
</tr>
<tr>
- <td>OptionPane.sameSizeButtons</td>
+ <th scope="row">OptionPane.sameSizeButtons</th>
<td>Boolean </td>
<td>true </td>
<td>Whether or not all the buttons should be the same size. </td>
</tr>
<tr>
- <td>OptionPane.separatorPadding</td>
+ <th scope="row">OptionPane.separatorPadding</th>
<td>Integer </td>
<td>6</td>
<td>Amount of padding between the message area and separator. </td>
</tr>
<tr>
- <td>OptionPane.yesIcon</td>
+ <th scope="row">OptionPane.yesIcon</th>
<td>Icon </td>
<td>null </td>
<td>Icon for the yes button. </td>
</tr>
<tr>
- <td>OptionPane.warningIcon</td>
+ <th scope="row">OptionPane.warningIcon</th>
<td>Icon </td>
<td>null </td>
<td>Icon used for error WARNING_MESSAGE </td>
@@ -719,18 +721,18 @@
</h2>
<table cellpadding="2" cellspacing="2" border="1" style="text-align: left; width: 100%;">
<caption>JProgressBar Specific Properties</caption>
- <tbody>
- <tr>
- <th style="vertical-align: top; text-align: center;">Property</th>
- <th style="vertical-align: top; text-align: center;">Expected Type<br>
+ <thead><tr>
+ <th scope="col" style="vertical-align: top; text-align: center;">Property</th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Expected Type<br>
+ </th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Default Value<br>
</th>
- <th style="vertical-align: top; text-align: center;">Default Value<br>
- </th>
- <th style="vertical-align: top; text-align: center;">Description</th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Description</th>
</tr>
+ </thead> <tbody>
<tr>
- <td style="vertical-align: top;">ProgressBar.repaintInterval<br>
- </td>
+ <th scope="row" style="vertical-align: top;">ProgressBar.repaintInterval<br>
+ </th>
<td style="vertical-align: top;">Integer<br>
</td>
<td style="vertical-align: top;">50<br>
@@ -740,8 +742,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">ProgressBar.cycleTime<br>
- </td>
+ <th scope="row" style="vertical-align: top;">ProgressBar.cycleTime<br>
+ </th>
<td style="vertical-align: top;">Integer<br>
</td>
<td style="vertical-align: top;">3000<br>
@@ -760,14 +762,14 @@
<table border="1">
<caption>JRadioButton Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>RadioButton.icon</td>
+ <th scope="row">RadioButton.icon</th>
<td>Icon</td>
<td>null </td>
<td>Icon used to render the radio indicator. </td>
@@ -781,13 +783,13 @@
<table border="1">
<caption>JScrollBar child components</caption>
<thead><tr>
- <th>Name</th>
- <th>Type</th>
- <th>Description </th>
+ <th scope="col">Name</th>
+ <th scope="col">Type</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>ScrollBar.button</td>
+ <th scope="row">ScrollBar.button</th>
<td>SynthArrowButton </td>
<td>Identifies the increment/decrement buttons. </td>
</tr>
@@ -798,27 +800,27 @@
<table border="1">
<caption>JScrollBar Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>ScrollBar.allowsAbsolutePositioning</td>
+ <th scope="row">ScrollBar.allowsAbsolutePositioning</th>
<td>Boolean </td>
<td>false</td>
<td>If true, middle mouse click in the track will set the
position of the track to where the mouse is. </td>
</tr>
<tr>
- <td>ScrollBar.maximumThumbSize</td>
+ <th scope="row">ScrollBar.maximumThumbSize</th>
<td>Dimension</td>
<td>4096x4096 </td>
<td>Maximum thumb size. </td>
</tr>
<tr>
- <td>ScrollBar.minimumThumbSize</td>
+ <th scope="row">ScrollBar.minimumThumbSize</th>
<td>Dimension</td>
<td>Derived from ScrollBar.thumbHeight</td>
<td>The minimum thumb size. If this is not specified the
@@ -830,14 +832,14 @@
size width is ScrollBar.thumbHeight with a height of 7.</td>
</tr>
<tr>
- <td>ScrollBar.squareButtons</td>
+ <th scope="row">ScrollBar.squareButtons</th>
<td>Boolean </td>
<td>false</td>
<td>If true, the width and height of the scrollbar buttons
will be made equal. </td>
</tr>
<tr>
- <td>ScrollBar.thumbHeight</td>
+ <th scope="row">ScrollBar.thumbHeight</th>
<td>Integer</td>
<td>14 </td>
<td>The preferred height, when the orientation of the
@@ -853,14 +855,14 @@
<table border="1">
<caption>Separator classes common properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>Separator.thickness</td>
+ <th scope="row">Separator.thickness</th>
<td>Integer</td>
<td>2 </td>
<td>Preferred width, for vertically aligned separators, or
@@ -873,14 +875,14 @@
<table border="1">
<caption>JToolBar.Separator specific properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>ToolBar.separatorSize</td>
+ <th scope="row">ToolBar.separatorSize</th>
<td>Dimension</td>
<td>null </td>
<td>The value of this is passed to the
@@ -907,14 +909,14 @@
<table border="1">
<caption>JScrollPane Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>ScrollPane.viewportBorderInsets</td>
+ <th scope="row">ScrollPane.viewportBorderInsets</th>
<td>Insets</td>
<td>null </td>
<td>Insets for the viewport Border. </td>
@@ -931,39 +933,39 @@
<table border="1">
<caption>JSplitPane Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>SplitPane.centerOneTouchButtons</td>
+ <th scope="row">SplitPane.centerOneTouchButtons</th>
<td>Boolean</td>
<td>true </td>
<td>If true, the one touch buttons are centered on the divider. </td>
</tr>
<tr>
- <td>SplitPane.oneTouchButtonOffset</td>
+ <th scope="row">SplitPane.oneTouchButtonOffset</th>
<td>Integer</td>
<td>2 </td>
<td>Distance between the one touch buttons. </td>
</tr>
<tr>
- <td>SplitPane.oneTouchButtonSize</td>
+ <th scope="row">SplitPane.oneTouchButtonSize</th>
<td>Integer</td>
<td>6 </td>
<td>Size to make the one touch buttons. </td>
</tr>
<tr>
- <td>SplitPane.oneTouchExpandable</td>
+ <th scope="row">SplitPane.oneTouchExpandable</th>
<td>Boolean</td>
<td>null </td>
<td>If non null, the value of this is passed to
setOneTouchExpandable. </td>
</tr>
<tr>
- <td>SplitPane.size</td>
+ <th scope="row">SplitPane.size</th>
<td>Integer</td>
<td>6 </td>
<td>Size of the divider </td>
@@ -974,20 +976,20 @@
<h2><a id="JSlider"></a>JSlider</h2>
<table cellpadding="2" cellspacing="2" border="1" style="text-align: left; width: 100%;">
<caption>JSlider Specific Properties</caption>
- <tbody>
- <tr>
- <th style="vertical-align: top; text-align: center;">Property<br>
+ <thead><tr>
+ <th scope="col" style="vertical-align: top; text-align: center;">Property<br>
</th>
- <th style="vertical-align: top; text-align: center;">Expected Type<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Expected Type<br>
</th>
- <th style="vertical-align: top; text-align: center;">Default Value<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Default Value<br>
</th>
- <th style="vertical-align: top; text-align: center;">Description<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Description<br>
</th>
</tr>
+ </thead> <tbody>
<tr>
- <td style="vertical-align: top;">Slider.thumbWidth<br>
- </td>
+ <th scope="row" style="vertical-align: top;">Slider.thumbWidth<br>
+ </th>
<td style="vertical-align: top;">Integer<br>
</td>
<td style="vertical-align: top;">30<br>
@@ -996,8 +998,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">Slider.thumbHeight<br>
- </td>
+ <th scope="row" style="vertical-align: top;">Slider.thumbHeight<br>
+ </th>
<td style="vertical-align: top;">Integer<br>
</td>
<td style="vertical-align: top;">14<br>
@@ -1006,8 +1008,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">Slider.trackBorder<br>
- </td>
+ <th scope="row" style="vertical-align: top;">Slider.trackBorder<br>
+ </th>
<td style="vertical-align: top;">Integer<br>
</td>
<td style="vertical-align: top;">1<br>
@@ -1016,8 +1018,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">Slider.paintValue<br>
- </td>
+ <th scope="row" style="vertical-align: top;">Slider.paintValue<br>
+ </th>
<td style="vertical-align: top;">Boolean<br>
</td>
<td style="vertical-align: top;">true<br>
@@ -1033,18 +1035,18 @@
<h2><a id="JTabbedPane"></a>JTabbedPane</h2>
<table cellpadding="2" cellspacing="2" border="1" style="text-align: left; width: 100%;">
<caption>JTabbedPane Specific Properties</caption>
- <tbody>
- <tr>
- <th style="vertical-align: top; text-align: center;">Property</th>
- <th style="vertical-align: top; text-align: center;">Expected Type<br>
+ <thead><tr>
+ <th scope="col" style="vertical-align: top; text-align: center;">Property</th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Expected Type<br>
+ </th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Default Value<br>
</th>
- <th style="vertical-align: top; text-align: center;">Default Value<br>
- </th>
- <th style="vertical-align: top; text-align: center;">Description</th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Description</th>
</tr>
+ </thead> <tbody>
<tr>
- <td style="vertical-align: top;">TabbedPane.tabRunOverlay<br>
- </td>
+ <th scope="row" style="vertical-align: top;">TabbedPane.tabRunOverlay<br>
+ </th>
<td style="vertical-align: top;">Integer<br>
</td>
<td style="vertical-align: top;">0<br>
@@ -1054,8 +1056,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">TabbedPane.textIconGap<br>
- </td>
+ <th scope="row" style="vertical-align: top;">TabbedPane.textIconGap<br>
+ </th>
<td style="vertical-align: top;">Integer<br>
</td>
<td style="vertical-align: top;">0<br>
@@ -1066,8 +1068,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">TabbedPane.selectedTabPadInsets<br>
- </td>
+ <th scope="row" style="vertical-align: top;">TabbedPane.selectedTabPadInsets<br>
+ </th>
<td style="vertical-align: top;">Insets<br>
</td>
<td style="vertical-align: top;">Empty Insets (0, 0, 0, 0)<br>
@@ -1077,8 +1079,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">TabbedPane.selectionFollowsFocus<br>
- </td>
+ <th scope="row" style="vertical-align: top;">TabbedPane.selectionFollowsFocus<br>
+ </th>
<td style="vertical-align: top;">Boolean<br>
</td>
<td style="vertical-align: top;">true<br>
@@ -1097,21 +1099,21 @@
<table border="1">
<caption>JTable Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>Table.gridColor</td>
+ <th scope="row">Table.gridColor</th>
<td>Color</td>
<td>null </td>
<td>Color used for the grid. If null the foreground from the
style is used. </td>
</tr>
<tr>
- <td>Table.rendererUseTableColors</td>
+ <th scope="row">Table.rendererUseTableColors</th>
<td>Boolean</td>
<td>true </td>
<td>If true the renderers state is not updated, and the text
@@ -1120,7 +1122,7 @@
updated and the colors will instead come from the Style. </td>
</tr>
<tr>
- <td>Table.rendererUseUIBorder</td>
+ <th scope="row">Table.rendererUseUIBorder</th>
<td>Boolean</td>
<td>true </td>
<td>If true setBorder on the renderer will succeed
@@ -1128,7 +1130,7 @@
renderer will only succeed if it is a Synth Border. </td>
</tr>
<tr>
- <td>Table.rowHeight</td>
+ <th scope="row">Table.rowHeight</th>
<td>Integer</td>
<td>-1 </td>
<td>If not -1 setRowHeight is invoked on the JTable. </td>
@@ -1142,59 +1144,59 @@
<table border="1">
<caption>JTree Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>Tree.collapsedIcon</td>
+ <th scope="row">Tree.collapsedIcon</th>
<td>Icon</td>
<td>null </td>
<td>Icon to use when a node is collapsed. </td>
</tr>
<tr>
- <td>Tree.drawHorizontalLines</td>
+ <th scope="row">Tree.drawHorizontalLines</th>
<td>Boolean</td>
<td>true </td>
<td>If true nodes have a horizontal connecting them to the
leading edge of their parent. </td>
</tr>
<tr>
- <td>Tree.drawVerticalLines</td>
+ <th scope="row">Tree.drawVerticalLines</th>
<td>Boolean</td>
<td>true </td>
<td>If true a vertical line is drawn down from expanded nodes. </td>
</tr>
<tr>
- <td>Tree.expandedIcon</td>
+ <th scope="row">Tree.expandedIcon</th>
<td>Icon</td>
<td>null </td>
<td>Icon to use when a node has been expanded. </td>
</tr>
<tr>
- <td>Tree.leftChildIndent</td>
+ <th scope="row">Tree.leftChildIndent</th>
<td>Integer</td>
<td>0 </td>
<td>This plus Tree.rightChildIndent account for the total
space, along the y axis, to offset nodes from their parent. </td>
</tr>
<tr>
- <td>Tree.rightChildIndent</td>
+ <th scope="row">Tree.rightChildIndent</th>
<td>Integer</td>
<td>0 </td>
<td>This plus Tree.leftChildIndent account for the total
space, along the y axis, to offset nodes from their parent. </td>
</tr>
<tr>
- <td>Tree.rowHeight</td>
+ <th scope="row">Tree.rowHeight</th>
<td>Integer</td>
<td>-1 </td>
<td>Row height for the Tree.</td>
</tr>
<tr>
- <td>Tree.scrollsHorizontallyAndVertically</td>
+ <th scope="row">Tree.scrollsHorizontallyAndVertically</th>
<td>Boolean</td>
<td>false </td>
<td>If false and scrolling needs to happen to accommodate cells
@@ -1202,14 +1204,14 @@
may happen along both the horizontal and vertical axis. </td>
</tr>
<tr>
- <td>Tree.scrollsOnExpand</td>
+ <th scope="row">Tree.scrollsOnExpand</th>
<td>Boolean</td>
<td>true </td>
<td>Whether or not the JTree should scroll when a node is
expanded. </td>
</tr>
<tr>
- <td>Tree.linesStyle</td>
+ <th scope="row">Tree.linesStyle</th>
<td>String</td>
<td> </td>
<td>The styles of the lines in the tree. Synth supports solid lines
@@ -1226,14 +1228,14 @@
<table border="1">
<caption>JToggleButton Specific Properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>ToggleButton.icon</td>
+ <th scope="row">ToggleButton.icon</th>
<td>Icon</td>
<td>null </td>
<td>Icon used to render the radio indicator. </td>
@@ -1248,14 +1250,14 @@
<table border="1">
<caption>Button classes common properties</caption>
<thead><tr>
- <th>Property</th>
- <th>Expected Type</th>
- <th>Default Value</th>
- <th>Description </th>
+ <th scope="col">Property</th>
+ <th scope="col">Expected Type</th>
+ <th scope="col">Default Value</th>
+ <th scope="col">Description </th>
</tr>
</thead> <tbody>
<tr>
- <td>prefix.contentAreaFilled</td>
+ <th scope="row">prefix.contentAreaFilled</th>
<td>Integer</td>
<td>true </td>
<td>Refer to the javadoc of
@@ -1265,7 +1267,7 @@
</td>
</tr>
<tr>
- <td>prefix.iconTextGap</td>
+ <th scope="row">prefix.iconTextGap</th>
<td>Integer</td>
<td>If unspecified, JButton.setIconTextGap is not invoked.</td>
<td>Padding between the icon and text. Refer to the javadoc of
@@ -1274,7 +1276,7 @@
</td>
</tr>
<tr>
- <td>prefix.margin</td>
+ <th scope="row">prefix.margin</th>
<td>Insets</td>
<td>Empty Insets (0, 0, 0, 0) </td>
<td>Margin for the JButton. Refer to the javadoc of
@@ -1283,7 +1285,7 @@
</td>
</tr>
<tr>
- <td>prefix.textShiftOffset</td>
+ <th scope="row">prefix.textShiftOffset</th>
<td>Integer</td>
<td>0 </td>
<td>Amount to shift the text and icon, along the x and y axis,
@@ -1298,19 +1300,19 @@
<h2><a id="textProperties"></a>Text Properties<br>
</h2>
<table cellpadding="2" cellspacing="2" border="1" style="text-align: left; width: 100%;">
- <tbody>
- <tr>
- <th style="vertical-align: top; text-align: center;">Property</th>
- <th style="vertical-align: top; text-align: center;">Expected Type<br>
+ <thead><tr>
+ <th scope="col" style="vertical-align: top; text-align: center;">Property</th>
+ <th scope="col" style="vertical-align: top; text-align: center;">Expected Type<br>
</th>
- <th style="vertical-align: top; text-align: center;">Default Value<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Default Value<br>
</th>
- <th style="vertical-align: top; text-align: center;">Description<br>
+ <th scope="col" style="vertical-align: top; text-align: center;">Description<br>
</th>
</tr>
+ </thead> <tbody>
<tr>
- <td style="vertical-align: top;">prefix.caretForeground<br>
- </td>
+ <th scope="row" style="vertical-align: top;">prefix.caretForeground<br>
+ </th>
<td style="vertical-align: top;">Color<br>
</td>
<td style="vertical-align: top;">#000000</td>
@@ -1318,8 +1320,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">prefix.margin<br>
- </td>
+ <th scope="row" style="vertical-align: top;">prefix.margin<br>
+ </th>
<td style="vertical-align: top;">Insets</td>
<td style="vertical-align: top;">Empty Insets (0, 0, 0, 0),<br>
EditorPane and TextPane (3, 3, 3, 3)<br>
@@ -1328,8 +1330,8 @@
</td>
</tr>
<tr>
- <td style="vertical-align: top;">prefix.caretBlinkRate<br>
- </td>
+ <th scope="row" style="vertical-align: top;">prefix.caretBlinkRate<br>
+ </th>
<td style="vertical-align: top;">Integer<br>
</td>
<td style="vertical-align: top;">500<br>
--- a/src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/synthFileFormat.html Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/swing/plaf/synth/doc-files/synthFileFormat.html Wed Sep 25 14:48:39 2019 +0530
@@ -4,7 +4,7 @@
<meta charset="utf-8"/>
<title>Synth File Format</title>
<!--
- Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 2019, 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
@@ -777,12 +777,32 @@
SynthPainter method:
</p>
<table border=1>
- <caption> Painters for SynthPainter methods </caption>
- <tr><th>State<th>Method<th>Painter
- <tr><td>SELECTED<td>paintButtonBackground<td>stateButtonBackgroundPainter
- <tr><td>SELECTED<td>Anything but paintButtonBackground<td>stateFallbackPainter
- <tr><td>Anything but SELECTED<td>paintButtonBackground<td>styleButtonBackgroundPainter
- <tr><td>Anything but SELECTED<td>Anything but paintButtonBackground<td>fallbackPainter
+ <caption>Painters for SynthPainter methods</caption>
+ <thead>
+ <tr>
+ <th scope="col">Index
+ <th scope="col">State
+ <th scope="col">Method
+ <th scope="col">Painter
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">1
+ <td>SELECTED
+ <td>paintButtonBackground<td>stateButtonBackgroundPainter
+ <tr>
+ <th scope="row">2
+ <td>SELECTED
+ <td>Anything but paintButtonBackground<td>stateFallbackPainter
+ <tr>
+ <th scope="row">3
+ <td>Anything but SELECTED
+ <td>paintButtonBackground<td>styleButtonBackgroundPainter
+ <tr>
+ <th scope="row">4
+ <td>Anything but SELECTED
+ <td>Anything but paintButtonBackground<td>fallbackPainter
+ </tbody>
</table>
<p>
--- a/src/java.desktop/share/classes/javax/swing/text/html/HTMLDocument.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/javax/swing/text/html/HTMLDocument.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, 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
@@ -3577,7 +3577,7 @@
* <td>{@link DefaultComboBoxModel} or an {@link DefaultListModel},
* with an item type of Option
* <tr>
- * <td>textarea
+ * <th scope="row">textarea
* <td>{@link PlainDocument}
* </tbody>
* </table>
--- a/src/java.desktop/share/classes/sun/java2d/marlin/DMarlinRenderingEngine.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/sun/java2d/marlin/DMarlinRenderingEngine.java Wed Sep 25 14:48:39 2019 +0530
@@ -246,7 +246,8 @@
widthScale = 1.0d;
} else if ((at.getType() & (AffineTransform.TYPE_GENERAL_TRANSFORM |
AffineTransform.TYPE_GENERAL_SCALE)) != 0) {
- widthScale = Math.sqrt(at.getDeterminant());
+ // Determinant may be negative (flip), use its absolute value:
+ widthScale = Math.sqrt(Math.abs(at.getDeterminant()));
} else {
// First calculate the "maximum scale" of this transform.
double A = at.getScaleX(); // m00
--- a/src/java.desktop/share/classes/sun/java2d/marlin/MarlinRenderingEngine.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/sun/java2d/marlin/MarlinRenderingEngine.java Wed Sep 25 14:48:39 2019 +0530
@@ -245,7 +245,8 @@
widthScale = 1.0f;
} else if ((at.getType() & (AffineTransform.TYPE_GENERAL_TRANSFORM |
AffineTransform.TYPE_GENERAL_SCALE)) != 0) {
- widthScale = (float)Math.sqrt(at.getDeterminant());
+ // Determinant may be negative (flip), use its absolute value:
+ widthScale = (float)Math.sqrt(Math.abs(at.getDeterminant()));
} else {
// First calculate the "maximum scale" of this transform.
double A = at.getScaleX(); // m00
--- a/src/java.desktop/share/classes/sun/java2d/marlin/Version.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/sun/java2d/marlin/Version.java Wed Sep 25 14:48:39 2019 +0530
@@ -27,7 +27,7 @@
public final class Version {
- private static final String VERSION = "marlin-0.9.1.2-Unsafe-OpenJDK";
+ private static final String VERSION = "marlin-0.9.1.3-Unsafe-OpenJDK";
public static String getVersion() {
return VERSION;
--- a/src/java.desktop/share/classes/sun/java2d/opengl/OGLContext.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/sun/java2d/opengl/OGLContext.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2019, 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
@@ -25,26 +25,24 @@
package sun.java2d.opengl;
+import java.lang.annotation.Native;
+
import sun.java2d.pipe.BufferedContext;
import sun.java2d.pipe.RenderBuffer;
import sun.java2d.pipe.RenderQueue;
import sun.java2d.pipe.hw.ContextCapabilities;
-import static sun.java2d.pipe.BufferedOpCodes.*;
-import static sun.java2d.pipe.hw.ContextCapabilities.*;
-import java.lang.annotation.Native;
+import static sun.java2d.pipe.BufferedOpCodes.INVALIDATE_CONTEXT;
+import static sun.java2d.pipe.BufferedOpCodes.SET_SCRATCH_SURFACE;
/**
* Note that the RenderQueue lock must be acquired before calling any of
* the methods in this class.
*/
-public class OGLContext extends BufferedContext {
-
- private final OGLGraphicsConfig config;
+final class OGLContext extends BufferedContext {
- OGLContext(RenderQueue rq, OGLGraphicsConfig config) {
+ OGLContext(RenderQueue rq) {
super(rq);
- this.config = config;
}
/**
@@ -111,10 +109,6 @@
rq.flushNow();
}
- public RenderQueue getRenderQueue() {
- return OGLRenderQueue.getInstance();
- }
-
/**
* Returns a string representing adapter id (vendor, renderer, version).
* Must be called on the rendering thread.
@@ -123,38 +117,6 @@
*/
static final native String getOGLIdString();
- @Override
- public void saveState() {
- // assert rq.lock.isHeldByCurrentThread();
-
- // reset all attributes of this and current contexts
- invalidateContext();
- invalidateCurrentContext();
-
- setScratchSurface(config);
-
- // save the state on the native level
- rq.ensureCapacity(4);
- buf.putInt(SAVE_STATE);
- rq.flushNow();
- }
-
- @Override
- public void restoreState() {
- // assert rq.lock.isHeldByCurrentThread();
-
- // reset all attributes of this and current contexts
- invalidateContext();
- invalidateCurrentContext();
-
- setScratchSurface(config);
-
- // restore the state on the native level
- rq.ensureCapacity(4);
- buf.putInt(RESTORE_STATE);
- rq.flushNow();
- }
-
static class OGLContextCaps extends ContextCapabilities {
/**
* Indicates the presence of the GL_EXT_framebuffer_object extension.
--- a/src/java.desktop/share/classes/sun/java2d/opengl/OGLSurfaceData.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/sun/java2d/opengl/OGLSurfaceData.java Wed Sep 25 14:48:39 2019 +0530
@@ -27,6 +27,7 @@
import java.awt.AlphaComposite;
import java.awt.Composite;
+import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Transparency;
@@ -578,16 +579,16 @@
* (referenced by the pData parameter). This method is invoked from
* the native Dispose() method from the Disposer thread when the
* Java-level OGLSurfaceData object is about to go away. Note that we
- * also pass a reference to the native GLX/WGLGraphicsConfigInfo
- * (pConfigInfo) for the purposes of making a context current.
+ * also pass a reference to the OGLGraphicsConfig
+ * for the purposes of making a context current.
*/
- static void dispose(long pData, long pConfigInfo) {
+ static void dispose(long pData, OGLGraphicsConfig gc) {
OGLRenderQueue rq = OGLRenderQueue.getInstance();
rq.lock();
try {
// make sure we have a current context before
// disposing the native resources (e.g. texture object)
- OGLContext.setScratchSurface(pConfigInfo);
+ OGLContext.setScratchSurface(gc);
RenderBuffer buf = rq.getBuffer();
rq.ensureCapacityAndAlignment(12, 4);
--- a/src/java.desktop/share/classes/sun/java2d/pipe/BufferedContext.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/sun/java2d/pipe/BufferedContext.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -30,16 +30,27 @@
import java.awt.Composite;
import java.awt.Paint;
import java.awt.geom.AffineTransform;
-import sun.java2d.pipe.hw.AccelSurface;
+import java.lang.annotation.Native;
+import java.lang.ref.Reference;
+import java.lang.ref.WeakReference;
+
import sun.java2d.InvalidPipeException;
import sun.java2d.SunGraphics2D;
import sun.java2d.loops.XORComposite;
-import static sun.java2d.pipe.BufferedOpCodes.*;
-import static sun.java2d.pipe.BufferedRenderPipe.BYTES_PER_SPAN;
+import sun.java2d.pipe.hw.AccelSurface;
-import java.lang.annotation.Native;
-import java.lang.ref.Reference;
-import java.lang.ref.WeakReference;
+import static sun.java2d.pipe.BufferedOpCodes.BEGIN_SHAPE_CLIP;
+import static sun.java2d.pipe.BufferedOpCodes.END_SHAPE_CLIP;
+import static sun.java2d.pipe.BufferedOpCodes.RESET_CLIP;
+import static sun.java2d.pipe.BufferedOpCodes.RESET_COMPOSITE;
+import static sun.java2d.pipe.BufferedOpCodes.RESET_TRANSFORM;
+import static sun.java2d.pipe.BufferedOpCodes.SET_ALPHA_COMPOSITE;
+import static sun.java2d.pipe.BufferedOpCodes.SET_RECT_CLIP;
+import static sun.java2d.pipe.BufferedOpCodes.SET_SHAPE_CLIP_SPANS;
+import static sun.java2d.pipe.BufferedOpCodes.SET_SURFACES;
+import static sun.java2d.pipe.BufferedOpCodes.SET_TRANSFORM;
+import static sun.java2d.pipe.BufferedOpCodes.SET_XOR_COMPOSITE;
+import static sun.java2d.pipe.BufferedRenderPipe.BYTES_PER_SPAN;
/**
* Base context class for managing state in a single-threaded rendering
@@ -77,8 +88,8 @@
*/
@Native public static final int USE_MASK = (1 << 1);
- protected RenderQueue rq;
- protected RenderBuffer buf;
+ private final RenderQueue rq;
+ private final RenderBuffer buf;
/**
* This is a reference to the most recently validated BufferedContext. If
@@ -172,7 +183,7 @@
* @throws InvalidPipeException if either src or dest surface is not valid
* or lost
*/
- public void validate(AccelSurface srcData, AccelSurface dstData,
+ private void validate(AccelSurface srcData, AccelSurface dstData,
Region clip, Composite comp,
AffineTransform xform,
Paint paint, SunGraphics2D sg2d, int flags)
@@ -310,21 +321,6 @@
dstData.markDirty();
}
- /**
- * Invalidates the surfaces associated with this context. This is
- * useful when the context is no longer needed, and we want to break
- * the chain caused by these surface references.
- *
- * Note: must be called while the RenderQueue lock is held.
- *
- * @see RenderQueue#lock
- * @see RenderQueue#unlock
- */
- private void invalidateSurfaces() {
- validSrcDataRef.clear();
- validDstDataRef.clear();
- }
-
private void setSurfaces(AccelSurface srcData,
AccelSurface dstData)
{
@@ -433,12 +429,13 @@
* @see RenderQueue#lock
* @see RenderQueue#unlock
*/
- public void invalidateContext() {
+ public final void invalidateContext() {
resetTransform();
resetComposite();
resetClip();
BufferedPaints.resetPaint(rq);
- invalidateSurfaces();
+ validSrcDataRef.clear();
+ validDstDataRef.clear();
validCompRef.clear();
validClipRef.clear();
validPaintRef.clear();
@@ -453,27 +450,7 @@
* @return a render queue
* @see RenderQueue
*/
- public abstract RenderQueue getRenderQueue();
-
- /**
- * Saves the state of this context.
- * It may reset the current context.
- *
- * Note: must be called while the RenderQueue lock is held.
- *
- * @see RenderQueue#lock
- * @see RenderQueue#unlock
- */
- public abstract void saveState();
-
- /**
- * Restores the native state of this context.
- * It may reset the current context.
- *
- * Note: must be called while the RenderQueue lock is held.
- *
- * @see RenderQueue#lock
- * @see RenderQueue#unlock
- */
- public abstract void restoreState();
+ public final RenderQueue getRenderQueue() {
+ return rq;
+ }
}
--- a/src/java.desktop/share/classes/sun/java2d/pipe/BufferedOpCodes.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/classes/sun/java2d/pipe/BufferedOpCodes.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -27,7 +27,7 @@
import java.lang.annotation.Native;
-public class BufferedOpCodes {
+public final class BufferedOpCodes {
// draw ops
@Native public static final int DRAW_LINE = 10;
@Native public static final int DRAW_RECT = 11;
@@ -74,8 +74,6 @@
@Native public static final int INVALIDATE_CONTEXT = 75;
@Native public static final int SYNC = 76;
@Native public static final int RESTORE_DEVICES = 77;
- @Native public static final int SAVE_STATE = 78;
- @Native public static final int RESTORE_STATE = 79;
// multibuffering ops
@Native public static final int SWAP_BUFFERS = 80;
--- a/src/java.desktop/share/native/common/java2d/opengl/OGLRenderQueue.c Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/native/common/java2d/opengl/OGLRenderQueue.c Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -502,31 +502,6 @@
dstOps = NULL;
}
break;
- case sun_java2d_pipe_BufferedOpCodes_SAVE_STATE:
- {
- j2d_glPushAttrib(GL_ALL_ATTRIB_BITS);
- j2d_glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
- j2d_glMatrixMode(GL_MODELVIEW);
- j2d_glPushMatrix();
- j2d_glMatrixMode(GL_PROJECTION);
- j2d_glPushMatrix();
- j2d_glMatrixMode(GL_TEXTURE);
- j2d_glPushMatrix();
- }
- break;
-
- case sun_java2d_pipe_BufferedOpCodes_RESTORE_STATE:
- {
- j2d_glPopAttrib();
- j2d_glPopClientAttrib();
- j2d_glMatrixMode(GL_MODELVIEW);
- j2d_glPopMatrix();
- j2d_glMatrixMode(GL_PROJECTION);
- j2d_glPopMatrix();
- j2d_glMatrixMode(GL_TEXTURE);
- j2d_glPopMatrix();
- }
- break;
case sun_java2d_pipe_BufferedOpCodes_SYNC:
{
sync = JNI_TRUE;
--- a/src/java.desktop/share/native/common/java2d/opengl/OGLSurfaceData.c Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/native/common/java2d/opengl/OGLSurfaceData.c Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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
@@ -37,7 +37,6 @@
* The following methods are implemented in the windowing system (i.e. GLX
* and WGL) source files.
*/
-extern jlong OGLSD_GetNativeConfigInfo(OGLSDOps *oglsdo);
extern jboolean OGLSD_InitOGLWindow(JNIEnv *env, OGLSDOps *oglsdo);
extern void OGLSD_DestroyOGLSurface(JNIEnv *env, OGLSDOps *oglsdo);
@@ -593,11 +592,14 @@
OGLSD_Dispose(JNIEnv *env, SurfaceDataOps *ops)
{
OGLSDOps *oglsdo = (OGLSDOps *)ops;
- jlong pConfigInfo = OGLSD_GetNativeConfigInfo(oglsdo);
+ jobject graphicsConfig = oglsdo->graphicsConfig;
JNU_CallStaticMethodByName(env, NULL, "sun/java2d/opengl/OGLSurfaceData",
- "dispose", "(JJ)V",
- ptr_to_jlong(ops), pConfigInfo);
+ "dispose",
+ "(JLsun/java2d/opengl/OGLGraphicsConfig;)V",
+ ptr_to_jlong(ops), graphicsConfig);
+ (*env)->DeleteGlobalRef(env, graphicsConfig);
+ oglsdo->graphicsConfig = NULL;
}
/**
--- a/src/java.desktop/share/native/common/java2d/opengl/OGLSurfaceData.h Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/share/native/common/java2d/opengl/OGLSurfaceData.h Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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
@@ -85,6 +85,9 @@
* Pointer to native-specific (GLX, WGL, etc.) SurfaceData info, such as the
* native Drawable handle and GraphicsConfig data.
*
+ * jobject graphicsConfig;;
+ * Strong reference to the OGLGraphicsConfig used by this OGLSurfaceData.
+ *
* jint drawableType;
* The surface type; can be any one of the surface type constants defined
* below (OGLSD_WINDOW, OGLSD_TEXTURE, etc).
@@ -162,6 +165,7 @@
struct _OGLSDOps {
SurfaceDataOps sdOps;
void *privOps;
+ jobject graphicsConfig;
jint drawableType;
GLenum activeBuffer;
jboolean isOpaque;
--- a/src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java Wed Sep 25 14:48:39 2019 +0530
@@ -2558,14 +2558,16 @@
//System.out.println("XkbNewKeyboard:"+(xke.get_new_kbd()));
break;
case XConstants.XkbMapNotify :
- //TODO: provide a simple unit test.
- XlibWrapper.XkbGetUpdatedMap(getDisplay(),
- XConstants.XkbKeyTypesMask |
- XConstants.XkbKeySymsMask |
- XConstants.XkbModifierMapMask |
- XConstants.XkbVirtualModsMask,
- awt_XKBDescPtr);
- //System.out.println("XkbMap:"+(xke.get_map()));
+ if (awt_XKBDescPtr != 0) {
+ //TODO: provide a simple unit test.
+ XlibWrapper.XkbGetUpdatedMap(getDisplay(),
+ XConstants.XkbKeyTypesMask |
+ XConstants.XkbKeySymsMask |
+ XConstants.XkbModifierMapMask |
+ XConstants.XkbVirtualModsMask,
+ awt_XKBDescPtr);
+ }
+ //System.out.println("XkbMap:"+(xke.get_map()));
break;
case XConstants.XkbStateNotify :
// May use it later e.g. to obtain an effective group etc.
--- a/src/java.desktop/unix/classes/sun/java2d/opengl/GLXGraphicsConfig.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/unix/classes/sun/java2d/opengl/GLXGraphicsConfig.java Wed Sep 25 14:48:39 2019 +0530
@@ -71,7 +71,7 @@
private BufferCapabilities bufferCaps;
private long pConfigInfo;
private ContextCapabilities oglCaps;
- private OGLContext context;
+ private final OGLContext context;
private static native long getGLXConfigInfo(int screennum, int visualnum);
private static native int getOGLCapabilities(long configInfo);
@@ -85,7 +85,7 @@
pConfigInfo = configInfo;
initConfig(getAData(), configInfo);
this.oglCaps = oglCaps;
- context = new OGLContext(OGLRenderQueue.getInstance(), this);
+ context = new OGLContext(OGLRenderQueue.getInstance());
}
@Override
--- a/src/java.desktop/unix/classes/sun/java2d/opengl/GLXSurfaceData.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/unix/classes/sun/java2d/opengl/GLXSurfaceData.java Wed Sep 25 14:48:39 2019 +0530
@@ -40,7 +40,8 @@
protected X11ComponentPeer peer;
private GLXGraphicsConfig graphicsConfig;
- private native void initOps(X11ComponentPeer peer, long aData);
+ private native void initOps(OGLGraphicsConfig gc, X11ComponentPeer peer,
+ long aData);
protected GLXSurfaceData(X11ComponentPeer peer, GLXGraphicsConfig gc,
ColorModel cm, int type)
@@ -48,7 +49,7 @@
super(gc, cm, type);
this.peer = peer;
this.graphicsConfig = gc;
- initOps(peer, graphicsConfig.getAData());
+ initOps(gc, peer, graphicsConfig.getAData());
}
public GraphicsConfiguration getDeviceConfiguration() {
--- a/src/java.desktop/unix/native/common/awt/X11Color.c Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/unix/native/common/awt/X11Color.c Wed Sep 25 14:48:39 2019 +0530
@@ -402,6 +402,9 @@
pVI = &awt_data->awt_visInfo;
awt_data->awt_num_colors = awt_data->awt_visInfo.colormap_size;
awt_data->awtImage = (awtImageData *) calloc (1, sizeof (awtImageData));
+ if (awt_data->awtImage == NULL) {
+ return 0;
+ }
pPFV = XListPixmapFormats(dpy, &numpfv);
if (pPFV) {
@@ -572,12 +575,17 @@
}
if (awt_data->awt_num_colors > paletteSize) {
- free (awt_data->awtImage);
+ free(awt_data->awtImage);
return 0;
}
/* Allocate ColorData structure */
awt_data->color_data = ZALLOC (_ColorData);
+ if (awt_data->color_data == NULL) {
+ free(awt_data->awtImage);
+ return 0;
+ }
+
awt_data->color_data->screendata = 1; /* This ColorData struct corresponds
to some AWT screen/visual, so when
any IndexColorModel using this
@@ -594,6 +602,11 @@
awt_data->color_data->awt_Colors =
(ColorEntry *)calloc(paletteSize, sizeof (ColorEntry));
+ if (awt_data->color_data->awt_Colors == NULL) {
+ free(awt_data->awtImage);
+ free(awt_data->color_data);
+ return 0;
+ }
XQueryColors(dpy, cm, cols, awt_data->awt_num_colors);
for (i = 0; i < awt_data->awt_num_colors; i++) {
@@ -667,6 +680,11 @@
awt_data->color_data->img_grays =
(unsigned char *)calloc(256, sizeof(unsigned char));
+ if ( awt_data->color_data->img_grays == NULL) {
+ free(awt_data->awtImage);
+ free(awt_data->color_data);
+ return 0;
+ }
for (g = 0; g < 256; g++) {
int mindist, besti;
int d;
@@ -810,6 +828,11 @@
awt_data->color_data->img_clr_tbl =
(unsigned char *)calloc(LOOKUPSIZE * LOOKUPSIZE * LOOKUPSIZE,
sizeof(unsigned char));
+ if (awt_data->color_data->img_clr_tbl == NULL) {
+ free(awt_data->awtImage);
+ free(awt_data->color_data);
+ return 0;
+ }
img_makePalette(cmapsize, k, LOOKUPSIZE, 50, 250,
allocatedColorsNum, TRUE, reds, greens, blues,
awt_data->color_data->img_clr_tbl);
@@ -858,6 +881,12 @@
awt_data->color_data->awt_icmLUT2Colors =
(unsigned char *)calloc(paletteSize, sizeof (unsigned char));
awt_data->color_data->awt_icmLUT = (int *)calloc(paletteSize, sizeof(int));
+ if (awt_data->color_data->awt_icmLUT2Colors == NULL || awt_data->color_data->awt_icmLUT == NULL) {
+ free(awt_data->awtImage);
+ free(awt_data->color_data);
+ return 0;
+ }
+
for (i=0; i < paletteSize; i++) {
/* Keep the mapping between this lut and the actual cmap */
awt_data->color_data->awt_icmLUT2Colors
--- a/src/java.desktop/unix/native/common/awt/fontpath.c Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/unix/native/common/awt/fontpath.c Wed Sep 25 14:48:39 2019 +0530
@@ -341,6 +341,9 @@
* cost us a little wasted effort upstream.
*/
fontdirs = (char**)calloc(nPaths+1, sizeof(char*));
+ if (fontdirs == NULL) {
+ return NULL;
+ }
pos = 0;
for (i=0; i < nPaths; i++) {
if (x11Path[i][0] != '/') {
@@ -420,6 +423,9 @@
}
totalLen = len1+len2+len3;
fontdirs = (char**)calloc(totalLen, sizeof(char*));
+ if (fontdirs == NULL) {
+ return NULL;
+ }
for (i=0; i < len1; i++) {
if (noType1 && strstr(p1[i], "Type1") != NULL) {
@@ -816,6 +822,10 @@
fontdirs = NULL;
} else {
fontdirs = (char**)calloc(fontSet->nfont+1, sizeof(char*));
+ if (fontdirs == NULL) {
+ (*FcFontSetDestroy)(fontSet);
+ goto cleanup;
+ }
for (f=0; f < fontSet->nfont; f++) {
FcChar8 *file;
FcChar8 *dir;
@@ -840,6 +850,7 @@
(*FcFontSetDestroy)(fontSet);
}
+cleanup:
/* Free memory and close the ".so" */
(*FcPatternDestroy)(pattern);
closeFontConfig(libfontconfig, JNI_TRUE);
--- a/src/java.desktop/unix/native/common/java2d/opengl/GLXSurfaceData.c Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/unix/native/common/java2d/opengl/GLXSurfaceData.c Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2019, 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
@@ -54,23 +54,32 @@
JNIEXPORT void JNICALL
Java_sun_java2d_opengl_GLXSurfaceData_initOps(JNIEnv *env, jobject glxsd,
+ jobject gc,
jobject peer, jlong aData)
{
#ifndef HEADLESS
- GLXSDOps *glxsdo = (GLXSDOps *)malloc(sizeof(GLXSDOps));
-
- if (glxsdo == NULL) {
- JNU_ThrowOutOfMemoryError(env, "creating native GLX ops");
+ gc = (*env)->NewGlobalRef(env, gc);
+ if (gc == NULL) {
+ JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed.");
return;
}
OGLSDOps *oglsdo = (OGLSDOps *)SurfaceData_InitOps(env, glxsd,
sizeof(OGLSDOps));
if (oglsdo == NULL) {
- free(glxsdo);
+ (*env)->DeleteGlobalRef(env, gc);
JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed.");
return;
}
+ // later the graphicsConfig will be used for deallocation of oglsdo
+ oglsdo->graphicsConfig = gc;
+
+ GLXSDOps *glxsdo = (GLXSDOps *)malloc(sizeof(GLXSDOps));
+
+ if (glxsdo == NULL) {
+ JNU_ThrowOutOfMemoryError(env, "creating native GLX ops");
+ return;
+ }
J2dTraceLn(J2D_TRACE_INFO, "GLXSurfaceData_initOps");
@@ -153,39 +162,6 @@
}
/**
- * Returns a pointer (as a jlong) to the native GLXGraphicsConfigInfo
- * associated with the given OGLSDOps. This method can be called from
- * shared code to retrieve the native GraphicsConfig data in a platform-
- * independent manner.
- */
-jlong
-OGLSD_GetNativeConfigInfo(OGLSDOps *oglsdo)
-{
- GLXSDOps *glxsdo;
-
- if (oglsdo == NULL) {
- J2dRlsTraceLn(J2D_TRACE_ERROR,
- "OGLSD_GetNativeConfigInfo: ops are null");
- return 0L;
- }
-
- glxsdo = (GLXSDOps *)oglsdo->privOps;
- if (glxsdo == NULL) {
- J2dRlsTraceLn(J2D_TRACE_ERROR,
- "OGLSD_GetNativeConfigInfo: glx ops are null");
- return 0L;
- }
-
- if (glxsdo->configData == NULL) {
- J2dRlsTraceLn(J2D_TRACE_ERROR,
- "OGLSD_GetNativeConfigInfo: config data is null");
- return 0L;
- }
-
- return ptr_to_jlong(glxsdo->configData->glxInfo);
-}
-
-/**
* Makes the given GraphicsConfig's context current to its associated
* "scratch" surface. If there is a problem making the context current,
* this method will return NULL; otherwise, returns a pointer to the
--- a/src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.c Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.c Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2019, 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
@@ -66,6 +66,9 @@
if (!n_libs) {
n_libs = sizeof(gtk_libs) / sizeof(GtkLib);
load_order = calloc(n_libs + 1, sizeof(GtkLib *));
+ if (load_order == NULL) {
+ return NULL;
+ }
}
int i, first = 0;
for (i = 0; i < n_libs; i++) {
@@ -85,6 +88,7 @@
static GtkLib* get_loaded() {
GtkLib** libs = get_libs_order(GTK_ANY);
+ if (libs == NULL) return NULL;
while(!gtk && *libs) {
GtkLib* lib = *libs++;
if (lib->check(lib->vname, /* load = */FALSE)) {
@@ -111,7 +115,7 @@
}
} else {
GtkLib** libs = get_libs_order(version);
- while (!gtk && *libs) {
+ while (!gtk && libs && *libs) {
lib = *libs++;
if (version == GTK_ANY || lib->version == version) {
if (verbose) {
@@ -141,6 +145,7 @@
static gboolean check_version(GtkVersion version) {
GtkLib** libs = get_libs_order(version);
+ if (libs == NULL) return FALSE;
while (*libs) {
GtkLib* lib = *libs++;
if (lib->check(lib->vname, /* load = */TRUE)) {
--- a/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c Wed Sep 25 14:48:39 2019 +0530
@@ -218,7 +218,11 @@
XColor *colors ;
ncolors = (unsigned) src_vis->map_entries ;
- *src_colors = colors = (XColor *)malloc(ncolors * sizeof(XColor) ) ;
+/* JDK modification.
+ * use calloc instead of malloc to initialize allocated memory
+ * *src_colors = colors = (XColor *)malloc(ncolors * sizeof(XColor) ) ;
+ */
+ *src_colors = colors = (XColor *)calloc(ncolors, sizeof(XColor));
if(src_vis->class != TrueColor && src_vis->class != DirectColor)
{
--- a/src/java.desktop/windows/classes/sun/java2d/d3d/D3DContext.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/windows/classes/sun/java2d/d3d/D3DContext.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2019, 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,19 +26,20 @@
package sun.java2d.d3d;
import java.lang.annotation.Native;
+
import sun.java2d.pipe.BufferedContext;
import sun.java2d.pipe.RenderBuffer;
import sun.java2d.pipe.RenderQueue;
import sun.java2d.pipe.hw.ContextCapabilities;
-import static sun.java2d.pipe.BufferedOpCodes.*;
-import static sun.java2d.pipe.hw.ContextCapabilities.*;
-import static sun.java2d.d3d.D3DContext.D3DContextCaps.*;
+
+import static sun.java2d.pipe.BufferedOpCodes.INVALIDATE_CONTEXT;
+import static sun.java2d.pipe.BufferedOpCodes.SET_SCRATCH_SURFACE;
/**
* Note that the RenderQueue lock must be acquired before calling any of
* the methods in this class.
*/
-class D3DContext extends BufferedContext {
+final class D3DContext extends BufferedContext {
private final D3DGraphicsDevice device;
@@ -101,42 +102,6 @@
buf.putInt(d3dc.getDevice().getScreen());
}
- public RenderQueue getRenderQueue() {
- return D3DRenderQueue.getInstance();
- }
-
- @Override
- public void saveState() {
- // assert rq.lock.isHeldByCurrentThread();
-
- // reset all attributes of this and current contexts
- invalidateContext();
- invalidateCurrentContext();
-
- setScratchSurface(this);
-
- // save the state on the native level
- rq.ensureCapacity(4);
- buf.putInt(SAVE_STATE);
- rq.flushNow();
- }
-
- @Override
- public void restoreState() {
- // assert rq.lock.isHeldByCurrentThread();
-
- // reset all attributes of this and current contexts
- invalidateContext();
- invalidateCurrentContext();
-
- setScratchSurface(this);
-
- // restore the state on the native level
- rq.ensureCapacity(4);
- buf.putInt(RESTORE_STATE);
- rq.flushNow();
- }
-
D3DGraphicsDevice getDevice() {
return device;
}
--- a/src/java.desktop/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/windows/classes/sun/java2d/opengl/WGLGraphicsConfig.java Wed Sep 25 14:48:39 2019 +0530
@@ -71,7 +71,7 @@
private BufferCapabilities bufferCaps;
private long pConfigInfo;
private ContextCapabilities oglCaps;
- private OGLContext context;
+ private final OGLContext context;
private Object disposerReferent = new Object();
public static native int getDefaultPixFmt(int screennum);
@@ -90,7 +90,7 @@
super(device, visualnum);
this.pConfigInfo = configInfo;
this.oglCaps = oglCaps;
- context = new OGLContext(OGLRenderQueue.getInstance(), this);
+ context = new OGLContext(OGLRenderQueue.getInstance());
// add a record to the Disposer so that we destroy the native
// WGLGraphicsConfigInfo data when this object goes away
--- a/src/java.desktop/windows/classes/sun/java2d/opengl/WGLSurfaceData.java Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/windows/classes/sun/java2d/opengl/WGLSurfaceData.java Wed Sep 25 14:48:39 2019 +0530
@@ -46,8 +46,8 @@
protected double scaleX = 1;
protected double scaleY = 1;
- private native void initOps(long pConfigInfo, WComponentPeer peer,
- long hwnd);
+ private native void initOps(OGLGraphicsConfig gc, long pConfigInfo,
+ WComponentPeer peer, long hwnd);
protected WGLSurfaceData(WComponentPeer peer, WGLGraphicsConfig gc,
ColorModel cm, int type)
@@ -62,7 +62,7 @@
long pConfigInfo = gc.getNativeConfigInfo();
long hwnd = peer != null ? peer.getHWnd() : 0L;
- initOps(pConfigInfo, peer, hwnd);
+ initOps(gc, pConfigInfo, peer, hwnd);
}
@Override
--- a/src/java.desktop/windows/native/common/awt/systemscale/systemScale.cpp Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/windows/native/common/awt/systemscale/systemScale.cpp Wed Sep 25 14:48:39 2019 +0530
@@ -24,7 +24,6 @@
*/
#include "systemScale.h"
#include <d2d1.h>
-#pragma comment(lib, "d2d1")
#include <jdk_util.h>
#ifndef MDT_EFFECTIVE_DPI
#define MDT_EFFECTIVE_DPI 0
@@ -53,6 +52,9 @@
return;
}
+ typedef HRESULT(WINAPI D2D1CreateFactoryFunc)
+ (D2D1_FACTORY_TYPE, REFIID,
+ CONST D2D1_FACTORY_OPTIONS*, ID2D1Factory**);
typedef HRESULT(WINAPI GetDpiForMonitorFunc)(HMONITOR, int, UINT*, UINT*);
static HMODULE hLibSHCoreDll = NULL;
static GetDpiForMonitorFunc *lpGetDpiForMonitor = NULL;
@@ -73,12 +75,27 @@
*dpiY = static_cast<float>(y);
}
} else {
- ID2D1Factory* m_pDirect2dFactory;
- HRESULT res = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED,
- &m_pDirect2dFactory);
- if (res == S_OK) {
- m_pDirect2dFactory->GetDesktopDpi(dpiX, dpiY);
- m_pDirect2dFactory->Release();
+ static HMODULE d2dDll = NULL;
+ static BOOL loadAttempted = FALSE;
+ static D2D1CreateFactoryFunc *lpD2D1CreateFactory = NULL;
+ if (!loadAttempted && d2dDll == NULL) {
+ loadAttempted = TRUE;
+ d2dDll = JDK_LoadSystemLibrary("d2d1.dll");
+ }
+ if (d2dDll != NULL && lpD2D1CreateFactory == NULL) {
+ lpD2D1CreateFactory = (D2D1CreateFactoryFunc*)GetProcAddress(
+ d2dDll, "D2D1CreateFactory");
+ }
+ if (lpD2D1CreateFactory != NULL) {
+ ID2D1Factory* m_pDirect2dFactory;
+ HRESULT res = lpD2D1CreateFactory
+ (D2D1_FACTORY_TYPE_SINGLE_THREADED,
+ __uuidof(ID2D1Factory), NULL,
+ &m_pDirect2dFactory);
+ if (res == S_OK) {
+ m_pDirect2dFactory->GetDesktopDpi(dpiX, dpiY);
+ m_pDirect2dFactory->Release();
+ }
}
}
return;
--- a/src/java.desktop/windows/native/libawt/java2d/d3d/D3DContext.cpp Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/windows/native/libawt/java2d/d3d/D3DContext.cpp Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2019, 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
@@ -685,64 +685,6 @@
return res;
}
-HRESULT
-D3DContext::SaveState()
-{
- HRESULT res;
-
- RETURN_STATUS_IF_NULL(pd3dDevice, S_OK);
-
- J2dTraceLn(J2D_TRACE_INFO, "D3DContext::SaveState");
-
- FlushVertexQueue();
- UpdateState(STATE_CHANGE);
-
- if (pStateBlock != NULL) {
- J2dTraceLn(J2D_TRACE_WARNING,
- "D3DContext::SaveState: existing state block!");
- SAFE_RELEASE(pStateBlock);
- }
-
- if (SUCCEEDED(res =
- pd3dDevice->CreateStateBlock(D3DSBT_ALL, &pStateBlock)))
- {
- J2dTraceLn(J2D_TRACE_VERBOSE, " created state block");
- } else {
- J2dTraceLn(J2D_TRACE_WARNING,
- "D3DContext::SaveState: failed to create state block");
- }
- ZeroMemory(lastTexture, sizeof(lastTexture));
-
- return res;
-}
-
-HRESULT
-D3DContext::RestoreState()
-{
- HRESULT res = S_OK;
-
- J2dTraceLn(J2D_TRACE_INFO, "D3DContext::RestoreState");
-
- FlushVertexQueue();
- UpdateState(STATE_CHANGE);
-
- if (pStateBlock != NULL) {
- if (SUCCEEDED(res = pStateBlock->Apply())) {
- J2dTraceLn(J2D_TRACE_VERBOSE, " restored device state");
- } else {
- J2dTraceLn(J2D_TRACE_WARNING,
- "D3DContext::RestoreState: failed to restore state");
- }
- SAFE_RELEASE(pStateBlock);
- } else {
- J2dTraceLn(J2D_TRACE_WARNING,
- "D3DContext::RestoreState: empty state block!");
- }
- ZeroMemory(lastTexture, sizeof(lastTexture));
-
- return res;
-}
-
#define POINT_FILTER_CAP (D3DPTFILTERCAPS_MAGFPOINT|D3DPTFILTERCAPS_MINFPOINT)
#define LINEAR_FILTER_CAP (D3DPTFILTERCAPS_MAGFLINEAR|D3DPTFILTERCAPS_MINFLINEAR)
--- a/src/java.desktop/windows/native/libawt/java2d/d3d/D3DContext.h Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/windows/native/libawt/java2d/d3d/D3DContext.h Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2019, 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
@@ -133,13 +133,6 @@
HRESULT ResetContext();
HRESULT CheckAndResetDevice();
- // saves the state of the D3D device in a state block, resets
- // context's state to STATE_CHANGE
- HRESULT SaveState();
- // restores the state of the D3D device from existing state block,
- // resets context's state to STATE_CHANGE
- HRESULT RestoreState();
-
void ReleaseContextResources();
void ReleaseDefPoolResources();
virtual ~D3DContext();
--- a/src/java.desktop/windows/native/libawt/java2d/d3d/D3DRenderQueue.cpp Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/windows/native/libawt/java2d/d3d/D3DRenderQueue.cpp Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2019, 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
@@ -677,23 +677,6 @@
}
}
break;
-
- case sun_java2d_pipe_BufferedOpCodes_SAVE_STATE:
- {
- CONTINUE_IF_NULL(d3dc);
-
- res = d3dc->SaveState();
- }
- break;
-
- case sun_java2d_pipe_BufferedOpCodes_RESTORE_STATE:
- {
- CONTINUE_IF_NULL(d3dc);
-
- res = d3dc->RestoreState();
- }
- break;
-
// multibuffering ops
case sun_java2d_pipe_BufferedOpCodes_SWAP_BUFFERS:
{
--- a/src/java.desktop/windows/native/libawt/java2d/opengl/WGLSurfaceData.c Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/windows/native/libawt/java2d/opengl/WGLSurfaceData.c Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2019, 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
@@ -58,11 +58,25 @@
JNIEXPORT void JNICALL
Java_sun_java2d_opengl_WGLSurfaceData_initOps(JNIEnv *env, jobject wglsd,
- jlong pConfigInfo,
+ jobject gc, jlong pConfigInfo,
jobject peer, jlong hwnd)
{
+ gc = (*env)->NewGlobalRef(env, gc);
+ if (gc == NULL) {
+ JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed.");
+ return;
+ }
+
OGLSDOps *oglsdo = (OGLSDOps *)SurfaceData_InitOps(env, wglsd,
sizeof(OGLSDOps));
+ if (oglsdo == NULL) {
+ (*env)->DeleteGlobalRef(env, gc);
+ JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed.");
+ return;
+ }
+ // later the graphicsConfig will be used for deallocation of oglsdo
+ oglsdo->graphicsConfig = gc;
+
WGLSDOps *wglsdo = (WGLSDOps *)malloc(sizeof(WGLSDOps));
J2dTraceLn(J2D_TRACE_INFO, "WGLSurfaceData_initOps");
@@ -145,33 +159,6 @@
}
/**
- * Returns a pointer (as a jlong) to the native WGLGraphicsConfigInfo
- * associated with the given OGLSDOps. This method can be called from
- * shared code to retrieve the native GraphicsConfig data in a platform-
- * independent manner.
- */
-jlong
-OGLSD_GetNativeConfigInfo(OGLSDOps *oglsdo)
-{
- WGLSDOps *wglsdo;
-
- if (oglsdo == NULL) {
- J2dRlsTraceLn(J2D_TRACE_ERROR,
- "OGLSD_GetNativeConfigInfo: ops are null");
- return 0L;
- }
-
- wglsdo = (WGLSDOps *)oglsdo->privOps;
- if (wglsdo == NULL) {
- J2dRlsTraceLn(J2D_TRACE_ERROR,
- "OGLSD_GetNativeConfigInfo: wgl ops are null");
- return 0L;
- }
-
- return ptr_to_jlong(wglsdo->configInfo);
-}
-
-/**
* Makes the given GraphicsConfig's context current to its associated
* "scratch" surface. If there is a problem making the context current,
* this method will return NULL; otherwise, returns a pointer to the
--- a/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsDevice.cpp Wed Sep 25 09:38:20 2019 +0100
+++ b/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsDevice.cpp Wed Sep 25 14:48:39 2019 +0530
@@ -49,8 +49,6 @@
#include "dither.h"
#include "img_util_md.h"
#include "Devices.h"
-#include <d2d1.h>
-#pragma comment(lib, "d2d1")
#include "systemScale.h"
uns_ordered_dither_array img_oda_alpha;
--- a/src/jdk.accessibility/windows/native/libwindowsaccessbridge/WinAccessBridge.cpp Wed Sep 25 09:38:20 2019 +0100
+++ b/src/jdk.accessibility/windows/native/libwindowsaccessbridge/WinAccessBridge.cpp Wed Sep 25 14:48:39 2019 +0530
@@ -296,7 +296,7 @@
PrintDebugString("[INFO]: finished deleting eventHandler, messageQueue, and javaVMs");
PrintDebugString("[INFO]: GOODBYE CRUEL WORLD...");
-
+ finalizeFileLogger();
DestroyWindow(theDialogWindow);
}
--- a/test/jdk/ProblemList.txt Wed Sep 25 09:38:20 2019 +0100
+++ b/test/jdk/ProblemList.txt Wed Sep 25 14:48:39 2019 +0530
@@ -768,7 +768,6 @@
javax/swing/JFileChooser/8021253/bug8021253.java 8169954 windows-all,linux-all,macosx-all
javax/swing/JFileChooser/8062561/bug8062561.java 8196466 linux-all,macosx-all
javax/swing/JInternalFrame/Test6325652.java 8224977 macosx-all
-javax/swing/JInternalFrame/8145896/TestJInternalFrameMaximize.java 8194944 macosx-all
javax/swing/JLabel/6596966/bug6596966.java 8040914 macosx-all
javax/swing/JPopupMenu/4870644/bug4870644.java 8194130 macosx-all,linux-all
javax/swing/JPopupMenu/4966112/bug4966112.java 8064915 macosx-all
--- a/test/jdk/javax/swing/JInternalFrame/8145896/TestJInternalFrameMaximize.java Wed Sep 25 09:38:20 2019 +0100
+++ b/test/jdk/javax/swing/JInternalFrame/8145896/TestJInternalFrameMaximize.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, 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,12 +24,13 @@
/*
* @test
* @key headful
- * @bug 8145896
+ * @bug 8145896 8194944
* @summary JInternalFrame setMaximum before adding to desktop throws null pointer exception
* @library ../../regtesthelpers
* @build Util
* @run main TestJInternalFrameMaximize
*/
+
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.ActionEvent;
@@ -55,18 +56,27 @@
private static JMenuItem menuItem;
private static Robot robot;
private static volatile String errorMessage = "";
+ private static volatile boolean isFrameShowing;
public static void main(String[] args) throws Exception {
robot = new Robot();
+ robot.setAutoDelay(100);
UIManager.LookAndFeelInfo[] lookAndFeelArray
= UIManager.getInstalledLookAndFeels();
for (UIManager.LookAndFeelInfo lookAndFeelItem : lookAndFeelArray) {
- String lookAndFeelString = lookAndFeelItem.getClassName();
- if (tryLookAndFeel(lookAndFeelString)) {
- createUI();
+ try {
+ String lookAndFeelString = lookAndFeelItem.getClassName();
+ if (tryLookAndFeel(lookAndFeelString)) {
+ createUI();
+ robot.waitForIdle();
+ blockTillDisplayed(frame);
+ executeTest();
+ robot.delay(1000);
+ }
+ } finally {
+ frame.dispose();
+ isFrameShowing = false;
robot.waitForIdle();
- executeTest();
- robot.delay(1000);
}
}
if (!"".equals(errorMessage)) {
@@ -113,8 +123,6 @@
} catch (PropertyVetoException ex) {
} catch (RuntimeException ex) {
errorMessage = "Test Failed";
- } finally {
- frame.dispose();
}
});
menu.add(menuItem);
@@ -124,8 +132,21 @@
});
}
+ private static void blockTillDisplayed(JFrame frame) throws Exception {
+ while (!isFrameShowing) {
+ try {
+ SwingUtilities.invokeAndWait(()-> isFrameShowing = frame.isShowing());
+ if (!isFrameShowing) {
+ Thread.sleep(1000);
+ }
+ } catch (InterruptedException ex) {
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ }
+
private static void executeTest() throws Exception {
-
Point point = Util.getCenterPoint(menu);
performMouseOperations(point);
point = Util.getCenterPoint(menuItem);
--- a/test/jdk/javax/swing/plaf/metal/MetalIcons/MetalHiDPIIconsTest.java Wed Sep 25 09:38:20 2019 +0100
+++ b/test/jdk/javax/swing/plaf/metal/MetalIcons/MetalHiDPIIconsTest.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, 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,7 +23,7 @@
/*
* @test
- * @bug 8160986 8174845 8176883
+ * @bug 8160986 8174845 8176883 8165828
* @summary Bad rendering of Swing UI controls with Metal L&F on HiDPI display
* @run main/manual MetalHiDPIIconsTest
*/
@@ -50,7 +50,7 @@
+ "Verify that icons are painted smoothly for standard Swing UI controls.\n\n"
+ "If the display does not support HiDPI mode press PASS.\n\n"
+ "1. Run the SwingSet2 demo on HiDPI Display.\n"
- + "2. Select Metal Look and Feel\n"
+ + "2. Select Java Look and Feel. It is equivalent to Metal Look And Feel\n"
+ "3. Check that the icons are painted smoothly on Swing UI controls like:\n"
+ " - JRadioButton\n"
+ " - JCheckBox\n"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/sun/java2d/marlin/FlipBitTest.java Wed Sep 25 14:48:39 2019 +0530
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2019, 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.
+ *
+ * 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.
+ */
+
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Ellipse2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import javax.imageio.ImageIO;
+
+
+/**
+ * Tests calculating user space line with a negative determinant (flip).
+ *
+ * @test
+ * @summary verify that flipped transformed lines are properly rasterized
+ * @bug 8230728
+ */
+public class FlipBitTest {
+
+ static final boolean SAVE_IMAGE = false;
+
+ public static void main(final String[] args) {
+
+ final int size = 100;
+
+ // First display which renderer is tested:
+ // JDK9 only:
+ System.setProperty("sun.java2d.renderer.verbose", "true");
+
+ System.out.println("FlipBitTest: size = " + size);
+
+ final BufferedImage image = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB);
+
+ final Graphics2D g2d = (Graphics2D) image.getGraphics();
+ try {
+ g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+ g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE);
+
+ final AffineTransform at = new AffineTransform();
+ at.setToScale(1, -1.01);
+ g2d.setTransform(at);
+
+ g2d.translate(0, -image.getHeight());
+ g2d.setPaint(Color.WHITE);
+ g2d.fill(new Rectangle(image.getWidth(), image.getHeight()));
+
+ g2d.setPaint(Color.BLACK);
+ g2d.setStroke(new BasicStroke(0.1f));
+ g2d.draw(new Ellipse2D.Double(25, 25, 50, 50));
+
+ if (SAVE_IMAGE) {
+ try {
+ final File file = new File("FlipBitTest.png");
+
+ System.out.println("Writing file: " + file.getAbsolutePath());
+ ImageIO.write(image, "PNG", file);
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ boolean nonWhitePixelFound = false;
+ for (int x = 0; x < image.getWidth(); ++x) {
+ if (image.getRGB(x, 50) != Color.WHITE.getRGB()) {
+ nonWhitePixelFound = true;
+ break;
+ }
+ }
+ if (!nonWhitePixelFound) {
+ throw new IllegalStateException("The ellipse was not drawn");
+ }
+ } finally {
+ g2d.dispose();
+ }
+ }
+}
--- a/test/jdk/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java Wed Sep 25 09:38:20 2019 +0100
+++ b/test/jdk/sun/java2d/pipe/hw/RSLAPITest/RSLAPITest.java Wed Sep 25 14:48:39 2019 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2019, 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
@@ -44,7 +44,6 @@
import java.util.HashSet;
import sun.java2d.DestSurfaceProvider;
import sun.java2d.Surface;
-import sun.java2d.pipe.BufferedContext;
import sun.java2d.pipe.RenderQueue;
import sun.java2d.pipe.hw.AccelGraphicsConfig;
import sun.java2d.pipe.hw.AccelSurface;
@@ -161,8 +160,6 @@
AccelGraphicsConfig agc = (AccelGraphicsConfig) gc;
printAGC(agc);
- testContext(agc);
-
VolatileImage vi = gc.createCompatibleVolatileImage(10, 10);
vi.validate(gc);
if (vi instanceof DestSurfaceProvider) {
@@ -250,22 +247,6 @@
}
}
- private static void testContext(final AccelGraphicsConfig agc) {
- BufferedContext c = agc.getContext();
-
- RenderQueue rq = c.getRenderQueue();
- rq.lock();
- try {
- c.saveState();
- rq.flushNow();
- c.restoreState();
- rq.flushNow();
- System.out.println("Passed: Save/Restore");
- } finally {
- rq.unlock();
- }
- }
-
private static void testForNPEDuringCreation(AccelGraphicsConfig agc) {
int iterations = 100;
HashSet<VolatileImage> vis = new HashSet<VolatileImage>();
--- a/test/jdk/sun/java2d/pipe/hw/RSLContextInvalidationTest/RSLContextInvalidationTest.java Wed Sep 25 09:38:20 2019 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2007, 2018, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @key headful
- * @bug 6764257 8198613
- * @summary Tests that the color is reset properly after save/restore context
- * @author Dmitri.Trembovetski@sun.com: area=Graphics
- * @modules java.desktop/sun.java2d
- * java.desktop/sun.java2d.pipe
- * java.desktop/sun.java2d.pipe.hw
- * @compile -XDignore.symbol.file=true RSLContextInvalidationTest.java
- * @run main/othervm RSLContextInvalidationTest
- * @run main/othervm -Dsun.java2d.noddraw=true RSLContextInvalidationTest
- */
-
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.GraphicsConfiguration;
-import java.awt.GraphicsDevice;
-import java.awt.GraphicsEnvironment;
-import java.awt.image.BufferedImage;
-import java.awt.image.VolatileImage;
-import sun.java2d.DestSurfaceProvider;
-import sun.java2d.Surface;
-import sun.java2d.pipe.RenderQueue;
-import sun.java2d.pipe.hw.*;
-
-public class RSLContextInvalidationTest {
-
- public static void main(String[] args) {
- GraphicsEnvironment ge =
- GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice gd = ge.getDefaultScreenDevice();
- GraphicsConfiguration gc = gd.getDefaultConfiguration();
- VolatileImage vi = gc.createCompatibleVolatileImage(100, 100);
- vi.validate(gc);
- VolatileImage vi1 = gc.createCompatibleVolatileImage(100, 100);
- vi1.validate(gc);
-
- if (!(vi instanceof DestSurfaceProvider)) {
- System.out.println("Test considered PASSED: no HW acceleration");
- return;
- }
-
- DestSurfaceProvider p = (DestSurfaceProvider)vi;
- Surface s = p.getDestSurface();
- if (!(s instanceof AccelSurface)) {
- System.out.println("Test considered PASSED: no HW acceleration");
- return;
- }
- AccelSurface dst = (AccelSurface)s;
-
- Graphics g = vi.createGraphics();
- g.drawImage(vi1, 95, 95, null);
- g.setColor(Color.red);
- g.fillRect(0, 0, 100, 100);
- g.setColor(Color.black);
- g.fillRect(0, 0, 100, 100);
- // after this the validated context color is black
-
- RenderQueue rq = dst.getContext().getRenderQueue();
- rq.lock();
- try {
- dst.getContext().saveState();
- dst.getContext().restoreState();
- } finally {
- rq.unlock();
- }
-
- // this will cause ResetPaint (it will set color to extended EA=ff,
- // which is ffffffff==Color.white)
- g.drawImage(vi1, 95, 95, null);
-
- // now try filling with black again, but it will come up as white
- // because this fill rect won't validate the color properly
- g.setColor(Color.black);
- g.fillRect(0, 0, 100, 100);
-
- BufferedImage bi = vi.getSnapshot();
- if (bi.getRGB(50, 50) != Color.black.getRGB()) {
- throw new RuntimeException("Test FAILED: found color="+
- Integer.toHexString(bi.getRGB(50, 50))+" instead of "+
- Integer.toHexString(Color.black.getRGB()));
- }
-
- System.out.println("Test PASSED.");
- }
-}