iTextSharp.text.pdf.TextField.GetListAppearance C# (CSharp) Метод

GetListAppearance() приватный Метод

private GetListAppearance ( ) : PdfAppearance
Результат PdfAppearance
        internal PdfAppearance GetListAppearance() {
            PdfAppearance app = GetBorderAppearance();
            app.BeginVariableText();
            if (choices == null || choices.Length == 0) {
                app.EndVariableText();
                return app;
            }
            int topChoice = choiceSelection;
            if (topChoice >= choices.Length) {
                topChoice = choices.Length - 1;
            }
            if (topChoice < 0)
                topChoice = 0;
            BaseFont ufont = RealFont;
            float usize = fontSize;
            if (usize == 0)
                usize = 12;
            bool borderExtra = borderStyle == PdfBorderDictionary.STYLE_BEVELED || borderStyle == PdfBorderDictionary.STYLE_INSET;
            float h = box.Height - borderWidth * 2;
            float offsetX = borderWidth;
            if (borderExtra) {
                h -= borderWidth * 2;
                offsetX *= 2;
            }
            float leading = ufont.GetFontDescriptor(BaseFont.BBOXURY, usize) - ufont.GetFontDescriptor(BaseFont.BBOXLLY, usize);
            int maxFit = (int)(h / leading) + 1;
            int first = 0;
            int last = 0;
            last = topChoice + maxFit / 2 + 1;
            first = last - maxFit;
            if (first < 0) {
                last += first;
                first = 0;
            }
    //        first = topChoice;
            last = first + maxFit;
            if (last > choices.Length)
                last = choices.Length;
            topFirst = first;
            app.SaveState();
            app.Rectangle(offsetX, offsetX, box.Width - 2 * offsetX, box.Height - 2 * offsetX);
            app.Clip();
            app.NewPath();
            Color fcolor = (textColor == null) ? GrayColor.GRAYBLACK : textColor;
            app.SetColorFill(new Color(10, 36, 106));
            app.Rectangle(offsetX, offsetX + h - (topChoice - first + 1) * leading, box.Width - 2 * offsetX, leading);
            app.Fill();
            float xp = offsetX * 2;
            float yp = offsetX + h - ufont.GetFontDescriptor(BaseFont.BBOXURY, usize);
            for (int idx = first; idx < last; ++idx, yp -= leading) {
                String ptext = choices[idx];
                int rtl = CheckRTL(ptext) ? PdfWriter.RUN_DIRECTION_LTR : PdfWriter.RUN_DIRECTION_NO_BIDI;
                ptext = RemoveCRLF(ptext);
                Phrase phrase = ComposePhrase(ptext, ufont, (idx == topChoice) ? GrayColor.GRAYWHITE : fcolor, usize);
                ColumnText.ShowTextAligned(app, Element.ALIGN_LEFT, phrase, xp, yp, 0, rtl, 0);
            }
            app.RestoreState();
            app.EndVariableText();
            return app;
        }