|
/*ScianColors.h
Color management info for scian
Eric Pepke
March 15, 1990
*/
/*User interface color ID's and indices into palette*/
#define UIBLACK 0 /*Black */
#define UIGRAY12 1 /*12.5 % Gray */
#define UIGRAY25 2 /*25 % Gray */
#define UIGRAY37 3 /*37.5 % Gray */
#define UIGRAY50 4 /*50 % Gray */
#define UIGRAY62 5 /*62.5 % Gray */
#define UIGRAY75 6 /*75 % Gray */
#define UIGRAY87 7 /*87.5 % Gray */
#define UIWHITE 8 /*White */
#define UIRED 9 /*Bright red */
#define UIGREEN 10 /*Bright green */
#define UIBLUE 11 /*Bright blue */
#define UIMAGENTA 12 /*Bright magenta */
#define UIYELLOW 13 /*Bright yellow */
#define UICYAN 14 /*Bright cyan */
#define UIORANGE 15 /*Bright orange */
#define UIPRED 16 /*Pastel red (pink) */
#define UIPINK 16 /*Another name for pink */
#define UIPGREEN 17 /*Pastel green */
#define UIPBLUE 18 /*Pastel blue */
#define UIPMAGENTA 19 /*Pastel magenta */
#define UIPYELLOW 20 /*Pastel yellow */
#define UIPCYAN 21 /*Pastel cyan */
#define UIPURPLE 22 /*Bright purple */
#define UIGOLD 23 /*Gold, as in garnet and */
#define NUICOLORS 24
/*Do not contrast any of the pastel colors with UIBACKGROUND!*/
/*Derived colors*/
#define UIBACKGROUND UIGRAY50 /*Panel background*/
#define UIHIBACKGROUND UIWHITE /*Hilighted panel background*/
#define UITEXT UIBLACK /*Color to draw unhilited text*/
#define UIGREYTEXT UIGRAY12 /*Color of greyed text*/
#define UITOPEDGE UIWHITE /*Top edge of a projection*/
#define UILEFTEDGE UIGRAY75 /*Left edge of a projection*/
#define UIRIGHTEDGE UIGRAY25 /*Right edge of a projection*/
#define UIBOTTOMEDGE UIGRAY12 /*Bottom edge of a projection*/
#define UISHADOW UIGRAY12 /*Icon shadow*/
#define UIICONBACK UIGRAY87 /*Unhilighted icon background color*/
#define UIICONGREYFORE UIGRAY25 /*Grey icon foreground*/
#define UIICONGREYBACK UIGRAY75 /*Grey icon background*/
#define UIICONFORE UIBLACK /*Icon foreground color*/
#define UIICONPIT UIPCYAN /*Icon Pit color*/
#define UICONTROLTRACK UIPGREEN /*Control track color*/
#define UITEXTPIT UIPRED /*Text Pit color*/
#define UIICONHIBACK UIWHITE /*Highlighted icon background*/
#define UIICONSELBACK UIYELLOW /*Selected icon background*/
#define MAXCDIST 4 /*Maximum distance for color search*/
#define MAXGRAYDIRT 0 /*Maximum dirtiness in gray*/
#define COLORBEG8BITS 64 /*Color beg for 8 bits*/
#define COLORBEGMOREBITS 512 /*Color beg for more bits*/
#define DEFPALSIZE 64 /*Default number of colors in palette*/
extern Bool hasRGB; /*Has RGB mode*/
extern Bool hasCmap; /*Has color map mode*/
extern Bool hasDouble; /*Has double buffer*/
extern Bool hasZbuf; /*Has Z-buffer*/
extern Bool hasTransparency; /*Has hardware transparency*/
extern Bool hasTwoSided; /*Has two-sided lighting model*/
extern short curRed, curGreen, curBlue;
typedef short short3[3];
extern short uiColors[NUICOLORS][3];
typedef struct pal
{
Thing thing;
struct pal *next; /*Next palette in list of active palettes*/
int beg; /*Beginning of color, or -1 if not allocated*/
int nColors;
real min, max; /*Minimum and maximum that map to palette*/
short3 *colors; /*The colors in the palette*/
short3 *components; /*The components in the palette*/
} Palette, *PPtr;
extern short3 *curColors; /*The current colors*/
extern int curNColors; /*Current number of colors*/
extern real curMin, curMax; /*Current min and max values*/
extern int curBeg; /*Current beginning*/
extern PPtr curPalette; /*Current palette*/
extern real diffMult; /*Amount to multiply to get difference*/
#define SetColor(p, c) \
if (rgbp) \
c3s(((PPtr) p) -> colors[c]); \
else \
color(((PPtr) p) -> beg + (c));
#define SetRealColor(c) /*Sets real color c in current palette*/ \
if (c == missingData) \
{ \
if (rgbp) \
c3s(curPalette -> colors[0]); \
else \
color((int) curBeg - 2); \
} \
else if (c < curMin) \
{ \
if (rgbp) \
c3s(curPalette -> colors[1]); \
else \
color((int) (curBeg - 1)); \
} \
else if (c > curMax) \
{ \
if (rgbp) \
c3s(curPalette -> colors[curNColors - 1]); \
else \
color((int) (curBeg + curNColors - 3)); \
} \
else \
{ \
if (rgbp) \
c3s(curPalette -> colors[2 + (int) (diffMult * (c - curMin))]);\
else \
color((int) (curBeg + diffMult * (c - curMin))); \
}
#define GetRealColorIndex(c) /*Gets index or real color for data c in current palette*/\
c == missingData ? \
-2 : \
c < curMin ? \
-1 : \
c > curMax ? \
curNColors - 3 : \
(int) (diffMult * (c - curMin)) \
#define GREYPAT 1 /*Grey pattern*/
#define SOLIDPAT 0 /*System pattern, solid*/
#define RGBC(c) \
if (rgbp) \
{ \
c3f(c); \
} \
else \
{ \
color(ClosestUIColor(c)); \
}
extern Bool rgbp;
extern int overDraw;
/*Method declarations*/
ObjPtr ChangeTextColorWheel();
ObjPtr ChangeTextColorSlider();
ObjPtr ChangeBackgroundColorWheel();
ObjPtr ChangeBackgroundColorSlider();
ObjPtr ChangeNoBackground();
ObjPtr ClonePalette();
#ifdef PROTO
void InitColors();
void SetUIColor(int);
ObjPtr NewPalette(int);
void DisposePalette(ObjPtr);
void InterpPalette(ObjPtr, int, int, int, int, int, int);
ObjPtr NewColorWheel(int, int, int, int, char *);
void HSV2RGB(real *, real *, real *, real, real, real);
void RGB2HSV(real *, real *, real *, real, real, real);
void HLS2RGB(real *, real *, real *, real, real, real);
void RGB2HLS(real *, real *, real *, real, real, real);
void YIQ2RGB(real *, real *, real *, real, real, real);
void RGB2YIQ(real *, real *, real *, real, real, real);
void SetPalette(ObjPtr);
void SetPaletteMinMax(ObjPtr, real, real);
void CopyPalette(ObjPtr, ObjPtr);
void CopyAttenuatedPalette(ObjPtr, ObjPtr, real);
void BlueToRedPalette(ObjPtr);
void GreenToRedPalette(ObjPtr);
int ClosestUIColor(float clr[3]);
ObjPtr NewColorBar(int, int, int, int, char *);
void ActivateColorWheel(ObjPtr, Bool);
real GetColorValue(ObjPtr, int);
ObjPtr SetFunctionBox(ObjPtr, ObjPtr);
ObjPtr SetColorBarColor(ObjPtr, int, int, int, int);
void LogColorChange(ObjPtr, short3 *colors, int);
ObjPtr ImposeColorFunction(ObjPtr);
void CalcGoodSteps(double, int, int, double *majorWidth, int *nMinorSteps);
void CopyColorsToPalette(ObjPtr, short3 *);
ObjPtr NewPaletteDisplay(int, int, int, int, char *name, ObjPtr palette);
void SetObjectColor(ObjPtr);
void MapPaletteColors(PPtr p, int start, int end);
void FieldPaletteName(ObjPtr, ObjPtr);
void OverDraw(Bool);
real PSColor(void);
#else
void InitColors();
void SetUIColor();
ObjPtr NewPalette();
void DisposePalette();
void InterpPalette();
ObjPtr NewColorWheel();
void HSV2RGB();
void RGB2HSV();
void HLS2RGB();
void RGB2HLS();
void YIQ2RGB();
void RGB2YIQ();
void SetPalette();
void SetPaletteMinMax();
void CopyPalette();
void CopyAttenuatedPalette();
void BlueToRedPalette();
void GreenToRedPalette();
int ClosestUIColor();
ObjPtr NewColorBar();
void ActivateColorWheel();
real GetColorValue();
ObjPtr SetFunctionBox();
ObjPtr SetColorBarColor();
void LogColorChange();
ObjPtr ImposeColorFunction();
void CalcGoodSteps();
void CopyColorsToPalette();
ObjPtr NewPaletteDisplay();
void SetObjectColor();
void MapPaletteColors();
void FieldPaletteName();
void OverDraw();
real PSColor();
#endif
|