Subversion Repositories wimsdev

Rev

Rev 18133 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*    Copyright (C) 1998-2003 XIAO, Gang of Universite de Nice - Sophia Antipolis
  2.  *
  3.  *  This program is free software; you can redistribute it and/or modify
  4.  *  it under the terms of the GNU General Public License as published by
  5.  *  the Free Software Foundation; either version 2 of the License, or
  6.  *  (at your option) any later version.
  7.  *
  8.  *  This program is distributed in the hope that it will be useful,
  9.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.  *  GNU General Public License for more details.
  12.  *
  13.  *  You should have received a copy of the GNU General Public License
  14.  *  along with this program; if not, write to the Free Software
  15.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  16.  */
  17.  
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <stdarg.h>
  21. #include <string.h>
  22. #include <unistd.h>
  23. #include <ctype.h>
  24. #include <math.h>
  25. #include <gd.h>
  26. #include <gdfontt.h>
  27. #include <gdfonts.h>
  28. #include <gdfontmb.h>
  29. #include <gdfontl.h>
  30. #include <gdfontg.h>
  31.  
  32. #include "../Lib/libwims.h"
  33.  
  34. #define MAX_PARMS   8192
  35. #define MAX_SIZE    4096
  36. #define MAX_VARS    1024
  37. #define MAX_VARNAMEBUF  16384
  38. #define BOUND   (MAX_SIZE*10)
  39. #define exec_prefix_char '#'
  40.  
  41. extern FILE * tikz_file;
  42. extern int tikz_brushColor;
  43.  
  44. /* from flydraw.c */
  45. extern int linecnt, varcnt;
  46. extern ev_variable vartab[];
  47. extern char varnamebuf[MAX_VARNAMEBUF], *varnameptr;
  48. extern gdImagePtr image, wimg, tileimg, brushimg;
  49. extern int brushed, tiled, styled, savew, wcolor, transform;
  50. extern int dashed,filled,noreset,reset;
  51. typedef double matrice[4];
  52. #define JC_NB_MATRICES 19
  53. extern matrice matrices_pavage[JC_NB_MATRICES+1];
  54. #define matrix matrices_pavage[0]
  55. typedef double vecteur[2];
  56. extern vecteur vecteurs_pavage[JC_NB_MATRICES+1];
  57. #define vector vecteurs_pavage[0];
  58. extern double scale_buf[MAX_PARMS];
  59. extern double transx, transy; /* translation vector */
  60. extern double xscale, yscale, xstart, ystart;
  61. extern int sizex, sizey, saved;
  62. extern int color_white, color_black, color_bounder, color_frame, lstep;
  63. extern int width, width2;
  64. extern double tend, tstart, tstep, plotjump, animstep;
  65. extern int vimg_enable, vimg_ready;
  66. extern FILE *vimgf;
  67. extern char vimgfilename[1024], imagefilename[1024], tikzfilename[1024];
  68. extern int tranged;
  69. extern double parallogram_fonda[6];
  70. extern char *substit(char *p);
  71.  
  72. void output(void);
  73. /* from wimg.c */
  74. void vimg_init (void);
  75. void vimg_close (void);
  76. void vimg_arc (double x0, double y0, double rx, double ry, double a1, double a2);
  77. void vimg_ellipse (double x0, double y0, double rx, double ry);
  78. void vimg_line (double x1, double y1, double x2, double y2);
  79. void vimg_polyline (double xy[], int cnt, int closed);
  80. void vimg_rect (double x1, double y1, double x2, double y2);
  81. void vimg_plotstart (void);
  82. void vimg_plot1 (double x, double y);
  83. void vimg_plotend (void);
  84.  
  85.  
  86. /* from flylines.c */
  87. char *find_name_start(char *p);
  88. char *find_name_end(char *p);
  89. void fly_error(char *p);
  90. void scale(double dbuf[], int ibuf[], int cnt);
  91. /* scale without displacement */
  92. void scale2(double xin, double yin, double *xout, double *yout);
  93. int widthcolor(int w, int color);
  94. int getcolor(int r, int g, int b);
  95. void setvar(char *p, double v);
  96. void collapse_item(char *p, int n);
  97. int ggetline(char buf[]);
  98.  
  99. /* from nametab.c */
  100. enum {t_prep,t_color,t_obj};
  101. typedef struct objparm{ int p[MAX_PARMS]; double pd[MAX_PARMS]; int pcnt, color[2], fill;
  102. char str[MAX_LINELEN+1], font[16]; } objparm;
  103. enum {p_and,p_from,p_to,p_thru,p_center,p_color,p_font,
  104.   p_diameter,p_radius,p_width,p_height };
  105.  
  106. extern struct preptab { char *name;int typ; } preptab[];
  107. extern struct objtab {
  108.  char *name; int required_parms, color_pos, fill_tag, subst;
  109.  void (*routine) (objparm *pm); } objtab[];
  110.  
  111. extern struct colortab {char *name;char *def;} colortab[];
  112. extern struct nametab {char *name;int type;int serial;} nametab[];
  113. extern int nametab_no, prep_no, obj_no, color_no;
  114.  
  115. /* from objects.c */
  116. int obj_main(char *p);
  117.