dev@359: /** dev@359: * Created by lucas on 30/05/2017. dev@359: */ dev@366: import { dev@366: ChangeDetectionStrategy, dev@366: Component, dev@402: Input, dev@402: ViewChild dev@378: } from '@angular/core'; dev@378: import {OnSeekHandler} from '../../playhead/PlayHeadHelpers'; dev@396: import {VectorFeature} from 'piper/HigherLevelUtilities'; dev@402: import { dev@488: PlayheadManager, dev@488: PlayheadRenderer, dev@402: VerticallyBounded, dev@402: VerticalScaleRenderer, dev@405: VerticalValueInspectorRenderer, dev@405: WavesComponent dev@402: } from '../waves-base.component'; dev@402: import {TracksComponent} from '../tracks/tracks.components'; dev@359: dev@359: @Component({ dev@359: selector: 'ugly-curve', dev@402: template: ` dev@390: `, dev@402: changeDetection: ChangeDetectionStrategy.OnPush, dev@402: providers: [ dev@402: {provide: VerticallyBounded, useExisting: CurveComponent }, dev@402: {provide: VerticalScaleRenderer, useExisting: CurveComponent}, dev@405: {provide: VerticalValueInspectorRenderer, useExisting: CurveComponent}, dev@488: {provide: PlayheadRenderer, useExisting: CurveComponent }, dev@405: {provide: WavesComponent, useExisting: CurveComponent} dev@402: ] dev@359: }) dev@488: export class CurveComponent dev@488: implements VerticalValueInspectorRenderer, PlayheadRenderer { dev@488: dev@376: @Input() timeline: Timeline; // TODO refactor WaveComponents to have own Timeline, sharing a TimeContext dev@372: @Input() onSeek: OnSeekHandler; dev@372: @Input() width: number; dev@396: @Input() curve: VectorFeature; dev@368: @Input() colour: string; dev@412: @Input() duration: number; dev@402: @ViewChild(TracksComponent) tracksComponent: TracksComponent; dev@402: dev@488: renderPlayhead(initialTime: number, colour: string): PlayheadManager { dev@488: return this.tracksComponent.renderPlayhead(initialTime, colour); dev@488: } dev@488: dev@402: renderInspector(range: [number, number], unit?: string): void { dev@402: this.tracksComponent.renderInspector(range, unit); dev@402: } dev@402: dev@402: get updatePosition(): OnSeekHandler { dev@402: return this.tracksComponent.updatePosition; dev@402: } dev@402: dev@402: renderScale(range: [number, number]): void { dev@402: this.tracksComponent.renderScale(range); dev@402: } dev@402: dev@402: get range(): [number, number] { dev@402: return this.tracksComponent.range; dev@402: } dev@359: }