Beispiel #1
0
        private static int FindWidthToBreakPosition(TextRun run, Win32DCSafeHandle hdc, FontCache fontCache, float maxWidth, out int width)
        {
            string text = run.Text;

            int[] logicalWidths = run.GetLogicalWidths(hdc, fontCache);
            int   num           = 0;

            width = 0;
            while (true)
            {
                if (num >= text.Length)
                {
                    break;
                }
                if (!((float)(width + logicalWidths[num]) <= maxWidth))
                {
                    if (run.ScriptLogAttr[num].IsWhiteSpace)
                    {
                        break;
                    }
                    if (run.ScriptLogAttr[num].IsSoftBreak)
                    {
                        break;
                    }
                }
                width += logicalWidths[num];
                num++;
            }
            return(num);
        }
Beispiel #2
0
        private static int FindFoldTextPosition_CharacterTrim(TextRun run, Win32DCSafeHandle hdc, FontCache fontCache, float maxWidth)
        {
            string text = run.Text;

            int[] logicalWidths = run.GetLogicalWidths(hdc, fontCache);
            int   i             = 0;

            for (int num = 0; i < text.Length && (float)(num + logicalWidths[i]) <= maxWidth; i++)
            {
                num += logicalWidths[i];
            }
            return(i);
        }