Files
KGStudio/src/core/region/KGRegion.ts
T
2025-08-11 18:37:21 -07:00

117 lines
2.3 KiB
TypeScript

import { Expose } from 'class-transformer';
import type { Selectable } from '../../components/interfaces';
/**
* KGRegion - Base class for regions in the DAW
* Contains position and length information
*/
export class KGRegion implements Selectable {
@Expose()
protected __type: string = 'KGRegion';
@Expose()
protected id: string = '';
@Expose()
protected trackId: string = '';
@Expose()
protected trackIndex: number = 0;
@Expose()
protected name: string = '';
@Expose()
protected startFromBeat: number = 0;
@Expose()
protected length: number = 0;
@Expose()
protected selected: boolean = false;
constructor(id: string, trackId: string, trackIndex: number, name: string, startFromBeat: number = 0, length: number = 0) {
this.id = id;
this.trackId = trackId;
this.trackIndex = trackIndex;
this.name = name;
this.startFromBeat = startFromBeat;
this.length = length;
this.selected = false;
}
// Getters
public getId(): string {
return this.id;
}
public getTrackId(): string {
return this.trackId;
}
public getTrackIndex(): number {
return this.trackIndex;
}
public getName(): string {
return this.name;
}
public getStartFromBeat(): number {
return this.startFromBeat;
}
public getLength(): number {
return this.length;
}
// Setters
public setId(id: string): void {
this.id = id;
}
public setTrackId(trackId: string): void {
this.trackId = trackId;
}
public setTrackIndex(trackIndex: number): void {
this.trackIndex = trackIndex;
}
public setName(name: string): void {
this.name = name;
}
public setStartFromBeat(startFromBeat: number): void {
this.startFromBeat = startFromBeat;
}
public setLength(length: number): void {
this.length = length;
}
// interface methods
public select(): void {
this.selected = true;
}
public deselect(): void {
this.selected = false;
}
public isSelected(): boolean {
return this.selected;
}
// Type identification method for performance-optimized instanceof checks
public getRootType(): string {
return 'KGRegion';
}
// Current type identification for copy/paste operations
public getCurrentType(): string {
return 'KGRegion';
}
}