The R Project SVN R

Rev

Rev 31203 | Rev 31989 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 31203 Rev 31430
Line 1804... Line 1804...
1804
	PMoveTo(savedX + width, savedY, mc);
1804
	PMoveTo(savedX + width, savedY, mc);
1805
    }
1805
    }
1806
    return CombineAlignedBBoxes(numBBox, denomBBox);
1806
    return CombineAlignedBBoxes(numBBox, denomBBox);
1807
}
1807
}
1808
 
1808
 
-
 
1809
static BBOX RenderUnderline(SEXP expr, int draw, mathContext *mc,
-
 
1810
	        	    R_GE_gcontext *gc, GEDevDesc *dd)
-
 
1811
{
-
 
1812
    SEXP body = CADR(expr);
-
 
1813
    BBOX BBox;
-
 
1814
    double width, adepth, depth, x[2], y[2];
-
 
1815
    double savedX = mc->CurrentX;
-
 
1816
    double savedY = mc->CurrentY;
-
 
1817
 
-
 
1818
    BBox = RenderItalicCorr(RenderElement(body, 0, mc, gc, dd), 0, mc, gc, dd);
-
 
1819
    width = bboxWidth(BBox);
-
 
1820
 
-
 
1821
    mc->CurrentX = savedX;
-
 
1822
    mc->CurrentY = savedY;
-
 
1823
    BBox = RenderElement(body, draw, mc, gc, dd);
-
 
1824
    adepth = 0.1 * XHeight(gc, dd);
-
 
1825
    depth = bboxDepth(BBox) + adepth;
-
 
1826
 
-
 
1827
    if (draw) {
-
 
1828
        int savedlty = gc->lty;
-
 
1829
        double savedlwd = gc->lwd;
-
 
1830
        mc->CurrentX = savedX;
-
 
1831
        mc->CurrentY = savedY;
-
 
1832
        PMoveUp(-depth, mc);
-
 
1833
        x[0] = ConvertedX(mc, dd);
-
 
1834
        y[0] = ConvertedY(mc, dd);
-
 
1835
        PMoveAcross(width, mc);
-
 
1836
        x[1] = ConvertedX(mc, dd);
-
 
1837
        y[1] = ConvertedY(mc, dd);
-
 
1838
        gc->lty = LTY_SOLID;
-
 
1839
        gc->lwd = 1;
-
 
1840
        GEPolyline(2, x, y, gc, dd);
-
 
1841
        PMoveUp(depth, mc);
-
 
1842
        gc->lty = savedlty;
-
 
1843
        gc->lwd = savedlwd;
-
 
1844
        PMoveTo(savedX + width, savedY, mc);
-
 
1845
    }
-
 
1846
    return EnlargeBBox(BBox, 0.0, adepth, 0.0);
-
 
1847
}
-
 
1848
 
-
 
1849
 
1809
static int OverAtom(SEXP expr)
1850
static int OverAtom(SEXP expr)
1810
{
1851
{
1811
    return NameAtom(expr) &&
1852
    return NameAtom(expr) &&
1812
	(NameMatch(expr, "over") || NameMatch(expr, "frac"));
1853
	(NameMatch(expr, "over") || NameMatch(expr, "frac"));
1813
}
1854
}
Line 1815... Line 1856...
1815
static BBOX RenderOver(SEXP expr, int draw, mathContext *mc, R_GE_gcontext *gc, GEDevDesc *dd)
1856
static BBOX RenderOver(SEXP expr, int draw, mathContext *mc, R_GE_gcontext *gc, GEDevDesc *dd)
1816
{
1857
{
1817
    return RenderFraction(expr, 1, draw, mc, gc, dd);
1858
    return RenderFraction(expr, 1, draw, mc, gc, dd);
1818
}
1859
}
1819
 
1860
 
-
 
1861
static int UnderlAtom(SEXP expr)
-
 
1862
{
-
 
1863
    return NameAtom(expr) && NameMatch(expr, "underline");
-
 
1864
}
-
 
1865
 
-
 
1866
static BBOX RenderUnderl(SEXP expr, int draw, mathContext *mc, R_GE_gcontext *gc, GEDevDesc *dd)
-
 
1867
{
-
 
1868
    return RenderUnderline(expr, draw, mc, gc, dd);
-
 
1869
}
-
 
1870
 
-
 
1871
 
1820
static int AtopAtom(SEXP expr)
1872
static int AtopAtom(SEXP expr)
1821
{
1873
{
1822
    return NameAtom(expr) && NameMatch(expr, "atop");
1874
    return NameAtom(expr) && NameMatch(expr, "atop");
1823
}
1875
}
1824
 
1876
 
Line 2807... Line 2859...
2807
	return RenderBar(expr, draw, mc, gc, dd);
2859
	return RenderBar(expr, draw, mc, gc, dd);
2808
    else if (AccentAtom(head))
2860
    else if (AccentAtom(head))
2809
	return RenderAccent(expr, draw, mc, gc, dd);
2861
	return RenderAccent(expr, draw, mc, gc, dd);
2810
    else if (OverAtom(head))
2862
    else if (OverAtom(head))
2811
	return RenderOver(expr, draw, mc, gc, dd);
2863
	return RenderOver(expr, draw, mc, gc, dd);
-
 
2864
    else if (UnderlAtom(head))
-
 
2865
        return RenderUnderl(expr, draw, mc, gc, dd);
2812
    else if (AtopAtom(head))
2866
    else if (AtopAtom(head))
2813
	return RenderAtop(expr, draw, mc, gc, dd);
2867
	return RenderAtop(expr, draw, mc, gc, dd);
2814
    else if (ParenAtom(head))
2868
    else if (ParenAtom(head))
2815
	return RenderParen(expr, draw, mc, gc, dd);
2869
	return RenderParen(expr, draw, mc, gc, dd);
2816
    else if (BGroupAtom(head))
2870
    else if (BGroupAtom(head))