import { PointF2D } from "../../Common/DataObjects/PointF2D" ; import { StaffLine } from "./StaffLine" ; import { OutlineAndFillStyleEnum } from "./DrawingEnums" ; import { GraphicalLine } from "./GraphicalLine" ; import { MusicSystem } from "./MusicSystem" ; import { GraphicalObject } from "./GraphicalObject" ; import { BoundingBox } from "./BoundingBox" ; import { CollectionUtil } from "../../Util/CollectionUtil" ; export class SelectionStartSymbol extends GraphicalObject { constructor ( system , xPosition ) { super ( ) ; const xCoordinate = xPosition ; const yCoordinate = system . PositionAndShape . AbsolutePosition . y ; const lineThickness = 0.4 ; const height = CollectionUtil . last ( system . StaffLines ) . PositionAndShape . RelativePosition . y + 4 ; this . verticalLine = new GraphicalLine ( new PointF2D ( xCoordinate , yCoordinate ) , new PointF2D ( xCoordinate , yCoordinate + height ) , lineThickness , OutlineAndFillStyleEnum . SelectionSymbol ) ; for ( let idx = 0 , len = system . StaffLines . length ; idx < len ; ++ idx ) { const staffLine = system . StaffLines [ idx ] ; const anchor = new PointF2D ( xCoordinate , yCoordinate + staffLine . PositionAndShape . RelativePosition . y ) ; const arrowPoints = new Array ( 7 ) ; arrowPoints [ 0 ] . x = anchor . x + 4 ; arrowPoints [ 0 ] . y = anchor . y + 2 ; arrowPoints [ 1 ] . x = anchor . x + 2.5 ; arrowPoints [ 1 ] . y = anchor . y + 0.5 ; arrowPoints [ 2 ] . x = anchor . x + 2.5 ; arrowPoints [ 2 ] . y = anchor . y + 1.3 ; arrowPoints [ 3 ] . x = anchor . x + 1 ; arrowPoints [ 3 ] . y = anchor . y + 1.3 ; arrowPoints [ 4 ] . x = anchor . x + 1 ; arrowPoints [ 4 ] . y = anchor . y + 2.7 ; arrowPoints [ 5 ] . x = anchor . x + 2.5 ; arrowPoints [ 5 ] . y = anchor . y + 2.7 ; arrowPoints [ 6 ] . x = anchor . x + 2.5 ; arrowPoints [ 6 ] . y = anchor . y + 3.5 ; this . arrows . push ( arrowPoints ) ; } this . boundingBox = new BoundingBox ( this ) ; this . boundingBox . AbsolutePosition = new PointF2D ( xCoordinate , yCoordinate ) ; this . boundingBox . BorderLeft = - lineThickness ; this . boundingBox . BorderRight = 4 ; this . boundingBox . BorderBottom = height ; } public verticalLine : GraphicalLine ; public arrows : PointF2D [ ] [ ] ; }