Main Page   Data Structures   File List   Data Fields   Globals  

xfig.c

Go to the documentation of this file.
00001 #include <stdio.h>
00002 #include <math.h>
00003 #include "xfig.h"
00004 
00005 #define ARROWRATIO 3.0
00006 #define ARROWHW 0.5
00007 
00008 void XfigStartCompound(FILE *fptr, int ix1, int iy1, int ix2, int iy2)
00009 {
00010   fprintf(fptr, "%d %d %d %d %d\n", XFIG_COMPOUND,
00011           ix1, iy1, ix2, iy2);
00012 }
00013 
00014 
00015 void XfigEndCompound(FILE *fptr)
00016 {
00017   fprintf(fptr, "%d\n", - XFIG_COMPOUND);
00018 }
00019 
00020 
00021 void XfigPolyLine(FILE *fptr, int *x, int *y, int npoints, 
00022                   int linestyle, int thickness, int color)
00023 {
00024   int i;
00025   fprintf(fptr, "%d %d %d %d %d 0 -1 %d %f 0 0 0\n",
00026           XFIG_POLYLINE, XFIG_POLY_TYPE, linestyle, thickness, color,
00027           XFIG_NOT_FILLED, 0.0);
00028   for (i = 0; i < npoints; i++)
00029     fprintf(fptr, "%d %d\n", x[i], y[i]);
00030   fprintf(fptr, "%d %d\n", XFIG_END_POLY, XFIG_END_POLY);
00031 }
00032 
00033 
00034 void XfigVector(FILE *fptr, int x, int y, int fx, int fy, 
00035                 int linestyle, int thickness, int color)
00036 {
00037   double fl, arrowheight;
00038 
00039   fprintf(fptr, "%d %d %d %d %d 0 -1 %d %f 0 1 0\n",
00040           XFIG_POLYLINE, XFIG_POLY_TYPE, linestyle, thickness, color,
00041           XFIG_NOT_FILLED, 0.0);
00042   fl = sqrt(fx*fx + fy*fy);
00043   arrowheight = fl/ARROWRATIO;
00044   fprintf(fptr, "-1 -1 %.3f %.3f %.3f\n", 1.0, 
00045           ARROWHW*arrowheight, arrowheight);
00046   fprintf(fptr, "%d %d %d %d %d %d\n", x, y, x + fx, y + fy,
00047           XFIG_END_POLY, XFIG_END_POLY);
00048 }
00049 
00050 
00051 void XfigLine(FILE *fptr, int x, int y, int x1, int y1, 
00052               int linestyle, int thickness, int color)
00053 {
00054   fprintf(fptr, "%d %d %d %d %d 0 -1 %d %f 0 0 0\n",
00055           XFIG_POLYLINE, XFIG_POLY_TYPE, linestyle, thickness, color,
00056           XFIG_NOT_FILLED, 0.0);
00057   fprintf(fptr, "%d %d %d %d %d %d\n", x, y, x1, y1,
00058           XFIG_END_POLY, XFIG_END_POLY);
00059 }
00060 
00061 
00062 void XfigBox(FILE *fptr, int ix1, int iy1, int ix2, int iy2,
00063              int linestyle, int thickness, int color)
00064 {
00065   fprintf(fptr, "%d %d %d %d %d 0 -1 %d %f 0 0 0\n",
00066           XFIG_BOX_TYPE, XFIG_BOX_TYPE,
00067           linestyle, thickness, color, XFIG_NOT_FILLED, 0.0);
00068   fprintf(fptr, "%d %d %d %d %d %d %d %d %d %d %d %d\n",
00069           ix1, iy1, ix1, iy2, ix2, iy2, ix2, iy1, ix1, iy1, 
00070           XFIG_END_POLY, XFIG_END_POLY);
00071 }
00072 
00073 
00074 void XfigCircle(FILE *fptr, int x, int y, int radius,
00075                 int linestyle, int thickness, int color)
00076 {
00077   fprintf(fptr, "%d 3 %d %d %d 0 -1 %d %f 1 0.0 %d %d %d %d %d %d %d %d\n",
00078           XFIG_ELLIPSE_TYPE, linestyle, thickness, color, XFIG_BLACK_FILLED,
00079           0.0,
00080           x, y, radius, radius, x, y, x + radius, y);
00081 }
00082 
00083 
00084 void XfigText(FILE *fptr, int x, int y, int sub_type, int font, int font_size,
00085               int color, float angle, char *text)
00086 {
00087   fprintf(fptr, "%d %d %d %d -1 %d 0 %f %d %d %d %d %d %s\1\n",
00088           XFIG_TEXT_TYPE, sub_type, font, font_size, color, angle, 
00089           4, font_size, strlen(text)*font_size, x, y, text);
00090 }
00091 

Generated on Wed Feb 19 22:26:52 2003 for Markers by doxygen1.2.18