blob: 20938f50ff90b2c56435910201565bb04beed040 [file] [log] [blame]
/*
* 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
};
}