/*
* @(#)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);
}