Example #1
0
        public void Populate(BibleVersion bible, int target)
        {
            StringBuilder _rtfData = new StringBuilder();

            //DreamTools.ElapsedTime("Start Populate");

            if (target < 0 || target >= bible.VerseCount)
            {
                return;
            }

            int[] range = loadRange(target, bible.VerseCount - 1);

            verseIndex.Clear();
            firstVerse   = range[0];
            lastVerse    = range[1];
            currentVerse = target;

            int length = 0;

            for (int i = range[0]; i <= range[1]; i++)
            {
                verseIndex.Add(length);

                // Set the reference text to background color 2, foreground color 3,
                // bold, font 0, size 10pt
                _rtfData.Append(@"\highlight12\cf3\b\f0\fs20 ");
                // We need to keep track of how many non-control characters we're adding so we
                // can't just use: _rtfData.Append( bible.GetSimpleRef(i) + " " );
                // The text added here should be identical to the text searched for in BibleVersion.Find
                length += BibleRTF.AppendText(_rtfData, bible.GetSimpleRef(i, true) + " ");
                _rtfData.Append(@"\highlight0\cf2\b0\f1\fs20 ");
                length += BibleRTF.AppendText(_rtfData, " " + bible.GetSimpleVerseText(i) + "\n");

                // Note: Unicode characters get converted to their ASCII equivalents.
            }

            this.SelectAll();
            this.InsertRawRtf(_rtfData.ToString(), rtfFonts, rtfColors);

            this.SelectAll();
            this.SelectionIndent        = 5;
            this.SelectionHangingIndent = 75;
            this.SelectionRightIndent   = 5;

            this.ScrollTo(this.GetSelectionFromVerseIndex(target)[0]);
            //DreamTools.ElapsedTime("Finish Populate");
        }