27 false,
false, 0, 0, 0, 0, 0, 0,
nop,
nop,
38 true,
false, 0, 0, 1024, 864, 0, 0, X11_Init, X11_NewViewport,
39 X11_Close, X11_Halt, X11_Clear, X11_Title,
40 X11_Pixel, X11_Line, X11_Box, X11_Arc,
41 X11_Polygon, X11_Text, X11_SetGhost,
42 X11_DefineColor, X11_DefineLinestyle, X11_SetLinestyle,
43 X11_SetColor, X11_Update,
50 false,
false, 0, 0, 1000, 1000, 0, 0, Mfb_Init, Mfb_NewViewport,
51 Mfb_Close, Mfb_Halt, Mfb_Clear,
nop,
52 Mfb_Pixel, Mfb_Line, Mfb_Box, Mfb_Arc,
53 Mfb_Polygon, Mfb_Text, Mfb_SetGhost,
54 Mfb_DefineColor, Mfb_DefineLinestyle, Mfb_SetLinestyle,
55 Mfb_SetColor, Mfb_Update,
56 nodev, Mfb_MakeMenu, Mfb_MakeDialog, Mfb_Input,
61 false,
true, 0, 0, 1000, 1000, 0, 0,
Plt5_Init,
Plt5_NewViewport,
71 false,
true, 0, 0, 1000, 1000, 0, 0,
PS_Init,
PS_NewViewport,
81 false,
true, 0, 0, 1000, 1000, 0, 0,
HP_Init,
HP_NewViewport,
91 false,
true, 0, 0, 1000, 1000, 0, 0,
WP_Init,
WP_NewViewport,
101 false,
true, 0, 0, 24, 80, 0, 0,
nodev,
nodev,
114 #define XtNumber(arr) (sizeof(arr) / sizeof(arr[0])) 124 for (i=0; i <
XtNumber(device); i++) {
125 if (!strcmp(name, device[i].name)) {
142 (void) sprintf(buf,
"xterm -e %s",
string);
144 (
void) sprintf(buf,
"%s",
string);
194 "no graphics packages; need to define either WANT_X11, or WANT_MFB");
199 if ((*(dispdev->
Init))()) {
201 "Warning: can't initialize display device for graphics.\n");
221 (void)(*(dispdev->
Close))();
229 (void)(*(dispdev->
Halt))();
237 (void)(*(dispdev->
Clear))();
244 char *wintitle, *icontitle;
246 (void)(*(dispdev->
Title))(wintitle,icontitle);
255 (void)(*(dispdev->
Pixel))(x, y);
264 (void)(*(dispdev->
Line))(x1, y1, x2, y2);
273 (void)(*(dispdev->
Box))(x1, y1, x2, y2);
281 double theta1, theta2;
283 (void)(*(dispdev->
Arc))(x0, y0, radius, theta1, theta2);
292 (void)(*(dispdev->
Polygon))(p);
302 (void)(*(dispdev->
Text))(text, x, y);
310 void (*callback)(int,int,int,int);
316 (void)(*(dispdev->
SetGhost))(callback, x, y);
324 double red, green, blue;
326 (void)(*(dispdev->
DefineColor))(colorid, red, green, blue);
354 (void)(*(dispdev->
SetColor))(colorid);
361 (void)(*(dispdev->
Update))();
373 int *screenx, *screeny;
386 low =
mylog10(graph->datawindow.ymin);
387 high =
mylog10(graph->datawindow.ymax);
388 *screeny =
rnd( (((
mylog10(y) - low) / (high - low))
389 * graph->viewport.height)
390 + graph->viewportyoff );
393 *screeny =
rnd( ((y - graph->datawindow.ymin) / graph->aspectratioy)
394 + graph->viewportyoff );
399 low =
mylog10(graph->datawindow.xmin);
400 high =
mylog10(graph->datawindow.xmax);
401 *screenx =
rnd( ((
mylog10(x) - low) / (high - low))
402 * graph->viewport.width
403 + graph ->viewportxoff);
406 *screenx =
rnd( (x - graph->datawindow.xmin) / graph->aspectratiox
407 + graph ->viewportxoff);
418 int *screenx, *screeny;
420 (void)(*(dispdev->
DatatoScreen))(graph, x, y, screenx, screeny);
443 (void)(*(dispdev->
Input))(request, response);
453 switch (request->option) {
456 response->
option = request->option;
479 "This operation is not defined for display type %s.",
493 struct _keyed *keyed;
495 keyed = (
struct _keyed *)
calloc(1,
sizeof(
struct _keyed));
498 graph->keyed = keyed;
501 keyed->next = graph->keyed;
502 graph->keyed = keyed;
505 keyed->text =
tmalloc(strlen(text) + 1);
506 strcpy(keyed->text, text);
511 keyed->colorindex = 1;
525 if (devname !=
NULL) {
526 if (lastdev !=
NULL) {
532 if (!strcmp(dispdev->
name,
"error")) {
538 (*(dispdev->
Init))();
541 (*(dispdev->
Close))();
static char buf[MAXPROMPT]
DISPDEVICE * FindDev(char *name)
int DevSwitch(char *devname)
void DevArc(int x0, int y0, int radius, double theta1, double theta2)
void DevDefineLinestyle(int linestyleid, int mask)
void DevTitle(char *wintitle, char *icontitle)
internalerror(char *message)
void DevInput(REQUEST *request, RESPONSE *response)
void DevPixel(int x, int y)
void DevLine(int x1, int y1, int x2, int y2)
union response::@11 reply
void DevSetColor(int colorid)
int DevXterm(char *string)
int DevNewViewport(GRAPH *pgraph)
void DevDefineColor(int colorid, double red, double green, double blue)
void DevSetGhost(void(*callback)(), int x, int y)
void DevSetLinestyle(int linestyleid)
void DevBox(int x1, int y1, int x2, int y2)
void SaveText(GRAPH *graph, char *text, int x, int y)
void DevDatatoScreen(GRAPH *graph, double x, double y, int *screenx, int *screeny)
void DevPolygon(POLYGON *p)
static int gen_DatatoScreen()
externalerror(char *message)
void DevText(char *text, int x, int y)