1eec1f9a839e8c58a96f16f61e998891433e0eb6bTony/* 2eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * Copyright (C) 2016 The Android Open Source Project 3eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * 4eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * Licensed under the Apache License, Version 2.0 (the "License"); 5eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * you may not use this file except in compliance with the License. 6eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * You may obtain a copy of the License at 7eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * 8eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * http://www.apache.org/licenses/LICENSE-2.0 9eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * 10eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * Unless required by applicable law or agreed to in writing, software 11eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * distributed under the License is distributed on an "AS IS" BASIS, 12eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * See the License for the specific language governing permissions and 14eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * limitations under the License. 15eec1f9a839e8c58a96f16f61e998891433e0eb6bTony */ 16eec1f9a839e8c58a96f16f61e998891433e0eb6bTony 17eec1f9a839e8c58a96f16f61e998891433e0eb6bTonypackage com.android.launcher3.graphics; 18eec1f9a839e8c58a96f16f61e998891433e0eb6bTony 19eec1f9a839e8c58a96f16f61e998891433e0eb6bTonyimport android.graphics.Outline; 20eec1f9a839e8c58a96f16f61e998891433e0eb6bTonyimport android.graphics.Path; 21eec1f9a839e8c58a96f16f61e998891433e0eb6bTonyimport android.graphics.drawable.shapes.PathShape; 22eec1f9a839e8c58a96f16f61e998891433e0eb6bTonyimport android.support.annotation.NonNull; 23eec1f9a839e8c58a96f16f61e998891433e0eb6bTony 24eec1f9a839e8c58a96f16f61e998891433e0eb6bTony/** 25eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * Wrapper around {@link android.graphics.drawable.shapes.PathShape} 26eec1f9a839e8c58a96f16f61e998891433e0eb6bTony * that creates a shape with a triangular path (pointing up or down). 27eec1f9a839e8c58a96f16f61e998891433e0eb6bTony */ 28eec1f9a839e8c58a96f16f61e998891433e0eb6bTonypublic class TriangleShape extends PathShape { 29eec1f9a839e8c58a96f16f61e998891433e0eb6bTony private Path mTriangularPath; 30eec1f9a839e8c58a96f16f61e998891433e0eb6bTony 31eec1f9a839e8c58a96f16f61e998891433e0eb6bTony public TriangleShape(Path path, float stdWidth, float stdHeight) { 32eec1f9a839e8c58a96f16f61e998891433e0eb6bTony super(path, stdWidth, stdHeight); 33eec1f9a839e8c58a96f16f61e998891433e0eb6bTony mTriangularPath = path; 34eec1f9a839e8c58a96f16f61e998891433e0eb6bTony } 35eec1f9a839e8c58a96f16f61e998891433e0eb6bTony 36eec1f9a839e8c58a96f16f61e998891433e0eb6bTony public static TriangleShape create(float width, float height, boolean isPointingUp) { 37eec1f9a839e8c58a96f16f61e998891433e0eb6bTony Path triangularPath = new Path(); 38eec1f9a839e8c58a96f16f61e998891433e0eb6bTony if (isPointingUp) { 39eec1f9a839e8c58a96f16f61e998891433e0eb6bTony triangularPath.moveTo(0, height); 40eec1f9a839e8c58a96f16f61e998891433e0eb6bTony triangularPath.lineTo(width, height); 41eec1f9a839e8c58a96f16f61e998891433e0eb6bTony triangularPath.lineTo(width / 2, 0); 42eec1f9a839e8c58a96f16f61e998891433e0eb6bTony triangularPath.close(); 43eec1f9a839e8c58a96f16f61e998891433e0eb6bTony } else { 44eec1f9a839e8c58a96f16f61e998891433e0eb6bTony triangularPath.moveTo(0, 0); 45eec1f9a839e8c58a96f16f61e998891433e0eb6bTony triangularPath.lineTo(width / 2, height); 46eec1f9a839e8c58a96f16f61e998891433e0eb6bTony triangularPath.lineTo(width, 0); 47eec1f9a839e8c58a96f16f61e998891433e0eb6bTony triangularPath.close(); 48eec1f9a839e8c58a96f16f61e998891433e0eb6bTony } 49eec1f9a839e8c58a96f16f61e998891433e0eb6bTony return new TriangleShape(triangularPath, width, height); 50eec1f9a839e8c58a96f16f61e998891433e0eb6bTony } 51eec1f9a839e8c58a96f16f61e998891433e0eb6bTony 52eec1f9a839e8c58a96f16f61e998891433e0eb6bTony @Override 53eec1f9a839e8c58a96f16f61e998891433e0eb6bTony public void getOutline(@NonNull Outline outline) { 54eec1f9a839e8c58a96f16f61e998891433e0eb6bTony outline.setConvexPath(mTriangularPath); 55eec1f9a839e8c58a96f16f61e998891433e0eb6bTony } 56eec1f9a839e8c58a96f16f61e998891433e0eb6bTony} 57