Merge
This commit is contained in:
commit
ef7b071c15
@ -71,7 +71,7 @@ import static sun.font.EAttribute.*;
|
||||
* and to render sequences of glyphs on <code>Graphics</code> and
|
||||
* <code>Component</code> objects.
|
||||
*
|
||||
* <h4>Characters and Glyphs</h4>
|
||||
* <h3>Characters and Glyphs</h3>
|
||||
*
|
||||
* A <em>character</em> is a symbol that represents an item such as a letter,
|
||||
* a digit, or punctuation in an abstract way. For example, <code>'g'</code>,
|
||||
@ -192,7 +192,7 @@ import static sun.font.EAttribute.*;
|
||||
* not serializable. See {@link java.awt.im.InputMethodHighlight}.</li>
|
||||
* </ul>
|
||||
*
|
||||
* Clients who create custom subclasses of <code>Paint</code> and
|
||||
* <p>Clients who create custom subclasses of <code>Paint</code> and
|
||||
* <code>GraphicAttribute</code> can make them serializable and
|
||||
* avoid this problem. Clients who use input method highlights can
|
||||
* convert these to the platform-specific attributes for that
|
||||
|
@ -78,7 +78,7 @@ import java.util.Map;
|
||||
* <p>
|
||||
* When creating a <code>Graphics2D</code> object, the
|
||||
* <code>GraphicsConfiguration</code>
|
||||
* specifies the <a name="#deftransform">default transform</a> for
|
||||
* specifies the <a name="deftransform">default transform</a> for
|
||||
* the target of the <code>Graphics2D</code> (a
|
||||
* {@link Component} or {@link Image}). This default transform maps the
|
||||
* user space coordinate system to screen and printer device coordinates
|
||||
@ -1103,7 +1103,7 @@ public abstract class Graphics2D extends Graphics {
|
||||
* method is intended only for restoring the original
|
||||
* <code>Graphics2D</code> transform after rendering, as shown in this
|
||||
* example:
|
||||
* <pre><blockquote>
|
||||
* <pre>
|
||||
* // Get the current transform
|
||||
* AffineTransform saveAT = g2.getTransform();
|
||||
* // Perform transformation
|
||||
@ -1112,7 +1112,7 @@ public abstract class Graphics2D extends Graphics {
|
||||
* g2d.draw(...);
|
||||
* // Restore original transform
|
||||
* g2d.setTransform(saveAT);
|
||||
* </blockquote></pre>
|
||||
* </pre>
|
||||
*
|
||||
* @param Tx the <code>AffineTransform</code> that was retrieved
|
||||
* from the <code>getTransform</code> method
|
||||
|
@ -75,7 +75,7 @@ import sun.awt.image.SunVolatileImage;
|
||||
* bounds of the virtual device. The following code sample
|
||||
* calculates the bounds of the virtual device.
|
||||
*
|
||||
* <pre>
|
||||
* <pre>{@code
|
||||
* Rectangle virtualBounds = new Rectangle();
|
||||
* GraphicsEnvironment ge = GraphicsEnvironment.
|
||||
* getLocalGraphicsEnvironment();
|
||||
@ -89,7 +89,7 @@ import sun.awt.image.SunVolatileImage;
|
||||
* virtualBounds =
|
||||
* virtualBounds.union(gc[i].getBounds());
|
||||
* }
|
||||
* } </pre>
|
||||
* } }</pre>
|
||||
*
|
||||
* @see Window
|
||||
* @see Frame
|
||||
|
@ -46,7 +46,7 @@ import sun.awt.SunToolkit;
|
||||
* following code sample demonstrates how to create a <code>JFrame</code>
|
||||
* object for each <code>GraphicsConfiguration</code> on each screen
|
||||
* device in the <code>GraphicsEnvironment</code>:
|
||||
* <pre>
|
||||
* <pre>{@code
|
||||
* GraphicsEnvironment ge = GraphicsEnvironment.
|
||||
* getLocalGraphicsEnvironment();
|
||||
* GraphicsDevice[] gs = ge.getScreenDevices();
|
||||
@ -66,7 +66,7 @@ import sun.awt.SunToolkit;
|
||||
* f.show();
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* <p>
|
||||
* For more information on full-screen exclusive mode API, see the
|
||||
* <a href="http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html">
|
||||
|
@ -124,7 +124,7 @@ public abstract class Image {
|
||||
* @param name a property name.
|
||||
* @param observer an object waiting for this image to be loaded.
|
||||
* @return the value of the named property.
|
||||
* @throws <code>NullPointerException</code> if the property name is null.
|
||||
* @throws NullPointerException if the property name is null.
|
||||
* @see java.awt.image.ImageObserver
|
||||
* @see java.awt.Image#UndefinedProperty
|
||||
*/
|
||||
|
@ -66,7 +66,7 @@ import java.awt.image.ImageObserver;
|
||||
* <p>
|
||||
* Here is an example of using <code>MediaTracker</code>:
|
||||
* <p>
|
||||
* <hr><blockquote><pre>
|
||||
* <hr><blockquote><pre>{@code
|
||||
* import java.applet.Applet;
|
||||
* import java.awt.Color;
|
||||
* import java.awt.Image;
|
||||
@ -160,7 +160,7 @@ import java.awt.image.ImageObserver;
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* </pre></blockquote><hr>
|
||||
* } </pre></blockquote><hr>
|
||||
*
|
||||
* @author Jim Graham
|
||||
* @since JDK1.0
|
||||
|
@ -187,55 +187,55 @@ public final class PageAttributes implements Cloneable {
|
||||
};
|
||||
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS 4A0, 1682 x 2378 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS 4A0, 1682 x 2378 mm.
|
||||
*/
|
||||
public static final MediaType ISO_4A0 = new MediaType(I_ISO_4A0);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS 2A0, 1189 x 1682 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS 2A0, 1189 x 1682 mm.
|
||||
*/
|
||||
public static final MediaType ISO_2A0 = new MediaType(I_ISO_2A0);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A0, 841 x 1189 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A0, 841 x 1189 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A0 = new MediaType(I_ISO_A0);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A1, 594 x 841 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A1, 594 x 841 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A1 = new MediaType(I_ISO_A1);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A2, 420 x 594 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A2, 420 x 594 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A2 = new MediaType(I_ISO_A2);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A3, 297 x 420 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A3, 297 x 420 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A3 = new MediaType(I_ISO_A3);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A4, 210 x 297 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A4, 210 x 297 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A4 = new MediaType(I_ISO_A4);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A5, 148 x 210 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A5, 148 x 210 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A5 = new MediaType(I_ISO_A5);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A6, 105 x 148 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A6, 105 x 148 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A6 = new MediaType(I_ISO_A6);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A7, 74 x 105 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A7, 74 x 105 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A7 = new MediaType(I_ISO_A7);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A8, 52 x 74 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A8, 52 x 74 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A8 = new MediaType(I_ISO_A8);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A9, 37 x 52 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A9, 37 x 52 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A9 = new MediaType(I_ISO_A9);
|
||||
/**
|
||||
* The MediaType instance for ISO/DIN & JIS A10, 26 x 37 mm.
|
||||
* The MediaType instance for ISO/DIN and JIS A10, 26 x 37 mm.
|
||||
*/
|
||||
public static final MediaType ISO_A10 = new MediaType(I_ISO_A10);
|
||||
/**
|
||||
|
@ -76,19 +76,19 @@ import java.beans.Transient;
|
||||
* negative width and height or it should use the first point in the set
|
||||
* to construct the {@code Rectangle}.
|
||||
* For example:
|
||||
* <pre>
|
||||
* <pre>{@code
|
||||
* Rectangle bounds = new Rectangle(0, 0, -1, -1);
|
||||
* for (int i = 0; i < points.length; i++) {
|
||||
* bounds.add(points[i]);
|
||||
* }
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* or if we know that the points array contains at least one point:
|
||||
* <pre>
|
||||
* <pre>{@code
|
||||
* Rectangle bounds = new Rectangle(points[0]);
|
||||
* for (int i = 1; i < points.length; i++) {
|
||||
* bounds.add(points[i]);
|
||||
* }
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* <p>
|
||||
* This class uses 32-bit integers to store its location and dimensions.
|
||||
* Frequently operations may produce a result that exceeds the range of
|
||||
|
@ -999,15 +999,15 @@ public class RenderingHints
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> if this <code>RenderingHints</code>
|
||||
* Returns {@code true} if this {@code RenderingHints}
|
||||
* contains a mapping for the specified key.
|
||||
*
|
||||
* @param key key whose presence in this
|
||||
* <code>RenderingHints</code> is to be tested.
|
||||
* @return <code>true</code> if this <code>RenderingHints</code>
|
||||
* {@code RenderingHints} is to be tested.
|
||||
* @return {@code true} if this {@code RenderingHints}
|
||||
* contains a mapping for the specified key.
|
||||
* @exception <code>ClassCastException</code> if the key can not
|
||||
* be cast to <code>RenderingHints.Key</code>
|
||||
* @exception ClassCastException if the key can not
|
||||
* be cast to {@code RenderingHints.Key}
|
||||
*/
|
||||
public boolean containsKey(Object key) {
|
||||
return hintmap.containsKey((Key) key);
|
||||
@ -1039,10 +1039,10 @@ public class RenderingHints
|
||||
* Returns the value to which the specified key is mapped.
|
||||
* @param key a rendering hint key
|
||||
* @return the value to which the key is mapped in this object or
|
||||
* <code>null</code> if the key is not mapped to any value in
|
||||
* {@code null} if the key is not mapped to any value in
|
||||
* this object.
|
||||
* @exception <code>ClassCastException</code> if the key can not
|
||||
* be cast to <code>RenderingHints.Key</code>
|
||||
* @exception ClassCastException if the key can not
|
||||
* be cast to {@code RenderingHints.Key}
|
||||
* @see #put(Object, Object)
|
||||
*/
|
||||
public Object get(Object key) {
|
||||
@ -1050,20 +1050,20 @@ public class RenderingHints
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps the specified <code>key</code> to the specified
|
||||
* <code>value</code> in this <code>RenderingHints</code> object.
|
||||
* Neither the key nor the value can be <code>null</code>.
|
||||
* The value can be retrieved by calling the <code>get</code> method
|
||||
* Maps the specified {@code key} to the specified
|
||||
* {@code value} in this {@code RenderingHints} object.
|
||||
* Neither the key nor the value can be {@code null}.
|
||||
* The value can be retrieved by calling the {@code get} method
|
||||
* with a key that is equal to the original key.
|
||||
* @param key the rendering hint key.
|
||||
* @param value the rendering hint value.
|
||||
* @return the previous value of the specified key in this object
|
||||
* or <code>null</code> if it did not have one.
|
||||
* @exception <code>NullPointerException</code> if the key is
|
||||
* <code>null</code>.
|
||||
* @exception <code>ClassCastException</code> if the key can not
|
||||
* be cast to <code>RenderingHints.Key</code>
|
||||
* @exception <code>IllegalArgumentException</code> if the
|
||||
* or {@code null} if it did not have one.
|
||||
* @exception NullPointerException if the key is
|
||||
* {@code null}.
|
||||
* @exception ClassCastException if the key can not
|
||||
* be cast to {@code RenderingHints.Key}
|
||||
* @exception IllegalArgumentException if the
|
||||
* {@link Key#isCompatibleValue(java.lang.Object)
|
||||
* Key.isCompatibleValue()}
|
||||
* method of the specified key returns false for the
|
||||
@ -1102,13 +1102,13 @@ public class RenderingHints
|
||||
|
||||
/**
|
||||
* Removes the key and its corresponding value from this
|
||||
* <code>RenderingHints</code> object. This method does nothing if the
|
||||
* key is not in this <code>RenderingHints</code> object.
|
||||
* {@code RenderingHints} object. This method does nothing if the
|
||||
* key is not in this {@code RenderingHints} object.
|
||||
* @param key the rendering hints key that needs to be removed
|
||||
* @exception <code>ClassCastException</code> if the key can not
|
||||
* be cast to <code>RenderingHints.Key</code>
|
||||
* @exception ClassCastException if the key can not
|
||||
* be cast to {@code RenderingHints.Key}
|
||||
* @return the value to which the key had previously been mapped in this
|
||||
* <code>RenderingHints</code> object, or <code>null</code>
|
||||
* {@code RenderingHints} object, or {@code null}
|
||||
* if the key did not have a mapping.
|
||||
*/
|
||||
public Object remove(Object key) {
|
||||
@ -1116,18 +1116,18 @@ public class RenderingHints
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies all of the mappings from the specified <code>Map</code>
|
||||
* to this <code>RenderingHints</code>. These mappings replace
|
||||
* any mappings that this <code>RenderingHints</code> had for any
|
||||
* of the keys currently in the specified <code>Map</code>.
|
||||
* @param m the specified <code>Map</code>
|
||||
* @exception <code>ClassCastException</code> class of a key or value
|
||||
* in the specified <code>Map</code> prevents it from being
|
||||
* stored in this <code>RenderingHints</code>.
|
||||
* @exception <code>IllegalArgumentException</code> some aspect
|
||||
* of a key or value in the specified <code>Map</code>
|
||||
* Copies all of the mappings from the specified {@code Map}
|
||||
* to this {@code RenderingHints}. These mappings replace
|
||||
* any mappings that this {@code RenderingHints} had for any
|
||||
* of the keys currently in the specified {@code Map}.
|
||||
* @param m the specified {@code Map}
|
||||
* @exception ClassCastException class of a key or value
|
||||
* in the specified {@code Map} prevents it from being
|
||||
* stored in this {@code RenderingHints}.
|
||||
* @exception IllegalArgumentException some aspect
|
||||
* of a key or value in the specified {@code Map}
|
||||
* prevents it from being stored in
|
||||
* this <code>RenderingHints</code>.
|
||||
* this {@code RenderingHints}.
|
||||
*/
|
||||
public void putAll(Map<?,?> m) {
|
||||
// ## javac bug?
|
||||
|
@ -1212,7 +1212,7 @@ public final class NumericShaper implements java.io.Serializable {
|
||||
* For example, to check if a shaper shapes to Arabic, you would use the
|
||||
* following:
|
||||
* <blockquote>
|
||||
* <code>if ((shaper.getRanges() & shaper.ARABIC) != 0) { ... </code>
|
||||
* {@code if ((shaper.getRanges() & shaper.ARABIC) != 0) { ... }
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>Note that this method supports only the bit mask-based
|
||||
|
@ -66,7 +66,7 @@ import java.util.HashMap;
|
||||
* <LI>a description of the effect.
|
||||
* </UL>
|
||||
* <p>
|
||||
* <H4>Values</H4>
|
||||
* <H3>Values</H3>
|
||||
* <UL>
|
||||
* <LI>The values of attributes must always be immutable.
|
||||
* <LI>Where value limitations are given, any value outside of that
|
||||
@ -96,7 +96,6 @@ import java.util.HashMap;
|
||||
*
|
||||
* <h4>Summary of attributes</h4>
|
||||
* <p>
|
||||
* <font size="-1">
|
||||
* <table style="float:center" border="0" cellspacing="0" cellpadding="2" width="%95"
|
||||
* summary="Key, value type, principal constants, and default value
|
||||
* behavior of all TextAttributes">
|
||||
@ -110,9 +109,9 @@ import java.util.HashMap;
|
||||
* <td valign="TOP">{@link #FAMILY}</td>
|
||||
* <td valign="TOP">String</td>
|
||||
* <td valign="TOP">See Font {@link java.awt.Font#DIALOG DIALOG},
|
||||
{@link java.awt.Font#DIALOG_INPUT DIALOG_INPUT},<br> {@link java.awt.Font#SERIF SERIF},
|
||||
{@link java.awt.Font#SANS_SERIF SANS_SERIF}, and {@link java.awt.Font#MONOSPACED MONOSPACED}.
|
||||
</td>
|
||||
* {@link java.awt.Font#DIALOG_INPUT DIALOG_INPUT},<br> {@link java.awt.Font#SERIF SERIF},
|
||||
* {@link java.awt.Font#SANS_SERIF SANS_SERIF}, and {@link java.awt.Font#MONOSPACED MONOSPACED}.
|
||||
* </td>
|
||||
* <td valign="TOP">"Default" (use platform default)</td>
|
||||
* </tr>
|
||||
* <tr style="background-color:#eeeeff">
|
||||
@ -248,7 +247,6 @@ import java.util.HashMap;
|
||||
* <td valign="TOP">0 (do not add tracking)</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </font>
|
||||
*
|
||||
* @see java.awt.Font
|
||||
* @see java.awt.font.TextLayout
|
||||
|
@ -109,7 +109,7 @@ public class FlatteningPathIterator implements PathIterator {
|
||||
* control points and the flattened curve
|
||||
* @param limit the maximum number of recursive subdivisions
|
||||
* allowed for any curved segment
|
||||
* @exception <code>IllegalArgumentException</code> if
|
||||
* @exception IllegalArgumentException if
|
||||
* <code>flatness</code> or <code>limit</code>
|
||||
* is less than zero
|
||||
*/
|
||||
@ -336,7 +336,7 @@ public class FlatteningPathIterator implements PathIterator {
|
||||
* @param coords an array that holds the data returned from
|
||||
* this method
|
||||
* @return the path segment type of the current path segment.
|
||||
* @exception <code>NoSuchElementException</code> if there
|
||||
* @exception NoSuchElementException if there
|
||||
* are no more elements in the flattening path to be
|
||||
* returned.
|
||||
* @see PathIterator#SEG_MOVETO
|
||||
@ -371,7 +371,7 @@ public class FlatteningPathIterator implements PathIterator {
|
||||
* @param coords an array that holds the data returned from
|
||||
* this method
|
||||
* @return the path segment type of the current path segment.
|
||||
* @exception <code>NoSuchElementException</code> if there
|
||||
* @exception NoSuchElementException if there
|
||||
* are no more elements in the flattening path to be
|
||||
* returned.
|
||||
* @see PathIterator#SEG_MOVETO
|
||||
|
@ -794,7 +794,7 @@ public abstract class Path2D implements Shape, Cloneable {
|
||||
* ({@link #WIND_EVEN_ODD WIND_EVEN_ODD} or
|
||||
* {@link #WIND_NON_ZERO WIND_NON_ZERO})
|
||||
* <li>followed by
|
||||
* NP (or unlimited if NP < 0) sets of values consisting of
|
||||
* {@code NP} (or unlimited if {@code NP < 0}) sets of values consisting of
|
||||
* a single byte indicating a path segment type
|
||||
* followed by one or more pairs of float or double
|
||||
* values representing the coordinates of the path segment
|
||||
@ -1520,7 +1520,7 @@ public abstract class Path2D implements Shape, Cloneable {
|
||||
* ({@link #WIND_EVEN_ODD WIND_EVEN_ODD} or
|
||||
* {@link #WIND_NON_ZERO WIND_NON_ZERO})
|
||||
* <li>followed by
|
||||
* NP (or unlimited if NP < 0) sets of values consisting of
|
||||
* {@code NP} (or unlimited if {@code NP < 0}) sets of values consisting of
|
||||
* a single byte indicating a path segment type
|
||||
* followed by one or more pairs of float or double
|
||||
* values representing the coordinates of the path segment
|
||||
|
@ -348,7 +348,7 @@ public class MultiPixelPackedSampleModel extends SampleModel
|
||||
* data
|
||||
* @return the specified band containing the sample of the specified
|
||||
* pixel.
|
||||
* @exception ArrayIndexOutOfBoundException if the specified
|
||||
* @exception ArrayIndexOutOfBoundsException if the specified
|
||||
* coordinates are not in bounds.
|
||||
* @see #setSample(int, int, int, int, DataBuffer)
|
||||
*/
|
||||
|
@ -129,7 +129,7 @@ public class Book implements Pageable {
|
||||
* @param painter the <code>Printable</code> instance that
|
||||
* renders the page
|
||||
* @param page the size and orientation of the page
|
||||
* @throws <code>NullPointerException</code>
|
||||
* @throws NullPointerException
|
||||
* If the <code>painter</code> or <code>page</code>
|
||||
* argument is <code>null</code>
|
||||
*/
|
||||
@ -146,7 +146,7 @@ public class Book implements Pageable {
|
||||
* @param page the size and orientation of the page
|
||||
* @param numPages the number of pages to be added to the
|
||||
* this <code>Book</code>.
|
||||
* @throws <code>NullPointerException</code>
|
||||
* @throws NullPointerException
|
||||
* If the <code>painter</code> or <code>page</code>
|
||||
* argument is <code>null</code>
|
||||
*/
|
||||
|
@ -286,7 +286,7 @@ public class PageFormat implements Cloneable
|
||||
* <code>PageFormat</code>.
|
||||
* @param paper the <code>Paper</code> object to which to set
|
||||
* the <code>Paper</code> object for this <code>PageFormat</code>.
|
||||
* @exception <code>NullPointerException</code>
|
||||
* @exception NullPointerException
|
||||
* a null paper instance was passed as a parameter.
|
||||
* @see #getPaper
|
||||
*/
|
||||
|
@ -76,7 +76,7 @@ import java.awt.Graphics;
|
||||
* <li>With the exception of re-imaging an entire document for multiple
|
||||
* collated copies, the increasing page index order means that when
|
||||
* page N is requested if a client needs to calculate page break position,
|
||||
* it may safely discard any state related to pages < N, and make current
|
||||
* it may safely discard any state related to pages < N, and make current
|
||||
* that for page N. "State" usually is just the calculated position in the
|
||||
* document that corresponds to the start of the page.
|
||||
*
|
||||
|
@ -113,7 +113,7 @@ public abstract class PrinterJob {
|
||||
* A convenience method which locates factories for stream print
|
||||
* services which can image 2D graphics.
|
||||
* Sample usage :
|
||||
* <pre>
|
||||
* <pre>{@code
|
||||
* FileOutputStream outstream;
|
||||
* StreamPrintService psPrinter;
|
||||
* String psMimeType = "application/postscript";
|
||||
@ -131,7 +131,7 @@ public abstract class PrinterJob {
|
||||
* e.printStackTrace();
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
* }</pre>
|
||||
* Services returned from this method may be installed on
|
||||
* <code>PrinterJob</code> instances which support print services.
|
||||
* Calling this method is equivalent to calling
|
||||
|
@ -36,6 +36,10 @@ import sun.java2d.xr.*;
|
||||
* @author Clemens Eisserer
|
||||
*/
|
||||
public class XRTextRenderer extends GlyphListPipe {
|
||||
// Workarround for a bug in libXrender.
|
||||
// In case the number of glyphs of an ELT is a multiple of 254,
|
||||
// a few garbage bytes are sent to the XServer causing hangs.
|
||||
static final int MAX_ELT_GLYPH_COUNT = 253;
|
||||
|
||||
XRGlyphCache glyphCache;
|
||||
XRCompositeManager maskBuffer;
|
||||
@ -92,8 +96,11 @@ public class XRTextRenderer extends GlyphListPipe {
|
||||
|
||||
int posX = 0, posY = 0;
|
||||
if (gl.usePositions()
|
||||
|| (cacheEntry.getXAdvance() != ((float) cacheEntry.getXOff()) || cacheEntry.getYAdvance() != ((float) cacheEntry.getYOff()))
|
||||
|| eltIndex < 0 || glyphSet != activeGlyphSet) {
|
||||
|| cacheEntry.getXAdvance() != ((float) cacheEntry.getXOff())
|
||||
|| cacheEntry.getYAdvance() != ((float) cacheEntry.getYOff())
|
||||
|| glyphSet != activeGlyphSet
|
||||
|| eltIndex < 0
|
||||
|| eltList.getCharCnt(eltIndex) == MAX_ELT_GLYPH_COUNT) {
|
||||
|
||||
eltIndex = eltList.getNextIndex();
|
||||
eltList.setCharCnt(eltIndex, 1);
|
||||
@ -101,7 +108,7 @@ public class XRTextRenderer extends GlyphListPipe {
|
||||
eltList.setGlyphSet(eltIndex, glyphSet);
|
||||
|
||||
if (gl.usePositions()) {
|
||||
// /*In this case advX only stores rounding errors*/
|
||||
// In this case advX only stores rounding errors
|
||||
float x = positions[i * 2] + advX;
|
||||
float y = positions[i * 2 + 1] + advY;
|
||||
posX = (int) Math.floor(x);
|
||||
@ -120,16 +127,14 @@ public class XRTextRenderer extends GlyphListPipe {
|
||||
posX = (int) Math.floor(advX);
|
||||
posY = (int) Math.floor(advY);
|
||||
|
||||
// Advance of ELT = difference between stored
|
||||
// relative
|
||||
// Advance of ELT = difference between stored relative
|
||||
// positioning information and required float.
|
||||
advX += (cacheEntry.getXAdvance() - cacheEntry.getXOff());
|
||||
advY += (cacheEntry.getYAdvance() - cacheEntry.getYOff());
|
||||
}
|
||||
/*
|
||||
* Offset of the current glyph is the difference to the last
|
||||
* glyph and this one
|
||||
*/
|
||||
|
||||
// Offset of the current glyph is the difference
|
||||
// to the last glyph and this one
|
||||
eltList.setXOff(eltIndex, (posX - oldPosX));
|
||||
eltList.setYOff(eltIndex, (posY - oldPosY));
|
||||
|
||||
|
@ -245,7 +245,17 @@ public abstract class XRSurfaceData extends XSurfaceData {
|
||||
ColorModel cm, Image image,
|
||||
long drawable,
|
||||
int transparency) {
|
||||
int depth = transparency > Transparency.OPAQUE ? 32 : 24;
|
||||
int depth;
|
||||
// If we have a 32 bit color model for the window it needs
|
||||
// alpha to support translucency of the window so we need
|
||||
// to upgrade what was requested for the surface.
|
||||
if (gc.getColorModel().getPixelSize() == 32) {
|
||||
depth = 32;
|
||||
transparency = Transparency.TRANSLUCENT;
|
||||
} else {
|
||||
depth = transparency > Transparency.OPAQUE ? 32 : 24;
|
||||
}
|
||||
|
||||
if (depth == 24) {
|
||||
cm = new DirectColorModel(depth,
|
||||
0x00FF0000, 0x0000FF00, 0x000000FF);
|
||||
|
@ -44,6 +44,7 @@ import javax.print.event.PrintServiceAttributeListener;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
@ -1607,14 +1608,16 @@ public class IPPPrintService implements PrintService, SunPrinterJobService {
|
||||
|
||||
public static HttpURLConnection getIPPConnection(URL url) {
|
||||
HttpURLConnection connection;
|
||||
URLConnection urlc;
|
||||
try {
|
||||
connection = (HttpURLConnection)url.openConnection();
|
||||
urlc = url.openConnection();
|
||||
} catch (java.io.IOException ioe) {
|
||||
return null;
|
||||
}
|
||||
if (!(connection instanceof HttpURLConnection)) {
|
||||
if (!(urlc instanceof HttpURLConnection)) {
|
||||
return null;
|
||||
}
|
||||
connection = (HttpURLConnection)urlc;
|
||||
connection.setUseCaches(false);
|
||||
connection.setDefaultUseCaches(false);
|
||||
connection.setDoInput(true);
|
||||
|
@ -620,7 +620,7 @@ public class UnixPrintServiceLookup extends PrintServiceLookup
|
||||
if (CUPSPrinter.isCupsRunning()) {
|
||||
try {
|
||||
PrintService defaultPS;
|
||||
if (psuri != null) {
|
||||
if ((psuri != null) && !psuri.startsWith("file")) {
|
||||
defaultPS = new IPPPrintService(defaultPrinter,
|
||||
psuri, true);
|
||||
} else {
|
||||
|
110
jdk/test/java/awt/Graphics2D/DrawString/TextRenderingTest.java
Normal file
110
jdk/test/java/awt/Graphics2D/DrawString/TextRenderingTest.java
Normal file
@ -0,0 +1,110 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 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.Color;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.GraphicsConfiguration;
|
||||
import java.awt.GraphicsEnvironment;
|
||||
import java.awt.GradientPaint;
|
||||
import java.awt.geom.Point2D;
|
||||
|
||||
import java.awt.Font;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.VolatileImage;
|
||||
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 7189452 8024767
|
||||
* @summary Check if source offset for text rendering is handled correctly
|
||||
* (shouldn't see the text on a similarly colored background).
|
||||
* @author a.stepanov
|
||||
* @run main TextRenderingTest
|
||||
*/
|
||||
|
||||
public class TextRenderingTest {
|
||||
|
||||
private static final int width = 450;
|
||||
private static final int height = 150;
|
||||
|
||||
public static void main(final String[] args) {
|
||||
|
||||
GraphicsEnvironment ge =
|
||||
GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
GraphicsConfiguration gc =
|
||||
ge.getDefaultScreenDevice().getDefaultConfiguration();
|
||||
VolatileImage vi = gc.createCompatibleVolatileImage(width, height);
|
||||
|
||||
while (true) {
|
||||
vi.validate(gc);
|
||||
Graphics2D g2d = vi.createGraphics();
|
||||
g2d.setColor(Color.white);
|
||||
g2d.fillRect(0, 0, width, height);
|
||||
|
||||
g2d.setPaint(new GradientPaint(
|
||||
new Point2D.Float(0, height / 2), Color.white,
|
||||
new Point2D.Float(width, height / 2), Color.black));
|
||||
g2d.fillRect(0, 0, width, height);
|
||||
|
||||
String fnt = g2d.getFont().getFamily();
|
||||
g2d.setFont(new Font(fnt, Font.PLAIN, 100));
|
||||
g2d.drawString("IIIIIIIIII", 100, 100); // draw text with offset
|
||||
|
||||
g2d.dispose();
|
||||
|
||||
if (vi.validate(gc) != VolatileImage.IMAGE_OK) {
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException e) {}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (vi.contentsLost()) {
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException e) {}
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
BufferedImage bi = vi.getSnapshot();
|
||||
|
||||
// the text shifted shouldn't be visible onto a painted rectangle!
|
||||
// so the check: color component (blue) must decrease monotonously
|
||||
|
||||
int prev = Integer.MAX_VALUE;
|
||||
for (int x = 0; x < width; ++x) {
|
||||
int color = bi.getRGB(x, height / 2);
|
||||
int b = color & 0xFF;
|
||||
|
||||
if (b > prev) {
|
||||
throw new RuntimeException("test failed: can see the text rendered!");
|
||||
}
|
||||
|
||||
prev = b;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 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.*;
|
||||
import java.awt.MultipleGradientPaint.*;
|
||||
import java.awt.image.*;
|
||||
import java.io.*;
|
||||
|
||||
import javax.imageio.*;
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 8028722
|
||||
* @summary tests wether drawString with 254 characters causes the xrender
|
||||
* pipeline to hang.
|
||||
* @author ceisserer
|
||||
*/
|
||||
public class XRenderElt254TextTest extends Frame implements Runnable {
|
||||
public volatile boolean success = false;
|
||||
|
||||
public void run() {
|
||||
Image dstImg = getGraphicsConfiguration().createCompatibleVolatileImage(400, 400);
|
||||
Graphics2D g = (Graphics2D) dstImg.getGraphics();
|
||||
|
||||
StringBuilder strBuilder = new StringBuilder(254);
|
||||
for (int c = 0; c < 254; c++) {
|
||||
strBuilder.append('a');
|
||||
}
|
||||
|
||||
for (int i = 0; i < 100; i++) {
|
||||
g.drawString(strBuilder.toString(), 20, 20);
|
||||
Toolkit.getDefaultToolkit().sync();
|
||||
}
|
||||
success = true;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
XRenderElt254TextTest test = new XRenderElt254TextTest();
|
||||
new Thread(test).start();
|
||||
|
||||
for (int i = 0; i < 30; i++) {
|
||||
Thread.sleep(1000);
|
||||
|
||||
if (test.success) {
|
||||
return; // Test finished successful
|
||||
}
|
||||
}
|
||||
|
||||
throw new RuntimeException("Test Failed");
|
||||
}
|
||||
}
|
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4500750 6848799
|
||||
* @bug 4500750 6848799 8028584
|
||||
* @summary Tests creating page format from attributes
|
||||
* @run main PageFormatFromAttributes
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user