4 #define PU_SMALL_BEVEL 2
5 #define PU_DFLT_OFFSET 8
7 #define PU_DROPSHADOW_OFFSET 10
9 void puBox::extend ( puBox *bx )
11 if ( bx -> isEmpty () ) return ;
13 if ( min[0]>bx->min[0] ) min[0] = bx->min[0] ;
14 if ( min[1]>bx->min[1] ) min[1] = bx->min[1] ;
15 if ( max[0]<bx->max[0] ) max[0] = bx->max[0] ;
16 if ( max[1]<bx->max[1] ) max[1] = bx->max[1] ;
21 void puBox::draw ( int dx, int dy, int style, puColour colour[], int am_default )
25 /* Colour assignments */
33 case PUSTYLE_DROPSHADOW :
34 mid = PUCOL_FOREGROUND ;
35 lo = PUCOL_BACKGROUND ;
38 case PUSTYLE_SMALL_BEVELLED :
39 case PUSTYLE_BEVELLED :
41 case PUSTYLE_SPECIAL_UNDERLINED :
42 mid = PUCOL_FOREGROUND ;
43 hi = PUCOL_HIGHLIGHT ;
44 lo = PUCOL_BACKGROUND ;
49 hi = PUCOL_HIGHLIGHT ;
50 lo = PUCOL_BACKGROUND ;
54 case -PUSTYLE_DROPSHADOW :
55 mid = PUCOL_HIGHLIGHT ;
56 lo = PUCOL_BACKGROUND ;
59 case -PUSTYLE_SMALL_BEVELLED :
60 case -PUSTYLE_BEVELLED :
62 case -PUSTYLE_SPECIAL_UNDERLINED :
63 mid = PUCOL_FOREGROUND ;
64 hi = PUCOL_BACKGROUND ;
65 lo = PUCOL_HIGHLIGHT ;
69 fprintf ( stderr, "PUI: Unrecognised 'style' %d\n", style ) ;
76 glColor4fv ( colour [ mid ] ) ;
77 glRecti ( dx + min[0], dy + min[1],
78 dx + max[0], dy + max[1] ) ;
81 case PUSTYLE_SMALL_BEVELLED :
82 glColor4fv ( colour [ hi ] ) ;
83 glBegin ( GL_QUAD_STRIP ) ;
84 glVertex2i ( dx + min[0] + PU_SMALL_BEVEL, dy + min[1] + PU_SMALL_BEVEL ) ;
85 glVertex2i ( dx + min[0], dy + min[1] ) ;
86 glVertex2i ( dx + min[0] + PU_SMALL_BEVEL, dy + max[1] - PU_SMALL_BEVEL ) ;
87 glVertex2i ( dx + min[0], dy + max[1] ) ;
88 glVertex2i ( dx + max[0] - PU_SMALL_BEVEL, dy + max[1] - PU_SMALL_BEVEL ) ;
89 glVertex2i ( dx + max[0], dy + max[1] ) ;
91 glColor4fv ( colour [ lo ] ) ;
92 glBegin ( GL_QUAD_STRIP ) ;
93 glVertex2i ( dx + min[0], dy + min[1] ) ;
94 glVertex2i ( dx + min[0] + PU_SMALL_BEVEL, dy + min[1] + PU_SMALL_BEVEL ) ;
95 glVertex2i ( dx + max[0], dy + min[1] ) ;
96 glVertex2i ( dx + max[0] - PU_SMALL_BEVEL, dy + min[1] + PU_SMALL_BEVEL ) ;
97 glVertex2i ( dx + max[0], dy + max[1] ) ;
98 glVertex2i ( dx + max[0] - PU_SMALL_BEVEL, dy + max[1] - PU_SMALL_BEVEL ) ;
100 glColor4fv ( colour [ mid ] ) ;
101 glRecti ( dx + min[0] + PU_SMALL_BEVEL, dy + min[1] + PU_SMALL_BEVEL,
102 dx + max[0] - PU_SMALL_BEVEL, dy + max[1] - PU_SMALL_BEVEL ) ;
105 case PUSTYLE_BEVELLED :
106 glColor4fv ( colour [ hi ] ) ;
107 glBegin ( GL_QUAD_STRIP ) ;
108 glVertex2i ( dx + min[0] + PU_BEVEL, dy + min[1] + PU_BEVEL ) ;
109 glVertex2i ( dx + min[0], dy + min[1] ) ;
110 glVertex2i ( dx + min[0] + PU_BEVEL, dy + max[1] - PU_BEVEL ) ;
111 glVertex2i ( dx + min[0], dy + max[1] ) ;
112 glVertex2i ( dx + max[0] - PU_BEVEL, dy + max[1] - PU_BEVEL ) ;
113 glVertex2i ( dx + max[0], dy + max[1] ) ;
115 glColor4fv ( colour [ lo ] ) ;
116 glBegin ( GL_QUAD_STRIP ) ;
117 glVertex2i ( dx + min[0], dy + min[1] ) ;
118 glVertex2i ( dx + min[0] + PU_BEVEL, dy + min[1] + PU_BEVEL ) ;
119 glVertex2i ( dx + max[0], dy + min[1] ) ;
120 glVertex2i ( dx + max[0] - PU_BEVEL, dy + min[1] + PU_BEVEL ) ;
121 glVertex2i ( dx + max[0], dy + max[1] ) ;
122 glVertex2i ( dx + max[0] - PU_BEVEL, dy + max[1] - PU_BEVEL ) ;
124 glColor4fv ( colour [ mid ] ) ;
125 glRecti ( dx + min[0] + PU_BEVEL, dy + min[1] + PU_BEVEL,
126 dx + max[0] - PU_BEVEL, dy + max[1] - PU_BEVEL ) ;
130 glColor4fv ( colour [ hi ] ) ;
131 glRecti ( dx + min[0], dy + min[1],
132 dx + max[0], dy + max[1] ) ;
133 glColor4fv ( colour [ mid ] ) ;
134 glRecti ( dx + min[0]+PU_BOX_WIDTH, dy + min[1]+PU_BOX_WIDTH,
135 dx + max[0]-PU_BOX_WIDTH, dy + max[1]-PU_BOX_WIDTH ) ;
139 glColor4fv ( colour [ lo ] ) ;
140 glBegin ( GL_LINE_LOOP ) ;
141 glVertex2i ( dx + min[0] + PU_RADIO_BUTTON_SIZE/2, dy + min[1] ) ;
142 glVertex2i ( dx + min[0] + PU_RADIO_BUTTON_SIZE , dy + min[1] + PU_RADIO_BUTTON_SIZE/2 ) ;
143 glVertex2i ( dx + min[0] + PU_RADIO_BUTTON_SIZE/2, dy + min[1] + PU_RADIO_BUTTON_SIZE ) ;
144 glVertex2i ( dx + min[0] , dy + min[1] + PU_RADIO_BUTTON_SIZE/2 ) ;
149 glColor4fv ( colour [ hi ] ) ;
150 glBegin ( GL_QUADS ) ;
151 glVertex2i ( dx + min[0] + PU_RADIO_BUTTON_SIZE/2, dy + min[1] + 2 ) ;
152 glVertex2i ( dx + min[0] + PU_RADIO_BUTTON_SIZE-2, dy + min[1] + PU_RADIO_BUTTON_SIZE/2 ) ;
153 glVertex2i ( dx + min[0] + PU_RADIO_BUTTON_SIZE/2, dy + min[1] + PU_RADIO_BUTTON_SIZE-2 ) ;
154 glVertex2i ( dx + min[0] + 2 , dy + min[1] + PU_RADIO_BUTTON_SIZE/2 ) ;
159 case PUSTYLE_SPECIAL_UNDERLINED :
160 glColor4fv ( colour [ hi ] ) ;
161 glRecti ( dx + min[0], dy + min[1],
162 dx + max[0], dy + min[1]+2 ) ;
163 glColor4fv ( colour [ mid ] ) ;
164 glRecti ( dx + min[0], dy + min[1]+1,
165 dx + max[0], dy + max[1] ) ;
168 case PUSTYLE_DROPSHADOW :
169 glColor4fv ( colour [ lo ] ) ;
170 glRecti ( dx + min[0] + PU_DROPSHADOW_OFFSET, dy + min[1] - PU_DROPSHADOW_OFFSET,
171 dx + max[0] + PU_DROPSHADOW_OFFSET, dy + max[1] - PU_DROPSHADOW_OFFSET ) ;
172 glColor4fv ( colour [ mid ] ) ;
173 glRecti ( dx + min[0], dy + min[1],
174 dx + max[0], dy + max[1] ) ;
180 glColor4fv ( colour [ PUCOL_BACKGROUND ] ) ;
181 glLineStipple ( 1, 0xF0F0 ) ;
182 glEnable ( GL_LINE_STIPPLE ) ;
183 glBegin ( GL_LINE_LOOP ) ;
184 glVertex2i ( dx + min[0] + PU_DFLT_OFFSET, dy + min[1] + PU_DFLT_OFFSET ) ;
185 glVertex2i ( dx + min[0] + PU_DFLT_OFFSET, dy + max[1] - PU_DFLT_OFFSET ) ;
186 glVertex2i ( dx + max[0] - PU_DFLT_OFFSET, dy + max[1] - PU_DFLT_OFFSET ) ;
187 glVertex2i ( dx + max[0] - PU_DFLT_OFFSET, dy + min[1] + PU_DFLT_OFFSET ) ;
189 glDisable ( GL_LINE_STIPPLE ) ;