|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 2198 (0x896)
Types: TextFile
Names: »colors.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z«
└─⟦2109abc41⟧
└─⟦this⟧ »./X.V10R4/xtrek/colors.c«
#ifndef lint
static char *rcsid_colors_c = "$Header: colors.c,v 10.2 86/11/30 15:56:10 jg Rel $";
#endif lint
/* Copyright (c) 1986 Chris Guthrie */
#include <stdio.h>
#include <X/Xlib.h>
#include <strings.h>
#include "data.h"
typedef struct assoc {
char *str;
int *colorp;
int bWDef;
char *colorDef;
} ASSOC;
ASSOC assoc[] = {
{ "border", &borderColor, WhitePixel, "blue" },
{ "background", &backColor, BlackPixel, "black" },
{ "text", &textColor, WhitePixel, "yellow" },
{ "fed", &shipCol[0], WhitePixel, "yellow", },
{ "rom", &shipCol[1], WhitePixel, "red", },
{ "kli", &shipCol[2], WhitePixel, "green", },
{ "ori", &shipCol[3], WhitePixel, "slate blue", },
{ "warning", &warningColor, WhitePixel, "red" },
{ "unknown", &unColor, WhitePixel, "light grey" },
{ "ralert", &rColor, WhitePixel, "red" },
{ "yalert", &yColor, WhitePixel, "yellow" },
{ "galert", &gColor, WhitePixel, "green" },
{ "me", &myColor, WhitePixel, "white" }
};
getColorDefs(prog)
char *prog;
{
int i, invert = 0;
char *color, *str;
Color def;
if (DisplayCells() <= 2) { /* b & w */
invert = booleanDefault(prog, "reverseVideo");
for (i = 0; i < sizeof (assoc) / sizeof (*assoc); i++)
*assoc[i].colorp =
invert ? !assoc[i].bWDef : assoc[i].bWDef;
} else {
for (i = 0; i < sizeof (assoc) / sizeof (*assoc); i++) {
if ((color = XGetDefault(prog, assoc[i].str)) == NULL)
color = assoc[i].colorDef;
XParseColor(color, &def);
XGetHardwareColor(&def);
*assoc[i].colorp = def.pixel;
}
}
}
booleanDefault(prog, def)
char *prog, *def;
{
char *str;
if ((str = XGetDefault(prog, def)) != NULL && strcmp(str, "on") == 0)
return (1);
else
return (0);
}
#define iswhite(c) ((c) == ' ' || c == '\t' || (c) == ',')
arrayDefault(prog, def, sizeP, sp)
char *prog, *def;
int *sizeP;
short *sp;
{
int max;
char *str;
str = XGetDefault(prog, def);
if (str == NULL)
return (-1);
max = *sizeP;
*sizeP = 0;
for (;;) {
while (iswhite(*str))
str++;
if (*str == '\0')
break;
if (++(*sizeP) > max)
return (-1);
if (sscanf(str, "0x%hx", &sp[*sizeP]) != 1)
return (-1);
while (!iswhite(*str) && *str != '\0')
str++;
}
return (0);
}