00001
00002
00003
00004
00005
00006 #include "f2c.h"
00007
00008
00009
00010
00011 int zzchar_(char *ch, real *xp, real *yp, real *ct, real *st,
00012 ftnlen ch_len)
00013 {
00014
00015
00016 static integer ia[128] = { 473,473,473,473,473,473,473,473,473,473,473,
00017 473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,473,
00018 473,473,473,473,473,473,473,473,473,473,473,473,473,448,456,429,
00019 414,476,423,486,444,143,286,296,308,326,339,352,368,378,398,473,
00020 473,473,464,473,473,473,1,13,28,40,49,60,68,82,92,104,113,123,130,
00021 137,273,157,166,182,194,210,219,229,236,245,252,262,448,473,456,
00022 473,474,473,1,13,28,40,49,60,68,82,92,104,113,123,130,137,273,157,
00023 166,182,194,210,219,229,236,245,252,262,473,473,473,473,473 };
00024 static integer ku[494] = { 0,4,7,0,0,1,3,4,4,7,6,7,0,3,4,4,3,0,7,3,4,4,3,
00025 0,7,6,7,7,4,3,1,0,0,1,3,4,7,6,7,0,3,4,4,3,0,7,6,7,0,4,7,3,0,7,0,4,
00026 7,6,7,0,4,7,0,3,7,6,7,7,4,3,1,0,0,1,3,4,4,3,7,6,7,0,7,0,4,7,4,4,7,
00027 6,7,7,1,3,7,2,2,7,1,3,7,6,7,7,0,1,3,4,4,7,6,7,0,7,0,4,7,2,4,7,6,7,
00028 7,0,0,4,7,6,7,0,2,4,4,7,6,7,0,4,4,7,6,7,4,7,4,4,3,1,0,0,1,3,4,7,6,
00029 7,0,3,4,4,3,0,7,6,7,7,0,0,1,3,4,4,3,1,0,7,2,4,7,6,7,0,3,4,4,3,0,7,
00030 2,4,7,6,7,7,0,1,3,4,4,3,1,0,0,1,3,4,7,6,7,7,0,4,7,2,2,7,6,7,7,0,0,
00031 1,3,4,4,7,6,7,7,0,2,4,7,6,7,7,0,0,2,4,4,7,6,7,4,7,0,4,7,6,7,7,0,2,
00032 4,7,2,2,7,6,7,7,3,1,7,0,4,0,4,7,6,7,7,4,3,1,0,0,1,3,4,4,7,6,7,7,1,
00033 2,2,7,1,3,7,6,7,7,0,1,3,4,4,0,0,4,7,6,7,7,0,1,3,4,4,3,1,7,3,4,4,3,
00034 1,0,7,6,7,7,3,3,2,0,0,4,7,2,4,7,6,7,7,0,1,3,4,4,3,0,0,4,7,6,7,7,4,
00035 3,1,0,0,1,3,4,4,3,1,0,7,6,7,7,0,0,4,4,2,2,7,6,7,7,2,0,0,1,3,4,4,2,
00036 2,0,0,1,3,4,4,2,7,6,7,7,0,1,3,4,4,3,1,0,0,1,3,4,7,6,7,7,0,4,7,2,2,
00037 7,6,7,7,0,4,7,6,7,7,0,4,7,2,2,7,4,0,7,0,4,7,6,7,4,7,6,7,7,3,2,2,3,
00038 7,6,7,7,1,2,2,1,7,6,7,7,4,0,7,0,4,7,6,7,7,6,7,7,1,2,2,1,1,2,7,6,7,
00039 7,2,1,1,2,2,7,6,7 };
00040 static integer kv[494] = { 3,3,0,3,6,7,7,6,0,0,0,7,7,7,6,5,4,4,0,4,3,1,0,
00041 0,0,0,7,0,6,7,7,6,1,0,0,1,0,0,7,7,7,6,1,0,0,0,0,7,7,7,0,4,4,0,0,0,
00042 0,0,7,7,7,0,4,4,0,0,7,0,6,7,7,6,1,0,0,1,3,3,0,0,7,7,0,4,4,0,7,0,0,
00043 0,7,0,7,7,0,7,0,0,0,0,0,0,7,0,1,0,0,1,7,0,0,7,7,0,3,7,0,5,0,0,0,7,
00044 0,7,0,0,0,0,7,7,3,7,0,0,0,7,7,0,7,0,0,7,7,0,1,6,7,7,6,1,0,0,1,0,0,
00045 7,7,7,6,5,4,4,0,0,7,0,1,6,7,7,6,1,0,0,1,0,2,0,0,0,7,7,7,6,5,4,4,0,
00046 4,0,0,0,7,0,1,0,0,1,3,4,4,5,6,7,7,6,0,0,7,0,7,7,0,7,0,0,0,7,0,7,1,
00047 0,0,1,7,0,0,7,0,7,0,7,0,0,7,0,7,0,4,0,7,0,0,7,7,0,7,0,0,0,7,0,7,4,
00048 7,0,4,0,0,0,7,0,4,4,0,7,7,0,0,0,0,7,0,1,0,0,1,6,7,7,6,1,0,0,7,0,6,
00049 7,0,0,0,0,0,0,7,0,6,7,7,6,5,1,0,0,0,0,7,0,7,7,7,6,5,4,4,0,4,3,1,0,
00050 0,1,0,0,7,0,0,7,7,4,3,3,0,0,0,0,0,7,0,1,0,0,1,3,4,4,7,7,0,0,7,0,7,
00051 7,7,6,1,0,0,1,3,4,4,3,0,0,7,0,6,7,7,6,1,0,0,0,7,0,4,5,6,7,7,6,5,4,
00052 4,2,1,0,0,1,2,4,0,0,7,0,1,0,0,1,6,7,7,6,4,3,3,4,0,0,7,0,3,3,0,5,1,
00053 0,0,7,0,3,3,0,0,7,0,1,5,0,5,1,0,3,3,0,5,1,0,0,7,7,0,0,7,1,7,6,1,0,
00054 0,0,7,0,7,6,1,0,0,0,7,0,5,5,0,2,2,0,0,7,0,0,7,0,0,1,2,2,1,1,0,0,7,
00055 0,0,0,1,1,0,0,0,7 };
00056
00057 static real xold, yold, xnew, ynew;
00058 static integer nu, nv, ipoint;
00059 extern int zzline_(real *, real *, real *, real *);
00060 static real ctl, stl;
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123 xold = *xp;
00124 yold = *yp;
00125 ipoint = ia[*(unsigned char *)ch];
00126
00127
00128
00129 if (*(unsigned char *)ch >= 'a' && *(unsigned char *)ch <= 'z') {
00130 ctl = *ct * .8f;
00131 stl = *st * .8f;
00132 } else {
00133 ctl = *ct;
00134 stl = *st;
00135 }
00136
00137 L100:
00138 nu = ku[ipoint - 1];
00139 nv = kv[ipoint - 1];
00140 ++ipoint;
00141
00142
00143
00144
00145 if (nu == 7) {
00146
00147
00148
00149
00150
00151 if (nv == 7) {
00152 return 0;
00153 } else {
00154 xold = *xp + ctl * ku[ipoint - 1] - stl * kv[ipoint - 1];
00155 yold = *yp + stl * ku[ipoint - 1] + ctl * kv[ipoint - 1];
00156 ++ipoint;
00157 }
00158
00159
00160
00161
00162 } else {
00163 xnew = *xp + ctl * nu - stl * nv;
00164 ynew = *yp + stl * nu + ctl * nv;
00165 zzline_(&xold, &yold, &xnew, &ynew);
00166 xold = xnew;
00167 yold = ynew;
00168 }
00169
00170
00171
00172
00173 goto L100;
00174 }
00175