01: /*
02: * Copyright 1997-1998 Sun Microsystems, Inc. All Rights Reserved.
03: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
04: *
05: * This code is free software; you can redistribute it and/or modify it
06: * under the terms of the GNU General Public License version 2 only, as
07: * published by the Free Software Foundation. Sun designates this
08: * particular file as subject to the "Classpath" exception as provided
09: * by Sun in the LICENSE file that accompanied this code.
10: *
11: * This code is distributed in the hope that it will be useful, but WITHOUT
12: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14: * version 2 for more details (a copy is included in the LICENSE file that
15: * accompanied this code).
16: *
17: * You should have received a copy of the GNU General Public License version
18: * 2 along with this work; if not, write to the Free Software Foundation,
19: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20: *
21: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22: * CA 95054 USA or visit www.sun.com if you need additional information or
23: * have any questions.
24: */
25:
26: package java.awt;
27:
28: import java.awt.image.ColorModel;
29:
30: /**
31: * The <code>Composite</code> interface, along with
32: * {@link CompositeContext}, defines the methods to compose a draw
33: * primitive with the underlying graphics area.
34: * After the <code>Composite</code> is set in the
35: * {@link Graphics2D} context, it combines a shape, text, or an image
36: * being rendered with the colors that have already been rendered
37: * according to pre-defined rules. The classes
38: * implementing this interface provide the rules and a method to create
39: * the context for a particular operation.
40: * <code>CompositeContext</code> is an environment used by the
41: * compositing operation, which is created by the <code>Graphics2D</code>
42: * prior to the start of the operation. <code>CompositeContext</code>
43: * contains private information and resources needed for a compositing
44: * operation. When the <code>CompositeContext</code> is no longer needed,
45: * the <code>Graphics2D</code> object disposes of it in order to reclaim
46: * resources allocated for the operation.
47: * <p>
48: * Instances of classes implementing <code>Composite</code> must be
49: * immutable because the <code>Graphics2D</code> does not clone
50: * these objects when they are set as an attribute with the
51: * <code>setComposite</code> method or when the <code>Graphics2D</code>
52: * object is cloned. This is to avoid undefined rendering behavior of
53: * <code>Graphics2D</code>, resulting from the modification of
54: * the <code>Composite</code> object after it has been set in the
55: * <code>Graphics2D</code> context.
56: * <p>
57: * Since this interface must expose the contents of pixels on the
58: * target device or image to potentially arbitrary code, the use of
59: * custom objects which implement this interface when rendering directly
60: * to a screen device is governed by the <code>readDisplayPixels</code>
61: * {@link AWTPermission}. The permission check will occur when such
62: * a custom object is passed to the <code>setComposite</code> method
63: * of a <code>Graphics2D</code> retrieved from a {@link Component}.
64: * @see AlphaComposite
65: * @see CompositeContext
66: * @see Graphics2D#setComposite
67: * @version 10 Feb 1997
68: */
69: public interface Composite {
70:
71: /**
72: * Creates a context containing state that is used to perform
73: * the compositing operation. In a multi-threaded environment,
74: * several contexts can exist simultaneously for a single
75: * <code>Composite</code> object.
76: * @param srcColorModel the {@link ColorModel} of the source
77: * @param dstColorModel the <code>ColorModel</code> of the destination
78: * @param hints the hint that the context object uses to choose between
79: * rendering alternatives
80: * @return the <code>CompositeContext</code> object used to perform the
81: * compositing operation.
82: */
83: public CompositeContext createContext(ColorModel srcColorModel,
84: ColorModel dstColorModel, RenderingHints hints);
85:
86: }
|