Ejemplo n.º 1
0
        public override void CreateMetrics(Graphics graphics)
        {
            double rightEdge = (ThickStrokeWidth / 2F) + DoubleBarPadding + ThinStrokeWidth;
            double leftEdge  = -rightEdge;

            Metrics = new BRMetrics(leftEdge, rightEdge, CSSObjectClass.thinBarline, CSSObjectClass.thickBarline);

            SetCommonMetrics(graphics, DrawObjects);

            foreach (DrawObject drawObject in DrawObjects)
            {
                if (drawObject is FramedRegionStartText frst)
                {
                    FramedRegionStartTextMetrics = new FramedRegionInfoMetrics(graphics, frst.Texts, frst.FrameInfo, Gap);
                    if (RegionFrameConnectorMetrics == null)
                    {
                        RegionFrameConnectorMetrics = new RegionFrameConnectorMetrics(Metrics.OriginX, frst.FrameInfo.Bottom, Metrics.Top);
                    }
                }
                if (drawObject is FramedRegionEndText fret)
                {
                    FramedRegionEndTextMetrics = new FramedRegionInfoMetrics(graphics, fret.Texts, fret.FrameInfo, Gap);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// This function writes the staff name, barnumber and region info to the SVG file (if they are present).
        /// The barline itself is drawn when the system (and staff edges) is complete.
        /// </summary>
        public override void WriteDrawObjectsSVG(SvgWriter w)
        {
            base.WriteDrawObjectsSVG(w);

            FramedRegionInfoMetrics upperBox = null;

            if (FramedRegionEndTextMetrics != null)
            {
                upperBox = FramedRegionEndTextMetrics;
            }
            if (FramedRegionStartTextMetrics != null)
            {
                upperBox = (upperBox != null && upperBox.Bottom < FramedRegionStartTextMetrics.Bottom) ? upperBox : FramedRegionStartTextMetrics;
            }
            if (upperBox != null)
            {
                DrawRegionFrameConnector(w, upperBox);
            }

            if (FramedRegionEndTextMetrics != null)
            {
                FramedRegionEndTextMetrics.WriteSVG(w);
            }

            if (FramedRegionStartTextMetrics != null)
            {
                FramedRegionStartTextMetrics.WriteSVG(w);
            }
        }
Ejemplo n.º 3
0
        protected virtual void DrawRegionFrameConnector(SvgWriter w, FramedRegionInfoMetrics framedRegionInfoMetrics)
        {
            double x      = this.Metrics.OriginX;
            double top    = framedRegionInfoMetrics.Bottom;
            double bottom = this.Metrics.Top;

            w.SvgLine(CSSObjectClass.regionFrameConnector, x, top, x, bottom);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Moves this FramedRegionInfoMetrics object above the argument,
        /// but only if they overlap horizontally.
        /// </summary>
        /// <param name="framedRegionInfoMetrics"></param>
        internal void MoveAbove(FramedRegionInfoMetrics framedRegionInfoMetrics)
        {
            double verticalOverlap = this.OverlapHeight(framedRegionInfoMetrics, -1);

            if (verticalOverlap > 0)
            {
                this.Move(0, Bottom - (verticalOverlap - (2 * Gap)));
            }
        }
Ejemplo n.º 5
0
        // The following functions are inherited from EndRegionBarline.
        // public override void WriteDrawObjectsSVG(SvgWriter w)
        // public override void AddMetricsToEdge(HorizontalEdge horizontalEdge)
        // internal override void AlignFramedTextsXY(List<NoteObject> fixedNoteObjects)
        // internal override void AddAncilliaryMetricsTo(StaffMetrics staffMetrics)

        public override void CreateMetrics(Graphics graphics)
        {
            double leftEdge  = -((ThickStrokeWidth / 2F) + DoubleBarPadding + NormalStrokeWidth);
            double rightEdge = (ThickStrokeWidth / 2F);

            Metrics = new BRMetrics(leftEdge, rightEdge, CSSObjectClass.thinBarline, CSSObjectClass.thickBarline);

            foreach (DrawObject drawObject in DrawObjects)
            {
                if (drawObject is FramedRegionEndText frst)
                {
                    FramedRegionEndTextMetrics = new FramedRegionInfoMetrics(graphics, frst.Texts, frst.FrameInfo, Gap);
                    break;
                }
            }
        }
Ejemplo n.º 6
0
 protected void MoveBarnumberAboveRegionBox(BarnumberMetrics barnumberMetrics, FramedRegionInfoMetrics regionInfoMetrics)
 {
     if (barnumberMetrics != null && regionInfoMetrics != null)
     {
         double padding = Gap * 1.5;
         double shift   = barnumberMetrics.Bottom - regionInfoMetrics.Top + padding;
         barnumberMetrics.Move(0, -shift);
     }
 }