19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.graphics.drawable.shapes;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Canvas;
2024bf21b89469a7175d66add2affd6fe765d3a075Alan Viveretteimport android.graphics.Outline;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Paint;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
24446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette * Creates an arc shape. The arc shape starts at a specified angle and sweeps
25446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette * clockwise, drawing slices of pie.
26446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette * <p>
27446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette * The arc can be drawn to a {@link Canvas} with its own
28446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette * {@link #draw(Canvas, Paint)} method, but more graphical control is available
29446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette * if you instead pass the ArcShape to a
30446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette * {@link android.graphics.drawable.ShapeDrawable}.
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ArcShape extends RectShape {
33446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    private final float mStartAngle;
34446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    private final float mSweepAngle;
35446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
37446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette     * ArcShape constructor.
38446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette     *
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param startAngle the angle (in degrees) where the arc begins
40446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette     * @param sweepAngle the sweep angle (in degrees). Anything equal to or
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *                   greater than 360 results in a complete circle/oval.
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ArcShape(float startAngle, float sweepAngle) {
44446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette        mStartAngle = startAngle;
45446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette        mSweepAngle = sweepAngle;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
47446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette
48446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    /**
49446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette     * @return the angle (in degrees) where the arc begins
50446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette     */
51446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    public final float getStartAngle() {
52446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette        return mStartAngle;
53446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    }
54446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette
55446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    /**
56446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette     * @return the sweep angle (in degrees)
57446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette     */
58446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    public final float getSweepAngle() {
59446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette        return mSweepAngle;
60446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    }
61446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void draw(Canvas canvas, Paint paint) {
64446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette        canvas.drawArc(rect(), mStartAngle, mSweepAngle, true, paint);
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6624bf21b89469a7175d66add2affd6fe765d3a075Alan Viverette
6724bf21b89469a7175d66add2affd6fe765d3a075Alan Viverette    @Override
6824bf21b89469a7175d66add2affd6fe765d3a075Alan Viverette    public void getOutline(Outline outline) {
6924bf21b89469a7175d66add2affd6fe765d3a075Alan Viverette        // Since we don't support concave outlines, arc shape does not attempt
7024bf21b89469a7175d66add2affd6fe765d3a075Alan Viverette        // to provide an outline.
7124bf21b89469a7175d66add2affd6fe765d3a075Alan Viverette    }
72446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette
73446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    @Override
74446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    public ArcShape clone() throws CloneNotSupportedException {
75446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette        return (ArcShape) super.clone();
76446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette    }
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
79