1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/* 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Copyright (C) 2007 The Android Open Source Project 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * you may not use this file except in compliance with the License. 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * You may obtain a copy of the License at 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Unless required by applicable law or agreed to in writing, software 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * See the License for the specific language governing permissions and 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * limitations under the License. 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipackage android.util; 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.layoutlib.bridge.impl.DelegateManager; 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport com.android.tools.layoutlib.annotations.LayoutlibDelegate; 21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/** 23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Delegate implementing the native methods of android.util.FloatMath 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Through the layoutlib_create tool, the original native methods of FloatMath have been replaced 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * by calls to methods of the same name in this delegate class. 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Because it's a stateless class to start with, there's no need to keep a {@link DelegateManager} 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * around to map int to instance of the delegate. 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/*package*/ final class FloatMath_Delegate { 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** Prevents instantiation. */ 35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski private FloatMath_Delegate() {} 36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Returns the float conversion of the most positive (i.e. closest to 39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * positive infinity) integer value which is less than the argument. 40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param value to be converted 42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return the floor of value 43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @LayoutlibDelegate 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /*package*/ static float floor(float value) { 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return (float)Math.floor(value); 47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Returns the float conversion of the most negative (i.e. closest to 51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * negative infinity) integer value which is greater than the argument. 52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param value to be converted 54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return the ceiling of value 55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @LayoutlibDelegate 57282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /*package*/ static float ceil(float value) { 58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return (float)Math.ceil(value); 59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Returns the closest float approximation of the sine of the argument. 63282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 64282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param angle to compute the cosine of, in radians 65282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return the sine of angle 66282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @LayoutlibDelegate 68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /*package*/ static float sin(float angle) { 69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return (float)Math.sin(angle); 70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Returns the closest float approximation of the cosine of the argument. 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param angle to compute the cosine of, in radians 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return the cosine of angle 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @LayoutlibDelegate 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /*package*/ static float cos(float angle) { 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return (float)Math.cos(angle); 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Returns the closest float approximation of the square root of the 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * argument. 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param value to compute sqrt of 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return the square root of value 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @LayoutlibDelegate 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /*package*/ static float sqrt(float value) { 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return (float)Math.sqrt(value); 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Returns the closest float approximation of the raising "e" to the power 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * of the argument. 98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 99282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param value to compute the exponential of 100282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return the exponential of value 101282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 102282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @LayoutlibDelegate 103282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /*package*/ static float exp(float value) { 104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return (float)Math.exp(value); 105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Returns the closest float approximation of the result of raising {@code 109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * x} to the power of {@code y}. 110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 111282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param x the base of the operation. 112282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param y the exponent of the operation. 113282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return {@code x} to the power of {@code y}. 114282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 115282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @LayoutlibDelegate 116282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /*package*/ static float pow(float x, float y) { 117282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return (float)Math.pow(x, y); 118282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 119282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 120282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /** 121282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Returns {@code sqrt(}<i>{@code x}</i><sup>{@code 2}</sup>{@code +} <i> 122282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * {@code y}</i><sup>{@code 2}</sup>{@code )}. 123282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * 124282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param x a float number 125282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @param y a float number 126282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * @return the hypotenuse 127282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */ 128282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski @LayoutlibDelegate 129282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /*package*/ static float hypot(float x, float y) { 130282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return (float)Math.sqrt(x*x + y*y); 131282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 132282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 133