Beispiel #1
0
        public override void PrintBy(Printing.IPrinter printer)
        {
            Printing.PrinterMemento restoreStart = null;
            bool canAddEmphasisDots = CanAddEmphasisDots();

            if (canAddEmphasisDots)
            {
                restoreStart = printer.StorePositionAndFont();
            }

            _decoratee.PrintBy(printer);

            if (!canAddEmphasisDots)
            {
                return;
            }

            var restoreEnd = printer.StorePositionAndFont();

            {
                restoreStart();
                var baseFontSize = printer.FontSize;
                printer.LineFeed(-baseFontSize / 2 - correction);
                printer.Space(_decoratee.Offset);
                printer.PrintJapaneseLetter(sesami, baseFontSize);
            }
            restoreEnd();
        }
Beispiel #2
0
        public override void PrintBy(Printing.IPrinter printer)
        {
            printer.Space(_offset);
            var amount = _length - _offset;

            printer.PrintJapaneseLetter(_letter, amount);
        }
Beispiel #3
0
        public override void PrintBy(Printing.IPrinter printer)
        {
            var restoreStart = printer.StorePositionAndFont();

            Array.ForEach(_baseText, x => x.PrintBy(printer));
            printer.Space(_appendingLength);
            PrintRuby(printer, restoreStart);
        }
Beispiel #4
0
        public override void PrintBy(Printing.IPrinter printer)
        {
            printer.Space(_offset);
            var letter = _text;
            var amount = _length - _offset;

            printer.PrintLatinText(letter, amount);
        }
Beispiel #5
0
 void Printing.IPrintable.PrintBy(Printing.IPrinter printer)
 {
     if (_heading != null)
     {
         printer.SetOutlineHere(_heading.Level, _heading.Title);
     }
     foreach (var t in _texts)
     {
         t.PrintBy(printer);
     }
 }
Beispiel #6
0
        private void PrintRuby(Printing.IPrinter printer, Printing.PrinterMemento restoreStart)
        {
            var restoreEnd = printer.StorePositionAndFont();

            try
            {
                restoreStart();
                float bodyFontSize = printer.FontSize;
                float rubyFontSize = bodyFontSize / 2; //TODO: 設定を統一するか、書式情報として運搬
                printer.LineFeed(-(bodyFontSize + rubyFontSize) / 2);
                printer.FontSize = rubyFontSize;
                Array.ForEach(_rubyText, x => x.PrintBy(printer));
            }
            finally
            {
                restoreEnd();
            }
        }
Beispiel #7
0
        void Printing.IPrintable.PrintBy(Printing.IPrinter printer)
        {
            int pageNumber       = 0;
            int lineNumberInPage = 0;

            foreach (var line in _lineEnum)
            {
                if (lineNumberInPage >= _numberOfLines)
                {
                    printer.PageBreak();
                    lineNumberInPage = 0;
                    ++pageNumber;
                    Progress(pageNumber);
                }
                line.PrintBy(printer);
                printer.LineFeed(_leading);
                printer.CarriageReturn();
                ++lineNumberInPage;
            }
            Progress(pageNumber + 1);
        }
Beispiel #8
0
 public override void PrintBy(Printing.IPrinter printer)
 {
 }
Beispiel #9
0
 public abstract void PrintBy(Printing.IPrinter printer);