[BACK]Return to corel.trm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot / term

Annotation of OpenXM_contrib/gnuplot/term/corel.trm, Revision 1.1.1.2

1.1       maekawa     1: /*
1.1.1.2 ! maekawa     2:  * $Id: corel.trm,v 1.8 1998/12/14 18:38:27 lhecking Exp $
1.1       maekawa     3:  */
                      4:
                      5: /*
                      6:    corel.trm
                      7:
                      8:    A modified ai.trm for CorelDraw import filters
                      9:    by Chris Parks, parks@physics.purdue.edu
                     10:    Import from CorelDraw with the CorelTrace filter
                     11:
                     12:    syntax: set terminal default
                     13:            set terminal mode "fontname" fontsize,xsize,ysize,linewidth
                     14:
                     15:            mode= color or monochrome             (default=mono)
                     16:            "fontname"= postscript font name      (default="SwitzerlandLight")
                     17:            fontsize  = size of font in points    (default=22pt)
                     18:            xsize     = width of page in inches   (default=8.2in)
                     19:            ysize     = height of page in inches  (default=10in)
                     20:            linewidth = width of lines in points  (default=1.2pt)
                     21:
                     22: */
                     23:
                     24: /*
                     25:  * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
                     26:  */
                     27:
                     28: #include "driver.h"
                     29:
                     30: #ifdef TERM_REGISTER
                     31: register_term(corel)
                     32: #endif
                     33:
                     34: #ifdef TERM_PROTO
                     35: TERM_PUBLIC void COREL_options __PROTO((void));
                     36: TERM_PUBLIC void COREL_init __PROTO((void));
                     37: TERM_PUBLIC void COREL_graphics __PROTO((void));
                     38: TERM_PUBLIC void COREL_text __PROTO((void));
                     39: TERM_PUBLIC void COREL_reset __PROTO((void));
                     40: TERM_PUBLIC void COREL_linetype __PROTO((int linetype));
                     41: TERM_PUBLIC void COREL_move __PROTO((unsigned int x, unsigned int y));
                     42: TERM_PUBLIC void COREL_vector __PROTO((unsigned int x, unsigned int y));
                     43: TERM_PUBLIC void COREL_put_text __PROTO((unsigned int x, unsigned int y,
                     44:                                         char *str));
                     45: TERM_PUBLIC int COREL_text_angle __PROTO((int ang));
                     46: TERM_PUBLIC int COREL_justify_text __PROTO((enum JUSTIFY mode));
                     47: #define CORELD_XMAX  5960      /* 8.2 inches wide */
                     48: #define CORELD_YMAX  7200      /* 10 inches high  */
                     49: #define CORELD_VTIC  (CORELD_YMAX/80)
                     50: #define CORELD_HTIC  (CORELD_YMAX/80)
                     51: #define CORELD_VCHAR (22*COREL_SC)     /* default is 22 point characters */
                     52: #define CORELD_HCHAR (22*COREL_SC*6/10)
                     53: #endif
                     54:
                     55: #ifndef TERM_PROTO_ONLY
                     56: #ifdef TERM_BODY
                     57:
                     58: /* plots for publication should be sans-serif (don't use TimesRoman) */
                     59: char corel_font[MAX_ID_LEN + 1] = "SwitzerlandLight";  /* name of font */
                     60: int corel_fontsize = 22;       /* size of font in pts */
                     61: TBOOLEAN corel_color = FALSE;
                     62: TBOOLEAN corel_stroke = FALSE;
                     63: int corel_path_count = 0;      /* count of lines in path */
                     64: int corel_ang = 0;             /* text angle */
                     65: enum JUSTIFY corel_justify = LEFT;     /* text is flush left */
                     66:
                     67:
                     68: /* default mode constants */
                     69: #define CORELD_XOFF  0         /* page offset in pts */
                     70: #define CORELD_YOFF  0
                     71: #define COREL_SC     (10.0)    /* scale is 1pt = 10 units */
                     72: #define CORELD_LW    (1.2*COREL_SC)    /* linewidth = 1.2 pts */
                     73:
                     74: unsigned int corel_xmax = CORELD_XMAX;
                     75: unsigned int corel_ymax = CORELD_YMAX;
                     76: float corel_lw = CORELD_LW;
                     77:
                     78: TERM_PUBLIC void COREL_options()
                     79: {
                     80:     struct value a;
                     81:
                     82:     if (!END_OF_COMMAND && almost_equals(c_token, "def$ault")) {
                     83:        corel_color = FALSE;
                     84:        strcpy(corel_font, "SwitzerlandLight");
                     85:        corel_fontsize = 22;
                     86:        corel_lw = CORELD_LW;
                     87:        corel_xmax = CORELD_XMAX;
                     88:        corel_ymax = CORELD_YMAX;
                     89:        c_token++;
                     90:     }
                     91:     if (!END_OF_COMMAND && almost_equals(c_token, "mono$chrome")) {
                     92:        corel_color = FALSE;
                     93:        c_token++;
                     94:     } else if (!END_OF_COMMAND && (almost_equals(c_token, "color$")
                     95:                                   || almost_equals(c_token, "colour$"))) {
                     96:        corel_color = TRUE;
                     97:        c_token++;
                     98:     }
                     99:     if (!END_OF_COMMAND && isstring(c_token)) {
                    100:        quote_str(corel_font, c_token, MAX_ID_LEN);
                    101:        c_token++;
                    102:     }
                    103:     if (!END_OF_COMMAND) {
                    104:        /* We have font size specified */
                    105:        corel_fontsize = (int) real(const_express(&a));
                    106:        c_token++;
                    107:        term->v_char = (unsigned int) (corel_fontsize * COREL_SC);
                    108:        term->h_char = (unsigned int) (corel_fontsize * COREL_SC * 6 / 10);
                    109:     }
                    110:     if (!END_OF_COMMAND) {
                    111:        corel_xmax = (unsigned int) (real(const_express(&a)) * 720);
                    112:        c_token++;
                    113:        if (!END_OF_COMMAND) {
                    114:            corel_ymax = (unsigned int) (real(const_express(&a)) * 720);
                    115:            c_token++;
                    116:        }
                    117:        term->xmax = corel_xmax;
                    118:        term->ymax = corel_ymax;
                    119:        term->v_tic = corel_ymax / 80;
                    120:        term->h_tic = corel_ymax / 80;
                    121:     }
                    122:     if (!END_OF_COMMAND) {
                    123:        corel_lw = real(const_express(&a)) * COREL_SC;
                    124:        c_token++;
                    125:     }
                    126:     sprintf(term_options, "%s \"%s\" %d,%0.1f,%0.1f,%0.1f",
                    127:            corel_color ? "color" : "monochrome", corel_font,
                    128:            corel_fontsize, corel_xmax / 720.0, corel_ymax / 720.0,
                    129:            corel_lw / COREL_SC);
                    130: }
                    131:
                    132: TERM_PUBLIC void COREL_init()
                    133: {
                    134:     fprintf(gpoutfile, "\
                    135: %%!PS-Adobe-2.0 EPSF-1.2\n\
                    136: %%%%BoundingBox: %d %d %d %d\n\
                    137: %%%%TemplateBox: %d %d %d %d\n\
                    138: %%%%EndComments\n\
                    139: %%%%EndProlog\n\
                    140: %%%%BeginSetup\n%%%%EndSetup\n",
                    141:            CORELD_XOFF, CORELD_YOFF,
                    142:            (int) ((corel_xmax) / COREL_SC + 0.5 + CORELD_XOFF),
                    143:            (int) ((corel_ymax) / COREL_SC + 0.5 + CORELD_YOFF),
                    144:            CORELD_XOFF, CORELD_YOFF,
                    145:            (int) ((corel_xmax) / COREL_SC + 0.5 + CORELD_XOFF),
                    146:            (int) ((corel_ymax) / COREL_SC + 0.5 + CORELD_YOFF));
                    147: }
                    148:
                    149:
                    150: TERM_PUBLIC void COREL_graphics()
                    151: {
                    152:     corel_path_count = 0;
                    153:     corel_stroke = FALSE;
                    154: }
                    155:
                    156:
                    157: TERM_PUBLIC void COREL_text()
                    158: {
                    159:     if (corel_stroke) {
                    160:        fputs("S\n", gpoutfile);
                    161:        corel_stroke = FALSE;
                    162:     }
                    163:     corel_path_count = 0;
                    164: }
                    165:
                    166:
                    167: TERM_PUBLIC void COREL_reset()
                    168: {
                    169:     fputs("%%%%Trailer\n", gpoutfile);
                    170: }
                    171:
                    172:
                    173: TERM_PUBLIC void COREL_linetype(linetype)
                    174: int linetype;
                    175: {
                    176:     if (corel_stroke) {
                    177:        fputs("S\n", gpoutfile);
                    178:        corel_stroke = FALSE;
                    179:     }
                    180:     switch (linetype) {
                    181:     case -2:
                    182:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    183:        if (corel_color) {
                    184:            fputs("0 0 0 1 K\n", gpoutfile);
                    185:        } else {
                    186:            fputs("\
                    187: [] 0 d\n\
                    188: 0 j\n0 G\n", gpoutfile);
                    189:        }
                    190:        break;
                    191:
                    192:     case -1:
                    193:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    194:        if (corel_color) {
                    195:            fputs("0 0 0 1 K\n", gpoutfile);
                    196:        } else {
                    197:            fputs("\
                    198: [1 2] 0 d\n\
                    199: 0 j\n0 G\n", gpoutfile);
                    200:        }
                    201:        break;
                    202:
                    203:     case 0:
                    204:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    205:        if (corel_color) {
                    206:            fputs("1 0 1 0 K\n", gpoutfile);
                    207:        } else {
                    208:            fputs("\
                    209: [] 0 d\n\
                    210: 2 j\n0 G\n", gpoutfile);
                    211:        }
                    212:        break;
                    213:
                    214:     case 1:
                    215:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    216:        if (corel_color) {
                    217:            fputs("1 1 0 0 K\n", gpoutfile);
                    218:        } else {
                    219:            fputs("\
                    220: [4 2] 0 d\n\
                    221: 2 j\n0 G\n", gpoutfile);
                    222:        }
                    223:        break;
                    224:
                    225:     case 2:
                    226:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    227:        if (corel_color) {
                    228:            fputs("0 1 1 0 K\n", gpoutfile);
                    229:        } else {
                    230:            fputs("\
                    231: [2 3] 0 d\n\
                    232: 2 j\n0 G\n", gpoutfile);
                    233:        }
                    234:        break;
                    235:
                    236:     case 3:
                    237:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    238:        if (corel_color) {
                    239:            fputs("0 1 0 0 K\n", gpoutfile);
                    240:        } else {
                    241:            fputs("\
                    242: [1 1.5] 0 d\n\
                    243: 2 j\n0 G\n", gpoutfile);
                    244:        }
                    245:        break;
                    246:
                    247:     case 4:
                    248:        fprintf(gpoutfile, "%f w\n", corel_lw / COREL_SC);
                    249:        if (corel_color) {
                    250:            fputs("1 0 0 0 K\n", gpoutfile);
                    251:        } else {
                    252:            fputs("\
                    253: [5 2 1 2] 0 d\n\
                    254: 2 j\n0 G\n", gpoutfile);
                    255:        }
                    256:        break;
                    257:
                    258:     case 5:
                    259:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    260:        if (corel_color) {
                    261:            fputs("0 0 1 0 K\n", gpoutfile);
                    262:        } else {
                    263:            fputs("\
                    264: [4 3 1 3] 0 d\n\
                    265: 2 j\n0 G\n", gpoutfile);
                    266:        }
                    267:        break;
                    268:
                    269:     case 6:
                    270:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    271:        if (corel_color) {
                    272:            fputs("0 0 0 1 K\n", gpoutfile);
                    273:        } else {
                    274:            fputs("\
                    275: [2 2 2 4] 0 d\n\
                    276: 2 j\n0 G\n", gpoutfile);
                    277:        }
                    278:        break;
                    279:
                    280:     case 7:
                    281:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    282:        if (corel_color) {
                    283:            fputs("0 0.7 1 0 K\n", gpoutfile);
                    284:        } else {
                    285:            fputs("\
                    286: [2 2 2 2 2 4] 0 d\n\
                    287: 2 j\n0 G\n", gpoutfile);
                    288:        }
                    289:        break;
                    290:
                    291:     case 8:
                    292:        fprintf(gpoutfile, "%.2f w\n", corel_lw / COREL_SC);
                    293:        if (corel_color) {
                    294:            fputs("0.5 0.5 0.5 0 K\n", gpoutfile);
                    295:        } else {
                    296:            fputs("\
                    297: [2 2 2 2 2 2 2 4] 0 d\n\
                    298: 2 j\n0 G\n", gpoutfile);
                    299:        }
                    300:        break;
                    301:     }
                    302:     corel_path_count = 0;
                    303: }
                    304:
                    305:
                    306: TERM_PUBLIC void COREL_move(x, y)
                    307: unsigned int x, y;
                    308: {
                    309:     if (corel_stroke)
                    310:        fputs("S\n", gpoutfile);
                    311:     fprintf(gpoutfile, "%0.2f %0.2f m\n", x / COREL_SC, y / COREL_SC);
                    312:     corel_path_count += 1;
                    313:     corel_stroke = TRUE;
                    314: }
                    315:
                    316:
                    317: TERM_PUBLIC void COREL_vector(x, y)
                    318: unsigned int x, y;
                    319: {
                    320:     fprintf(gpoutfile, "%.2f %.2f l\n", x / COREL_SC, y / COREL_SC);
                    321:     corel_path_count += 1;
                    322:     corel_stroke = TRUE;
                    323:     if (corel_path_count >= 400) {
                    324:        fprintf(gpoutfile, "S\n%.2f %.2f m\n", x / COREL_SC, y / COREL_SC);
                    325:        corel_path_count = 0;
                    326:     }
                    327: }
                    328:
                    329:
                    330: TERM_PUBLIC void COREL_put_text(x, y, str)
                    331: unsigned int x, y;
                    332: char *str;
                    333: {
                    334:     char ch;
                    335:     if (corel_stroke) {
                    336:        fputs("S\n", gpoutfile);
                    337:        corel_stroke = FALSE;
                    338:     }
                    339:     switch (corel_justify) {
                    340:     case LEFT:
                    341:        fprintf(gpoutfile, "/_%s %d %d 0 0 z\n",
                    342:                corel_font, corel_fontsize, corel_fontsize);
                    343:        break;
                    344:     case CENTRE:
                    345:        fprintf(gpoutfile, "/_%s %d %d 0 1 z\n",
                    346:                corel_font, corel_fontsize, corel_fontsize);
                    347:        break;
                    348:     case RIGHT:
                    349:        fprintf(gpoutfile, "/_%s %d %d 0 2 z\n",
                    350:                corel_font, corel_fontsize, corel_fontsize);
                    351:        break;
                    352:     }
                    353:     if (corel_ang == 0) {
                    354:        fprintf(gpoutfile, "[1 0 0 1 %.2f %.2f]e\n0 g\n",
                    355:                x / COREL_SC, y / COREL_SC - corel_fontsize / 3.0);
                    356:     } else {
                    357:        fprintf(gpoutfile, "[0 1 -1 0 %.2f %.2f]e\n0 g\n",
                    358:                x / COREL_SC - corel_fontsize / 3.0, y / COREL_SC);
                    359:     }
                    360:
                    361:     putc('(', gpoutfile);
                    362:     ch = *str++;
                    363:     while (ch != NUL) {
                    364:        if ((ch == '(') || (ch == ')') || (ch == '\\'))
                    365:            putc('\\', gpoutfile);
                    366:        putc(ch, gpoutfile);
                    367:        ch = *str++;
                    368:     }
                    369:     fputs(")t\nT\n", gpoutfile);
                    370:     corel_path_count = 0;
                    371: }
                    372:
                    373: TERM_PUBLIC int COREL_text_angle(ang)
                    374: int ang;
                    375: {
                    376:     corel_ang = ang;
                    377:     return TRUE;
                    378: }
                    379:
                    380: TERM_PUBLIC int COREL_justify_text(mode)
                    381: enum JUSTIFY mode;
                    382: {
                    383:     corel_justify = mode;
                    384:     return TRUE;
                    385: }
                    386:
                    387: #endif /* TERM_BODY */
                    388:
                    389: #ifdef TERM_TABLE
                    390:
                    391: TERM_TABLE_START(corel_driver)
                    392:     "corel", "EPS format for CorelDRAW",
                    393:     CORELD_XMAX, CORELD_YMAX, CORELD_VCHAR, CORELD_HCHAR,
                    394:     CORELD_VTIC, CORELD_HTIC, COREL_options, COREL_init, COREL_reset,
                    395:     COREL_text, null_scale, COREL_graphics, COREL_move, COREL_vector,
                    396:     COREL_linetype, COREL_put_text, COREL_text_angle,
                    397:     COREL_justify_text, do_point, do_arrow, set_font_null
                    398: TERM_TABLE_END(corel_driver)
                    399:
                    400: #undef LAST_TERM
                    401: #define LAST_TERM corel_driver
                    402:
                    403: #endif /* TERM_TABLE */
                    404: #endif /* TERM_PROTO_ONLY */
                    405:
                    406: #ifdef TERM_HELP
                    407: START_HELP(corel)
                    408: "1 corel",
                    409: "?commands set terminal corel",
                    410: "?set terminal corel",
                    411: "?set term corel",
                    412: "?terminal corel",
                    413: "?term corel",
                    414: "?corel",
                    415: " The `corel` terminal driver supports CorelDraw.",
                    416: "",
                    417: " Syntax:",
                    418: "       set terminal corel {  default",
                    419: "                           | {monochrome | color",
                    420: "                                {<fontname> {\"<fontsize>\" ",
                    421: "                                   {<xsize> <ysize> {<linewidth> }}}}}",
                    422: "",
                    423: " where the fontsize and linewidth are specified in points and the sizes in",
                    424: " inches.  The defaults are monochrome, \"SwitzerlandLight\", 22, 8.2, 10 and 1.2."
                    425: END_HELP(corel)
                    426: #endif /* TERM_HELP */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>