Subversion Repositories wimsdev

Rev

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

Rev 10 Rev 8103
Line 14... Line 14...
14
 *  along with this program; if not, write to the Free Software
14
 *  along with this program; if not, write to the Free Software
15
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
15
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16
 */
16
 */
17
 
17
 
18
/* dvi 2 gif driver, gf font loader and processor */
18
/* dvi 2 gif driver, gf font loader and processor */
-
 
19
#include "texgif.h"
-
 
20
 
-
 
21
#define gf_paint_0      0
-
 
22
#define gf_paint1       64
-
 
23
#define gf_paint2       65
-
 
24
#define gf_paint3       66
-
 
25
#define gf_boc          67
-
 
26
#define gf_boc1         68
-
 
27
#define gf_eoc          69
-
 
28
#define gf_skip0        70
-
 
29
#define gf_skip1        71
-
 
30
#define gf_skip2        72
-
 
31
#define gf_skip3        73
-
 
32
#define gf_new_row_0    74
-
 
33
#define gf_xxx1         239
-
 
34
#define gf_xxx2         240
-
 
35
#define gf_xxx3         241
-
 
36
#define gf_xxx4         242
-
 
37
#define gf_yyy          243
-
 
38
#define gf_no_op        244
-
 
39
#define gf_char_loc     245
-
 
40
#define gf_char_loc0    246
-
 
41
#define gf_pre          247
-
 
42
#define gf_post         248
-
 
43
#define gf_post_post    249
19
 
44
 
20
int g;
45
int g;
21
FONTHEADER *fh;
46
FONTHEADER *fh;
22
int brush, x,y,xmax,ymax,thischar,xsize,charsize,charcnt,charpos;
47
int brush, x,y,xmax,ymax,thischar,xsize,charsize,charcnt,charpos;
23
int chswitch;
48
int chswitch;
Line 80... Line 105...
80
    x+=p; if(x>xmax) x=xmax;
105
    x+=p; if(x>xmax) x=xmax;
81
    brush^=1;
106
    brush^=1;
82
}
107
}
83
 
108
 
84
void GF_new_row(int p)
109
void GF_new_row(int p)
85
{
110
{
86
    y++; if(y>ymax) y=ymax;
111
    y++; if(y>ymax) y=ymax;
87
    x=p; if(x>xmax) x=xmax;
112
    x=p; if(x>xmax) x=xmax;
88
    brush=1;
113
    brush=1;
89
}
114
}
90
 
115
 
91
void GF_skip(int p)
116
void GF_skip(int p)
92
{
117
{
93
    if(p>0) p=texint(gfbuf+(++g),p);
118
    if(p>0) p=texint(gfbuf+(++g),p);
94
    p++; y+=p; if(y>ymax) y=ymax;
119
    p++; y+=p; if(y>ymax) y=ymax;
95
    x=0; brush=0;
120
    x=0; brush=0;
96
}
121
}
97
 
122
 
98
void GF_xxx(int p)
123
void GF_xxx(int p)
99
{
124
{
100
    unsigned int t;
125
    unsigned int t;
101
    t=texint(gfbuf+(++g),p);
126
    t=texint(gfbuf+(++g),p);
102
    g+=p+t-1;
127
    g+=p+t-1;
103
}
128
}
104
 
129
 
105
void GF_yyy(void)
130
void GF_yyy(void)
106
{
131
{
107
    g+=4;
132
    g+=4;
108
}
133
}
109
 
134
 
110
void GF_char_loc(int p)
135
void GF_char_loc(int p)
111
{
136
{
112
    if(p==0) g+=1+1+4+4;
137
    if(p==0) g+=1+1+4+4;
113
    else g+=1+4+4+4+4;
138
    else g+=1+4+4+4+4;
114
}
139
}
115
 
140
 
116
void GF_post(void)
141
void GF_post(void)
117
{
142
{
118
    chswitch=0;
143
    chswitch=0;
119
}
144
}
120
 
145
 
121
void GF_post_post(void)
146
void GF_post_post(void)
122
{
147
{
123
    g=gfbuflen; chswitch=0;
148
    g=gfbuflen; chswitch=0;
124
}
149
}
125
 
-
 
126
#include "gfcmd.c"
-
 
127
 
150
 
128
void loadgf(char *fname, int density)
151
void loadgf(char *fname, int density)
129
{
152
{
130
    int len;
153
    int len;
131
    char namebuf[128];
154
    char namebuf[128];
132
   
155
 
133
    snprintf(namebuf,sizeof(namebuf),"%s/texgf.%dgf",tmpdir,density);
156
    snprintf(namebuf,sizeof(namebuf),"%s/texgf.%dgf",tmpdir,density);
134
    len=getfile(namebuf,&gfbuf);
157
    len=getfile(namebuf,&gfbuf);
135
    if(len<=0) {
158
    if(len<=0) {
136
        error("Metafont failed.");
159
        error("Metafont failed.");
137
    }
160
    }
Line 162... Line 185...
162
void gf2font(char *fontname,int density)
185
void gf2font(char *fontname,int density)
163
{
186
{
164
    unsigned char cc;
187
    unsigned char cc;
165
    char namebuf[1024];
188
    char namebuf[1024];
166
    char tmpname[1024];
189
    char tmpname[1024];
167
   
190
 
168
    if((gfbuf[0]&255)!=gf_pre || (gfbuf[1]&255)!=131) return;
191
    if((gfbuf[0]&255)!=gf_pre || (gfbuf[1]&255)!=131) return;
169
    g=3+(gfbuf[2]&255);
192
    g=3+(gfbuf[2]&255);
170
    if(gfbuflen<=g) return;
193
    if(gfbuflen<=g) return;
171
    if(tfm.ec==0 && tfm.bc==0) return;
194
    if(tfm.ec==0 && tfm.bc==0) return;
172
    charcnt=tfm.ec-tfm.bc+1;
195
    charcnt=tfm.ec-tfm.bc+1;
Line 192... Line 215...
192
            case gf_xxx1:       GF_xxx(1); break;
215
            case gf_xxx1:       GF_xxx(1); break;
193
            case gf_xxx2:       GF_xxx(2); break;
216
            case gf_xxx2:       GF_xxx(2); break;
194
            case gf_xxx3:       GF_xxx(3); break;
217
            case gf_xxx3:       GF_xxx(3); break;
195
            case gf_xxx4:       GF_xxx(4); break;
218
            case gf_xxx4:       GF_xxx(4); break;
196
            case gf_yyy:        GF_yyy(); break;
219
            case gf_yyy:        GF_yyy(); break;
197
           
220
 
198
            default: break;
221
            default: break;
199
        }
222
        }
200
    }
223
    }
201
    fclose(fontf);
224
    fclose(fontf);
202
    snprintf(namebuf,sizeof(namebuf),"%s/%s.font",
225
    snprintf(namebuf,sizeof(namebuf),"%s/%s.font",