summaryrefslogtreecommitdiff
path: root/fonts/utilities/ps2pk/protos.h
blob: eb8e62c32f54595e1441fcbf7752223c26b1b180 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
arith.c 
/* void DLmult(struct *product,unsigned long u,unsigned long v); */
/* void DLdiv(struct *quotient,unsigned long divisor); */
/* void DLadd(struct *u,struct *v); */
/* void DLsub(struct *u,struct *v); */
extern long FPmult(long u,long v);
extern long FPdiv(long dividend,long divisor);
extern long FPstarslash(long a,long b,long c);
basename.c 
extern int main(int argc,char **argv );
basics.c 
extern void fatal(char *fmt,...);
extern void msg(char *fmt,...);
bstring.c 
extern int memset(void *s,int c,int length);
curves.c 
extern int BezierTerminationTest(long xa,long ya,long xb,long yb,long xc,long yc,long xd,long yd);
static struct segment *StepBezierRecurse(struct bezierinfo *I,long xA,long yA,long xB,long yB,long xC,long yC,long xD,long yD);
extern struct segment *t1_StepBezier(struct region *R,long xA,long yA,long xB,long yB,long xC,long yC,long xD,long yD);
emxrun.c 
extern int main(int argc,char **argv );
extern int emx_system(char *cmd);
encoding.c 
static char *value_after(char *s,char *t);
extern int decimal(char *s);
extern char nextsymbol(void);
extern char *nextpsname(void);
extern void getenc(char **fontname ,char **encname ,char **ev ,int *width);
extern void addcc(char *name,int charcode);
extern int getcc(char *name);
extern char *string(char *s);
extern void remove_string(void);
filenames.c 
static char *charptr(char *name,char c);
extern int equal(char *s,char *t);
extern char *extension(char *str);
extern char *newname(char *name,char *ext);
extern char *ps2pk_basename(char *str,char *suffix);
extern int ps_resource(char *name);
flisearch.c 
extern int main(int argc,char **argv );
extern int matching(char *font,int size);
fontfcn.c 
extern int SearchDictName(struct ps_dict *dictP,struct ps_obj *keyP);
extern int initFont(void);
extern void resetFont(char *env);
extern int readFont(char *env);
extern unsigned char *fontfcnB(unsigned char *S,unsigned char *code,int *lenP,int *mode);
extern int fontfcnA(char *env,int *mode);
extern void QueryFontLib(char *env,char *infoName,unsigned char *infoValue,int *rcodeP);
hints.c 
extern void t1_InitHints(void);
extern void t1_CloseHints(struct fractpoint *hintP);
static void ComputeHint(struct hintsegment *hP,long currX,long currY,struct fractpoint *hintP);
extern void t1_ProcessHint(struct hintsegment *hP,long currX,long currY,struct fractpoint *hintP);
static short SearchXofY(struct edgelist *edge,short y);
static int ImpliedHorizontalLine(struct edgelist *e1,struct edgelist *e2,int y);
static void FixSubPaths(struct region *R);
static void DumpSubPaths(struct edgelist *anchor);
static struct edgelist *before(struct edgelist *e);
static void writeXofY(struct edgelist *e,int y,int x);
static void CollapseWhiteRun(struct edgelist *anchor,short yblack,struct edgelist *left,struct edgelist *right,short ywhite);
extern void t1_ApplyContinuity(struct region *R);
lines.c 
extern void t1_StepLine(struct region *R,long x1,long y1,long x2,long y2);
extern void t1_Bresenham(short *edgeP,long x1,long y1,long x2,long y2);
lspsres.c 
mag.c 
extern int main(int argc,char **argv );
extern int fontsize(double x);
extern double stepsize(double x);
objects.c 
extern struct xobject *t1_Allocate(int size,struct xobject *template,int extra);
extern void t1_Free(struct xobject *obj);
extern struct xobject *t1_Permanent(struct xobject *obj);
extern struct xobject *xiTemporary(struct xobject *obj);
extern struct xobject *t1_Dup(struct xobject *obj);
extern struct xobject *t1_Copy(struct xobject *obj);
extern struct xobject *t1_Destroy(struct xobject *obj);
extern struct xobject *t1_Unique(struct xobject *obj);
extern void t1_Pragmatics(char *username,int value);
extern void t1_Consume(int n,...);
extern struct xobject *t1_TypeErr(char *name,struct xobject *obj,int expect,struct xobject *ret);
static char *TypeFmt(int type);
static int ObjectPostMortem(struct xobject *obj);
extern struct xobject *t1_ArgErr(char *str,struct xobject *obj,struct xobject *ret);
extern void t1_abort(char *str);
extern char *t1_ErrorMsg(void);
extern void t1_InitImager(void);
extern void t1_TermImager(void);
extern void reportusage(void);
paths.c 
extern struct segment *t1_CopyPath(struct segment *p0);
extern void t1_KillPath(struct segment *p);
extern struct segment *t1_Loc(struct XYspace *S,double x,double y);
extern struct segment *t1_ILoc(struct XYspace *S,int x,int y);
extern struct segment *t1_SubLoc(struct segment *p1,struct segment *p2);
extern struct segment *t1_PathSegment(int type,long x,long y);
extern struct segment *t1_Line(struct segment *P);
extern struct beziersegment *t1_Bezier(struct segment *B,struct segment *C,struct segment *D);
extern struct hintsegment *t1_Hint(struct XYspace *S,double ref,double width,char orientation,char hinttype,char adjusttype,char direction,int label);
extern struct segment *t1_Join(struct segment *p1,struct segment *p2);
extern struct segment *t1_JoinSegment(struct segment *before,int type,long x,long y,struct segment *after);
extern struct segment *t1_ClosePath(struct segment *p0,int lastonly);
extern struct segment *t1_Reverse(struct segment *p);
static struct segment *ReverseSubPath(struct segment *p);
static struct segment *DropSubPath(struct segment *p0);
static struct segment *SplitPath(struct segment *anchor,struct segment *before);
extern struct segment *t1_ReverseSubPaths(struct segment *p);
static int UnClose(struct segment *p0);
extern struct segment *t1_PathXform(struct segment *p0,struct XYspace *S);
extern void t1_PathDelta(struct segment *p,struct fractpoint *pt);
extern struct segment *t1_BoundingBox(short h,short w);
extern void t1_QueryLoc(struct segment *P,struct XYspace *S,double *xP,double *yP);
extern void t1_QueryPath(struct segment *path,int *typeP,struct segment **Bp ,struct segment **Cp ,struct segment **Dp ,double *fP);
extern void t1_QueryBounds(struct segment *p0,struct XYspace *S,double *xminP,double *yminP,double *xmaxP,double *ymaxP);
extern struct segment *t1_BoxPath(struct XYspace *S,int h,int w);
extern struct segment *t1_DropSegment(struct segment *path);
extern struct segment *t1_HeadSegment(struct segment *path);
extern void t1_DumpPath(struct segment *p);
pfb2pfa.c 
extern int main(int argc,char **argv );
pk2bm.c 
extern int main(int argc,char **argv );
extern unsigned char lsbf(unsigned char u);
extern void dots(unsigned char u,int n);
extern int atoo(char *oct);
pkin.c 
static short pkbyte(void);
static long pkquad(void);
static long pktrio(void);
static long pklong(void);
static short pkopen(char *name);
static short getnyb(void);
static short getbit(void);
static unsigned short pkpackednum(void);
static unsigned short rest(void);
static unsigned short handlehuge(unsigned short i,unsigned short k);
/* void unpack(struct *cd); */
/* int readchar(char *name,short c,struct *cd); */
static void error(char *s);
pkout.c 
extern void pk_open(char *pkname);
extern void pk_close(void);
static void pk_nybble(int x);
static void pk1(int x);
static void pk2(int x);
static void pk3(int x);
static void pk4(int x);
extern void pk_preamble(char *comment,float pointsize,int checksum,unsigned int h_res,unsigned int v_res);
extern int optimal_size(int W,int H,int cnt,int *count,int *dyn_f);
static void pk_runlengths(int W,int H,int (*next_pixel)(void));
static void pk_number(int x);
static void pk_bitmap(int width,int cnt,int *runlength);
extern void pk_char(int char_code,int tfm_width,int h_escapement,unsigned int width,unsigned int height,int h_offset,int v_offset,int (*next_pixel)(void));
static void pkstring(char *fmt,...);
extern int INT(float x);
extern char *magnification(int dpi,int BDPI);
extern void pk_postamble(void);
extern void ps2pk_postamble(char *fontname,char *encname,int base_res,int h_res,int v_res,float pointsize,char *args);
pktest.c 
extern int main(int argc,char **argv );
extern int next_pixel(void);
ps2pk.c 
psargs.c 
psearch.c 
regions.c 
extern void t1_KillRegion(struct region *area);
extern struct region *t1_CopyRegion(struct region *area);
static struct edgelist *NewEdge(short xmin,short xmax,short ymin,short ymax,short *xvalues,int isdown);
extern struct region *t1_Interior(struct segment *p,int fillrule);
static int Unwind(struct edgelist *area);
extern void t1_ChangeDirection(int type,struct region *R,long x,long y,long dy);
static void newfilledge(struct region *R,long xmin,long xmax,long ymin,long ymax,int isdown);
extern struct edgelist *t1_SortSwath(struct edgelist *anchor,struct edgelist *edge,struct edgelist *(*swathfcn)(void));
static struct edgelist *splitedge(struct edgelist *list,short y);
static void vertjoin(struct edgelist *top,struct edgelist *bottom);
extern struct edgelist *swathxsort(struct edgelist *before0,struct edgelist *edge);
extern struct edgelist *t1_SwathUnion(struct edgelist *before0,struct edgelist *edge);
extern struct edgelist *swathrightmost(struct edgelist *before,struct edgelist *edge);
static int touches(int h,short *left,short *right);
static int crosses(int h,short *left,short *right);
static void cedgemin(int, pel *, pel);
static void cedgemax(int, pel *, pel);
static void edgemin(int, pel *, pel *);
static void edgemax(int, pel *, pel *);
static void discard(struct edgelist *left,struct edgelist *right);
extern void t1_MoveEdges(struct region *R,long dx,long dy);
extern void t1_UnJumble(struct region *region);
static int OptimizeRegion(struct region *R);
extern void t1_MoreWorkArea(struct region *R,long x1,long y1,long x2,long y2);
extern struct region *t1_BoxClip(struct region *R,short xmin,short ymin,short xmax,short ymax);
extern struct segment *t1_RegionBounds(struct region *R);
extern void t1_DumpArea(struct region *area);
extern void t1_DumpEdges(struct edgelist *edges);
static int edgecheck(struct edgelist *edge,int oldmin,int oldmax);
scanfont.c 
/* struct ps_obj *MakeEncodingArrayP(struct *encodingTable); */
extern int Init_BuiltInEncoding(void);
static int getNextValue(int valueType);
static int getInt(void);
static int getEncoding(struct ps_obj *arrayP);
static int getArray(struct ps_obj *arrayP);
static int getName(char *nameP);
static int getNbytes(int N);
static int getLiteralName(struct ps_obj *nameObjP);
static int BuildSubrs(struct ps_font *FontP);
static int BuildCharStrings(struct ps_font *FontP);
static int BuildFontInfo(struct ps_font *fontP);
static int BuildPrivate(struct ps_font *fontP);
static int GetType1Blues(struct ps_font *fontP);
extern struct ps_obj *GetType1CharString(struct ps_font *fontP,unsigned char code);
static int FindDictValue(struct ps_dict *dictP);
extern int scan_font(struct ps_font *FontP);
sexpr.c 
extern int main(int argc,char **argv );
spaces.c 
extern struct XYspace *t1_CopySpace(struct XYspace *S);
static void ConsiderContext(struct xobject *obj,double (*M)[2]);
extern void FXYConvert(struct fractpoint *pt,struct XYspace *S,double x,double y);
extern void IXYConvert(struct fractpoint *pt,struct XYspace *S,long x,long y);
extern void ForceFloat(struct fractpoint *pt,struct XYspace *S,long x,long y);
extern long FXYboth(double cx,double cy,double x,double y);
extern long FXonly(double cx,double cy,double x,double y);
extern long FYonly(double cx,double cy,double x,double y);
extern long IXYboth(long cx,long cy,long x,long y);
extern long IXonly(long cx,long cy,long x,long y);
extern long IYonly(long cx,long cy,long x,long y);
extern long FPXYboth(long cx,long cy,long x,long y);
extern long FPXonly(long cx,long cy,long x,long y);
extern long FPYonly(long cx,long cy,long x,long y);
static void FillOutFcns(struct XYspace *S);
static void FindFfcn(double cx,double cy,long (**fcnP )(void));
static void FindIfcn(double cx,double cy,long *icxP,long *icyP,long (**fcnP )(void));
extern void t1_UnConvert(struct XYspace *S,struct fractpoint *pt,double *xp,double *yp);
extern struct xobject *t1_Xform(struct xobject *obj,double (*M)[2]);
extern struct xobject *t1_Transform(struct xobject *obj,double cxx,double cyx,double cxy,double cyy);
extern struct xobject *t1_Scale(struct xobject *obj,double sx,double sy);
extern void t1_PseudoSpace(struct XYspace *S,double (*M)[2]);
extern void t1_MMultiply(double (*A)[2],double (*B)[2],double (*C)[2]);
extern void t1_MInvert(double (*M)[2],double (*Mprime)[2]);
extern void t1_InitSpaces(void);
extern void t1_QuerySpace(struct XYspace *S,double *cxxP,double *cyxP,double *cxyP,double *cyyP);
extern void t1_FormatFP(char *str,long fpel);
extern void t1_DumpSpace(struct XYspace *S);
strexpr.c 
extern struct val *make_int(int i);
extern struct val *make_str(char *s);
extern void free_value(struct val *vp);
extern int is_integer(struct val *vp,int *r);
extern int to_integer(struct val *vp);
extern void to_string(struct val *vp);
extern void nexttoken(void);
extern struct val *eval6(void);
extern struct val *eval4(void);
extern struct val *eval3(void);
extern int strexpr(int *result,char *expression);
t1funcs.c 
extern int Type1OpenScalable(char **ev ,struct _Font **ppFont ,int flags,struct _FontEntry *entry,char *fileName,struct _FontScalable *vals,unsigned long format,unsigned long fmask,double efactor,double slant);
static int Type1GetGlyphs(struct _Font *pFont,unsigned long count,unsigned char *chars,int charEncoding,unsigned long *glyphCount,struct _CharInfo **glyphs );
/* int Type1GetMetrics(struct _Font *pFont,unsigned long count,unsigned char *chars,int charEncoding,unsigned long *glyphCount,struct **glyphs ); */
extern void Type1CloseFont(struct _Font *pFont);
static void fill(char *dest,int h,int w,struct region *area,int byte,int bit,int wordsize);
static void fillrun(char *p,short x0,short x1,int bit);
extern int Type1RegisterFontFileFunctions(void);
t1info.c 
static void FillHeader(struct _FontInfo *pInfo,struct _FontScalable *Vals);
/* void adjust_min_max(struct *minc,struct *maxc,struct *tmp); */
static void ComputeBounds(struct _FontInfo *pInfo,struct _CharInfo *pChars,struct _FontScalable *Vals);
static void ComputeProps(struct _FontInfo *pInfo,struct _FontScalable *Vals,char *Filename);
static void ComputeStdProps(struct _FontInfo *pInfo,struct _FontScalable *Vals,char *Filename,char *Fontname);
extern int Type1GetInfoScalable(struct _FontPathElement *fpe,struct _FontInfo *pInfo,struct _FontEntry *entry,struct _FontName *fontName,char *fileName,struct _FontScalable *Vals);
extern void T1FillFontInfo(struct _Font *pFont,struct _FontScalable *Vals,char *Filename,char *Fontname);
extern void T1InitStdProps(void);
t1io.c 
extern struct F_FILE *T1Open(char *fn,char *mode);
extern int T1Getc(struct F_FILE *f);
extern int T1Ungetc(int c,struct F_FILE *f);
extern int T1Read(char *buffP,int size,int n,struct F_FILE *f);
extern int T1Close(struct F_FILE *f);
extern struct F_FILE *T1eexec(struct F_FILE *f);
static int T1Decrypt(unsigned char *p,int len);
static int T1Fill(struct F_FILE *f);
t1snap.c 
extern unsigned __int64 __stdcall Int64ShllMod32(unsigned __int64 Value,unsigned long ShiftCount);
extern __int64 __stdcall Int64ShraMod32(__int64 Value,unsigned long ShiftCount);
extern unsigned __int64 __stdcall Int64ShrlMod32(unsigned __int64 Value,unsigned long ShiftCount);
extern void *GetFiberData(void );
extern void *GetCurrentFiber(void );
extern struct segment *t1_Phantom(struct xobject *obj);
extern struct xobject *t1_Snap(struct segment *p);
t1stub.c 
extern int xiStub(void);
extern void t1_DumpText(struct segment *foo);
t1test.c 
extern int main(int argc,char **argv );
extern void Display(struct _CharInfo *glyph);
extern int T1FillVals(struct _FontScalable *vals);
extern int CheckFSFormat(int format,int fmask,int *bit,int *byte,int *scan,int *glyph,int *image);
extern char *MakeAtom(char *p);
extern int GetClientResolutions(int *resP);
extern char *Xalloc(int size);
extern void Xfree(void);
extern int FontDefaultFormat(void);
extern int FontFileRegisterRenderer(void);
extern int GenericGetBitmaps(void);
extern int GenericGetExtents(void);
extern int FontParseXLFDName(void);
extern int FontComputeInfoAccelerators(void);
texfiles.c 
extern unsigned long num(struct _iobuf *fp,int size);
extern int snum(struct _iobuf *fp,int size);
token.c 
static double P10(long exponent);
static int next_char(int ch);
static int add_char(int ch);
static int skip_space(int ch);
static int skip_comment(int ch);
static int add_sign(int ch);
static int add_1st_digits(int ch);
static int add_digits(int ch);
static int add_1st_decpt(int ch);
static int add_decpt(int ch);
static int add_fraction(int ch);
static int add_e_sign(int ch);
static int add_exponent(int ch);
static int add_radix(int ch);
static int add_r_digits(int ch);
static int RADIX_NUMBER(int ch);
static int INTEGER(int ch);
static int REAL(int ch);
static int HEX_STRING(int ch);
static void save_digraph(int ch);
static int STRING(int ch);
static int AAH_NAME(int ch);
static int NAME(int ch);
static int LITERAL_NAME(int ch);
static int IMMED_NAME(int ch);
static int OOPS_NAME(int ch);
static int RIGHT_ANGLE(int ch);
static int RIGHT_PAREN(int ch);
static int LEFT_BRACE(int ch);
static int RIGHT_BRACE(int ch);
static int LEFT_BRACKET(int ch);
static int RIGHT_BRACKET(int ch);
static int BREAK_SIGNAL(int ch);
static int NO_TOKEN(int ch);
extern void scan_token(struct ps_obj *inputP);
type1.c 
static int ComputeAlignmentZones(void);
static int InitStems(void);
static int FinitStems(void);
static void ComputeStem(int stemno);
static struct segment *Applyhint(struct segment *p,int stemnumber,int half);
static struct segment *Applyrevhint(struct segment *p,int stemnumber,int half);
static struct segment *FindStems(double x,double y,double dx,double dy);
static void ClearStack(void);
static void Push(double Num);
static void ClearCallStack(void);
static void PushCall(struct ps_obj *CurrStrP,int CurrIndex,unsigned short CurrKey);
static void PopCall(struct ps_obj **CurrStrPP ,int *CurrIndexP,unsigned short *CurrKeyP);
static void ClearPSFakeStack(void);
static void PSFakePush(double Num);
static double PSFakePop(void);
static struct segment *CenterStem(double edge1,double edge2);
static unsigned char Decrypt(unsigned char cipher);
static int DoRead(int *CodeP);
static void StartDecrypt(void);
static void Decode(int Code);
static void DoCommand(int Code);
static void Type1Escape(int Code);
static void HStem(double y,double dy);
static void VStem(double x,double dx);
static void RLineTo(double dx,double dy);
static void RRCurveTo(double dx1,double dy1,double dx2,double dy2,double dx3,double dy3);
static void DoClosePath(void);
static void CallSubr(int subrno);
static void Return(void);
static void EndChar(void);
static void RMoveTo(double dx,double dy);
static void DotSection(void);
static void Seac(double asb,double adx,double ady,unsigned char bchar,unsigned char achar);
static void Sbw(double sbx,double sby,double wx,double wy);
static double Div(double num1,double num2);
static void FlxProc(double c1x2,double c1y2,double c3x0,double c3y0,double c3x1,double c3y1,double c3x2,double c3y2,double c4x0,double c4y0,double c4x1,double c4y1,double c4x2,double c4y2,double epY,double epX,int idmin);
static void FlxProc1(void);
static void FlxProc2(void);
static void HintReplace(void);
static void CallOtherSubr(int othersubrno);
static void SetCurrentPoint(double x,double y);
extern struct xobject *Type1Char(char *env,struct XYspace *S,struct ps_obj *charstrP,struct ps_obj *subrsP,struct ps_obj *osubrsP,struct blues_struct *bluesP,int *modeP);
util.c 
extern int vm_init(void);
extern char *vm_alloc(unsigned int bytes);
extern void objFormatInteger(struct ps_obj *objP,int value);
extern void objFormatReal(struct ps_obj *objP,double value);
extern void objFormatBoolean(struct ps_obj *objP,int value);
extern void objFormatEncoding(struct ps_obj *objP,int length,struct ps_obj *valueP);
extern void objFormatArray(struct ps_obj *objP,int length,struct ps_obj *valueP);
extern void objFormatString(struct ps_obj *objP,int length,char *valueP);
extern void objFormatName(struct ps_obj *objP,int length,char *valueP);
extern void objFormatFile(struct ps_obj *objP,struct _iobuf *valueP);