annotate src/app/visualisations/curve/curve.component.ts @ 412:89674c064cda

Set duration on the LayerTimeContext to the length of the underlying audio file.
author Lucas Thompson <dev@lucas.im>
date Mon, 05 Jun 2017 14:25:54 +0100
parents 3ace7672638b
children 64ed45a0bad3
rev   line source
dev@359 1 /**
dev@359 2 * Created by lucas on 30/05/2017.
dev@359 3 */
dev@366 4 import {
dev@366 5 ChangeDetectionStrategy,
dev@366 6 Component,
dev@402 7 Input,
dev@402 8 ViewChild
dev@378 9 } from '@angular/core';
dev@378 10 import {OnSeekHandler} from '../../playhead/PlayHeadHelpers';
dev@396 11 import {VectorFeature} from 'piper/HigherLevelUtilities';
dev@402 12 import {
dev@402 13 VerticallyBounded,
dev@402 14 VerticalScaleRenderer,
dev@405 15 VerticalValueInspectorRenderer,
dev@405 16 WavesComponent
dev@402 17 } from '../waves-base.component';
dev@402 18 import {TracksComponent} from '../tracks/tracks.components';
dev@359 19
dev@359 20 @Component({
dev@359 21 selector: 'ugly-curve',
dev@402 22 template: `
dev@390 23 <ugly-tracks
dev@390 24 [timeline]="timeline"
dev@390 25 [width]="width"
dev@390 26 [onSeek]="onSeek"
dev@390 27 [colour]="colour"
dev@396 28 [tracks]="[curve]"
dev@412 29 [duration]="duration"
dev@402 30 ></ugly-tracks>`,
dev@402 31 changeDetection: ChangeDetectionStrategy.OnPush,
dev@402 32 providers: [
dev@402 33 {provide: VerticallyBounded, useExisting: CurveComponent },
dev@402 34 {provide: VerticalScaleRenderer, useExisting: CurveComponent},
dev@405 35 {provide: VerticalValueInspectorRenderer, useExisting: CurveComponent},
dev@405 36 {provide: WavesComponent, useExisting: CurveComponent}
dev@402 37 ]
dev@359 38 })
dev@402 39 export class CurveComponent implements VerticalValueInspectorRenderer {
dev@376 40 @Input() timeline: Timeline; // TODO refactor WaveComponents to have own Timeline, sharing a TimeContext
dev@372 41 @Input() onSeek: OnSeekHandler;
dev@372 42 @Input() width: number;
dev@396 43 @Input() curve: VectorFeature;
dev@368 44 @Input() colour: string;
dev@412 45 @Input() duration: number;
dev@402 46 @ViewChild(TracksComponent) tracksComponent: TracksComponent;
dev@402 47
dev@402 48 renderInspector(range: [number, number], unit?: string): void {
dev@402 49 this.tracksComponent.renderInspector(range, unit);
dev@402 50 }
dev@402 51
dev@402 52 get updatePosition(): OnSeekHandler {
dev@402 53 return this.tracksComponent.updatePosition;
dev@402 54 }
dev@402 55
dev@402 56 renderScale(range: [number, number]): void {
dev@402 57 this.tracksComponent.renderScale(range);
dev@402 58 }
dev@402 59
dev@402 60 get range(): [number, number] {
dev@402 61 return this.tracksComponent.range;
dev@402 62 }
dev@359 63 }