private double DrawTimesString(XGraphics g, MeetingTimedItem item, double curX, XBrush textBrush)
        {
            var timesStr1 = $"  ({item.Start.Hours:D2}:{item.Start.Minutes:D2}";
            var timesStr2 = $":{item.Start.Seconds:D2}";
            var hyphenStr = " - ";

            var sz1 = g.MeasureString(timesStr1, _itemFont);
            var sz2 = g.MeasureString(timesStr2, _itemFont);

            g.DrawString(timesStr1, _stdTimeFont, textBrush, new XPoint(curX, _currentY));
            g.DrawString(timesStr2, _smallTimeFont, textBrush, new XPoint(curX += sz1.Width, _currentY));
            g.DrawString(hyphenStr, _stdTimeFont, textBrush, new XPoint(curX   += sz2.Width, _currentY));

            var timesStr3 = $"{item.End.Hours:D2}:{item.End.Minutes:D2}";
            var timesStr4 = $":{item.End.Seconds:D2}";

            var szHyphen = g.MeasureString(
                hyphenStr,
                _stdTimeFont,
                new XStringFormat {
                FormatFlags = XStringFormatFlags.MeasureTrailingSpaces
            });

            var sz3 = g.MeasureString(timesStr3, _stdTimeFont);
            var sz4 = g.MeasureString(timesStr4, _smallTimeFont);

            g.DrawString(timesStr3, _stdTimeFont, textBrush, new XPoint(curX   += szHyphen.Width, _currentY));
            g.DrawString(timesStr4, _smallTimeFont, textBrush, new XPoint(curX += sz3.Width, _currentY));

            g.DrawString(")", _stdTimeFont, textBrush, new XPoint(curX += sz4.Width, _currentY));

            return(curX);
        }
Exemple #2
0
        private double DrawTimesString(XGraphics g, MeetingTimedItem item, double curX, XBrush textBrush)
        {
            if (_stdTimeFont == null)
            {
                throw new InvalidOperationException(nameof(_stdTimeFont));
            }

            var          timesStr1 = $"  ({item.Start.Hours:D2}:{item.Start.Minutes:D2}";
            var          timesStr2 = $":{item.Start.Seconds:D2}";
            const string hyphenStr = " - ";

            var sz1 = g.MeasureString(timesStr1, _itemFont);
            var sz2 = g.MeasureString(timesStr2, _itemFont);

            g.DrawString(timesStr1, _stdTimeFont, textBrush, new XPoint(curX, _currentY));

            curX += sz1.Width;
            g.DrawString(timesStr2, _smallTimeFont, textBrush, new XPoint(curX, _currentY));

            curX += sz2.Width;
            g.DrawString(hyphenStr, _stdTimeFont, textBrush, new XPoint(curX, _currentY));

            var timesStr3 = $"{item.End.Hours:D2}:{item.End.Minutes:D2}";
            var timesStr4 = $":{item.End.Seconds:D2}";

            // note that MeasureString ignores trailing spaces
            // so we must explicitly calculate the size of
            // a space character.
            var szSpace        = g.MeasureString(" ", _stdTimeFont);
            var szHyphen       = g.MeasureString(hyphenStr, _stdTimeFont);
            var widthHyphenStr = szHyphen.Width + szSpace.Width;

            var sz3 = g.MeasureString(timesStr3, _stdTimeFont);
            var sz4 = g.MeasureString(timesStr4, _smallTimeFont);

            curX += widthHyphenStr;
            g.DrawString(timesStr3, _stdTimeFont, textBrush, new XPoint(curX, _currentY));

            curX += sz3.Width;
            g.DrawString(timesStr4, _smallTimeFont, textBrush, new XPoint(curX, _currentY));

            curX += sz4.Width;
            g.DrawString(")", _stdTimeFont, textBrush, new XPoint(curX, _currentY));

            if (item.AdaptedDuration != item.PlannedDuration)
            {
                var adaptedTimeStr = $"{item.AdaptedDuration.Hours:D2}:{item.AdaptedDuration.Minutes:D2}:{item.AdaptedDuration.Seconds:D2}";

                // "adapted duration = {0}"
                var adaptedStr = $" {string.Format(Resources.ADAPTED_DURATION, adaptedTimeStr)}";
                var sz         = g.MeasureString(adaptedStr, _smallTimeFont);

                curX += widthHyphenStr;
                g.DrawString(adaptedStr, _smallTimeFont, _lightGrayBrush, new XPoint(curX, _currentY));

                curX += sz.Width;
            }

            return(curX);
        }
        private void DrawItem(XGraphics g, MeetingTimedItem item)
        {
            var curX = _leftIndent;
            var desc = item.Description;

            var textBrush = _blackBrush;

            if (item.IsSongSegment)
            {
                var itemHeight = _itemTitleFont.Height;

                g.DrawRectangle(
                    _lightGrayBrush,
                    _leftMargin,
                    _currentY - itemHeight,
                    _rightX - _leftMargin,
                    _itemTitleFont.Height * 2.5);
            }

            g.DrawString(desc, _itemTitleFont, textBrush, new XPoint(curX, _currentY));
            _currentY += _itemTitleFont.Height;

            var duration = item.End - item.Start;
            var szDur    = DrawDurationString(g, duration, curX, textBrush);

            curX += szDur.Width;

            curX = DrawTimesString(g, item, curX, textBrush);

            var ts = item.AdaptedDuration == default(TimeSpan) ? item.PlannedDuration : item.AdaptedDuration;

            DrawItemOvertime(g, curX, duration, ts);

            _currentY += (3 * (double)_itemTitleFont.Height) / 2;
        }