The R Project SVN R

Rev

Rev 21060 | Rev 30832 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 21060 Rev 27236
Line 101... Line 101...
101
     * R's concept of a graphics engine.
101
     * R's concept of a graphics engine.
102
     */
102
     */
103
    GESystemDesc *gesd[MAX_GRAPHICS_SYSTEMS];
103
    GESystemDesc *gesd[MAX_GRAPHICS_SYSTEMS];
104
};
104
};
105
 
105
 
-
 
106
/* 
-
 
107
 * A structure containing graphical parameters 
-
 
108
 *
-
 
109
 * This is how graphical parameters are passed from graphics systems
-
 
110
 * to the graphics engine AND from the graphics engine to graphics
-
 
111
 * devices.
-
 
112
 *
-
 
113
 * Devices are not *required* to honour graphical parameters
-
 
114
 * (e.g., alpha transparency is going to be tough for some)
-
 
115
 */
-
 
116
typedef struct {
-
 
117
    /*
-
 
118
     * Colours
-
 
119
     *
-
 
120
     * NOTE:  Alpha transparency included in col & fill
-
 
121
     */
-
 
122
    int col;             /* pen colour (lines, text, borders, ...) */
-
 
123
    int fill;            /* fill colour (for polygons, circles, rects, ...) */
-
 
124
    double gamma;        /* Gamma correction */
-
 
125
    /* 
-
 
126
     * Line characteristics
-
 
127
     */
-
 
128
    double lwd;          /* Line width (roughly number of pixels) */
-
 
129
    int lty;             /* Line type (solid, dashed, dotted, ...) */
-
 
130
                         /* FIXME: need to add line end/joins */
-
 
131
    /*
-
 
132
     * Text characteristics
-
 
133
     */
-
 
134
    double cex;          /* Character expansion (font size = fontsize*cex) */
-
 
135
    double ps;           /* Font size in points */
-
 
136
    double lineheight;   /* Line height (multiply by font size) */
-
 
137
    int fontface;        /* Font face (plain, italic, bold, ...) */
-
 
138
    char fontfamily[50]; /* Font family */
-
 
139
} R_GE_gcontext;
-
 
140
 
106
GEDevDesc* GEcreateDevDesc(NewDevDesc* dev);
141
GEDevDesc* GEcreateDevDesc(NewDevDesc* dev);
107
void GEdestroyDevDesc(GEDevDesc* dd);
142
void GEdestroyDevDesc(GEDevDesc* dd);
108
void* GEsystemState(GEDevDesc *dd, int index);
143
void* GEsystemState(GEDevDesc *dd, int index);
109
void GEregisterWithDevice(GEDevDesc *dd);
144
void GEregisterWithDevice(GEDevDesc *dd);
110
void GEregisterSystem(GEcallback callback, int *systemRegisterIndex);
145
void GEregisterSystem(GEcallback callback, int *systemRegisterIndex);
Line 162... Line 197...
162
#define LTY_DOTDASH	1 + (3<<4) + (4<<8) + (3<<12)
197
#define LTY_DOTDASH	1 + (3<<4) + (4<<8) + (3<<12)
163
#define LTY_LONGDASH	7 + (3<<4)
198
#define LTY_LONGDASH	7 + (3<<4)
164
#define LTY_TWODASH	2 + (2<<4) + (6<<8) + (2<<12)
199
#define LTY_TWODASH	2 + (2<<4) + (6<<8) + (2<<12)
165
 
200
 
166
void GESetClip(double x1, double y1, double x2, double y2, GEDevDesc *dd);
201
void GESetClip(double x1, double y1, double x2, double y2, GEDevDesc *dd);
167
void GENewPage(int fill, double gamma, GEDevDesc *dd);
202
void GENewPage(R_GE_gcontext *gc, GEDevDesc *dd);
168
void GELine(double x1, double y1, double x2, double y2, 
203
void GELine(double x1, double y1, double x2, double y2, 
169
	    int col, double gamma, int lty, double lwd,
-
 
170
	    GEDevDesc *dd);
204
	    R_GE_gcontext *gc, GEDevDesc *dd);
171
void GEPolyline(int n, double *x, double *y, 
205
void GEPolyline(int n, double *x, double *y, 
172
		int col, double gamma, int lty, double lwd,
-
 
173
		GEDevDesc *dd);
206
		R_GE_gcontext *gc, GEDevDesc *dd);
174
void GEPolygon(int n, double *x, double *y, 
207
void GEPolygon(int n, double *x, double *y, 
175
	       int col, int fill, double gamma, int lty, double lwd,
-
 
176
	       GEDevDesc *dd);
208
	       R_GE_gcontext *gc, GEDevDesc *dd);
177
void GECircle(double x, double y, double radius,
209
void GECircle(double x, double y, double radius,
178
	     int col, int fill, double gamma, int lty, double lwd,
-
 
179
	     GEDevDesc *dd);
210
	      R_GE_gcontext *gc, GEDevDesc *dd);
180
void GERect(double x0, double y0, double x1, double y1,
211
void GERect(double x0, double y0, double x1, double y1,
181
	    int col, int fill, double gamma, int lty, double lwd,
-
 
182
	    GEDevDesc *dd);
212
	    R_GE_gcontext *gc, GEDevDesc *dd);
183
void GEText(double x, double y, char *str,
213
void GEText(double x, double y, char *str,
184
	    double xc, double yc, double rot,
214
	    double xc, double yc, double rot,
185
	    int col, double gamma, 
-
 
186
	    char *fontfamily, int fontface, double lineheight,
-
 
187
	    double cex, double ps,
-
 
188
	    GEDevDesc *dd);
215
	    R_GE_gcontext *gc, GEDevDesc *dd);
189
void GEMode(int mode, GEDevDesc* dd);
216
void GEMode(int mode, GEDevDesc* dd);
190
void GESymbol(double x, double y, int pch, double size,
217
void GESymbol(double x, double y, int pch, double size,
191
	      int col, int fill, double gamma, double lty, double lwd,
-
 
192
	      int font, double cex, double ps,
-
 
193
	      GEDevDesc *dd);
218
	      R_GE_gcontext *gc, GEDevDesc *dd);
194
void GEPretty(double *lo, double *up, int *ndiv);
219
void GEPretty(double *lo, double *up, int *ndiv);
195
void GEMetricInfo(int c, int font, double cex, double ps,
220
void GEMetricInfo(int c, R_GE_gcontext *gc, 
196
		  double *ascent, double *descent, double *width,
221
		  double *ascent, double *descent, double *width,
197
		  GEDevDesc *dd);
222
		  GEDevDesc *dd);
198
double GEStrWidth(char *str, 
223
double GEStrWidth(char *str, 
199
		  char *fontfamily, int fontface, double lineheight,
-
 
200
		  double cex, double ps, GEDevDesc *dd);
224
		  R_GE_gcontext *gc, GEDevDesc *dd);
201
double GEStrHeight(char *str, 
225
double GEStrHeight(char *str, 
202
		   char *fontfamily, int fontface, double lineheight,
-
 
203
		   double cex, double ps, GEDevDesc *dd);
226
		  R_GE_gcontext *gc, GEDevDesc *dd);
204
 
227
 
205
/* 
228
/* 
206
 * From plotmath.c 
229
 * From plotmath.c 
207
 */
230
 */
208
double GEExpressionWidth(SEXP expr, 
231
double GEExpressionWidth(SEXP expr, 
209
			 int font, double cex, double ps,
-
 
210
			 GEDevDesc *dd);
232
			 R_GE_gcontext *gc, GEDevDesc *dd);
211
double GEExpressionHeight(SEXP expr, 
233
double GEExpressionHeight(SEXP expr, 
212
			  int font, double cex, double ps,
-
 
213
			  GEDevDesc *dd);
234
			  R_GE_gcontext *gc, GEDevDesc *dd);
214
void GEMathText(double x, double y, SEXP expr,
235
void GEMathText(double x, double y, SEXP expr,
215
		double xc, double yc, double rot, 
236
		double xc, double yc, double rot, 
216
		int col, double gamma, int font, double cex, double ps,
-
 
217
		GEDevDesc *dd);
237
		R_GE_gcontext *gc, GEDevDesc *dd);
218
/* 
238
/* 
219
 * (End from plotmath.c)
239
 * (End from plotmath.c)
220
 */
240
 */
221
 
241
 
222
/* 
242
/* 
Line 231... Line 251...
231
 
251
 
232
/* 
252
/* 
233
 * From vfonts.c
253
 * From vfonts.c
234
 */
254
 */
235
typedef void (*R_GE_VTextRoutine)(double x, double y, char *s, 
255
typedef void (*R_GE_VTextRoutine)(double x, double y, char *s, 
236
				 int typeface, int fontindex,
-
 
237
				 double x_justify, double y_justify, 
256
				  double x_justify, double y_justify, 
238
				 double rotation,
257
				  double rotation,
239
				 int col, double gamma, double lineheight,
-
 
240
				 double cex, double ps,
-
 
241
				 GEDevDesc *dd);
258
				  R_GE_gcontext *gc, GEDevDesc *dd);
242
 
259
 
243
typedef double (*R_GE_VStrWidthRoutine)(const unsigned char *s, 
260
typedef double (*R_GE_VStrWidthRoutine)(const unsigned char *s, 
244
					int typeface, int fontindex,
-
 
245
					double lineheight, double cex, 
-
 
246
					double ps, GEDevDesc *dd);
261
					R_GE_gcontext *gc, GEDevDesc *dd);
247
 
262
 
248
typedef double (*R_GE_VStrHeightRoutine)(const unsigned char *s, 
263
typedef double (*R_GE_VStrHeightRoutine)(const unsigned char *s, 
249
					 int typeface, int fontindex,
-
 
250
					 double lineheight, double cex, 
-
 
251
					 double ps, GEDevDesc *dd);
264
					 R_GE_gcontext *gc, GEDevDesc *dd);
252
 
265
 
253
void R_GE_setVFontRoutines(R_GE_VStrWidthRoutine vwidth, 
266
void R_GE_setVFontRoutines(R_GE_VStrWidthRoutine vwidth, 
254
			   R_GE_VStrHeightRoutine vheight, 
267
			   R_GE_VStrHeightRoutine vheight, 
255
			   R_GE_VTextRoutine vtext);
268
			   R_GE_VTextRoutine vtext);
256
 
269
 
257
double R_GE_VStrWidth(const unsigned char *s, int typeface, int fontindex,
270
double R_GE_VStrWidth(const unsigned char *s, 
258
		      double lineheight, double cex, double ps, GEDevDesc *dd);
271
		      R_GE_gcontext *gc, GEDevDesc *dd);
259
 
272
 
260
double R_GE_VStrHeight(const unsigned char *s, int typeface, int fontindex,
273
double R_GE_VStrHeight(const unsigned char *s, 
261
		       double lineheight, double cex, double ps, 
-
 
262
		       GEDevDesc *dd);
274
		       R_GE_gcontext *gc, GEDevDesc *dd);
263
 
275
 
264
void R_GE_VText(double x, double y, char *s, 
276
void R_GE_VText(double x, double y, char *s, 
265
		int typeface, int fontindex,
-
 
266
		double x_justify, double y_justify, double rotation,
277
		double x_justify, double y_justify, double rotation,
267
		int col, double gamma, double lineheight,
-
 
268
		double cex, double ps,
-
 
269
		GEDevDesc *dd);
278
		R_GE_gcontext *gc, GEDevDesc *dd);
270
/* 
279
/* 
271
 * (End from vfonts.c)
280
 * (End from vfonts.c)
272
 */
281
 */
273
 
282
 
274
#define	DEG2RAD 0.01745329251994329576
283
#define	DEG2RAD 0.01745329251994329576