19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  this work for additional information regarding copyright ownership.
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  the License.  You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *  limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage java.awt;
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.geom.AffineTransform;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.geom.Point2D;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.geom.Rectangle2D;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.image.ColorModel;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.apache.harmony.awt.internal.nls.Messages;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The GradientPaint class defines a way to fill a Shape with a linear color
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * gradient pattern.
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The GradientPaint's fill pattern is determined by two points and two colors,
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * plus the cyclic mode option. Each of the two points is painted with its
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * corresponding color, and on the line segment connecting the two points, the
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * color is proportionally changed between the two colors. For points on the
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * same line which are not between the two specified points (outside of the
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connecting segment) their color is determined by the cyclic mode option. If
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the mode is cyclic, then the rest of the line repeats the color pattern of
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the connecting segment, cycling back and forth between the two colors. If
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * not, the mode is acyclic which means that all points on the line outside the
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * connecting line segment are given the same color as the closest of the two
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * specified points.
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The color of points that are not on the line connecting the two specified
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * points are given by perpendicular projection: by taking the set of lines
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * perpendicular to the connecting line and for each one, the whole line is
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * colored with the same color.
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @since Android 1.0
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class GradientPaint implements Paint {
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The start point color.
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Color color1;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The end color point.
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Color color2;
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The location of the start point.
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Point2D point1;
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The location of the end point.
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Point2D point2;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The indicator of cycle filling. If TRUE filling repeated outside points
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * stripe, if FALSE solid color filling outside.
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    boolean cyclic;
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instantiates a new GradientPaint with cyclic or acyclic mode.
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param point1
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the first specified point.
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param color1
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Color of the first specified point.
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param point2
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the second specified point.
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param color2
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Color of the second specified point.
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param cyclic
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the cyclic mode - true if the gradient pattern should cycle
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            repeatedly between the two colors; false otherwise.
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public GradientPaint(Point2D point1, Color color1, Point2D point2, Color color2, boolean cyclic) {
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (point1 == null || point2 == null) {
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // awt.6D=Point is null
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new NullPointerException(Messages.getString("awt.6D")); //$NON-NLS-1$
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (color1 == null || color2 == null) {
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // awt.6E=Color is null
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new NullPointerException(Messages.getString("awt.6E")); //$NON-NLS-1$
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.point1 = point1;
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.point2 = point2;
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.color1 = color1;
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.color2 = color2;
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this.cyclic = cyclic;
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instantiates a new GradientPaint with cyclic or acyclic mode; points are
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * specified by coordinates.
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x1
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the first point.
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y1
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the first point.
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param color1
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the color of the first point.
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x2
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the second point.
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y2
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the second point.
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param color2
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the color of the second point.
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param cyclic
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the cyclic mode - true if the gradient pattern should cycle
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            repeatedly between the two colors; false otherwise.
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2,
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean cyclic) {
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this(new Point2D.Float(x1, y1), color1, new Point2D.Float(x2, y2), color2, cyclic);
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instantiates a new acyclic GradientPaint; points are specified by
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * coordinates.
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x1
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the first point.
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y1
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the first point.
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param color1
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the color of the first point.
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x2
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the second point.
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y2
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the second point.
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param color2
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the color of the second point.
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2) {
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this(x1, y1, color1, x2, y2, color2, false);
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instantiates a new acyclic GradientPaint.
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param point1
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the first specified point.
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param color1
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Color of the first specified point.
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param point2
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the second specified point.
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param color2
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Color of the second specified point.
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public GradientPaint(Point2D point1, Color color1, Point2D point2, Color color2) {
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        this(point1, color1, point2, color2, false);
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Creates PaintContext for a color pattern generating.
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param cm
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the ColorModel of the Paint data.
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param deviceBounds
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the bounding Rectangle of graphics primitives being rendered
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            in the device space.
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param userBounds
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the bounding Rectangle of graphics primitives being rendered
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            in the user space.
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param t
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the AffineTransform from user space into device space.
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param hints
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the RrenderingHints object.
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the PaintContext for color pattern generating.
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see java.awt.Paint#createContext(java.awt.image.ColorModel,
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      java.awt.Rectangle, java.awt.geom.Rectangle2D,
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      java.awt.geom.AffineTransform, java.awt.RenderingHints)
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public PaintContext createContext(ColorModel cm, Rectangle deviceBounds,
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Rectangle2D userBounds, AffineTransform t, RenderingHints hints) {
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return new GradientPaintContext(cm, t, point1, color1, point2, color2, cyclic);
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the color of the first point.
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the color of the first point.
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Color getColor1() {
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return color1;
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the color of the second point.
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the color of the second point.
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Color getColor2() {
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return color2;
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the first point.
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the Point object - the first point.
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Point2D getPoint1() {
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return point1;
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the second point.
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the Point object - the second point.
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Point2D getPoint2() {
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return point2;
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the transparency mode for the GradientPaint.
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the transparency mode for the GradientPaint.
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @see java.awt.Transparency#getTransparency()
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getTransparency() {
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int a1 = color1.getAlpha();
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int a2 = color2.getAlpha();
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return (a1 == 0xFF && a2 == 0xFF) ? OPAQUE : TRANSLUCENT;
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns the GradientPaint mode: true for cyclic mode, false for acyclic
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * mode.
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true if the gradient cycles repeatedly between the two colors;
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         false otherwise.
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean isCyclic() {
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return cyclic;
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
256