|  | @@ -0,0 +1,46 @@
 | 
	
		
			
				|  |  | +import {GraphicalMusicSheet} from "./GraphicalMusicSheet";
 | 
	
		
			
				|  |  | +import {StaffMeasure} from "./StaffMeasure";
 | 
	
		
			
				|  |  | +import {StaffLine} from "./StaffLine";
 | 
	
		
			
				|  |  | +import {RectangleF2D} from "../../Common/DataObjects/RectangleF2D";
 | 
	
		
			
				|  |  | +import {MusicSystem} from "./MusicSystem";
 | 
	
		
			
				|  |  | +import {GraphicalMusicPage} from "./GraphicalMusicPage";
 | 
	
		
			
				|  |  | +export class MusicSheetDrawer {
 | 
	
		
			
				|  |  | +    private graphicalMusicSheet: GraphicalMusicSheet;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public drawSheet(graphicalMusicSheet: GraphicalMusicSheet): void {
 | 
	
		
			
				|  |  | +        this.graphicalMusicSheet = graphicalMusicSheet;
 | 
	
		
			
				|  |  | +        for (let idx: number = 0, len: number = this.graphicalMusicSheet.MusicPages.length; idx < len; ++idx) {
 | 
	
		
			
				|  |  | +            let page: GraphicalMusicPage = this.graphicalMusicSheet.MusicPages[idx];
 | 
	
		
			
				|  |  | +            this.drawPage(page);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    protected drawMeasure(measure: StaffMeasure): void {
 | 
	
		
			
				|  |  | +        throw new Error("not implemented");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    protected applyScreenTransformation(rectangle: RectangleF2D): RectangleF2D {
 | 
	
		
			
				|  |  | +        throw new Error("not implemented");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private drawPage(page: GraphicalMusicPage): void {
 | 
	
		
			
				|  |  | +        for (let idx: number = 0, len: number = page.MusicSystems.length; idx < len; ++idx) {
 | 
	
		
			
				|  |  | +            let system: MusicSystem = page.MusicSystems[idx];
 | 
	
		
			
				|  |  | +            this.drawMusicSystem(system);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private drawMusicSystem(musicSystem: MusicSystem): void {
 | 
	
		
			
				|  |  | +        for (let idx: number = 0, len: number = musicSystem.StaffLines.length; idx < len; ++idx) {
 | 
	
		
			
				|  |  | +            let staffLine: StaffLine = musicSystem.StaffLines[idx];
 | 
	
		
			
				|  |  | +            this.drawStaffLine(staffLine);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private drawStaffLine(staffLine: StaffLine): void {
 | 
	
		
			
				|  |  | +        for (let idx: number = 0, len: number = staffLine.Measures.length; idx < len; ++idx) {
 | 
	
		
			
				|  |  | +            let measure: StaffMeasure = staffLine.Measures[idx];
 | 
	
		
			
				|  |  | +            this.drawMeasure(measure);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |