public override Box CreateBox(TexStyle style) { if (BaseAtom == null) { return(StrutBox.Empty); } else { Box box; if (UnderLink) { var baseBox = BaseAtom.CreateBox(style); float margin = TEXConfiguration.main.NegateMargin * TexUtility.SizeFactor(style) / 2; float thick = TEXConfiguration.main.LineThickness * TexUtility.SizeFactor(style) / 2; box = HorizontalBox.Get(baseBox); box.Add(StrutBox.Get(-box.width, 0, 0, 0)); box.Add(StrikeBox.Get(baseBox.height, baseBox.width, baseBox.depth, margin, thick, StrikeBox.StrikeMode.underline, 0, 0)); return(AttrLinkBox.Get(box, MetaKey)); } else { return(AttrLinkBox.Get(BaseAtom.CreateBox(style), MetaKey)); } } }
public override Box CreateBox(TexStyle style) { var box = BaseAtom.CreateBox(style); // Centre box relative to horizontal axis. var totalHeight = box.height + box.depth; var axis = TEXConfiguration.main.AxisHeight * TexUtility.SizeFactor(style); box.shift = -(totalHeight / 2) - axis; return(HorizontalBox.Get(box)); }
public static AttrSizeAtom Get(Atom baseAtom, string sizeStr) { var atom = ObjPool <AttrSizeAtom> .Get(); atom.BaseAtom = baseAtom; if (sizeStr != null) { if (sizeStr.Length == 0) { atom.Offset = 0; atom.Size = float.NaN; } else if (sizeStr == dotStr) { atom.Offset = 0; atom.Size = TexUtility.SizeFactor(TexStyle.Script); } else if (sizeStr == dotdotStr) { atom.Offset = 0; atom.Size = TexUtility.SizeFactor(TexStyle.ScriptScript); } else { int pos = sizeStr.IndexOf('-'); if (pos < 0) { pos = sizeStr.IndexOf('+'); } if (pos < 0 || !float.TryParse(sizeStr.Substring(pos), out atom.Offset)) { atom.Offset = 0; } if (pos < 1 || !float.TryParse(sizeStr.Substring(0, pos), out atom.Size)) { if (pos == 0 || !float.TryParse(sizeStr, out atom.Size)) { atom.Size = 1; } } } } else { atom.Size = 1; atom.Offset = 0; } return(atom); }
public override Box CreateBox(TexStyle style) { // Create box for base atom, in cramped style. var baseBox = BaseAtom == null ? StrutBox.Empty : BaseAtom.CreateBox(TexUtility.GetCrampedStyle(style)); // Create result box. var defaultLineThickness = TEXConfiguration.main.LineThickness * TexUtility.SizeFactor(style); var resultBox = OverBar.Get(baseBox, 3 * defaultLineThickness, defaultLineThickness); // Adjust height and depth of result box. resultBox.height = baseBox.height + 5 * defaultLineThickness; resultBox.depth = baseBox.depth; return(resultBox); }
public override Box CreateBox(TexStyle style) { var defaultLineThickness = TEXConfiguration.main.LineThickness * TexUtility.SizeFactor(style); // Create box for base atom. var baseBox = BaseAtom == null ? StrutBox.Empty : BaseAtom.CreateBox(style); // Create result box. var resultBox = VerticalBox.Get(); resultBox.Add(baseBox); resultBox.Add(StrutBox.Get(0, 3 * defaultLineThickness, 0, 0)); resultBox.Add(HorizontalRule.Get(defaultLineThickness, baseBox.width, 0)); resultBox.depth = baseBox.depth + 5 * defaultLineThickness; resultBox.height = baseBox.height; return(resultBox); }
public override Box CreateBox(TexStyle style) { if (BaseAtom == null) { return(StrutBox.Empty); } var factor = TexUtility.SizeFactor(style) / 2; var margin = useMargin ? TEXConfiguration.main.NegateMargin * factor : 0; var thick = TEXConfiguration.main.LineThickness * factor; var baseBox = BaseAtom.CreateBox(style); var result = HorizontalBox.Get(); var negateBox = StrikeBox.Get(baseBox.height, baseBox.width, baseBox.depth, margin, thick, (StrikeBox.StrikeMode)mode, offsetM, offsetP); negateBox.shift = baseBox.shift; result.Add(negateBox); result.Add(StrutBox.Get(-baseBox.width, 0, 0, 0)); result.Add(baseBox); return(result); }
public override Box CreateBox(TexStyle style) { float factor = TexUtility.SizeFactor(style); return(StrutBox.Get((width + TexUtility.AdditionalGlueSpace) * factor, height * factor, depth * factor, 0, policy)); }