File size: 867 Bytes
f23825d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { IPoint } from "../geometry"

export class ArrangeCoordTransform {
  private _pixelsPerTick: number
  private _pixelsPerTrack: number

  constructor(pixelsPerTick: number, pixelsPerTrack: number) {
    this._pixelsPerTick = pixelsPerTick
    this._pixelsPerTrack = pixelsPerTrack
  }

  getX(tick: number): number {
    return tick * this._pixelsPerTick
  }

  getY(trackIndex: number): number {
    return trackIndex * this._pixelsPerTrack
  }

  getTick(x: number): number {
    return x / this._pixelsPerTick
  }

  getTrackIndex(y: number): number {
    return y / this._pixelsPerTrack
  }

  getArrangePoint(point: IPoint) {
    return {
      tick: this.getTick(point.x),
      trackIndex: this.getTrackIndex(point.y),
    }
  }

  get pixelsPerTick() {
    return this._pixelsPerTick
  }

  get pixelsPerTrack() {
    return this._pixelsPerTrack
  }
}