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 }
|