/* * @(#)Paint.java 1.27 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package java.awt; import java.awt.image.ColorModel; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; /** * This Paint interface defines how color patterns * can be generated for {@link Graphics2D} operations. A class * implementing the Paint interface is added to the * Graphics2D context in order to define the color * pattern used by the draw and fill methods. *

* Instances of classes implementing Paint must be * read-only because the Graphics2D does not clone * these objects when they are set as an attribute with the * setPaint method or when the Graphics2D * object is itself cloned. * @see PaintContext * @see Color * @see GradientPaint * @see TexturePaint * @see Graphics2D#setPaint * @version 1.27, 12/19/03 */ public interface Paint extends Transparency { /** * Creates and returns a {@link PaintContext} used to * generate the color pattern. * Since the ColorModel argument to createContext is only a * hint, implementations of Paint should accept a null argument * for ColorModel. Note that if the application does not * prefer a specific ColorModel, the null ColorModel argument * will give the Paint implementation full leeway in using the * most efficient ColorModel it prefers for its raster processing. *

* Since the API documentation was not specific about this in * releases before 1.4, there may be implementations of * Paint that do not accept a null * ColorModel argument. * If a developer is writing code which passes a null * ColorModel argument to the * createContext method of Paint * objects from arbitrary sources it would be wise to code defensively * by manufacturing a non-null ColorModel for those * objects which throw a NullPointerException. * @param cm the {@link ColorModel} that receives the * Paint data. This is used only as a hint. * @param deviceBounds the device space bounding box * of the graphics primitive being rendered * @param userBounds the user space bounding box * of the graphics primitive being rendered * @param xform the {@link AffineTransform} from user * space into device space * @param hints the hint that the context object uses to * choose between rendering alternatives * @return the PaintContext for * generating color patterns * @see PaintContext */ public PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform xform, RenderingHints hints); }