1 #include "allincludes.h"
2 
3 void
W_ChangeBorder(window,color)4 W_ChangeBorder(window, color)
5     W_Window window;
6     int     color;
7 {
8 #ifdef DEBUG
9     printf("Changing border of %d\n", window);
10 #endif
11 
12 #if 0
13     /* fix inexplicable color bug */
14     if (DisplayCells(W_Display, W_Screen) <= 2)
15 	XSetWindowBorderPixmap(W_Display, W_Void2Window(window)->window,
16 			       colortable[color].pixmap);
17     else
18 	XSetWindowBorder(W_Display, W_Void2Window(window)->window,
19 			 colortable[color].pixelValue);
20 #endif /*0*/
21 
22     struct window *border = W_Void2Window(W_Void2Window(window)->borderwin);
23 
24     border->border_color = color;
25     redrawBorder(border);
26 }
27 
28 /* this function will redraw a border window [BDyess] */
29  void
redrawBorder(win)30 redrawBorder(win)
31     struct window *win;
32 {
33     XPoint points[3];
34     XGCValues val;
35 
36     if(win->border == 0) return;
37     val.line_width = win->border*2 + 1;
38     if(win->border_color == NONE) {
39       /* GC is set up so that lines are drawn with thickness BORDER, so only one
40 	 line is needed for each side.  The background is set to DARK_GREY,
41 	 which is the color of the left and top sides, so only two other
42 	 lines need to be drawn. [BDyess] */
43       XChangeGC(W_Display, borderGC, GCLineWidth, &val);
44       points[0].x = win->border/2;
45       points[0].y = win->height;
46       points[1].x = win->width;
47       points[1].y = win->height;
48       points[2].x = win->width;
49       points[2].y = win->border/2;
50       XDrawLines(W_Display, win->drawable, borderGC, points, 3,
51                  CoordModeOrigin);
52     } else {	/* draw a color border */
53       val.foreground = colortable[win->border_color].pixelValue;
54       XChangeGC(W_Display, borderGC, GCLineWidth | GCForeground, &val);
55       XDrawRectangle(W_Display, win->drawable, borderGC, win->border - 1,
56 		     win->border - 1,
57 		     win->width - 2 * win->border + 2,
58 		     win->height - 2 * win->border + 2);
59       XSetForeground(W_Display, borderGC, colortable[LIGHT_GREY].pixelValue);
60     }
61 }
62 
63 /* this function will redraw the main (background) window, which contains a
64    reverse-border.  [BDyess] */
65 #if NOTUSED
66  void
redrawReversedBorder(win)67 redrawReversedBorder(win)
68     struct window *win;
69 {
70     XPoint points[3];
71     XGCValues val;
72 
73     /* GC is set up so that lines are drawn with thickness BORDER, so only one
74        line is needed for each side.  The background is set to DARK_GREY,
75        which is the color of the left and top sides, so only two other
76        lines need to be drawn. [BDyess] */
77     val.line_width = BORDER*2 + 1;
78     XChangeGC(W_Display, borderGC, GCLineWidth, &val);
79     points[0].x = 0;
80     points[0].y = win->height - BORDER/2;
81     points[1].x = 0;
82     points[1].y = 0;
83     points[2].x = win->width - BORDER/2;
84     points[2].y = 0;
85     XDrawLines(W_Display, win->drawable, borderGC, points, 3, CoordModeOrigin);
86 }
87 #endif
88 
89