b17cb324 |
1 | #include <stdio.h> |
2 | #include <stdlib.h> |
3 | #include <string.h> |
4 | #include <unistd.h> |
5 | |
6 | #include "fontgen.h" |
7 | |
8 | char buffer[100000]; |
9 | |
10 | #define WRITEF(...) { \ |
11 | sprintf(buffer,__VA_ARGS__); \ |
12 | write (1,buffer,strlen(buffer)); \ |
13 | } |
14 | |
15 | |
16 | void op_point(pl_point * point){ |
17 | WRITEF("\tOCT\t%06o\t",point->p_data); |
18 | // if (point->p_lift) WRITEF("LIFT PEN, "); |
19 | //else WRITEF(" "); |
20 | //WRITEF("MOVE TO (%i,%i)",point->p_x,point->p_y); |
21 | WRITEF("\n"); |
22 | } |
23 | |
24 | void op_glyph( pl_glyph * glyph){ |
25 | WRITEF ("*"); |
26 | if (glyph->gl_comment) WRITEF(" %s\n",glyph->gl_comment) |
27 | else WRITEF("\n") |
28 | if (glyph->gl_label)WRITEF(glyph->gl_label); |
29 | WRITEF("\tDEC\t%i\tGLYPH NUMBER\n",glyph->gl_number); |
30 | WRITEF("\tDEC\t%i\tNO OF POINTS IN GLYPH INCLUDING MARGINS\n",glyph->gl_size); |
31 | int i; |
32 | for (i=0; i<glyph->gl_size;i++) op_point(glyph->gl_points+i); |
33 | WRITEF("*\n"); |
34 | } |
35 | |
36 | void op_font( pl_font * font){ |
37 | int i; |
38 | |
39 | int size=4; |
40 | size+=2*font->f_size; |
41 | for (i=0; i<font->f_size;i++)size+=font->f_glyphs[i].gl_size; |
8dc281af |
42 | |
b17cb324 |
43 | |
44 | WRITEF ( |
45 | "* %s - FONT FILE GENERATED BY FONTGEN\n" |
46 | "*\n" |
47 | "*\n" |
48 | "* SIZE '%o (OCT)\n" |
49 | "* SIZE %i (DEC)\n" |
50 | "*\n*\n" |
51 | "********************************************************************\n" |
52 | "*\n*\n" |
53 | ,font->f_label,size,size); |
54 | |
55 | WRITEF("\tSUBR\t%s,FNT\n",font->f_label); |
56 | WRITEF("\tREL\t\tTHIS IS A RELOCATEABLE OBJECT.\n"); |
57 | WRITEF("\tORG\t0\n"); |
58 | WRITEF("*\n*\n" |
59 | "********************************************************************\n" |
60 | "*\n*\n"); |
61 | |
62 | WRITEF ("*"); |
63 | if (font->f_comment) WRITEF(" %s\n",font->f_comment) |
64 | else WRITEF("\n"); |
65 | WRITEF("FNT"); |
66 | // if (font->f_label)WRITEF(font->f_label); |
67 | WRITEF("\tDEC\t%i\tVERTICAL LINE SPACING FOR FONT\n",font->f_offset); |
8dc281af |
68 | WRITEF("\tDEC\t%i\tY VALUE OF THE BASE LINE\n",font->f_base); |
69 | WRITEF("\tDEC\t%i\tY VALUE OF THE TOP LINE\n",font->f_top); |
70 | WRITEF("\tDEC\t%i\tNUMBER OF WORDS IN FONT (FOR DYNAMIC RELOAD?)\n",font->f_size); |
71 | WRITEF("\tDEC\t%i\tNUMBER OF GLYPHS IN FONT\n",font->f_size); |
b17cb324 |
72 | WRITEF("*\n"); |
8dc281af |
73 | |
b17cb324 |
74 | for (i=0; i<font->f_size;i++){ |
b17cb324 |
75 | op_glyph(font->f_glyphs+i); |
76 | } |
8dc281af |
77 | |
b17cb324 |
78 | WRITEF("*\n"); |
79 | WRITEF("\tEND\n"); |
80 | } |