internal static string MathAtomToString(I_ExtensionAtom atom) { switch (atom) { case RaiseBox r: return($@"\raisebox{{{r.Raise.Length}{(r.Raise.IsMu ? "mu" : "pt")}}}{{{Builder.MathListToString(r.InnerList)}}}"); default: throw new InvalidCodePathException($"Atom implements {nameof(I_ExtensionAtom)} but its type is unknown?"); } }
internal static void CreateDisplayAtom <TFont, TGlyph>(Typesetter <TFont, TGlyph> t, I_ExtensionAtom atom) where TFont : IFont <TGlyph> { switch (atom.AtomType) { case MathAtomType.RaiseBox: t.AddDisplayLine(false); var raiseBox = atom as RaiseBox; var raisedDisplay = Typesetter <TFont, TGlyph> .CreateLine(raiseBox.InnerList, t._font, t._context, t._style); var raisedPosition = t._currentPosition; raisedPosition.Y += raiseBox.Raise.ActualLength(t._mathTable, t._font); raisedDisplay.Position = raisedPosition; t._currentPosition.X += raisedDisplay.Width; t._displayAtoms.Add(raisedDisplay); break; } }