FAUST compiler  0.9.9.6b8
Public Member Functions | List of all members
PSDev Class Reference

#include <PSDev.h>

Inheritance diagram for PSDev:
Inheritance graph
[legend]
Collaboration diagram for PSDev:
Collaboration graph
[legend]

Public Member Functions

 PSDev (const char *, double, double)
 
 ~PSDev ()
 
void rect (double, double, double, double, const char *, const char *)
 
void triangle (double x, double y, double l, double h, const char *color, const char *link, bool leftright)
 
void rond (double, double, double)
 
void carre (double, double, double)
 
void fleche (double, double, double, int)
 
void trait (double, double, double, double)
 
void dasharray (double, double, double, double)
 
void text (double, double, const char *, const char *link)
 
void label (double, double, const char *)
 
void markSens (double, double, int)
 
void Error (const char *, const char *, int, double, double, double)
 
- Public Member Functions inherited from device
virtual ~device ()
 

Additional Inherited Members

- Protected Attributes inherited from device
FILE * fic_repr
 

Detailed Description

Definition at line 31 of file PSDev.h.

Constructor & Destructor Documentation

PSDev::PSDev ( const char *  ficName,
double  largeur,
double  hauteur 
)

Definition at line 54 of file PSDev.cpp.

References addFileNum().

55 {
56  if ((fic_repr = fopen(addFileNum(ficName),"w+")) == NULL) {
57  //if ((fic_repr = fopen(ficName,"w+")) == NULL) {
58  cout<<"Impossible de creer ou d'ouvrir "<<ficName<<endl;
59  }
60 
61  if(largeur<hauteur)
62  largeur=hauteur;
63 
64  fprintf(fic_repr,"%%!PS-Adobe-3.0 \n");
65  //fprintf(fic_repr,"%%%%Pages: (atend) \n");
66  fprintf(fic_repr,"%%%%BoundingBox: 0 0 450 %d\n",(int)floor((hauteur*450/largeur)+1));
67 
68  fprintf(fic_repr,"/unit {%f mul} def\n\n",450/largeur);
69  fprintf(fic_repr,"0 %f unit translate\n",hauteur);
70  fprintf(fic_repr,"1 -1 scale\n\n"); // postscript's origin = lower left corner (SVG:upper left)
71  fprintf(fic_repr,"0.6 unit setlinewidth\n"); // lines' width
72 
73  fprintf(fic_repr,"/Times-Roman findfont %% Get the basic font for text\n");
74  //fprintf(fic_repr,"15 unit scalefont %% Scale the font to 15 units\n");
75  fprintf(fic_repr,"10 unit scalefont %% Scale the font to 10 units\n");
76  fprintf(fic_repr,"setfont %% Make it the current font\n\n");
77 }
static char * addFileNum(const char *fname)
Definition: PSDev.cpp:36
FILE * fic_repr
Definition: device.h:49

Here is the call graph for this function:

PSDev::~PSDev ( )

Definition at line 79 of file PSDev.cpp.

80 {
81  fprintf(fic_repr,"showpage\n"); //eject the page
82  fclose(fic_repr);
83 }
FILE * fic_repr
Definition: device.h:49

Member Function Documentation

void PSDev::carre ( double  x,
double  y,
double  cote 
)
virtual

Implements device.

Definition at line 160 of file PSDev.cpp.

161 {
162  fprintf(fic_repr,"gsave\n");
163  fprintf(fic_repr,"newpath\n");
164  fprintf(fic_repr,"0.3 setgray\n");
165  fprintf(fic_repr,"%f unit %f unit moveto\n",x-cote/2,y);
166  fprintf(fic_repr,"0 unit %f unit rlineto\n",-cote);
167  fprintf(fic_repr,"%f unit 0 unit rlineto\n",cote);
168  fprintf(fic_repr,"0 unit %f unit rlineto\n",cote);
169  fprintf(fic_repr,"closepath\n");
170  fprintf(fic_repr,"stroke\n");
171  fprintf(fic_repr,"grestore\n");
172 }
FILE * fic_repr
Definition: device.h:49
void PSDev::dasharray ( double  x1,
double  y1,
double  x2,
double  y2 
)
virtual

Implements device.

Definition at line 185 of file PSDev.cpp.

186 {
187  fprintf(fic_repr,"gsave\n");
188  fprintf(fic_repr,"newpath\n");
189  fprintf(fic_repr,"0.6 setgray\n");
190  fprintf(fic_repr,"0.8 unit setlinewidth\n");
191  fprintf(fic_repr,"%f unit %f unit moveto\n",x1,y1);
192  fprintf(fic_repr,"%f unit %f unit lineto\n",x2,y2);
193  fprintf(fic_repr,"stroke\n");
194  fprintf(fic_repr,"grestore\n");
195 }
FILE * fic_repr
Definition: device.h:49
void PSDev::Error ( const char *  message,
const char *  reason,
int  nb_error,
double  x,
double  y,
double  largeur 
)
virtual

Implements device.

Definition at line 240 of file PSDev.cpp.

241 {
242  fprintf(fic_repr,"gsave\n");
243  fprintf(fic_repr,"/Times-Roman findfont %% Get the basic font for text\n");
244  fprintf(fic_repr,"17 unit scalefont %% Scale the font to 10 points\n");
245  fprintf(fic_repr,"setfont %% Make it the current font\n\n");
246  fprintf(fic_repr,"newpath\n");
247  fprintf(fic_repr,"%f unit %f unit moveto\n",(x-8)-(strlen(message)-1)*3.8,y-10);
248  fprintf(fic_repr,"1 -1 scale\n");
249  fprintf(fic_repr,"(%s) show\n",message);
250  fprintf(fic_repr,"1 -1 scale\n");
251  fprintf(fic_repr,"%f unit %f unit moveto\n",(x-8)-(strlen(reason)-1)*3.8,y+10);
252  fprintf(fic_repr,"1 -1 scale\n");
253  fprintf(fic_repr,"(%s) show\n",reason);
254  fprintf(fic_repr,"grestore\n");
255 
256 }
FILE * fic_repr
Definition: device.h:49
void PSDev::fleche ( double  x,
double  y,
double  rotation,
int  sens 
)
virtual

Implements device.

Definition at line 124 of file PSDev.cpp.

125 {
126  if(sens == 1)
127  {
128  fprintf(fic_repr,"gsave\n");
129  fprintf(fic_repr,"newpath\n");
130  fprintf(fic_repr,"0.3 setgray\n");
131  fprintf(fic_repr,"%f unit %f unit moveto\n",x,y);
132  fprintf(fic_repr,"%f rotate\n",rotation);
133  fprintf(fic_repr,"%f unit %f unit rlineto\n",(double)-4,(double)-2);
134  fprintf(fic_repr,"%f rotate\n",(double)-rotation);
135  fprintf(fic_repr,"%f unit %f unit moveto\n",x,y);
136  fprintf(fic_repr,"%f rotate\n",rotation);
137  fprintf(fic_repr,"%f unit %f unit rlineto\n",(double)-4,(double)+2);
138  fprintf(fic_repr,"closepath\n");
139  fprintf(fic_repr,"stroke\n");
140  fprintf(fic_repr,"grestore\n");
141  }
142  else //for the recursion
143  {
144  fprintf(fic_repr,"gsave\n");
145  fprintf(fic_repr,"newpath\n");
146  fprintf(fic_repr,"0.3 setgray\n");
147  fprintf(fic_repr,"%f unit %f unit moveto\n",x,y);
148  fprintf(fic_repr,"%f rotate\n",rotation);
149  fprintf(fic_repr,"%f unit %f unit rlineto\n",(double)4,(double)-2);
150  fprintf(fic_repr,"%f rotate\n",(double)-rotation);
151  fprintf(fic_repr,"%f unit %f unit moveto\n",x,y);
152  fprintf(fic_repr,"%f rotate\n",rotation);
153  fprintf(fic_repr,"%f unit %f unit rlineto\n",(double)4,(double)+2);
154  fprintf(fic_repr,"closepath\n");
155  fprintf(fic_repr,"stroke\n");
156  fprintf(fic_repr,"grestore\n");
157  }
158 }
FILE * fic_repr
Definition: device.h:49
void PSDev::label ( double  x,
double  y,
const char *  label 
)
virtual

Implements device.

Definition at line 208 of file PSDev.cpp.

209 {
210  fprintf(fic_repr,"gsave\n");
211  fprintf(fic_repr,"/Times-Roman findfont %% Get the basic font for text\n");
212  fprintf(fic_repr,"7 unit scalefont %% Scale the font to 10 points\n");
213  fprintf(fic_repr,"setfont %% Make it the current font\n\n");
214  fprintf(fic_repr,"newpath\n");
215  fprintf(fic_repr,"%f unit %f unit moveto\n",(x+2),y+1.2);
216  fprintf(fic_repr,"1 -1 scale\n");
217  fprintf(fic_repr,"(%s) show\n",label);
218  fprintf(fic_repr,"grestore\n");
219 }
FILE * fic_repr
Definition: device.h:49
void label(double, double, const char *)
Definition: PSDev.cpp:208
void PSDev::markSens ( double  x,
double  y,
int  sens 
)
virtual

Implements device.

Definition at line 221 of file PSDev.cpp.

222 {
223  if (sens==1)
224  {
225  fprintf(fic_repr,"newpath\n");
226  fprintf(fic_repr,"%f unit %f unit moveto\n",x,y+4);
227  fprintf(fic_repr,"%f unit %f unit rlineto\n",(double)4,(double)-4);
228  fprintf(fic_repr,"closepath\n");
229  }
230  else //for the recursion
231  {
232  fprintf(fic_repr,"newpath\n");
233  fprintf(fic_repr,"%f unit %f unit moveto\n",x,y-4);
234  fprintf(fic_repr,"%f unit %f unit rlineto\n",(double)-4,(double)4);
235  fprintf(fic_repr,"closepath\n");
236  }
237  fprintf(fic_repr,"stroke\n");
238 }
FILE * fic_repr
Definition: device.h:49
void PSDev::rect ( double  x,
double  y,
double  l,
double  h,
const char *  ,
const char *   
)
virtual

Implements device.

Definition at line 85 of file PSDev.cpp.

86 {
87  fprintf(fic_repr,"gsave\n");
88  fprintf(fic_repr,"newpath\n");
89  //fprintf(fic_repr,"1.5 unit setlinewidth\n");
90  fprintf(fic_repr,"1.0 unit setlinewidth\n");
91  fprintf(fic_repr,"%f unit %f unit moveto\n",x,y);
92  fprintf(fic_repr,"0 unit %f unit rlineto\n",h);
93  fprintf(fic_repr,"%f unit 0 unit rlineto\n",l);
94  fprintf(fic_repr,"0 unit %f unit rlineto\n",-h);
95  fprintf(fic_repr,"closepath\n");
96  fprintf(fic_repr,"stroke\n");
97  fprintf(fic_repr,"grestore\n");
98 }
FILE * fic_repr
Definition: device.h:49
void PSDev::rond ( double  x,
double  y,
double  rayon 
)
virtual

Implements device.

Definition at line 115 of file PSDev.cpp.

116 {
117  fprintf(fic_repr,"gsave\n");
118  fprintf(fic_repr,"newpath\n");
119  fprintf(fic_repr,"%f unit %f unit %f unit 0 360 arc\n",x,y,rayon);
120  fprintf(fic_repr,"fill\n");
121  fprintf(fic_repr,"grestore\n");
122 }
FILE * fic_repr
Definition: device.h:49
void PSDev::text ( double  x,
double  y,
const char *  nom,
const char *  link 
)
virtual

Implements device.

Definition at line 197 of file PSDev.cpp.

198 {
199  fprintf(fic_repr,"newpath\n");
200  //fprintf(fic_repr,"%f unit %f unit moveto\n",(x-4)-(strlen(nom)-1)*3.8,y+2);
201  fprintf(fic_repr,"%f unit %f unit moveto\n",(x-0)-(strlen(nom)-1)*3.8,y+2);
202  fprintf(fic_repr,"gsave\n");
203  fprintf(fic_repr,"1 -1 scale\n\n");
204  fprintf(fic_repr,"(%s) show\n",nom);
205  fprintf(fic_repr,"grestore\n");
206 }
FILE * fic_repr
Definition: device.h:49
void PSDev::trait ( double  x1,
double  y1,
double  x2,
double  y2 
)
virtual

Implements device.

Definition at line 174 of file PSDev.cpp.

175 {
176  fprintf(fic_repr,"gsave\n");
177  fprintf(fic_repr,"0.3 setgray\n");
178  fprintf(fic_repr,"newpath\n");
179  fprintf(fic_repr,"%f unit %f unit moveto\n",x1,y1);
180  fprintf(fic_repr,"%f unit %f unit lineto\n",x2,y2);
181  fprintf(fic_repr,"stroke\n");
182  fprintf(fic_repr,"grestore\n");
183 }
FILE * fic_repr
Definition: device.h:49
void PSDev::triangle ( double  x,
double  y,
double  l,
double  h,
const char *  color,
const char *  link,
bool  leftright 
)
virtual

Implements device.

Definition at line 100 of file PSDev.cpp.

101 {
102  fprintf(fic_repr,"gsave\n");
103  fprintf(fic_repr,"newpath\n");
104  //fprintf(fic_repr,"1.5 unit setlinewidth\n");
105  fprintf(fic_repr,"1.0 unit setlinewidth\n");
106  fprintf(fic_repr,"%f unit %f unit moveto\n",x,y);
107  fprintf(fic_repr,"0 unit %f unit rlineto\n",h);
108  fprintf(fic_repr,"%f unit 0 unit rlineto\n",l);
109  fprintf(fic_repr,"0 unit %f unit rlineto\n",-h);
110  fprintf(fic_repr,"closepath\n");
111  fprintf(fic_repr,"stroke\n");
112  fprintf(fic_repr,"grestore\n");
113 }
FILE * fic_repr
Definition: device.h:49

The documentation for this class was generated from the following files: