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 Project * @author Alexey A. Petrenko
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @version $Revision$
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage java.awt;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.awt.image.ImageObserver;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.text.AttributedCharacterIterator;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The abstract Graphics class allows applications to draw on a screen or other
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * rendering target. There are several properties which define rendering
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * options: origin point, clipping area, color, font. <br>
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <br>
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The origin point specifies the beginning of the clipping area coordinate
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * system. All coordinates used in rendering operations are computed with
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * respect to this point. The clipping area defines the boundaries where
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * rendering operations can be performed. Rendering operations can't modify
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * pixels outside of the clipping area. <br>
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <br>
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The draw and fill methods allow applications to drawing shapes, text, images
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * with specified font and color options in the specified part of the screen.
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @since Android 1.0
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class Graphics {
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // Constructors
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Instantiates a new Graphics. This constructor is default for Graphics and
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * can not be called directly.
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected Graphics() {
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // Public methods
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Creates a copy of the Graphics object with a new origin and a new
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * specified clip area. The new clip area is the rectangle defined by the
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * origin point with coordinates X,Y and the given width and height. The
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * coordinates of all subsequent rendering operations will be computed with
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * respect to the new origin and can be performed only within the range of
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the clipping area dimensions.
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the original point.
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the original point.
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of clipping area.
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of clipping area.
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the Graphics object with new origin point and clipping area.
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Graphics create(int x, int y, int width, int height) {
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Graphics res = create();
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        res.translate(x, y);
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        res.clipRect(0, 0, width, height);
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return res;
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the highlighted outline of a rectangle.
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the rectangle's top left corner.
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the rectangle's top left corner.
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of rectangle.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of rectangle.
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param raised
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            a boolean value that determines whether the rectangle is drawn
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            as raised or indented.
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void draw3DRect(int x, int y, int width, int height, boolean raised) {
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Note: lighter/darker colors should be used to draw 3d rect.
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // The resulting rect is (width+1)x(height+1). Stroke and paint
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // attributes of
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // the Graphics2D should be reset to the default values.
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // fillRect is used instead of drawLine to bypass stroke
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // reset/set and rasterization.
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Color color = getColor();
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Color colorUp, colorDown;
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (raised) {
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            colorUp = color.brighter();
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            colorDown = color.darker();
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            colorUp = color.darker();
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            colorDown = color.brighter();
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setColor(colorUp);
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillRect(x, y, width, 1);
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillRect(x, y + 1, 1, height);
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setColor(colorDown);
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillRect(x + width, y, 1, height);
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillRect(x + 1, y + height, width, 1);
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the text represented by byte array. This method uses the current
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * font and color for rendering.
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param bytes
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the byte array which contains the text to be drawn.
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param off
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the offset within the byte array of the text to be drawn.
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param len
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the number of bytes of text to draw.
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate where the text is to be drawn.
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate where the text is to be drawn.
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void drawBytes(byte[] bytes, int off, int len, int x, int y) {
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        drawString(new String(bytes, off, len), x, y);
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the text represented by character array. This method uses the
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * current font and color for rendering.
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param chars
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the character array.
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param off
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the offset within the character array of the text to be drawn.
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param len
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the number of characters which will be drawn.
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate where the text is to be drawn.
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate where the text is to be drawn.
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void drawChars(char[] chars, int off, int len, int x, int y) {
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        drawString(new String(chars, off, len), x, y);
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the outline of a polygon which is defined by Polygon object.
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param p
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Polygon object.
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void drawPolygon(Polygon p) {
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        drawPolygon(p.xpoints, p.ypoints, p.npoints);
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the rectangle with the specified width and length and top left
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * corner coordinates.
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the rectangle's top left corner.
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the rectangle's top left corner.
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the rectangle.
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the rectangle.
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void drawRect(int x, int y, int width, int height) {
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int[] xpoints = {
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                x, x, x + width, x + width
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        };
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int[] ypoints = {
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                y, y + height, y + height, y
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        };
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        drawPolygon(xpoints, ypoints, 4);
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Fills the highlighted outline of a rectangle.
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the rectangle's top left corner.
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the rectangle's top left corner.
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the rectangle.
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the rectangle.
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param raised
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            a boolean value that determines whether the rectangle is drawn
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            as raised or indented.
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void fill3DRect(int x, int y, int width, int height, boolean raised) {
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Note: lighter/darker colors should be used to draw 3d rect.
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // The resulting rect is (width)x(height), same as fillRect.
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Stroke and paint attributes of the Graphics2D should be reset
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // to the default values. fillRect is used instead of drawLine to
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // bypass stroke reset/set and line rasterization.
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Color color = getColor();
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Color colorUp, colorDown;
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (raised) {
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            colorUp = color.brighter();
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            colorDown = color.darker();
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            setColor(color);
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            colorUp = color.darker();
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            colorDown = color.brighter();
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            setColor(colorUp);
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        width--;
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        height--;
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillRect(x + 1, y + 1, width - 1, height - 1);
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setColor(colorUp);
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillRect(x, y, width, 1);
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillRect(x, y + 1, 1, height);
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setColor(colorDown);
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillRect(x + width, y, 1, height);
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillRect(x + 1, y + height, width, 1);
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Fills the polygon with the current color.
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param p
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Polygon object.
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void fillPolygon(Polygon p) {
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        fillPolygon(p.xpoints, p.ypoints, p.npoints);
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disposes of the Graphics.
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void finalize() {
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the bounds of the current clipping area as a rectangle and copies it
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to an existing rectangle.
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param r
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            a Rectangle object where the current clipping area bounds are
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            to be copied.
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the bounds of the current clipping area.
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Rectangle getClipBounds(Rectangle r) {
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Shape clip = getClip();
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (clip != null) {
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // TODO: Can we get shape bounds without creating Rectangle object?
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Rectangle b = clip.getBounds();
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            r.x = b.x;
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            r.y = b.y;
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            r.width = b.width;
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            r.height = b.height;
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return r;
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the bounds of the current clipping area as a rectangle.
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return a Rectangle object.
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @deprecated Use {@link #getClipBounds()}
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Deprecated
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Rectangle getClipRect() {
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getClipBounds();
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the font metrics of the current font. The font metrics object
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * contains information about the rendering of a particular font.
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the font metrics of current font.
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public FontMetrics getFontMetrics() {
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getFontMetrics(getFont());
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Determines whether or not the specified rectangle intersects the current
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * clipping area.
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the rectangle.
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the rectangle.
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the rectangle.
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the rectangle.
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true, if the specified rectangle intersects the current clipping
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         area, false otherwise.
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean hitClip(int x, int y, int width, int height) {
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // TODO: Create package private method Rectangle.intersects(int, int,
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // int, int);
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return getClipBounds().intersects(new Rectangle(x, y, width, height));
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Returns string which represents this Graphics object.
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the string which represents this Graphics object.
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // TODO: Think about string representation of Graphics.
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return "Graphics"; //$NON-NLS-1$
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    // Abstract methods
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Clears the specified rectangle. This method fills specified rectangle
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with background color.
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the rectangle.
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the rectangle.
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the rectangle.
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the rectangle.
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void clearRect(int x, int y, int width, int height);
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Intersects the current clipping area with a new rectangle. If the current
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * clipping area is not defined, the rectangle becomes a new clipping area.
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Rendering operations are only allowed within the new the clipping area.
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the rectangle for intersection.
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the rectangle for intersection.
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the rectangle for intersection.
3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the rectangle for intersection.
3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void clipRect(int x, int y, int width, int height);
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Copies the rectangle area to another area specified by a distance (dx,
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * dy) from the original rectangle's location. Positive dx and dy values
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * give a new location defined by translation to the right and down from the
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * original location, negative dx and dy values - to the left and up.
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sx
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the rectangle which will be copied.
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sy
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the rectangle which will be copied.
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the rectangle which will be copied.
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the rectangle which will be copied.
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dx
3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the horizontal distance from the source rectangle's location
3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            to the copy's location.
3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dy
3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the vertical distance from the source rectangle's location to
3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the copy's location.
3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void copyArea(int sx, int sy, int width, int height, int dx, int dy);
3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Creates a new copy of this Graphics.
3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return a new Graphics context which is a copy of this Graphics.
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Graphics create();
3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Disposes of the Graphics. This Graphics object can not be used after
4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * calling this method.
4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void dispose();
4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the arc covering the specified rectangle and using the current
4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * color. The rectangle is defined by the origin point (X, Y) and dimensions
4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * (width and height). The arc center is the the center of specified
4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * rectangle. The angle origin is 3 o'clock position, the positive angle is
4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * counted as a counter-clockwise rotation, the negative angle is counted as
4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * clockwise rotation.
4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X origin coordinate of the rectangle which scales the arc.
4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y origin coordinate of the rectangle which scales the arc.
4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the rectangle which scales the arc.
4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the rectangle which scales the arc.
4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sa
4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            start angle - the origin angle of arc.
4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param ea
4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            arc angle - the angular arc value relative to the start angle.
4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void drawArc(int x, int y, int width, int height, int sa, int ea);
4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the specified image with the defined background color. The top left
4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * corner of image will be drawn at point (x, y) in current coordinate
4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * system. The image loading process notifies the specified Image Observer.
4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This method returns true if the image has loaded, otherwise it returns
4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * false.
4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param img
4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the image which will be drawn.
4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the image top left corner.
4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the image top left corner.
4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param bgcolor
4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the background color.
4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer
4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the ImageObserver object which should be notified about image
4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            loading process.
4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true, if loading image is successful or image is null, false
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         otherwise.
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer);
4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the specified image. The top left corner of image will be drawn at
4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * point (x, y) in current coordinate system. The image loading process
4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * notifies the specified Image Observer. This method returns true if the
4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * image has loaded, otherwise it returns false.
4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param img
4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the image which will be drawn.
4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the image top left corner.
4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the image top left corner.
4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer
4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the ImageObserver object which should be notified about image
4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            loading process.
4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true, if loading image is successful or image is null, otherwise
4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         false.
4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer);
4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Scales the specified image to fit in the specified rectangle and draws it
4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with the defined background color. The top left corner of the image will
4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * be drawn at the point (x, y) in current coordinate system. The non-opaque
4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * pixels will be drawn in the background color. The image loading process
4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * notifies the specified Image Observer. This method returns true if the
4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * image has loaded, otherwise it returns false.
4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param img
4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the image which will be drawn.
4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the image's top left corner.
4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the image's top left corner.
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of rectangle which scales the image.
4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of rectangle which scales the image.
4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param bgcolor
4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the background color.
4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer
4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the ImageObserver object which should be notified about image
4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            loading process.
4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true, if loading image is successful or image is null, otherwise
4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         false.
4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean drawImage(Image img, int x, int y, int width, int height,
4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Color bgcolor, ImageObserver observer);
4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Scales the specified image to fit in the specified rectangle and draws
5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * it. The top left corner of the image will be drawn at the point (x, y) in
5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * current coordinate system. The image loading process notifies the
5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * specified Image Observer. This method returns true if the image has
5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * loaded, otherwise it returns false.
5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param img
5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the image which will be drawn.
5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the image top left corner.
5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the image top left corner.
5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of rectangle which scales the image.
5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of rectangle which scales the image.
5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer
5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the ImageObserver object which should be notified about image
5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            loading process.
5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true, if loading image is successful or image is null, otherwise
5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         false.
5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean drawImage(Image img, int x, int y, int width, int height,
5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ImageObserver observer);
5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Scales the specified area of the specified image to fit in the rectangle
5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * area defined by its corners coordinates and draws the sub-image with the
5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * specified background color. The sub-image to be drawn is defined by its
5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * top left corner coordinates (sx1, sy1) and bottom right corner
5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * coordinates (sx2, sy2) computed with respect to the origin (top left
5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * corner) of the source image. The non opaque pixels will be drawn in the
5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * background color. The image loading process notifies specified Image
5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Observer. This method returns true if the image has loaded, otherwise it
5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * returns false.
5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param img
5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the image which will be drawn.
5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dx1
5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X top left corner coordinate of the destination rectangle
5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            area.
5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dy1
5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y top left corner coordinate of the destination rectangle
5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            area.
5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dx2
5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X bottom right corner coordinate of the destination
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            rectangle area.
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dy2
5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y bottom right corner coordinate of the destination
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            rectangle area.
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sx1
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X top left corner coordinate of the area to be drawn
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            within the source image.
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sy1
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y top left corner coordinate of the area to be drawn
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            within the source image.
5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sx2
5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X bottom right corner coordinate of the area to be drawn
5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            within the source image.
5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sy2
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y bottom right corner coordinate of the area to be drawn
5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            within the source image.
5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param bgcolor
5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the background color.
5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer
5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the ImageObserver object which should be notified about image
5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            loading process.
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true, if loading image is successful or image is null, false
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         otherwise.
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1,
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer);
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Scales the specified area of the specified image to fit in the rectangle
5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * area defined by its corners coordinates and draws the sub-image. The
5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sub-image to be drawn is defined by its top left corner coordinates (sx1,
5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * sy1) and bottom right corner coordinates (sx2, sy2) computed with respect
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the origin (top left corner) of the source image. The image loading
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * process notifies specified Image Observer. This method returns true if
5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the image has loaded, otherwise it returns false.
5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param img
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the image which will be drawn.
5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dx1
5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X top left corner coordinate of the destination rectangle
5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            area.
5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dy1
5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y top left corner coordinate of the destination rectangle
5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            area.
5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dx2
5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X bottom right corner coordinate of the destination
5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            rectangle area.
5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param dy2
5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y bottom right corner coordinate of the destination
5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            rectangle area.
5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sx1
5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X top left corner coordinate of the area to be drawn
5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            within the source image.
6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sy1
6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y top left corner coordinate of the area to be drawn
6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            within the source image.
6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sx2
6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X bottom right corner coordinate of the area to be drawn
6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            within the source image.
6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sy2
6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y bottom right corner coordinate of the area to be drawn
6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            within the source image.
6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param observer
6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the ImageObserver object which should be notified about image
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            loading process.
6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return true, if loading image is successful or image is null, false
6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         otherwise.
6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1,
6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int sy1, int sx2, int sy2, ImageObserver observer);
6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws a line from the point (x1, y1) to the point (x2, y2). This method
6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * draws the line with current color which can be changed by setColor(Color
6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * c) method.
6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x1
6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the first point.
6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y1
6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the first point.
6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x2
6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the second point.
6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y2
6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the second point.
6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void drawLine(int x1, int y1, int x2, int y2);
6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the outline of an oval to fit in the rectangle defined by the given
6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * width, height, and top left corner.
6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X top left corner oval coordinate.
6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y top left corner oval coordinate.
6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the oval width.
6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the oval height.
6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void drawOval(int x, int y, int width, int height);
6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the outline of a polygon. The polygon vertices are defined by
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * points with xpoints[i], ypoints[i] as coordinates. The polygon edges are
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * the lines from the points with (xpoints[i-1], ypoints[i-1]) coordinates
6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * to the points with (xpoints[i], ypoints[i]) coordinates, for 0 < i <
6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * npoints +1.
6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param xpoints
6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the array of X coordinates of the polygon vertices.
6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param ypoints
6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the array of Y coordinates of the polygon vertices.
6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param npoints
6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the number of polygon vertices/points.
6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void drawPolygon(int[] xpoints, int[] ypoints, int npoints);
6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws a set of connected lines which are defined by the x and y
6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * coordinate arrays. The polyline is closed if coordinates of the first
6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * point are the same as coordinates of the last point.
6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param xpoints
6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the array of X point coordinates.
6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param ypoints
6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the array of Y point coordinates.
6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param npoints
6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the number of points.
6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void drawPolyline(int[] xpoints, int[] ypoints, int npoints);
6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws the outline of a rectangle with round corners.
6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the rectangle's top left corner.
6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the rectangle's top left corner.
6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the rectangle.
6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the rectangle.
6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param arcWidth
6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the arc width for the corners.
6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param arcHeight
6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the arc height for the corners.
6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth,
6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int arcHeight);
6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws a text defined by an iterator. The iterator should specify the font
7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * for every character.
7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param iterator
7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the iterator.
7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the first character.
7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the first character.
7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void drawString(AttributedCharacterIterator iterator, int x, int y);
7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Draws a text defined by a string. This method draws the text with current
7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * font and color.
7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param str
7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the string.
7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the first character.
7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the first character.
7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void drawString(String str, int x, int y);
7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Fills the arc covering the rectangle and using the current color. The
7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * rectangle is defined by the origin point (X, Y) and dimensions (width and
7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * height). The arc center is the the center of specified rectangle. The
7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * angle origin is at the 3 o'clock position, and a positive angle gives
7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * counter-clockwise rotation, a negative angle gives clockwise rotation.
7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X origin coordinate of the rectangle which scales the arc.
7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y origin coordinate of the rectangle which scales the arc.
7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the rectangle which scales the arc.
7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the rectangle which scales the arc.
7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param sa
7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            start angle - the origin angle of arc.
7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param ea
7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            arc angle - the angular arc value relative to the start angle.
7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void fillArc(int x, int y, int width, int height, int sa, int ea);
7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Fills an oval with the current color where the oval is defined by the
7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * bounding rectangle with the given width, height, and top left corner.
7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X top left corner oval coordinate.
7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y top left corner oval coordinate.
7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the oval width.
7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the oval height.
7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void fillOval(int x, int y, int width, int height);
7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Fills a polygon with the current color. The polygon vertices are defined
7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * by the points with xpoints[i], ypoints[i] as coordinates. The polygon
7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * edges are the lines from the points with (xpoints[i-1], ypoints[i-1])
7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * coordinates to the points with (xpoints[i], ypoints[i]) coordinates, for
7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * 0 < i < npoints +1.
7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param xpoints
7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the array of X coordinates of the polygon vertices.
7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param ypoints
7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the array of Y coordinates of the polygon vertices.
7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param npoints
7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the number of polygon vertices/points.
7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void fillPolygon(int[] xpoints, int[] ypoints, int npoints);
7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Fills a rectangle with the current color. The rectangle is defined by its
7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * width and length and top left corner coordinates.
7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the rectangle's top left corner.
7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the rectangle's top left corner.
7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of rectangle.
7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of rectangle.
7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void fillRect(int x, int y, int width, int height);
7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Fills a round cornered rectangle with the current color.
7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the top left corner of the bounding
7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            rectangle.
7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the top left corner of the bounding
8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            rectangle.
8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the bounding rectangle.
8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the bounding rectangle.
8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param arcWidth
8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the arc width at the corners.
8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param arcHeight
8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the arc height at the corners.
8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth,
8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int arcHeight);
8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the clipping area. <br>
8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <br>
8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return a Shape object of the clipping area or null if it is not set.
8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Shape getClip();
8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the bounds of the current clipping area as a rectangle.
8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return a Rectangle object which represents the bounds of the current
8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         clipping area.
8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Rectangle getClipBounds();
8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the current color of Graphics.
8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the current color.
8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Color getColor();
8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the current font of Graphics.
8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the current font.
8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract Font getFont();
8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Gets the font metrics of the specified font. The font metrics object
8459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * contains information about the rendering of a particular font.
8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param font
8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the specified font.
8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the font metrics for the specified font.
8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract FontMetrics getFontMetrics(Font font);
8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the new clipping area specified by rectangle. The new clipping area
8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * doesn't depend on the window's visibility. Rendering operations can't be
8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * performed outside new clipping area.
8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the new clipping rectangle.
8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the new clipping rectangle.
8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param width
8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the width of the new clipping rectangle.
8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param height
8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the height of the new clipping rectangle.
8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setClip(int x, int y, int width, int height);
8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the new clipping area to be the area specified by Shape object. The
8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * new clipping area doesn't depend on the window's visibility. Rendering
8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * operations can't be performed outside new clipping area.
8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param clip
8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Shape object which represents new clipping area.
8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setClip(Shape clip);
8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the current Graphics color. All rendering operations with this
8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Graphics will use this color.
8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param c
8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the new color.
8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setColor(Color c);
8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the current Graphics font. All rendering operations with this
8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Graphics will use this font.
8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param font
8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the new font.
8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setFont(Font font);
8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the paint mode for the Graphics which overwrites all rendering
8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * operations with the current color.
9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setPaintMode();
9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Sets the XOR mode for the Graphics which changes a pixel from the current
9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * color to the specified XOR color. <br>
9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <br>
9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param color
9099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the new XOR mode.
9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void setXORMode(Color color);
9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Translates the origin of Graphics current coordinate system to the point
9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * with X, Y coordinates in the current coordinate system. All rendering
9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * operation in this Graphics will be related to the new origin.
9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param x
9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the X coordinate of the origin.
9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param y
9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *            the Y coordinate of the origin.
9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public abstract void translate(int x, int y);
9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
925