Ejemplo n.º 1
0
        public static FormattedText FromParseString(string parsableString, IFontMetrics startingFont, Color startingColor)
        {
            var commands = FormattedTextParser.ParseCommands(parsableString);
            var result   = FormattedTextParser.GetFragmentsFromCommands(commands, startingFont, startingColor);

            return(new FormattedText(result));
        }
Ejemplo n.º 2
0
 public static int StringWidth(this IFontMetrics fm, string s)
 {
     if (string.IsNullOrEmpty(s))
     {
         return(0);
     }
     return(fm.StringWidth(s, 0, s.Length));
 }
Ejemplo n.º 3
0
 public static void AssertMetrics(IFontMetrics metrics)
 {
     Assert.AreEqual(FontAscender, metrics.AscenderHeightFU);
     Assert.AreEqual(FontDescender, metrics.DescenderHeightFU);
     Assert.AreEqual(FontLineGap, metrics.LineSpaceingFU);
     Assert.AreEqual(FontUnitsPerEm, metrics.FUnitsPerEm);
     Assert.AreEqual(FontXWidth, metrics.xAvgWidthFU);
     Assert.IsFalse(metrics.Vertical);
 }
Ejemplo n.º 4
0
        public TextElement(string tokenText, IFontMetrics fontMetrics, Color color)
        {
            FontMetrics = fontMetrics;
            Color       = color;
            TokenText   = tokenText;

            var tokenSize = FontMetrics.MeasureStringRounded(TokenText);

            if (TokenText == "\n")
            {
                Size = new Point(0, tokenSize.Y);
            }
            else
            {
                Size = tokenSize;
            }
        }
Ejemplo n.º 5
0
 public static int StringWidth(this IFontMetrics fm, string s)
 {
     return(fm.StringWidth(s, 0, s.Length));
 }
Ejemplo n.º 6
0
        public static ITextInputFragment[] GetFragmentsFromCommands(FormattedTextCommand[] commands, IFontMetrics startingFont, Color startingColor)
        {
            var result = new List <ITextInputFragment>();

            var currentColor = startingColor;
            var currentFont  = startingFont;

            foreach (var command in commands)
            {
                if (command.IsPlainText)
                {
                    result.Add(new FormattedTextFragment(command.Arguments, currentFont, currentColor));
                }
                else if (command.IsSameAsCommand(FormattedTextCommand.Color))
                {
                    currentColor = ParseStringAsColor(command.Arguments);
                }
                else if (command.IsSameAsCommand(FormattedTextCommand.Font))
                {
                    currentFont = (SpriteFontMetrics)MachinaClient.Assets.GetSpriteFont(command.Arguments);
                }
                else if (command.IsSameAsCommand(FormattedTextCommand.SpriteFrame))
                {
                    // [#spriteframe <spritesheet-name> <index>]
                    var split           = command.Arguments.Split(" ");
                    var spriteSheetName = split[0];
                    var frameNumber     = int.Parse(split[1]);
                    result.Add(new SpriteFrameFragment(new SpriteFrame(MachinaClient.Assets.GetMachinaAsset <SpriteSheet>(spriteSheetName), frameNumber)));
                }
            }

            return(result.ToArray());
        }
Ejemplo n.º 7
0
 public FormattedTextFragment(string text, IFontMetrics fontMetrics, Color color)
 {
     RawText     = text;
     FontMetrics = fontMetrics;
     Color       = color;
 }
Ejemplo n.º 8
0
 public static FormattedText FromString(string rawText, IFontMetrics fontMetrics, Color color)
 {
     return(new FormattedText(new FormattedTextFragment(rawText, fontMetrics, color)));
 }