1 // Copyright (c) 1999-2012 OPEN CASCADE SAS
3 // The content of this file is subject to the Open CASCADE Technology Public
4 // License Version 6.5 (the "License"). You may not use the content of this file
5 // except in compliance with the License. Please obtain a copy of the License
6 // at http://www.opencascade.org and read it completely before using this file.
8 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
9 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
11 // The Original Code and all software distributed under the License is
12 // distributed on an "AS IS" basis, without warranty of any kind, and the
13 // Initial Developer hereby disclaims all such warranties, including without
14 // limitation, any warranties of merchantability, fitness for a particular
15 // purpose or non-infringement. Please see the License for the specific terms
16 // and conditions governing the rights and limitations under the License.
19 #include <Xw_Extension.h>
21 /* ifdef then trace on */
23 #define TRACE_SET_BACKGROUND_INDEX
27 XW_STATUS Xw_set_background_index(awindow,index):
28 XW_EXT_WINDOW *awindow
29 int index Background Index in the colormap
31 Update Background Color index .
33 Returns XW_ERROR if Extended Window or Colormap is wrong
34 or Index is not defined .
35 Returns XW_SUCCESS if Successful
40 XW_STATUS Xw_set_background_index (void *awindow,int index)
42 XW_STATUS Xw_set_background_index (awindow,index)
45 #endif /*XW_PROTOTYPE*/
47 XW_EXT_WINDOW *pwindow = (XW_EXT_WINDOW*)awindow ;
48 unsigned long backpixel,highpixel ;
51 if ( !Xw_isdefine_window(pwindow) ) {
52 /*ERROR*Bad EXT_WINDOW Address*/
53 Xw_set_error(24,"Xw_set_background_index",pwindow) ;
58 if ( !Xw_isdefine_colorindex(_COLORMAP,index) ) {
59 /*ERROR*Bad Defined Color Index*/
60 Xw_set_error(41,"Xw_set_background_index",&index) ;
63 backpixel = _COLORMAP->pixels[index] ;
64 _COLORMAP->define[index] = BACKCOLOR ;
66 backpixel = _COLORMAP->backpixel ;
68 highpixel = _COLORMAP->highpixel ;
69 XSetForeground(_DISPLAY, pwindow->qgwind.gccopy, highpixel) ;
70 highpixel ^= backpixel ;
72 XSetWindowBackground (_DISPLAY, _WINDOW, backpixel) ;
73 XSetBackground(_DISPLAY, pwindow->qgwind.gc, backpixel) ;
74 XSetBackground(_DISPLAY, pwindow->qgwind.gccopy, backpixel) ;
75 XSetBackground(_DISPLAY, pwindow->qgwind.gcclear, backpixel) ;
76 XSetBackground(_DISPLAY, pwindow->qgwind.gchigh, backpixel) ;
77 XSetForeground(_DISPLAY, pwindow->qgwind.gcclear, backpixel) ;
78 XSetForeground(_DISPLAY, pwindow->qgwind.gchigh, highpixel) ;
79 for( i=0 ; i<MAXQG ; i++ ) {
80 XSetBackground(_DISPLAY, pwindow->qgline[i].gc, backpixel);
81 XSetBackground(_DISPLAY, pwindow->qgpoly[i].gc, backpixel);
82 XSetBackground(_DISPLAY, pwindow->qgtext[i].gc, backpixel);
83 XSetBackground(_DISPLAY, pwindow->qgmark[i].gc, backpixel);
85 pwindow->backindex = index ;
87 #ifdef TRACE_SET_BACKGROUND_INDEX
88 if( Xw_get_trace() ) {
89 printf(" Xw_set_background_index(%lx,%d)\n",(long ) pwindow,index) ;