Пример #1
0
        public void Initialize()
        {
            actualPosition     = position.GetValueOrDefault(Vector2.Zero);
            characterOffset    = new Vector2(xOffsetOfFirstLine, 0);
            initialLineXOffset = characterOffset.X;

            bufferWritePosition    = 0;
            wordStartWritePosition = -1;
            wordStartOffset        = Vector2.Zero;
            rowIndex           = colIndex = 0;
            wordWrapSuppressed = false;
            currentLineSpacing = null;
            maxLineSpacing     = 0;
            alignToPixels      = GlyphPixelAlignment.Default;

            IsInitialized = true;
        }
Пример #2
0
        public static StringLayout LayoutString(
            this SpriteFont font, AbstractString text, ArraySegment <BitmapDrawCall>?buffer = null,
            Vector2?position                  = null, Color?color = null, float scale = 1,
            DrawCallSortKey sortKey           = default(DrawCallSortKey),
            int characterSkipCount            = 0, int?characterLimit = null,
            float xOffsetOfFirstLine          = 0, float?lineBreakAtX = null,
            GlyphPixelAlignment alignToPixels = default(GlyphPixelAlignment),
            Dictionary <char, KerningAdjustment> kerningAdjustments = null,
            bool wordWrap = false, char wrapCharacter = '\0'
            )
        {
            var state = new StringLayoutEngine {
                position           = position,
                color              = color,
                scale              = scale,
                sortKey            = sortKey,
                characterSkipCount = characterSkipCount,
                characterLimit     = characterLimit,
                xOffsetOfFirstLine = xOffsetOfFirstLine,
                lineBreakAtX       = lineBreakAtX,
                alignToPixels      = alignToPixels,
                characterWrap      = lineBreakAtX.HasValue,
                wordWrap           = wordWrap,
                wrapCharacter      = wrapCharacter,
                buffer             = buffer.GetValueOrDefault(default(ArraySegment <BitmapDrawCall>))
            };
            var gs = new SpriteFontGlyphSource(font);

            state.Initialize();

            using (state) {
                var segment = state.AppendText(
                    gs, text, kerningAdjustments
                    );

                return(state.Finish());
            }
        }