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

Diff for /OpenXM_contrib/gnuplot/term/Attic/metapost.trm between version 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2000/01/22 14:16:27 version 1.1.1.2, 2003/09/15 07:09:37
Line 88  TERM_PUBLIC void MP_boxfill __PROTO((int style,
Line 88  TERM_PUBLIC void MP_boxfill __PROTO((int style,
 #define MP_YSIZE 3.0  #define MP_YSIZE 3.0
   
 /* gnuplot units will be one pixel if printing device has this  /* gnuplot units will be one pixel if printing device has this
    resolution */     resolution. Too small resolutions (like 300) can give rough
 #define MP_DPI (300)     appearence to curves when user tries to smooth a curve by choosing
      high sampling rate. */
   #define MP_DPI (2400)
   
 #define MP_XMAX (MP_XSIZE*MP_DPI)  #define MP_XMAX (MP_XSIZE*MP_DPI)
 #define MP_YMAX (MP_YSIZE*MP_DPI)  #define MP_YMAX (MP_YSIZE*MP_DPI)
Line 134  static TBOOLEAN MP_color = FALSE;
Line 136  static TBOOLEAN MP_color = FALSE;
 static TBOOLEAN MP_solid = FALSE;  static TBOOLEAN MP_solid = FALSE;
   
 /* compatability mode*/  /* compatability mode*/
 static TBOOLEAN MP_notex = FALSE;  /* static TBOOLEAN MP_notex = FALSE; */
   #define MP_NO_TEX 0
   #define MP_TEX 1
   #define MP_LATEX 2
   static int MP_tex = MP_TEX;
   /* add usepackage instructions for PSNFSS ? */
   #define MP_PSNFSS_NONE  0
   #define MP_PSNFSS_7     1
   #define MP_PSNFSS_8     2
   static int MP_psnfss = MP_PSNFSS_NONE;
   /* add a4paper option to documentclass */
   static int MP_a4paper = 0;
   /* write a prologues line */
   static int MP_prologues = -1;
 /* has a font change taken place? */  /* has a font change taken place? */
 static TBOOLEAN MP_fontchanged = FALSE;  static TBOOLEAN MP_fontchanged = FALSE;
   
Line 157  MP_options()
Line 171  MP_options()
 {  {
     MP_color = FALSE;      MP_color = FALSE;
     MP_solid = FALSE;      MP_solid = FALSE;
     MP_notex = FALSE;  /*    MP_notex = FALSE;*/
       MP_tex = MP_TEX;
       MP_a4paper = 0;
       MP_psnfss  = MP_PSNFSS_NONE;
     MP_fontsize = 10.0;      MP_fontsize = 10.0;
     MP_textmag = 1.0;      MP_textmag = 1.0;
       MP_prologues = -1;
     strcpy(MP_fontname, "cmr10");      strcpy(MP_fontname, "cmr10");
     strcpy(default_font, "");   /* output file will store default font info */      strcpy(default_font, "");   /* output file will store default font info */
     while (!END_OF_COMMAND) {      while (!END_OF_COMMAND) {
         if (almost_equals(c_token, "m$onochrome")) {          if (almost_equals(c_token, "mo$nochrome")) {
             MP_color = FALSE;              MP_color = FALSE;
             c_token++;              c_token++;
             continue;              continue;
Line 184  MP_options()
Line 202  MP_options()
             continue;              continue;
         }          }
         if (almost_equals(c_token, "n$otex")) {          if (almost_equals(c_token, "n$otex")) {
             MP_notex = TRUE;  /*          MP_notex = TRUE;*/
               MP_tex = MP_NO_TEX;
             strcpy(MP_fontname, "pcrr8r");              strcpy(MP_fontname, "pcrr8r");
             c_token++;              c_token++;
             continue;              continue;
         }          }
         if (almost_equals(c_token, "t$ex")) {          if (almost_equals(c_token, "t$ex")) {
             MP_notex = FALSE;              MP_tex = MP_TEX;
             c_token++;              c_token++;
             continue;              continue;
         }          }
           if (almost_equals(c_token, "la$tex")) {
               MP_tex = MP_LATEX;
               c_token++;
               continue;
           }
           if (almost_equals(c_token, "a4$paper")) {
             MP_a4paper = 1;
             c_token++;
             continue;
           }
           if(almost_equals(c_token, "ps$nfss")) {
             MP_psnfss = MP_PSNFSS_8;
             c_token++;
             continue;
           }
           if(almost_equals(c_token, "psnfss-v$ersion7")) {
             MP_psnfss = MP_PSNFSS_7;
             c_token++;
             continue;
           }
           if(almost_equals(c_token, "nops$nfss")) {
             MP_psnfss = MP_PSNFSS_NONE;
             c_token++;
             continue;
           }
         if (almost_equals(c_token, "de$fault")) {          if (almost_equals(c_token, "de$fault")) {
             c_token++;              c_token++;
             continue;              continue;
         }          }
         if (almost_equals(c_token, "m$agnification")) {          if (almost_equals(c_token, "pro$logues")) {
             int dummy_for_prologues;
             c_token++;
             if(!(END_OF_COMMAND)) {
               if(sscanf(&(input_line[token[c_token].start_index]), "%d", &dummy_for_prologues) == 1) {
                 MP_prologues = dummy_for_prologues;
               }
             c_token++;              c_token++;
             }
             continue;
           }
           if (almost_equals(c_token, "nopro$logues")) {
             MP_prologues = -1;
             c_token++;
             continue;
           }
           if (almost_equals(c_token, "ma$gnification")) {
               c_token++;
             if (!END_OF_COMMAND) {      /* global text scaling */              if (!END_OF_COMMAND) {      /* global text scaling */
                 struct value a;                  struct value a;
                 MP_textmag = (double) real(const_express(&a));                  MP_textmag = (double) real(const_express(&a));
Line 225  MP_options()
Line 285  MP_options()
         MP_fontsize = 99.99;          MP_fontsize = 99.99;
   
     term->v_char = (unsigned int) (MP_DPI * MP_fontsize * MP_textmag * 11 / 720);      term->v_char = (unsigned int) (MP_DPI * MP_fontsize * MP_textmag * 11 / 720);
     if (MP_notex) {             /* Courier is a little wider than cmtt */      if (MP_tex == MP_NO_TEX) {          /* Courier is a little wider than cmtt */
         term->h_char = (unsigned int) (MP_DPI * MP_fontsize * MP_textmag * 6.0 / 720 + 0.5);          term->h_char = (unsigned int) (MP_DPI * MP_fontsize * MP_textmag * 6.0 / 720 + 0.5);
     } else {      } else {
         term->h_char = (unsigned int) (MP_DPI * MP_fontsize * MP_textmag * 5.3 / 720 + 0.5);          term->h_char = (unsigned int) (MP_DPI * MP_fontsize * MP_textmag * 5.3 / 720 + 0.5);
     }      }
     sprintf(term_options, "%s%s%s%s%6.3f \"%s\" %5.2f",      sprintf(term_options, "%s%s%s%s%6.3f \"%s\" %5.2f %d %d",
             MP_color ? "color " : "", MP_solid ? "solid " : "",              MP_color ? "color " : "", MP_solid ? "solid " : "",
             MP_notex ? "notex " : "", "mag ",              (MP_tex == MP_NO_TEX) ? "notex " : (MP_tex == MP_LATEX) ? "latex " : "", "mag ",
             MP_textmag, MP_fontname, MP_fontsize);              MP_textmag, MP_fontname, MP_fontsize, MP_psnfss, MP_prologues);
 }  }
   
 TERM_PUBLIC void  TERM_PUBLIC void
Line 243  MP_init()
Line 303  MP_init()
     time(&now);      time(&now);
     MP_posx = MP_posy = 0;      MP_posx = MP_posy = 0;
     fprintf(gpoutfile, "%%GNUPLOT Metapost output: %s\n", asctime(localtime(&now)));      fprintf(gpoutfile, "%%GNUPLOT Metapost output: %s\n", asctime(localtime(&now)));
       if(MP_prologues > -1) {
         fprintf(gpoutfile, "prologues:=%d;\n", MP_prologues);
       }
       if (MP_tex == MP_LATEX) {
           fputs("\n\
   %% Add \\documentclass and \\begin{dcoument} for latex\n\
   %% NB you should set the environment variable TEX to the name of your\n\
   %% latex executable (normally latex) inorder for metapost to work\n\
   %% or run\n\
   %% mpost --tex=latex ...\n\
   \n\
   % BEGPRE\n\
   \\verbatimtex\n", gpoutfile);
           if(MP_a4paper) {
             fputs("\\documentclass[a4paper]{article}\n", gpoutfile);
           } else {
             fputs("\\documentclass{article}\n", gpoutfile);
           }
           switch(MP_psnfss) {
             case MP_PSNFSS_7: {
               fputs("\\usepackage[latin1]{inputenc}\n\
   \\usepackage[T1]{fontenc}\n\
   \\usepackage{times,mathptmx}\n\
   \\usepackage{helvet}\n\
   \\usepackage{courier}\n", gpoutfile);
             } break;
             case MP_PSNFSS_8: {
               fputs("\\usepackage[latin1]{inputenc}\n\
   \\usepackage[T1]{fontenc}\n\
   \\usepackage{textcomp}\n\
   \\usepackage{mathptmx}\n\
   \\usepackage[scaled=.92]{helvet}\n\
   \\usepackage{courier}\n\
   \\usepackage{latexsym}\n", gpoutfile);
             } break;
           }
           fputs("\\begin{document}\n\
   etex\n% ENDPRE\n",
                 gpoutfile);
       }
   
     fputs("\n\      fputs("\n\
   warningcheck:=0;\n\
 defaultmpt:=mpt:=4;\n\  defaultmpt:=mpt:=4;\n\
 th:=.6;\n\  th:=.6;\n\
   %% Have nice sharp joins on our lines\n\
   linecap:=butt;\n\
   linejoin:=mitered;\n\
 \n\  \n\
 def scalepen expr n = pickup pencircle scaled (n*th) enddef;\n\  def scalepen expr n = pickup pencircle scaled (n*th) enddef;\n\
 def ptsize expr n = mpt:=n*defaultmpt enddef;\n",  def ptsize expr n = mpt:=n*defaultmpt enddef;\n\
   \n",
           gpoutfile);            gpoutfile);
   
     fprintf(gpoutfile, "\ntextmag:=%6.3f;\n", MP_textmag);      fprintf(gpoutfile, "\ntextmag:=%6.3f;\n", MP_textmag);
Line 261  vardef makepic(expr str) =\n\
Line 367  vardef makepic(expr str) =\n\
   fi\n\    fi\n\
 enddef;\n\  enddef;\n\
 \n\  \n\
 def     infontsize(expr str, size) =\n\  def infontsize(expr str, size) =\n\
   infont str scaled (size /     fontsize str)\n\    infont str scaled (size / fontsize str)\n\
 enddef;\n",  enddef;\n",
           gpoutfile);            gpoutfile);
   
     if (MP_notex) {      if (MP_tex == MP_NO_TEX) {
         fprintf(gpoutfile, "\n\          fprintf(gpoutfile, "\n\
 defaultfont:= \"%s\";\n\  defaultfont:= \"%s\";\n\
 defaultscale := %6.3f/fontsize defaultfont;\n",  defaultscale := %6.3f/fontsize defaultfont;\n",
                 MP_fontname, MP_fontsize);                  MP_fontname, MP_fontsize);
     } else {      } else {
         if(MP_tex != MP_LATEX) {
         fputs("\n\          fputs("\n\
 %font changes\n\  %font changes\n\
 verbatimtex\n\  verbatimtex\n\
   \\def\\setfont#1#2{%.\n\  \\def\\setfont#1#2{%.\n\
     \\font\\gpfont=#1 at #2pt\n\    \\font\\gpfont=#1 at #2pt\n\
     \\gpfont}\n",  \\gpfont}\n", gpoutfile);
               gpoutfile);  
   
         fprintf(gpoutfile, "\\setfont{%s}{%5.2f}\netex\n",          fprintf(gpoutfile, "\\setfont{%s}{%5.2f}\netex\n",
                 MP_fontname, MP_fontsize);            MP_fontname, MP_fontsize
           );
         }
     }      }
     fputs("\n\      fputs("\n\
 color currentcolor; currentcolor=black;\n\  color currentcolor; currentcolor=black;\n\
Line 381  MP_graphics()
Line 488  MP_graphics()
     MP_oldline = -2;      MP_oldline = -2;
     MP_oldpen = 1.0;      MP_oldpen = 1.0;
     MP_oldptsize = pointsize;      MP_oldptsize = pointsize;
     fprintf(gpoutfile, "\nbeginfig(%d);\nw:=%gin;h:=%gin;\n",      fprintf(gpoutfile, "\nbeginfig(%d);\nw:=%.3fin;h:=%.3fin;\n",
             MP_char_code, MP_xsize, MP_ysize);              MP_char_code, MP_xsize, MP_ysize);
     fprintf(gpoutfile, "a:=w/%d;b:=h/%d;\n", term->xmax, term->ymax);      /* MetaPost can only handle numbers up to 4096. When MP_DPI
     fprintf(gpoutfile, "scalepen 1; ptsize %g;linetype -2;\n", pointsize);         is larger than 819, this is exceeded by (term->xmax). So we
          scale it and all coordinates down by factor of 10.0. And
          compensate by scaling a and b up.
       */
       fprintf(gpoutfile, "a:=w/%.1f;b:=h/%.1f;\n", (term->xmax)/10.0, (term->ymax)/10.0);
       fprintf(gpoutfile, "scalepen 1; ptsize %.3f;linetype -2;\n", pointsize);
     MP_char_code++;      MP_char_code++;
 }  }
   
Line 439  int pt;
Line 551  int pt;
   
     if (pointtype >= MP_POINT_TYPES)      if (pointtype >= MP_POINT_TYPES)
         pointtype %= MP_POINT_TYPES;          pointtype %= MP_POINT_TYPES;
     fprintf(gpoutfile, "gpdraw(%d,%da,%db);\n", pointtype, x, y);  /* Change %d to %f, divide x,y by 10 */
       fprintf(gpoutfile, "gpdraw(%d,%.1fa,%.1fb);\n", pointtype, x/10.0, y/10.0);
 }  }
   
 TERM_PUBLIC void  TERM_PUBLIC void
Line 449  double ps;
Line 562  double ps;
     if (MP_oldptsize != ps) {      if (MP_oldptsize != ps) {
         if (MP_inline)          if (MP_inline)
             MP_endline();              MP_endline();
         fprintf(gpoutfile, "ptsize %g;\n", ps);          fprintf(gpoutfile, "ptsize %.3f;\n", ps);
         MP_oldptsize = ps;          MP_oldptsize = ps;
     }      }
 }  }
Line 462  double lw;
Line 575  double lw;
     if (MP_oldpen != lw) {      if (MP_oldpen != lw) {
         if (MP_inline)          if (MP_inline)
             MP_endline();              MP_endline();
         fprintf(gpoutfile, "scalepen %g;\n", lw);          fprintf(gpoutfile, "scalepen %.3f;\n", lw);
         MP_oldpen = lw;          MP_oldpen = lw;
     }      }
 }  }
Line 483  unsigned int uy;
Line 596  unsigned int uy;
         }          }
     } else {      } else {
         MP_inline = TRUE;          MP_inline = TRUE;
         fprintf(gpoutfile, "draw (%da,%db)", MP_posx, MP_posy);          fprintf(gpoutfile, "draw (%.1fa,%.1fb)", MP_posx/10.0, MP_posy/10.0);
         MP_linecount = 2;          MP_linecount = 2;
     }      }
     MP_posx = ux;      MP_posx = ux;
     MP_posy = uy;      MP_posy = uy;
     fprintf(gpoutfile, "--(%da,%db)", MP_posx, MP_posy);      fprintf(gpoutfile, "--(%.1fa,%.1fb)", MP_posx/10.0, MP_posy/10.0);
 }  }
   
 static void  static void
Line 508  TBOOLEAN head;
Line 621  TBOOLEAN head;
 {  {
     MP_move(sx, sy);      MP_move(sx, sy);
     if (head) {      if (head) {
         fprintf(gpoutfile, "drawarrow (%da,%db)--(%da,%db);\n",          fprintf(gpoutfile, "drawarrow (%.1fa,%.1fb)--(%.1fa,%.1fb);\n",
                 sx, sy, ex, ey);                  sx/10.0, sy/10.0, ex/10.0, ey/10.0);
     } else if ((sx != ex) || (sy != ey)) {      } else if ((sx != ex) || (sy != ey)) {
         fprintf(gpoutfile, "draw (%da,%db)--(%da,%db);\n",          fprintf(gpoutfile, "draw (%.1fa,%.1fb)--(%.1fa,%.1fb);\n",
                 sx, sy, ex, ey);                  sx/10.0, sy/10.0, ex/10.0, ey/10.0);
     }                           /* else: arrow with no length and no head = sound of one hand clapping? */      }                           /* else: arrow with no length and no head = sound of one hand clapping? */
     MP_posx = ex;      MP_posx = ex;
     MP_posy = ey;      MP_posy = ey;
Line 532  char str[];
Line 645  char str[];
         return;          return;
   
     /* F***. why do drivers need to modify string args? */      /* F***. why do drivers need to modify string args? */
     text = gp_alloc(strlen(str)+1, "temp string");      text = gp_strdup(str);
     strcpy(text,str);  
   
     if (MP_inline)      if (MP_inline)
         MP_endline();          MP_endline();
Line 550  char str[];
Line 662  char str[];
         j = 3;          j = 3;
         break;          break;
     }      }
     if (MP_notex) {      if (MP_tex == MP_NO_TEX) {
         for (i = 0; i < strlen(text); i++)          for (i = 0; i < strlen(text); i++)
             if (text[i] == '"')              if (text[i] == '"')
                 text[i] = '\''; /* Replace " with ' */                  text[i] = '\''; /* Replace " with ' */
         if (MP_fontchanged) {          if (MP_fontchanged) {
             fprintf(gpoutfile, "\              fprintf(gpoutfile, "\
 put_text(\"%s\" infontsize(\"%s\",%5.2f), %da, %db, %d, %d);\n",  put_text(\"%s\" infontsize(\"%s\",%5.2f), %.1fa, %.1fb, %d, %d);\n",
                     text, MP_fontname, MP_fontsize, x, y, MP_ang, j);                      text, MP_fontname, MP_fontsize, x/10.0, y/10.0, MP_ang, j);
         } else {          } else {
             fprintf(gpoutfile, "put_text(\"%s\", %da, %db, %d, %d);\n",              fprintf(gpoutfile, "put_text(\"%s\", %.1fa, %.1fb, %d, %d);\n",
                     text, x, y, MP_ang, j);                      text, x/10.0, y/10.0, MP_ang, j);
         }          }
     } else if (MP_fontchanged) {      } else if (MP_fontchanged) {
         if(MP_tex != MP_LATEX) {
         fprintf(gpoutfile, "\          fprintf(gpoutfile, "\
 put_text( btex \\setfont{%s}{%5.2f} %s etex, %da, %db, %d, %d);\n",  put_text( btex \\setfont{%s}{%5.2f} %s etex, %.1fa, %.1fb, %d, %d);\n",
                 MP_fontname, MP_fontsize, text, x, y, MP_ang, j);                  MP_fontname, MP_fontsize, text, x/10.0, y/10.0, MP_ang, j);
         } else {
           fprintf(gpoutfile, "put_text( btex %s etex, %.1fa, %.1fb, %d, %d);\n",
                   text, x/10.0, y/10.0, MP_ang, j);
         }
     } else {      } else {
         fprintf(gpoutfile, "put_text( btex %s etex, %da, %db, %d, %d);\n",          fprintf(gpoutfile, "put_text( btex %s etex, %.1fa, %.1fb, %d, %d);\n",
                 text, x, y, MP_ang, j);                  text, x/10.0, y/10.0, MP_ang, j);
     }      }
   
     free(text);      free(text);
Line 629  unsigned int x1, y1, wd, ht;
Line 746  unsigned int x1, y1, wd, ht;
         MP_endline();          MP_endline();
     if (sty <= 0)      if (sty <= 0)
         fprintf(gpoutfile, "\          fprintf(gpoutfile, "\
 fill (%da,%db)--(%da,%db)--(%da,%db)--(%da,%db)--cycle withcolor background;\n",  fill (%.1fa,%.1fb)--(%.1fa,%.1fb)--(%.1fa,%.1fb)--(%.1fa,%.1fb)--cycle withcolor background;\n",
                 x1, y1, x1 + wd, y1, x1 + wd, y1 + ht, x1, y1 + ht);                  x1/10.0, y1/10.0, (x1 + wd)/10.0, y1/10.0, (x1 + wd)/10.0, (y1 +
     ht)/10.0, x1/10.0, (y1 + ht)/10.0);
 }  }
   
 #endif /* TERM_BODY */  #endif /* TERM_BODY */
Line 669  START_HELP(mp)
Line 787  START_HELP(mp)
 " allowing essentially  any TeX symbols in titles and labels.",  " allowing essentially  any TeX symbols in titles and labels.",
 "",  "",
 " The `mp` terminal is selected with a command of the form",  " The `mp` terminal is selected with a command of the form",
 "    set term mp {color} {solid} {notex} {mag <magsize>} {\"<name>\"} {<size>}",  "    set term mp {color} {solid} {notex|tex|latex} {mag <magsize>} {\"<name>\"}",
   "                {<size>}",
 " The option `color` causes lines to be drawn in color (on a printer or display",  " The option `color` causes lines to be drawn in color (on a printer or display",
 " that supports it), `monochrome` (or nothing) selects black lines.  The option",  " that supports it), `monochrome` (or nothing) selects black lines.  The option",
 " `solid` draws solid lines, while `dashed` (or nothing) selects lines with",  " `solid` draws solid lines, while `dashed` (or nothing) selects lines with",
Line 681  START_HELP(mp)
Line 800  START_HELP(mp)
 " labels under this option.  This is intended for use on old plot files or files",  " labels under this option.  This is intended for use on old plot files or files",
 " that make frequent use of common characters like `$` and `%` that require",  " that make frequent use of common characters like `$` and `%` that require",
 " special handling in TeX.",  " special handling in TeX.",
   "",
   "",
   " The option `tex` sets the terminal to output its text for TeX to process.",
   "",
   " The option `latex` sets the terminal to output its text for processing by",
   " LaTeX. This allows things like \\frac for fractions which LaTeX knows about",
   " but TeX does not.  Note that you must set the environment variable TEX to the",
   " name of your LaTeX executable (normally latex) if you use this option. ",
   " Otherwise metapost will try and use TeX to process the text and it won't work.",
 "",  "",
 " Changing font sizes in TeX has no effect on the size of mathematics, and there",  " Changing font sizes in TeX has no effect on the size of mathematics, and there",
 " is no foolproof way to make such a change, except by globally  setting a",  " is no foolproof way to make such a change, except by globally  setting a",

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2

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