blob: 20b462a9dfbafc9af7d43b7afb8a46df3c252c74 [file] [log] [blame]
// Copyright (C) 2024 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use size 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.
import {time} from '../base/time';
export interface NoteManager {
getNote(id: string): Note | SpanNote | undefined;
// Adds a note (a flag on the timeline marker). Returns the id.
addNote(args: AddNoteArgs): string;
// Adds a span note (a flagged range). Returns the id.
addSpanNote(args: AddSpanNoteArgs): string;
}
export interface AddNoteArgs {
readonly timestamp: time;
readonly color?: string; // Default: randomColor().
readonly text?: string; // Default: ''.
// The id is optional. If present, allows overriding a previosly created note.
// If not present it will be auto-assigned with a montonic counter.
readonly id?: string;
}
export interface Note extends AddNoteArgs {
readonly noteType: 'DEFAULT';
readonly id: string;
readonly color: string;
readonly text: string;
}
export interface AddSpanNoteArgs {
readonly start: time;
readonly end: time;
readonly color?: string; // Default: randomColor().
readonly text?: string; // Default: ''.
// The id is optional. If present, allows overriding a previosly created note.
// If not present it will be auto-assigned with a montonic counter.
readonly id?: string;
}
export interface SpanNote extends AddSpanNoteArgs {
readonly noteType: 'SPAN';
readonly id: string;
readonly color: string;
readonly text: string;
}