| 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; |
| 42 | |
| 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); |
| 68 | WRITEF("\tDAC\t**\tRESERVED FOR FUTURE USE\n"); |
| 69 | WRITEF("\tDAC\t**\tRESERVED FOR FUTURE USE\n"); |
| 70 | WRITEF("\tDAC\t**\tRESERVED FOR FUTURE USE\n"); |
| 71 | WRITEF("*\n"); |
| 72 | for (i=0; i<font->f_size;i++){ |
| 73 | // WRITEF("Glyph:\n"); |
| 74 | op_glyph(font->f_glyphs+i); |
| 75 | } |
| 76 | WRITEF("*\n"); |
| 77 | WRITEF("\tEND\n"); |
| 78 | } |