Source Code Cross Referenced for GradientPaint.java in  » 6.0-JDK-Core » AWT » java » awt » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Home
Java Source Code / Java Documentation
1.6.0 JDK Core
2.6.0 JDK Modules
3.6.0 JDK Modules com.sun
4.6.0 JDK Modules com.sun.java
5.6.0 JDK Modules sun
6.6.0 JDK Platform
7.Ajax
8.Apache Harmony Java SE
9.Aspect oriented
10.Authentication Authorization
11.Blogger System
12.Build
13.Byte Code
14.Cache
15.Chart
16.Chat
17.Code Analyzer
18.Collaboration
19.Content Management System
20.Database Client
21.Database DBMS
22.Database JDBC Connection Pool
23.Database ORM
24.Development
25.EJB Server
26.ERP CRM Financial
27.ESB
28.Forum
29.Game
30.GIS
31.Graphic 3D
32.Graphic Library
33.Groupware
34.HTML Parser
35.IDE
36.IDE Eclipse
37.IDE Netbeans
38.Installer
39.Internationalization Localization
40.Inversion of Control
41.Issue Tracking
42.J2EE
43.J2ME
44.JBoss
45.JMS
46.JMX
47.Library
48.Mail Clients
49.Music
50.Net
51.Parser
52.PDF
53.Portal
54.Profiler
55.Project Management
56.Report
57.RSS RDF
58.Rule Engine
59.Science
60.Scripting
61.Search Engine
62.Security
63.Sevlet Container
64.Source Control
65.Swing Library
66.Template Engine
67.Test Coverage
68.Testing
69.UML
70.Web Crawler
71.Web Framework
72.Web Mail
73.Web Server
74.Web Services
75.Web Services apache cxf 2.2.6
76.Web Services AXIS2
77.Wiki Engine
78.Workflow Engines
79.XML
80.XML UI
Java Source Code / Java Documentation » 6.0 JDK Core » AWT » java.awt 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001        /*
002         * Copyright 1997-2002 Sun Microsystems, Inc.  All Rights Reserved.
003         * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004         *
005         * This code is free software; you can redistribute it and/or modify it
006         * under the terms of the GNU General Public License version 2 only, as
007         * published by the Free Software Foundation.  Sun designates this
008         * particular file as subject to the "Classpath" exception as provided
009         * by Sun in the LICENSE file that accompanied this code.
010         *
011         * This code is distributed in the hope that it will be useful, but WITHOUT
012         * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013         * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
014         * version 2 for more details (a copy is included in the LICENSE file that
015         * accompanied this code).
016         *
017         * You should have received a copy of the GNU General Public License version
018         * 2 along with this work; if not, write to the Free Software Foundation,
019         * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020         *
021         * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022         * CA 95054 USA or visit www.sun.com if you need additional information or
023         * have any questions.
024         */
025
026        package java.awt;
027
028        import java.awt.geom.Point2D;
029        import java.awt.geom.Rectangle2D;
030        import java.awt.geom.AffineTransform;
031        import java.awt.image.ColorModel;
032
033        /**
034         * The <code>GradientPaint</code> class provides a way to fill 
035         * a {@link Shape} with a linear color gradient pattern.
036         * If {@link Point} P1 with {@link Color} C1 and <code>Point</code> P2 with
037         * <code>Color</code> C2 are specified in user space, the
038         * <code>Color</code> on the P1, P2 connecting line is proportionally
039         * changed from C1 to C2.  Any point P not on the extended P1, P2
040         * connecting line has the color of the point P' that is the perpendicular
041         * projection of P on the extended P1, P2 connecting line.
042         * Points on the extended line outside of the P1, P2 segment can be colored
043         * in one of two ways.
044         * <ul>
045         * <li>
046         * If the gradient is cyclic then the points on the extended P1, P2
047         * connecting line cycle back and forth between the colors C1 and C2.
048         * <li>
049         * If the gradient is acyclic then points on the P1 side of the segment
050         * have the constant <code>Color</code> C1 while points on the P2 side
051         * have the constant <code>Color</code> C2.
052         * </ul>
053         *
054         * @see Paint
055         * @see Graphics2D#setPaint
056         * @version 10 Feb 1997
057         */
058
059        public class GradientPaint implements  Paint {
060            Point2D.Float p1;
061            Point2D.Float p2;
062            Color color1;
063            Color color2;
064            boolean cyclic;
065
066            /**
067             * Constructs a simple acyclic <code>GradientPaint</code> object.
068             * @param x1 x coordinate of the first specified
069             * <code>Point</code> in user space
070             * @param y1 y coordinate of the first specified
071             * <code>Point</code> in user space
072             * @param color1 <code>Color</code> at the first specified 
073             * <code>Point</code>
074             * @param x2 x coordinate of the second specified
075             * <code>Point</code> in user space
076             * @param y2 y coordinate of the second specified
077             * <code>Point</code> in user space
078             * @param color2 <code>Color</code> at the second specified 
079             * <code>Point</code>
080             * @throws NullPointerException if either one of colors is null
081             */
082            public GradientPaint(float x1, float y1, Color color1, float x2,
083                    float y2, Color color2) {
084                if ((color1 == null) || (color2 == null)) {
085                    throw new NullPointerException("Colors cannot be null");
086                }
087
088                p1 = new Point2D.Float(x1, y1);
089                p2 = new Point2D.Float(x2, y2);
090                this .color1 = color1;
091                this .color2 = color2;
092            }
093
094            /**
095             * Constructs a simple acyclic <code>GradientPaint</code> object.
096             * @param pt1 the first specified <code>Point</code> in user space
097             * @param color1 <code>Color</code> at the first specified 
098             * <code>Point</code>
099             * @param pt2 the second specified <code>Point</code> in user space
100             * @param color2 <code>Color</code> at the second specified 
101             * <code>Point</code>
102             * @throws NullPointerException if either one of colors or points 
103             * is null
104             */
105            public GradientPaint(Point2D pt1, Color color1, Point2D pt2,
106                    Color color2) {
107                if ((color1 == null) || (color2 == null) || (pt1 == null)
108                        || (pt2 == null)) {
109                    throw new NullPointerException(
110                            "Colors and points should be non-null");
111                }
112
113                p1 = new Point2D.Float((float) pt1.getX(), (float) pt1.getY());
114                p2 = new Point2D.Float((float) pt2.getX(), (float) pt2.getY());
115                this .color1 = color1;
116                this .color2 = color2;
117            }
118
119            /**
120             * Constructs either a cyclic or acyclic <code>GradientPaint</code>
121             * object depending on the <code>boolean</code> parameter.
122             * @param x1 x coordinate of the first specified
123             * <code>Point</code> in user space
124             * @param y1 y coordinate of the first specified
125             * <code>Point</code> in user space
126             * @param color1 <code>Color</code> at the first specified 
127             * <code>Point</code>
128             * @param x2 x coordinate of the second specified
129             * <code>Point</code> in user space
130             * @param y2 y coordinate of the second specified
131             * <code>Point</code> in user space
132             * @param color2 <code>Color</code> at the second specified 
133             * <code>Point</code>
134             * @param cyclic <code>true</code> if the gradient pattern should cycle
135             * repeatedly between the two colors; <code>false</code> otherwise
136             */
137            public GradientPaint(float x1, float y1, Color color1, float x2,
138                    float y2, Color color2, boolean cyclic) {
139                this (x1, y1, color1, x2, y2, color2);
140                this .cyclic = cyclic;
141            }
142
143            /**
144             * Constructs either a cyclic or acyclic <code>GradientPaint</code>
145             * object depending on the <code>boolean</code> parameter.
146             * @param pt1 the first specified <code>Point</code> 
147             * in user space
148             * @param color1 <code>Color</code> at the first specified 
149             * <code>Point</code>
150             * @param pt2 the second specified <code>Point</code> 
151             * in user space
152             * @param color2 <code>Color</code> at the second specified 
153             * <code>Point</code>
154             * @param cyclic <code>true</code> if the gradient pattern should cycle
155             * repeatedly between the two colors; <code>false</code> otherwise
156             * @throws NullPointerException if either one of colors or points 
157             * is null
158             */
159            public GradientPaint(Point2D pt1, Color color1, Point2D pt2,
160                    Color color2, boolean cyclic) {
161                this (pt1, color1, pt2, color2);
162                this .cyclic = cyclic;
163            }
164
165            /**
166             * Returns a copy of the point P1 that anchors the first color.
167             * @return a {@link Point2D} object that is a copy of the point
168             * that anchors the first color of this 
169             * <code>GradientPaint</code>.  
170             */
171            public Point2D getPoint1() {
172                return new Point2D.Float(p1.x, p1.y);
173            }
174
175            /**
176             * Returns the color C1 anchored by the point P1.
177             * @return a <code>Color</code> object that is the color
178             * anchored by P1.
179             */
180            public Color getColor1() {
181                return color1;
182            }
183
184            /**
185             * Returns a copy of the point P2 which anchors the second color.
186             * @return a {@link Point2D} object that is a copy of the point
187             * that anchors the second color of this
188             * <code>GradientPaint</code>.
189             */
190            public Point2D getPoint2() {
191                return new Point2D.Float(p2.x, p2.y);
192            }
193
194            /**
195             * Returns the color C2 anchored by the point P2.
196             * @return a <code>Color</code> object that is the color
197             * anchored by P2.
198             */
199            public Color getColor2() {
200                return color2;
201            }
202
203            /**
204             * Returns <code>true</code> if the gradient cycles repeatedly
205             * between the two colors C1 and C2.
206             * @return <code>true</code> if the gradient cycles repeatedly
207             * between the two colors; <code>false</code> otherwise.
208             */
209            public boolean isCyclic() {
210                return cyclic;
211            }
212
213            /**
214             * Creates and returns a context used to generate the color pattern.
215             * @param cm {@link ColorModel} that receives
216             * the <code>Paint</code> data. This is used only as a hint.
217             * @param deviceBounds the device space bounding box of the 
218             * graphics primitive being rendered
219             * @param userBounds the user space bounding box of the 
220             * graphics primitive being rendered
221             * @param xform the {@link AffineTransform} from user
222             *     space into device space
223             * @param hints the hints that the context object uses to choose
224             * between rendering alternatives
225             * @return the {@link PaintContext} that generates color patterns.
226             * @see PaintContext
227             */
228            public PaintContext createContext(ColorModel cm,
229                    Rectangle deviceBounds, Rectangle2D userBounds,
230                    AffineTransform xform, RenderingHints hints) {
231
232                return new GradientPaintContext(cm, p1, p2, xform, color1,
233                        color2, cyclic);
234            }
235
236            /**
237             * Returns the transparency mode for this <code>GradientPaint</code>.
238             * @return an integer value representing this <code>GradientPaint</code>
239             * object's transparency mode.
240             * @see Transparency
241             */
242            public int getTransparency() {
243                int a1 = color1.getAlpha();
244                int a2 = color2.getAlpha();
245                return (((a1 & a2) == 0xff) ? OPAQUE : TRANSLUCENT);
246            }
247
248        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.