GraphicalStaffEntryLink.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import {StaffEntryLink} from "../VoiceData/StaffEntryLink";
  2. import {GraphicalStaffEntry} from "./GraphicalStaffEntry";
  3. import {GraphicalNote} from "./GraphicalNote";
  4. export class GraphicalStaffEntryLink {
  5. private staffEntryLink: StaffEntryLink;
  6. private graphicalLinkedStaffEntries: List<GraphicalStaffEntry> = new List<GraphicalStaffEntry>();
  7. constructor(staffEntryLink: StaffEntryLink) {
  8. this.staffEntryLink = staffEntryLink;
  9. this.initialize();
  10. }
  11. public get GetStaffEntryLink(): StaffEntryLink {
  12. return this.staffEntryLink;
  13. }
  14. public get GraphicalLinkedStaffEntries(): List<GraphicalStaffEntry> {
  15. return this.graphicalLinkedStaffEntries;
  16. }
  17. public set GraphicalLinkedStaffEntries(value: List<GraphicalStaffEntry>) {
  18. this.graphicalLinkedStaffEntries = value;
  19. }
  20. public isFilled(): boolean {
  21. for (var i: number = 0; i < this.graphicalLinkedStaffEntries.Count; i++) {
  22. if (this.graphicalLinkedStaffEntries[i] == null)
  23. return false;
  24. }
  25. return true;
  26. }
  27. public getLinkedStaffEntriesGraphicalNotes(graphicalStaffEntry: GraphicalStaffEntry): List<GraphicalNote> {
  28. if (this.graphicalLinkedStaffEntries.Contains(graphicalStaffEntry)) {
  29. var notes: List<GraphicalNote> = new List<GraphicalNote>();
  30. for (var idx: number = 0, len = this.graphicalLinkedStaffEntries.Count; idx < len; ++idx) {
  31. var graphicalLinkedStaffEntry: GraphicalStaffEntry = this.graphicalLinkedStaffEntries[idx];
  32. for (var idx2: number = 0, len2 = graphicalLinkedStaffEntry.Notes.Count; idx2 < len2; ++idx2) {
  33. var graphicalNotes: List<GraphicalNote> = graphicalLinkedStaffEntry.Notes[idx2];
  34. for (var idx3: number = 0, len3 = graphicalNotes.Count; idx3 < len3; ++idx3) {
  35. var graphicalNote: GraphicalNote = graphicalNotes[idx3];
  36. if (graphicalNote.SourceNote.ParentStaffEntry.Link != null && graphicalNote.SourceNote.ParentVoiceEntry == this.staffEntryLink.GetVoiceEntry)
  37. notes.Add(graphicalNote);
  38. }
  39. }
  40. }
  41. return notes;
  42. }
  43. return null;
  44. }
  45. private initialize(): void {
  46. for (var idx: number = 0, len = this.staffEntryLink.LinkStaffEntries.Count; idx < len; ++idx) {
  47. this.graphicalLinkedStaffEntries.Add(null);
  48. }
  49. }
  50. }