/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.traceview; import java.text.DecimalFormat; // This should be a singleton. public class TraceUnits { private TimeScale mTimeScale = TimeScale.MicroSeconds; private double mScale = 1.0; DecimalFormat mFormatter = new DecimalFormat(); public double getScaledValue(long value) { return value * mScale; } public double getScaledValue(double value) { return value * mScale; } public String valueOf(long value) { return valueOf((double) value); } public String valueOf(double value) { String pattern; double scaled = value * mScale; if ((int) scaled == scaled) pattern = "###,###"; else pattern = "###,###.###"; mFormatter.applyPattern(pattern); return mFormatter.format(scaled); } public String labelledString(double value) { String units = label(); String num = valueOf(value); return String.format("%s: %s", units, num); } public String labelledString(long value) { return labelledString((double) value); } public String label() { if (mScale == 1.0) return "usec"; if (mScale == 0.001) return "msec"; if (mScale == 0.000001) return "sec"; return null; } public void setTimeScale(TimeScale val) { mTimeScale = val; switch (val) { case Seconds: mScale = 0.000001; break; case MilliSeconds: mScale = 0.001; break; case MicroSeconds: mScale = 1.0; break; } } public TimeScale getTimeScale() { return mTimeScale; } public enum TimeScale { Seconds, MilliSeconds, MicroSeconds }; }