1// Copyright (C) 2024 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15import {HighPrecisionTimeSpan} from '../base/high_precision_time_span'; 16import {time} from '../base/time'; 17 18export enum TimestampFormat { 19 Timecode = 'timecode', 20 TraceNs = 'traceNs', 21 TraceNsLocale = 'traceNsLocale', 22 Seconds = 'seconds', 23 Milliseconds = 'milliseconds', 24 Microseconds = 'microseconds', 25 UTC = 'utc', 26 TraceTz = 'traceTz', 27} 28 29export enum DurationPrecision { 30 Full = 'full', 31 HumanReadable = 'human_readable', 32} 33 34export interface Timeline { 35 // Bring a timestamp into view. 36 panToTimestamp(ts: time): void; 37 38 // Move the viewport. 39 setViewportTime(start: time, end: time): void; 40 41 // A span representing the current viewport location. 42 readonly visibleWindow: HighPrecisionTimeSpan; 43 44 // Render a vertical line on the timeline at this timestamp. 45 hoverCursorTimestamp: time | undefined; 46 47 hoveredNoteTimestamp: time | undefined; 48 highlightedSliceId: number | undefined; 49 50 hoveredUtid: number | undefined; 51 hoveredPid: number | undefined; 52 53 // Get the current timestamp offset. 54 timestampOffset(): time; 55 56 // Get a time in the current domain as specified by timestampOffset. 57 toDomainTime(ts: time): time; 58 59 // These control how timestamps and durations are formatted throughout the UI 60 timestampFormat: TimestampFormat; 61 durationPrecision: DurationPrecision; 62} 63