The R Project SVN R

Rev

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

Rev 3786 Rev 3865
Line 642... Line 642...
642
static struct {
642
static struct {
643
    char *name;
643
    char *name;
644
    int code;
644
    int code;
645
}
645
}
646
SymbolTable[] = {
646
SymbolTable[] = {
647
    "space",	      32,
647
    { "space",		 32 },
648
    "exclam",	      33,
648
    { "exclam",		 33 },
649
    "universal",      34,
649
    { "universal",	 34 },
650
    "numbersign",     35,
650
    { "numbersign",	 35 },
651
    "existential",    36,
651
    { "existential",	 36 },
652
    "percent",	      37,
652
    { "percent",	 37 },
653
    "ampersand",      38,
653
    { "ampersand",	 38 },
654
    "suchthat",	      39,
654
    { "suchthat",	 39 },
655
    "parenleft",      40,
655
    { "parenleft",	 40 },
656
    "parenright",     41,
656
    { "parenright",	 41 },
657
    "asteriskmath",   42,
657
    { "asteriskmath",	 42 },
658
    "plus",	      43,
658
    { "plus",		 43 },
659
    "comma",	      44,
659
    { "comma",		 44 },
660
    "minus",	      45,
660
    { "minus",		 45 },
661
    "period",	      46,
661
    { "period",		 46 },
662
    "slash",	      47,
662
    { "slash",		 47 },
663
    "0",	      48,
663
    { "0",		 48 },
664
    "1",	      49,
664
    { "1",		 49 },
665
    "2",	      50,
665
    { "2",		 50 },
666
    "3",	      51,
666
    { "3",		 51 },
667
    "4",	      52,
667
    { "4",		 52 },
668
    "5",	      53,
668
    { "5",		 53 },
669
    "6",	      54,
669
    { "6",		 54 },
670
    "7",	      55,
670
    { "7",		 55 },
671
    "8",	      56,
671
    { "8",		 56 },
672
    "9",	      57,
672
    { "9",		 57 },
673
    "colon",	      58,
673
    { "colon",		 58 },
674
    "semicolon",      59,
674
    { "semicolon",	 59 },
675
    "less",	      60,
675
    { "less",		 60 },
676
    "equal",	      61,
676
    { "equal",		 61 },
677
    "greater",	      62,
677
    { "greater",	 62 },
678
    "question",	      63,
678
    { "question",	 63 },
679
    "congruent",      64,
679
    { "congruent",	 64 },
680
 
680
 
681
    "Alpha",	      65,    /* Upper Case Greek Characters */
681
    { "Alpha",		 65 },	 /* Upper Case Greek Characters */
682
    "Beta",	      66,
682
    { "Beta",		 66 },
683
    "Chi",	      67,
683
    { "Chi",		 67 },
684
    "Delta",	      68,
684
    { "Delta",		 68 },
685
    "Epsilon",	      69,
685
    { "Epsilon",	 69 },
686
    "Phi",	      70,
686
    { "Phi",		 70 },
687
    "Gamma",	      71,
687
    { "Gamma",		 71 },
688
    "Eta",	      72,
688
    { "Eta",		 72 },
689
    "Iota",	      73,
689
    { "Iota",		 73 },
690
    "theta1",	      74,
690
    { "theta1",		 74 },
691
    "Kappa",	      75,
691
    { "Kappa",		 75 },
692
    "Lambda",	      76,
692
    { "Lambda",		 76 },
693
    "Mu",	      77,
693
    { "Mu",		 77 },
694
    "Nu",	      78,
694
    { "Nu",		 78 },
695
    "Omicron",	      79,
695
    { "Omicron",	 79 },
696
    "Pi",	      80,
696
    { "Pi",		 80 },
697
    "Theta",	      81,
697
    { "Theta",		 81 },
698
    "Rho",	      82,
698
    { "Rho",		 82 },
699
    "Sigma",	      83,
699
    { "Sigma",		 83 },
700
    "Tau",	      84,
700
    { "Tau",		 84 },
701
    "Upsilon",	      85,
701
    { "Upsilon",	 85 },
702
    "sigma1",	      86,
702
    { "sigma1",		 86 },
703
    "Omega",	      87,
703
    { "Omega",		 87 },
704
    "Xi",	      88,
704
    { "Xi",		 88 },
705
    "Psi",	      89,
705
    { "Psi",		 89 },
706
    "Zeta",	      90,
706
    { "Zeta",		 90 },
707
 
707
 
708
    "bracketleft",    91,    /* Miscellaneous Special Characters */
708
    { "bracketleft",	 91 },	/* Miscellaneous Special Characters */
709
    "therefore",      92,
709
    { "therefore",	 92 },
710
    "bracketright",   93,
710
    { "bracketright",	 93 },
711
    "perpendicular",  94,
711
    { "perpendicular",	 94 },
712
    "underscore",     95,
712
    { "underscore",	 95 },
713
    "radicalex",      96,
713
    { "radicalex",	 96 },
714
 
714
 
715
    "alpha",	      97,    /* Lower Case Greek Characters */
715
    { "alpha",		 97 },	/* Lower Case Greek Characters */
716
    "beta",	      98,
716
    { "beta",		 98 },
717
    "chi",	      99,
717
    { "chi",		 99 },
718
    "delta",	     100,
718
    { "delta",		100 },
719
    "epsilon",	     101,
719
    { "epsilon",	101 },
720
    "phi",	     102,
720
    { "phi",		102 },
721
    "gamma",	     103,
721
    { "gamma",		103 },
722
    "eta",	     104,
722
    { "eta",		104 },
723
    "iota",	     105,
723
    { "iota",		105 },
724
    "phi1",	     106,
724
    { "phi1",		106 },
725
    "kappa",	     107,
725
    { "kappa",		107 },
726
    "lambda",	     108,
726
    { "lambda",		108 },
727
    "mu",	     109,
727
    { "mu",		109 },
728
    "nu",	     110,
728
    { "nu",		110 },
729
    "omicron",	     111,
729
    { "omicron",	111 },
730
    "pi",	     112,
730
    { "pi",		112 },
731
    "theta",	     113,
731
    { "theta",		113 },
732
    "rho",	     114,
732
    { "rho",		114 },
733
    "sigma",	     115,
733
    { "sigma",		115 },
734
    "tau",	     116,
734
    { "tau",		116 },
735
    "upsilon",	     117,
735
    { "upsilon",	117 },
736
    "omega1",	     118,
736
    { "omega1",		118 },
737
    "omega",	     119,
737
    { "omega",		119 },
738
    "xi",	     120,
738
    { "xi",		120 },
739
    "psi",	     121,
739
    { "psi",		121 },
740
    "zeta",	     122,
740
    { "zeta",		122 },
741
 
741
 
742
    "braceleft",     123,    /* Miscellaneous Special Characters */
742
    { "braceleft",	123 },	/* Miscellaneous Special Characters */
743
    "bar",	     124,
743
    { "bar",		124 },
744
    "braceright",    125,
744
    { "braceright",	125 },
745
    "similar",	     126,
745
    { "similar",	126 },
746
 
746
 
747
    "Upsilon1",	     161,    /* Lone Greek */
747
    { "Upsilon1",	161 },	/* Lone Greek */
748
    "minute",	     162,
748
    { "minute",		162 },
749
    "lessequal",     163,
749
    { "lessequal",	163 },
750
    "fraction",	     164,
750
    { "fraction",	164 },
751
    "infinity",	     165,
751
    { "infinity",	165 },
752
    "florin",	     166,
752
    { "florin",		166 },
753
    "club",	     167,
753
    { "club",		167 },
754
    "diamond",	     168,
754
    { "diamond",	168 },
755
    "heart",	     169,
755
    { "heart",		169 },
756
    "spade",	     170,
756
    { "spade",		170 },
757
    "arrowboth",     171,
757
    { "arrowboth",	171 },
758
    "arrowleft",     172,
758
    { "arrowleft",	172 },
759
    "arrowup",	     173,
759
    { "arrowup",	173 },
760
    "arrowright",    174,
760
    { "arrowright",	174 },
761
    "arrowdown",     175,
761
    { "arrowdown",	175 },
762
    "degree",	     176,
762
    { "degree",		176 },
763
    "plusminus",     177,
763
    { "plusminus",	177 },
764
    "second",	     178,
764
    { "second",		178 },
765
    "greaterequal",  179,
765
    { "greaterequal",	179 },
766
    "multiply",	     180,
766
    { "multiply",	180 },
767
    "proportional",  181,
767
    { "proportional",	181 },
768
    "partialdiff",   182,
768
    { "partialdiff",	182 },
769
    "bullet",	     183,
769
    { "bullet",		183 },
770
    "divide",	     184,
770
    { "divide",		184 },
771
    "notequal",	     185,
771
    { "notequal",	185 },
772
    "equivalence",   186,
772
    { "equivalence",	186 },
773
    "approxequal",   187,
773
    { "approxequal",	187 },
774
    "ellipsis",	     188,
774
    { "ellipsis",	188 },
775
    "arrowvertex",   189,
775
    { "arrowvertex",	189 },
776
    "arrowhorizex",  190,
776
    { "arrowhorizex",	190 },
777
    "carriagereturn",191,
777
    { "carriagereturn", 191 },
778
    "aleph",	     192,
778
    { "aleph",		192 },
779
    "Ifraktur",	     193,
779
    { "Ifraktur",	193 },
780
    "Rfraktur",	     194,
780
    { "Rfraktur",	194 },
781
    "weierstrass",   195,
781
    { "weierstrass",	195 },
782
    "circlemultiply",196,
782
    { "circlemultiply", 196 },
783
    "circleplus",    197,
783
    { "circleplus",	197 },
784
    "emptyset",	     198,
784
    { "emptyset",	198 },
785
    "intersection",  199,
785
    { "intersection",	199 },
786
    "union",	     200,
786
    { "union",		200 },
787
    "propersuperset",201,
787
    { "propersuperset", 201 },
788
    "reflexsuperset",202,
788
    { "reflexsuperset", 202 },
789
    "notsubset",     203,
789
    { "notsubset",	203 },
790
    "propersubset",  204,
790
    { "propersubset",	204 },
791
    "reflexsubset",  205,
791
    { "reflexsubset",	205 },
792
    "element",	     206,
792
    { "element",	206 },
793
    "notelement",    207,
793
    { "notelement",	207 },
794
    "angle",	     208,
794
    { "angle",		208 },
795
    "gradient",	     209,
795
    { "gradient",	209 },
796
    "registerserif", 210,
796
    { "registerserif",	210 },
797
    "copyrightserif",211,
797
    { "copyrightserif", 211 },
798
    "trademarkserif",212,
798
    { "trademarkserif", 212 },
799
    "product",	     213,
799
    { "product",	213 },
800
    "radical",	     214,
800
    { "radical",	214 },
801
    "dotmath",	     215,
801
    { "dotmath",	215 },
802
    "logicaland",    217,
802
    { "logicaland",	217 },
803
    "logicalor",     218,
803
    { "logicalor",	218 },
804
    "arrowdblboth",  219,
804
    { "arrowdblboth",	219 },
805
    "arrowdblleft",  220,
805
    { "arrowdblleft",	220 },
806
    "arrowdblup",    221,
806
    { "arrowdblup",	221 },
807
    "arrowdblright", 222,
807
    { "arrowdblright",	222 },
808
    "arrowdbldown",  223,
808
    { "arrowdbldown",	223 },
809
    "lozenge",	     224,
809
    { "lozenge",	224 },
810
    "angleleft",     225,
810
    { "angleleft",	225 },
811
    "registersans",  226,
811
    { "registersans",	226 },
812
    "copyrightsans", 227,
812
    { "copyrightsans",	227 },
813
    "trademarksans", 228,
813
    { "trademarksans",	228 },
814
    "summation",     229,
814
    { "summation",	229 },
815
    "parenlefttp",   230,
815
    { "parenlefttp",	230 },
816
    "parenleftex",   231,
816
    { "parenleftex",	231 },
817
    "parenleftbt",   232,
817
    { "parenleftbt",	232 },
818
    "bracketlefttp", 233,
818
    { "bracketlefttp",	233 },
819
    "bracketleftex", 234,
819
    { "bracketleftex",	234 },
820
    "bracketleftbt", 235,
820
    { "bracketleftbt",	235 },
821
    "bracelefttp",   236,
821
    { "bracelefttp",	236 },
822
    "braceleftmid",  237,
822
    { "braceleftmid",	237 },
823
    "braceleftbt",   238,
823
    { "braceleftbt",	238 },
824
    "braceex",	     239,
824
    { "braceex",	239 },
825
    "angleright",    241,
825
    { "angleright",	241 },
826
    "integral",	     242,
826
    { "integral",	242 },
827
    "integraltp",    243,
827
    { "integraltp",	243 },
828
    "integralex",    244,
828
    { "integralex",	244 },
829
    "integralbt",    245,
829
    { "integralbt",	245 },
830
    "parenrighttp",  246,
830
    { "parenrighttp",	246 },
831
    "parenrightex",  247,
831
    { "parenrightex",	247 },
832
    "parenrightbt",  248,
832
    { "parenrightbt",	248 },
833
    "bracketrighttp",249,
833
    { "bracketrighttp", 249 },
834
    "bracketrightex",250,
834
    { "bracketrightex", 250 },
835
    "bracketrightbt",251,
835
    { "bracketrightbt", 251 },
836
    "bracerighttp",  252,
836
    { "bracerighttp",	252 },
837
    "bracerightmid", 253,
837
    { "bracerightmid",	253 },
838
    "bracerightbt",  254,
838
    { "bracerightbt",	254 },
839
 
839
 
840
    NULL,	       0,
840
    { NULL,		  0 },
841
};
841
};
842
 
842
 
843
static int SymbolCode(SEXP expr)
843
static int SymbolCode(SEXP expr)
844
{
844
{
845
    int i;
845
    int i;
Line 1163... Line 1163...
1163
    }
1163
    }
1164
    else if (NumberAtom(expr))
1164
    else if (NumberAtom(expr))
1165
	return RenderNumber(expr, draw);
1165
	return RenderNumber(expr, draw);
1166
    else if (StringAtom(expr))
1166
    else if (StringAtom(expr))
1167
	return RenderString(expr, draw);
1167
	return RenderString(expr, draw);
-
 
1168
 
-
 
1169
    return NullBBox();		/* -Wall */
1168
}
1170
}
1169
 
1171
 
1170
 
1172
 
1171
/*----------------------------------------------------------------------
1173
/*----------------------------------------------------------------------
1172
 *
1174
 *
Line 1201... Line 1203...
1201
	opBBox = CombineBBoxes(opBBox, arg2BBox);
1203
	opBBox = CombineBBoxes(opBBox, arg2BBox);
1202
	return opBBox;
1204
	return opBBox;
1203
    }
1205
    }
1204
    else
1206
    else
1205
	error("invalid mathematical annotation\n");
1207
	error("invalid mathematical annotation\n");
-
 
1208
 
-
 
1209
    return NullBBox();		/* -Wall */
1206
}
1210
}
1207
 
1211
 
1208
static SymTab BinTable[] = {
1212
static SymTab BinTable[] = {
1209
    "*",		052,	/* Binary Operators */
1213
    { "*",		 052 },	/* Binary Operators */
1210
    "+",		053,
1214
    { "+",		 053 },
1211
    "-",		055,
1215
    { "-",		 055 },
1212
    "/",		057,
1216
    { "/",		 057 },
1213
    ":",		072,
1217
    { ":",		 072 },
1214
    "%+-%",	       0261,
1218
    { "%+-%",		0261 },
1215
    "%*%",	       0264,
1219
    { "%*%",		0264 },
1216
    "%/%",	       0270,
1220
    { "%/%",		0270 },
1217
    "%intersection%",  0307,
1221
    { "%intersection%", 0307 },
1218
    "%union%",	       0310,
1222
    { "%union%",	0310 },
1219
    NULL,		  0
1223
    { NULL,		   0 }
1220
};
1224
};
1221
 
1225
 
1222
static int BinAtom(SEXP expr)
1226
static int BinAtom(SEXP expr)
1223
{
1227
{
1224
    int i;
1228
    int i;
Line 1329... Line 1333...
1329
	gap = (CurrentStyle > STYLE_S) ? ThinSpace() : 0;
1333
	gap = (CurrentStyle > STYLE_S) ? ThinSpace() : 0;
1330
	bbox = RenderSymbolChar(op, draw);
1334
	bbox = RenderSymbolChar(op, draw);
1331
	bbox = CombineBBoxes(bbox, RenderGap(gap, draw));
1335
	bbox = CombineBBoxes(bbox, RenderGap(gap, draw));
1332
	return CombineBBoxes(bbox, RenderElement(CADR(expr), draw));
1336
	return CombineBBoxes(bbox, RenderElement(CADR(expr), draw));
1333
    }
1337
    }
-
 
1338
    else
1334
    else error("invalid mathematical annotation\n");
1339
	error("invalid mathematical annotation\n");
-
 
1340
 
-
 
1341
    return NullBBox();		/* -Wall */
-
 
1342
 
1335
}
1343
}
1336
 
1344
 
1337
 
1345
 
1338
/*----------------------------------------------------------------------
1346
/*----------------------------------------------------------------------
1339
 *
1347
 *
Line 1384... Line 1392...
1384
static BBOX RenderSup(SEXP expr, int draw)
1392
static BBOX RenderSup(SEXP expr, int draw)
1385
{
1393
{
1386
    BBOX bodyBBox, subBBox, supBBox;
1394
    BBOX bodyBBox, subBBox, supBBox;
1387
    SEXP body = CADR(expr);
1395
    SEXP body = CADR(expr);
1388
    SEXP sup = CADDR(expr);
1396
    SEXP sup = CADDR(expr);
1389
    SEXP sub;
1397
    SEXP sub = R_NilValue;	/* -Wall */
1390
    STYLE style = GetStyle();
1398
    STYLE style = GetStyle();
1391
    double savedX = CurrentX;
1399
    double savedX = CurrentX;
1392
    double savedY = CurrentY;
1400
    double savedY = CurrentY;
1393
    double theta, delta, width;
1401
    double theta, delta, width;
1394
    double u, p;
1402
    double u, p;
Line 1582... Line 1590...
1582
static struct {
1590
static struct {
1583
    char *name;
1591
    char *name;
1584
    int code;
1592
    int code;
1585
}
1593
}
1586
AccentTable[] = {
1594
AccentTable[] = {
1587
    "hat",	      94,
1595
    { "hat",		 94 },
1588
    "ring",	     176,
1596
    { "ring",		176 },
1589
    "tilde",	     126,
1597
    { "tilde",		126 },
1590
    NULL,	       0,
1598
    { NULL,		  0 },
1591
};
1599
};
1592
 
1600
 
1593
static int AccentCode(SEXP expr)
1601
static int AccentCode(SEXP expr)
1594
{
1602
{
1595
    int i;
1603
    int i;
Line 2105... Line 2113...
2105
 */
2113
 */
2106
 
2114
 
2107
#define OperatorSymbolMag  1.25
2115
#define OperatorSymbolMag  1.25
2108
 
2116
 
2109
static SymTab OpTable[] = {
2117
static SymTab OpTable[] = {
2110
    "prod",	     S_PRODUCT,
2118
    { "prod",		S_PRODUCT },
2111
    "sum",	     S_SUM,
2119
    { "sum",		S_SUM },
2112
    "union",	     S_UNION,
2120
    { "union",		S_UNION },
2113
    "intersect",     S_INTERSECTION,
2121
    { "intersect",	S_INTERSECTION },
2114
    "lim",	     N_LIM,
2122
    { "lim",		N_LIM },
2115
    "liminf",	     N_LIMINF,
2123
    { "liminf",		N_LIMINF },
2116
    "limsup",	     N_LIMINF,
2124
    { "limsup",		N_LIMINF },
2117
    "inf",	     N_INF,
2125
    { "inf",		N_INF },
2118
    "sup",	     N_SUP,
2126
    { "sup",		N_SUP },
2119
    "min",	     N_MIN,
2127
    { "min",		N_MIN },
2120
    "max",	     N_MAX,
2128
    { "max",		N_MAX },
2121
    NULL,	     0
2129
    { NULL,		0 }
2122
};
2130
};
2123
 
2131
 
2124
static int OpAtom(SEXP expr)
2132
static int OpAtom(SEXP expr)
2125
{
2133
{
2126
    int i;
2134
    int i;
Line 2171... Line 2179...
2171
    int nexpr = length(expr);
2179
    int nexpr = length(expr);
2172
    STYLE style = GetStyle();
2180
    STYLE style = GetStyle();
2173
    BBOX opBBox = RenderOpSymbol(CAR(expr), 0);
2181
    BBOX opBBox = RenderOpSymbol(CAR(expr), 0);
2174
    double width = bboxWidth(opBBox);
2182
    double width = bboxWidth(opBBox);
2175
    double hshift, lvshift, uvshift;
2183
    double hshift, lvshift, uvshift;
-
 
2184
    lvshift = uvshift = 0;	/* -Wall */
2176
    if (nexpr > 2) {
2185
    if (nexpr > 2) {
2177
	SetSubStyle(style);
2186
	SetSubStyle(style);
2178
	lowerBBox = RenderElement(CADDR(expr), 0);
2187
	lowerBBox = RenderElement(CADDR(expr), 0);
2179
	SetStyle(style);
2188
	SetStyle(style);
2180
	width = max(width, bboxWidth(lowerBBox));
2189
	width = max(width, bboxWidth(lowerBBox));
Line 2400... Line 2409...
2400
 */
2409
 */
2401
 
2410
 
2402
				/* Binary Relationships */
2411
				/* Binary Relationships */
2403
 
2412
 
2404
SymTab RelTable[] = {
2413
SymTab RelTable[] = {
2405
    "<",		 60,	/* less */
2414
    { "<",		 60 },	/* less */
2406
    "==",		 61,	/* equal */
2415
    { "==",		 61 },	/* equal */
2407
    ">",		 62,	/* greater */
2416
    { ">",		 62 },	/* greater */
2408
    "%=~%",		 64,	/* congruent */
2417
    { "%=~%",		 64 },	/* congruent */
2409
    "!=",		185,	/* not equal */
2418
    { "!=",		185 },	/* not equal */
2410
    "<=",		163,	/* less or equal */
2419
    { "<=",		163 },	/* less or equal */
2411
    ">=",		179,	/* greater or equal */
2420
    { ">=",		179 },	/* greater or equal */
2412
    "%==%",		186,	/* equivalence */
2421
    { "%==%",		186 },	/* equivalence */
2413
    "%~~%",		187,	/* approxequal */
2422
    { "%~~%",		187 },	/* approxequal */
2414
 
2423
 
2415
    "%<->%",		171,	/* Arrows */
2424
    { "%<->%",		171 },	/* Arrows */
2416
    "%<-%",		172,
2425
    { "%<-%",		172 },
2417
    "%up%",		173,
2426
    { "%up%",		173 },
2418
    "%->%",		174,
2427
    { "%->%",		174 },
2419
    "%down%",		175,
2428
    { "%down%",		175 },
2420
    "%<=>%",		219,
2429
    { "%<=>%",		219 },
2421
    "%<=%",		220,
2430
    { "%<=%",		220 },
2422
    "%dblup%",		221,
2431
    { "%dblup%",	221 },
2423
    "%=>%",		222,
2432
    { "%=>%",		222 },
2424
    "%dbldown%",	223,
2433
    { "%dbldown%",	223 },
2425
 
2434
 
2426
    "%supset%",		201,	/* Sets (TeX Names) */
2435
    { "%supset%",	201 },	/* Sets (TeX Names) */
2427
    "%supseteq%",	202,
2436
    { "%supseteq%",	202 },
2428
    "%notsubset%",	203,
2437
    { "%notsubset%",	203 },
2429
    "%subset%",		204,
2438
    { "%subset%",	204 },
2430
    "%subseteq%",	205,
2439
    { "%subseteq%",	205 },
2431
    "%in%",		206,
2440
    { "%in%",		206 },
2432
    "%notin%",		207,
2441
    { "%notin%",	207 },
2433
 
2442
 
2434
    NULL,		 0,
2443
    { NULL,		  0 },
2435
};
2444
};
2436
 
2445
 
2437
static int RelAtom(SEXP expr)
2446
static int RelAtom(SEXP expr)
2438
{
2447
{
2439
    int i;
2448
    int i;
Line 2458... Line 2467...
2458
	bbox = CombineBBoxes(bbox, RenderSymbolChar(op, draw));
2467
	bbox = CombineBBoxes(bbox, RenderSymbolChar(op, draw));
2459
	bbox = CombineBBoxes(bbox, RenderGap(gap, draw));
2468
	bbox = CombineBBoxes(bbox, RenderGap(gap, draw));
2460
	return CombineBBoxes(bbox, RenderElement(CADDR(expr), draw));
2469
	return CombineBBoxes(bbox, RenderElement(CADDR(expr), draw));
2461
    }
2470
    }
2462
    else error("invalid mathematical annotation\n");
2471
    else error("invalid mathematical annotation\n");
-
 
2472
 
-
 
2473
    return NullBBox();		/* -Wall */
2463
}
2474
}
2464
 
2475
 
2465
 
2476
 
2466
/*----------------------------------------------------------------------
2477
/*----------------------------------------------------------------------
2467
 *
2478
 *