blob: 73c068d5048d7362e747c99f8c416a1d42db6a23 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2013, 2014 Ericsson, École Polytechnique de Montréal
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Bernd Hufmann - Initial API and implementation
* Geneviève Bastien - Moved some methods to ITmfTimeProvider
**********************************************************************/
package org.eclipse.tracecompass.tmf.ui.viewers.xycharts;
import org.eclipse.tracecompass.tmf.ui.viewers.ITmfTimeProvider;
/**
* Interface adding some methods specific for SWT charts to the base time
* provider interface. Typically, the time will be shown on the x-axis.
*
* @author Bernd Hufmann
*/
public interface ITmfChartTimeProvider extends ITmfTimeProvider {
/**
* Returns a constant time offset that is used to normalize the time values
* to a range of 0..53 bits to avoid loss of precision when converting long
* <-> double.
*
* Time values are stored in TMF as long values. The SWT chart library uses
* values of type double (on x and y axis). To avoid loss of precision when
* converting long <-> double the values need to fit within 53 bits.
*
* Subtract the offset when using time values provided externally for
* internal usage in SWT chart. Add the offset when using time values
* provided by SWT chart (e.g. for display purposes) and when broadcasting
* them externally (e.g. time synchronization signals).
*
* For example the offset can be calculated as the time of the first time
* value in the current time range to be displayed in the chart. Add +1 to
* avoid 0 when using logarithmic scale.
*
* t0=10000, t2=20000, tn=N -> timeOffset=t0-1 -> t0'=1, t1'=10001,
* tn'=N-timeOffset
*
* where t0 ... tn are times used externally and t0' ... tn' are times used
* internally by the SWT chart.
*
* @return the time offset
*/
long getTimeOffset();
}