DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T m

⟦a65c003ff⟧ TextFile

    Length: 4938 (0x134a)
    Types: TextFile
    Names: »misc.c«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« 
        └─⟦e5a54fb17⟧ 
            └─⟦this⟧ »pp-5.0/Src/MTAconsole/misc.c« 

TextFile

/* misc.c : routines that wouldn't fit anywhere else */

# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Src/MTAconsole/RCS/misc.c,v 5.0 90/09/20 16:19:56 pp Exp Locker: pp $";
# endif

/*
 * $Header: /cs/research/pp/hubris/pp-beta/Src/MTAconsole/RCS/misc.c,v 5.0 90/09/20 16:19:56 pp Exp Locker: pp $
 *
 * $Log:	misc.c,v $
 * Revision 5.0  90/09/20  16:19:56  pp
 * rcsforce : 5.0 public release
 * 
 */



#include	"console.h"
#include	<X11/cursorfont.h>

#include "back.bit"
Pixmap	backpixmap;

struct color_item 	*colors = NULL;
XColor		white,
		exact_white,
		black,
		exact_black;
Pixel		fg,
		bg;

create_pixmaps(disp)
Display	*disp;
{
	Window	root;
	root = XDefaultRootWindow(disp);
	backpixmap = XCreatePixmapFromBitmapData(disp, root,
					   back_bits, back_width, back_height,
					   fg,
					   bg, 
					   XDefaultDepth(disp,XDefaultScreen(disp)));
}

static Colormap	color_map;

extern int	num_colors;
extern Widget	quit_command;

#define MAX_COLOR_VALUE 65535

/* setup the colours used */
/* ARGSUSED */
SetColours(disp, win)
Display	*disp;
Window	win;
{
	int	i,
		badness;
	Colormap	cmap2;
	double	fract;

	WidgetGet (quit_command,
		   XtNbackground, &bg,
		   XtNforeground, &fg,
		   NULL);

	color_map = DefaultColormap(disp,
				     XDefaultScreen(disp));

	XAllocNamedColor(disp, color_map,
			 "white",
			 &white,
			 &exact_white);
	
	XAllocNamedColor(disp, color_map,
			 "black",
			 &black,
			 &exact_black);

	colors = (struct color_item *) calloc((unsigned) num_colors,
						   sizeof(struct color_item));
	if (num_colors == 1) {
		colors[0].badness = 0;
		colors[0].colour.pixel = fg;
	} else {
		for (i = 0; i < num_colors; i++) {
			badness = (i * max_bad_channel/num_colors);
			colors[i].badness = badness;

			colors[i].colour.pixel = 0;
			colors[i].colour.blue = 0;

			if (badness > max_bad_channel/2)
				colors[i].colour.red = MAX_COLOR_VALUE;
			else {
				fract = (double) badness * 2.0 / (double) max_bad_channel;
				colors[i].colour.red = fract * MAX_COLOR_VALUE;
			}
			if (colors[i].colour.red > MAX_COLOR_VALUE)
				colors[i].colour.red = MAX_COLOR_VALUE;

			if (max_bad_channel - badness > max_bad_channel/2)
				colors[i].colour.green = MAX_COLOR_VALUE;
			else {
				fract = ((double) (max_bad_channel - badness) * 2.0) / (double) max_bad_channel;
				colors[i].colour.green = fract * MAX_COLOR_VALUE;
			}
			if (colors[i].colour.green > MAX_COLOR_VALUE)
				colors[i].colour.green = MAX_COLOR_VALUE;

			colors[i].colour.flags = DoRed | DoGreen | DoBlue;
		}
		for (i = 0; i < num_colors; i++) {
			if (XAllocColor(disp, color_map, &(colors[i].colour)) == 0) {
				cmap2 = XCopyColormapAndFree(disp, color_map);
				for (; i < num_colors; i++) 
					XAllocColor(disp, 
						    cmap2, 
						    &(colors[i].colour));
				color_map = cmap2;
				break;
			}
		}
		XSetWindowColormap(disp, win, color_map);
	}
	create_pixmaps(disp);
}

char	*stripstr(str)
char	*str;
{	
	char	*ret,
		*ix;

	ix = str;
	while (*ix != '\0' && isspace(*ix)) ix++;
	ret = ix;
	while(*ix != '\0' && *ix != '\n') ix++;
	if (*ix == '\n') *ix = '\0';

	return ret;
}

int is_loc_chan(chan)
struct chan_struct	*chan;
{
	if (chan->chantype == int_Qmgr_chantype_mts
	    && chan->outbound > 0)
		return	TRUE;
	else
		return FALSE;
}

extern Display	*disp;
extern Widget	top;
Window		waitWindow = NULL;

StartWait()
{
	if (waitWindow == (Window)NULL) {
		XSetWindowAttributes	attributes;
		attributes.cursor = XCreateFontCursor(disp, XC_watch);
		attributes.do_not_propagate_mask = (KeyPressMask | 
						    KeyReleaseMask |
						    ButtonPressMask | 
						    ButtonReleaseMask |
						    PointerMotionMask);
		waitWindow = XCreateWindow(disp,
					   XtWindow(top),
					   0, 0,
					   XDisplayWidth(disp,
							 XDefaultScreen(disp)),
					   XDisplayHeight(disp,
							  XDefaultScreen(disp)),
					   (unsigned int) 0,
					   CopyFromParent,
					   InputOnly,
					   CopyFromParent,
					   (CWDontPropagate | CWCursor),
					   &attributes);
	}
	(void) XMapRaised(disp, waitWindow);
	(void) XFlush(disp);
}

EndWait()
{
	(void) XUnmapWindow(disp, waitWindow);
}

extern Widget	time_label;

undisplay_time_label()
{
  XtSetMappedWhenManaged(time_label, False);
}

display_time_label()
{
  update_time_label();
  XtSetMappedWhenManaged(time_label, True);
}

extern time_t currentTime;
extern char   *time_t2RFC();
extern int	currchans, maxchans;

update_time_label()
{
  char	*str, buf[BUFSIZ];
  time(&currentTime);
  str = time_t2RFC(currentTime);
  (void) sprintf(buf, "%d channel%s running (max %d) at %s", 
		 currchans, (currchans == 1) ? "" : "s",
		 maxchans, str);
  free(str);
  WidgetSet(time_label, 
	    XtNlabel, buf,
	    NULL);
}

extern State	connectState;

/* ARGSUSED */	    
void setLoad (w, ptr_load, load)
Widget		w;
double		*ptr_load;
double		*load;
{
	if (connectState == connected)
		*load = *ptr_load / 100;
	else
		*load = 0;
}