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; 207979388d4f7d5d9dbfcf7e1cc4709f8088c034aeChris Craikimport android.graphics.Outline; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Paint; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.RectF; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Defines a rectangle shape. 26446d988b44b6e492e4cfc36be00a1e1aeaaf8c20Alan Viverette * <p> 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The rectangle can be drawn to a Canvas with its own draw() method, 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * but more graphical control is available if you instead pass 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the RectShape to a {@link android.graphics.drawable.ShapeDrawable}. 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class RectShape extends Shape { 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private RectF mRect = new RectF(); 3331ba192dd201df2cad96a8c503f730130ab0d80fChris Craik 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RectShape() {} 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void draw(Canvas canvas, Paint paint) { 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project canvas.drawRect(mRect, paint); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 4231ba192dd201df2cad96a8c503f730130ab0d80fChris Craik public void getOutline(Outline outline) { 437979388d4f7d5d9dbfcf7e1cc4709f8088c034aeChris Craik final RectF rect = rect(); 447979388d4f7d5d9dbfcf7e1cc4709f8088c034aeChris Craik outline.setRect((int) Math.ceil(rect.left), (int) Math.ceil(rect.top), 457979388d4f7d5d9dbfcf7e1cc4709f8088c034aeChris Craik (int) Math.floor(rect.right), (int) Math.floor(rect.bottom)); 467979388d4f7d5d9dbfcf7e1cc4709f8088c034aeChris Craik } 477979388d4f7d5d9dbfcf7e1cc4709f8088c034aeChris Craik 487979388d4f7d5d9dbfcf7e1cc4709f8088c034aeChris Craik @Override 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onResize(float width, float height) { 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRect.set(0, 0, width, height); 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 527979388d4f7d5d9dbfcf7e1cc4709f8088c034aeChris Craik 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the RectF that defines this rectangle's bounds. 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected final RectF rect() { 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mRect; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RectShape clone() throws CloneNotSupportedException { 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final RectShape shape = (RectShape) super.clone(); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project shape.mRect = new RectF(mRect); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return shape; 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 67