2 #include <Xw_Extension.h>
4 /* ifdef then trace on */
6 #define TRACE_GET_HIGHLIGHT_COLOR
7 #define TRACE_GET_HIGHLIGHT_PIXEL
11 XW_STATUS Xw_get_highlight_color(acolormap,r,g,b):
12 XW_EXT_COLORMAP *acolormap Colormap extension structure
13 float *r,*g,*b ; Returns Red,Green,Blue color value 0. >= x <= 1.
15 Get R,G,B Highlight Color values from Default index .
17 Returns ERROR if Extended Colormap Address is badly defined
18 Returns SUCCESS if Successful
20 XW_STATUS Xw_get_highlight_pixel(acolormap,pixel):
21 XW_EXT_COLORMAP *acolormap Colormap extension structure
22 unsigned long *pixel; Returns HighLight pixel
27 XW_STATUS Xw_get_highlight_color (void* acolormap,
28 float* r,float* g,float* b)
30 XW_STATUS Xw_get_highlight_color (acolormap,r,g,b)
33 #endif /*XW_PROTOTYPE*/
35 XW_EXT_COLORMAP *pcolormap = (XW_EXT_COLORMAP*)acolormap;
38 if ( !Xw_isdefine_colormap(pcolormap) ) {
39 /*ERROR*Bad EXTENDED Colormap ADDRESS*/
40 Xw_set_error(42,"Xw_get_highlight_color",pcolormap) ;
48 color.pixel = pcolormap->highpixel ;
49 XQueryColor(_CDISPLAY,_CINFO.colormap,&color) ;
50 *r = (float)color.red/0xFFFF ;
51 *g = (float)color.green/0xFFFF ;
52 *b = (float)color.blue/0xFFFF ;
56 { unsigned long mask = _CVISUAL->map_entries-1 ;
57 unsigned long red,green,blue ;
58 unsigned long rmask = _CVISUAL->red_mask ;
59 unsigned long gmask = _CVISUAL->green_mask ;
60 unsigned long bmask = _CVISUAL->blue_mask ;
62 color.pixel = pcolormap->highpixel ;
63 red = color.pixel & rmask ;
64 while ( !(rmask & 0x01) ) { rmask >>= 1; red >>= 1; }
66 green = color.pixel & gmask ;
67 while ( !(gmask & 0x01) ) { gmask >>= 1; green >>= 1; }
69 blue = color.pixel & bmask ;
70 while ( !(bmask & 0x01) ) { bmask >>= 1; blue >>= 1; }
72 *r = (float)red/mask ;
73 *g = (float)green/mask ;
74 *b = (float)blue/mask ;
79 /*Unmatchable Visual class*/
80 Xw_set_error(67,"Xw_get_highlight_color",&_CCLASS) ;
86 #ifdef TRACE_GET_HIGHLIGHT_COLOR
87 if( Xw_get_trace() > 1 ) {
88 printf(" Xw_get_highlight_color(%lx,%f,%f,%f)\n",(long ) pcolormap,*r,*g,*b) ;
96 XW_STATUS Xw_get_highlight_pixel (void* acolormap,unsigned long *pixel)
98 XW_STATUS Xw_get_highlight_pixel (acolormap,pixel)
100 unsigned long *pixel;
101 #endif /*XW_PROTOTYPE*/
103 XW_EXT_COLORMAP *pcolormap = (XW_EXT_COLORMAP*)acolormap;
106 if ( !Xw_isdefine_colormap(pcolormap) ) {
107 /*ERROR*Bad EXTENDED Colormap ADDRESS*/
108 Xw_set_error(42,"Xw_get_highlight_pixel",pcolormap) ;
112 *pixel = pcolormap->highpixel ;
114 #ifdef TRACE_GET_HIGHLIGHT_PIXEL
115 if( Xw_get_trace() > 1 ) {
116 printf(" Xw_get_highlight_pixel(%lx,%lx)\n",(long ) pcolormap,*pixel) ;