Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!csd4.csd.uwm.edu!bionet!ames!pasteur!icsi.Berkeley.EDU!stolcke From: stolcke@icsi.Berkeley.EDU (Andreas Stolcke) Newsgroups: comp.windows.x Subject: Re: xgraph display in unix:0.0 Keywords: xgraph display frame buffer Message-ID: <16791@pasteur.Berkeley.EDU> Date: 2 Sep 89 03:14:54 GMT References: <1542@dukeac.UUCP> Sender: news@pasteur.Berkeley.EDU Reply-To: stolcke@icsi.Berkeley.EDU Organization: International Computer Science Institute, Berkeley Lines: 189 > I have been using xgraph on a sun 3/60 under Sun OS (3.5). I > have found that the graph window always shows up in unix:0.1, > even if I explicitly state "-display unix:0.0". I looked > back at the original archive, and found that this problem was > noted by the moderator. > Looking into the code I found this somewhat counter-intuitive behavior to be a `feature'! xgraph goes off hunting for a color screen on the display it is running on even if given a bw screen in DISPLAY. A side effect of this seems to be that xgraph sets up a new colormap for the screen it uses. This turns out to be pretty ugly, compared with the default colormap. It's easy to get rid of all this, see patch below. I ran into two other problems: The default printer names compiled into the program are the right ones if you happen to work in Berkeley's CS Division, I made xgraph look for environment variables PLOTTER and PRINTER instead, following the convention used by other BSD programs. Finally, the font patterns used to obtain fonts from the server are very general. In particular, if you have xproof installed they will retrieve the wrong fonts and cause havoc in the dialog box. BTW, xgraph is otherwise a really neat piece of software so it's worth some hacking to get it running. ---- Andreas Stolcke International Computer Science Institute stolcke@icsi.Berkeley.EDU 1957 Center St., Suite 600, Berkeley, CA 94704 (415) 642-4274 ext. 126 ---- These are the patches to xgraph to get it running the way we wanted *** xgraph.c.dist Sun Apr 9 14:47:32 1989 --- xgraph.c Fri Sep 1 18:21:34 1989 *************** *** 737,743 **** --- 737,747 ---- /* Default color names */ static char *defColors[MAXATTR] = { "red", "SpringGreen", "blue", "yellow", + #ifdef BAD_COLORS "cyan", "plum", "orange", "coral" + #else + "cyan", "plum", "orange", "magenta" + #endif }; int InitSets() *************** *** 802,808 **** --- 806,816 ---- } } else { /* Its color */ + #ifdef BAD_COLORS bgPixel = GetColor("LightGray"); + #else + bgPixel = white_pixel; + #endif zeroPixel = white_pixel; zeroWidth = 1; normPixel = black_pixel; *************** *** 996,1002 **** --- 1004,1016 ---- { char newname[100]; int idx; + char *plotter, *getenv(); + /* check if environment tells us which plotter to use */ + plotter = getenv( "PLOTTER" ); + if ( plotter == NULL ) + plotter = getenv( "PRINTER" ); + if (rd_pix("Background")) { bgPixel = def_pixel; } *************** *** 1041,1046 **** --- 1055,1063 ---- /* Read device specific parameters */ for (idx = 0; idx < hard_count; idx++) { + if ( plotter != NULL ) + (void) strncpy( hard_devices[idx].dev_printer, plotter, MFNAME-1 ); + sprintf(newname, "%s.Dimension", hard_devices[idx].dev_name); if (rd_dbl(newname)) hard_devices[idx].dev_max_dim = def_dbl; sprintf(newname, "%s.OutputTitleFont", hard_devices[idx].dev_name); *** ux11/ux11n_font.c.dist Tue Feb 7 11:03:37 1989 --- ux11/ux11n_font.c Fri Sep 1 16:20:47 1989 *************** *** 115,120 **** data.micrometers = size; return ux11_find_font(disp, scrn_num, ! "*-medium-r-normal-*", ux11_size_eval, (VOID_P) &data, rtn_font, rtn_name); } --- 115,120 ---- data.micrometers = size; return ux11_find_font(disp, scrn_num, ! "*-medium-r-normal-*-iso8859-1", ux11_size_eval, (VOID_P) &data, rtn_font, rtn_name); } *** ux11/ux11s_vismap.c.dist Tue Feb 7 11:03:37 1989 --- ux11/ux11s_vismap.c Fri Sep 1 18:31:37 1989 *************** *** 30,41 **** --- 30,46 ---- * if the default is returned, and UX11_ALTERNATE if a non-defualt * visual/colormap is returned. */ + /* this behavior is counter-intuitive and we get rid of it! + A. Stolcke, 9/1/89 + */ { int def_depth; XVisualInfo info; + #ifdef LOOK_FOR_COLOR def_depth = DefaultDepth(disp, DefaultScreen(disp)); if (def_depth > UX11_MIN_DEPTH) { + #endif /* Plenty and sufficient default resources */ *rtn_vis = DefaultVisual(disp, DefaultScreen(disp)); *rtn_cmap = DefaultColormap(disp, DefaultScreen(disp)); *************** *** 42,47 **** --- 47,53 ---- *rtn_scrn = DefaultScreen(disp); *rtn_depth = DefaultDepth(disp, DefaultScreen(disp)); return UX11_DEFAULT; + #ifdef LOOK_FOR_COLOR } else { /* Try to find another suitable visual */ if (ux11_find_visual(disp, ux11_color_vis, &info)) { *************** *** 72,77 **** --- 78,84 ---- return 0; } } + #endif } *** Makefile.dist Sun Apr 9 13:51:44 1989 --- Makefile Fri Sep 1 18:35:17 1989 *************** *** 12,18 **** # line below. # ! CLEVEL = CFLAGS = $(CLEVEL) -Ixtb -Iux11 CC = cc --- 12,18 ---- # line below. # ! CLEVEL = -O CFLAGS = $(CLEVEL) -Ixtb -Iux11 CC = cc *************** *** 24,29 **** --- 24,31 ---- LIBS = xtb/$(XTB) ux11/$(UX11) -lX11 -lm TARGET = xgraph + XBIN = /usr/local/X11R3/bin + XMAN = /usr/local/X11R3/man #-------- *************** *** 46,48 **** --- 48,54 ---- rm -f $(OBJ) $(TARGET) xgtest.o xgtest #* *~ cd xtb; make clean cd ux11; make clean + + install: $(TARGET) + install -c $(TARGET) $(XBIN) + install -c $(TARGET).1 $(XMAN)/man1