Exemplo n.º 1
0
        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));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        public override Box CreateBox(TexStyle style)
        {
            float factor = TexUtility.SizeFactor(style);

            return(StrutBox.Get((width + TexUtility.AdditionalGlueSpace) * factor, height * factor, depth * factor, 0, policy));
        }