1 |
578 |
markom |
'\"
|
2 |
|
|
'\" Copyright (c) 1990-1993 The Regents of the University of California.
|
3 |
|
|
'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
|
4 |
|
|
'\"
|
5 |
|
|
'\" See the file "license.terms" for information on usage and redistribution
|
6 |
|
|
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
7 |
|
|
'\"
|
8 |
|
|
'\" RCS: @(#) $Id: 3DBorder.3,v 1.1.1.1 2002-01-16 10:25:47 markom Exp $
|
9 |
|
|
'\"
|
10 |
|
|
.so man.macros
|
11 |
|
|
.TH Tk_Get3DBorder 3 4.0 Tk "Tk Library Procedures"
|
12 |
|
|
.BS
|
13 |
|
|
.SH NAME
|
14 |
|
|
Tk_Get3DBorder, Tk_Draw3DRectangle, Tk_Fill3DRectangle, Tk_Draw3DPolygon, Tk_Fill3DPolygon, Tk_3DVerticalBevel, Tk_3DHorizontalBevel, Tk_SetBackgroundFromBorder, Tk_NameOf3DBorder, Tk_3DBorderColor, Tk_3DBorderGC, Tk_Free3DBorder \- draw borders with three-dimensional appearance
|
15 |
|
|
.SH SYNOPSIS
|
16 |
|
|
.nf
|
17 |
|
|
\fB#include \fR
|
18 |
|
|
.sp
|
19 |
|
|
Tk_3DBorder
|
20 |
|
|
\fBTk_Get3DBorder(\fIinterp, tkwin, colorName\fB)\fR
|
21 |
|
|
.sp
|
22 |
|
|
void
|
23 |
|
|
\fBTk_Draw3DRectangle(\fItkwin, drawable, border, x, y, width, height, borderWidth, relief\fB)\fR
|
24 |
|
|
.sp
|
25 |
|
|
void
|
26 |
|
|
\fBTk_Fill3DRectangle(\fItkwin, drawable, border, x, y, width, height, borderWidth, relief\fB)\fR
|
27 |
|
|
.sp
|
28 |
|
|
void
|
29 |
|
|
\fBTk_Draw3DPolygon(\fItkwin, drawable, border, pointPtr, numPoints, polyBorderWidth, leftRelief\fB)\fR
|
30 |
|
|
.sp
|
31 |
|
|
void
|
32 |
|
|
\fBTk_Fill3DPolygon(\fItkwin, drawable, border, pointPtr, numPoints, polyBorderWidth, leftRelief\fB)\fR
|
33 |
|
|
.sp
|
34 |
|
|
void
|
35 |
|
|
\fBTk_3DVerticalBevel\fR(\fItkwin, drawable, border, x, y, width, height, leftBevel, relief\fB)\fR
|
36 |
|
|
.sp
|
37 |
|
|
void
|
38 |
|
|
\fBTk_3DHorizontalBevel\fR(\fItkwin, drawable, border, x, y, width, height, leftIn, rightIn, topBevel, relief\fB)\fR
|
39 |
|
|
.sp
|
40 |
|
|
void
|
41 |
|
|
\fBTk_SetBackgroundFromBorder(\fItkwin, border\fB)\fR
|
42 |
|
|
.sp
|
43 |
|
|
char *
|
44 |
|
|
\fBTk_NameOf3DBorder(\fIborder\fB)\fR
|
45 |
|
|
.sp
|
46 |
|
|
XColor *
|
47 |
|
|
\fBTk_3DBorderColor(\fIborder\fB)\fR
|
48 |
|
|
.sp
|
49 |
|
|
GC *
|
50 |
|
|
\fBTk_3DBorderGC(\fItkwin, border, which\fB)\fR
|
51 |
|
|
.sp
|
52 |
|
|
\fBTk_Free3DBorder(\fIborder\fB)\fR
|
53 |
|
|
.SH ARGUMENTS
|
54 |
|
|
.AS "Tk_3DBorder" borderWidth
|
55 |
|
|
.AP Tcl_Interp *interp in
|
56 |
|
|
Interpreter to use for error reporting.
|
57 |
|
|
.AP Tk_Window tkwin in
|
58 |
|
|
Token for window (for all procedures except \fBTk_Get3DBorder\fR,
|
59 |
|
|
must be the window for which the border was allocated).
|
60 |
|
|
.AP Tk_Uid colorName in
|
61 |
|
|
Textual description of color corresponding to background (flat areas).
|
62 |
|
|
Illuminated edges will be brighter than this and shadowed edges will
|
63 |
|
|
be darker than this.
|
64 |
|
|
.AP Drawable drawable in
|
65 |
|
|
X token for window or pixmap; indicates where graphics are to be drawn.
|
66 |
|
|
Must either be the X window for \fItkwin\fR or a pixmap with the
|
67 |
|
|
same screen and depth as \fItkwin\fR.
|
68 |
|
|
.AP Tk_3DBorder border in
|
69 |
|
|
Token for border previously allocated in call to \fBTk_Get3DBorder\fR.
|
70 |
|
|
.AP int x in
|
71 |
|
|
X-coordinate of upper-left corner of rectangle describing border
|
72 |
|
|
or bevel, in pixels.
|
73 |
|
|
.AP int y in
|
74 |
|
|
Y-coordinate of upper-left corner of rectangle describing border or
|
75 |
|
|
bevel, in pixels.
|
76 |
|
|
.AP int width in
|
77 |
|
|
Width of rectangle describing border or bevel, in pixels.
|
78 |
|
|
.AP int height in
|
79 |
|
|
Height of rectangle describing border or bevel, in pixels.
|
80 |
|
|
.AP int borderWidth in
|
81 |
|
|
Width of border in pixels. Positive means border is inside rectangle
|
82 |
|
|
given by \fIx\fR, \fIy\fR, \fIwidth\fR, \fIheight\fR, negative means
|
83 |
|
|
border is outside rectangle.
|
84 |
|
|
.AP int relief in
|
85 |
|
|
Indicates 3-D position of interior of object relative to exterior;
|
86 |
|
|
should be TK_RELIEF_RAISED, TK_RELIEF_SUNKEN, TK_RELIEF_GROOVE,
|
87 |
|
|
TK_RELIEF_SOLID, or TK_RELIEF_RIDGE (may also be TK_RELIEF_FLAT
|
88 |
|
|
for \fBTk_Fill3DRectangle\fR).
|
89 |
|
|
.AP XPoint *pointPtr in
|
90 |
|
|
Pointer to array of points describing the set of vertices in a polygon.
|
91 |
|
|
The polygon need not be closed (it will be closed automatically if it
|
92 |
|
|
isn't).
|
93 |
|
|
.AP int numPoints in
|
94 |
|
|
Number of points at \fI*pointPtr\fR.
|
95 |
|
|
.AP int polyBorderWidth in
|
96 |
|
|
Width of border in pixels. If positive, border is drawn to left of
|
97 |
|
|
trajectory given by \fIpointPtr\fR; if negative, border is drawn to
|
98 |
|
|
right of trajectory. If \fIleftRelief\fR is TK_RELIEF_GROOVE or
|
99 |
|
|
TK_RELIEF_RIDGE then the border is centered on the trajectory.
|
100 |
|
|
.AP int leftRelief in
|
101 |
|
|
Height of left side of polygon's path relative to right. TK_RELIEF_RAISED
|
102 |
|
|
means left side should appear higher and TK_RELIEF_SUNKEN means right side
|
103 |
|
|
should appear higher;
|
104 |
|
|
TK_RELIEF_GROOVE and TK_RELIEF_RIDGE mean the obvious things.
|
105 |
|
|
For \fBTk_Fill3DPolygon\fR, TK_RELIEF_FLAT may also be specified to
|
106 |
|
|
indicate no difference in height.
|
107 |
|
|
.AP int leftBevel in
|
108 |
|
|
Non-zero means this bevel forms the left side of the object; zero means
|
109 |
|
|
it forms the right side.
|
110 |
|
|
.AP int leftIn in
|
111 |
|
|
Non-zero means that the left edge of the horizontal bevel angles in,
|
112 |
|
|
so that the bottom of the edge is farther to the right than
|
113 |
|
|
the top.
|
114 |
|
|
Zero means the edge angles out, so that the bottom is farther to the
|
115 |
|
|
left than the top.
|
116 |
|
|
.AP int rightIn in
|
117 |
|
|
Non-zero means that the right edge of the horizontal bevel angles in,
|
118 |
|
|
so that the bottom of the edge is farther to the left than the top.
|
119 |
|
|
Zero means the edge angles out, so that the bottom is farther to the
|
120 |
|
|
right than the top.
|
121 |
|
|
.AP int topBevel in
|
122 |
|
|
Non-zero means this bevel forms the top side of the object; zero means
|
123 |
|
|
it forms the bottom side.
|
124 |
|
|
.AP int which in
|
125 |
|
|
Specifies which of the border's graphics contexts is desired.
|
126 |
|
|
Must be TK_3D_FLAT_GC, TK_3D_LIGHT_GC, or TK_3D_DARK_GC.
|
127 |
|
|
.BE
|
128 |
|
|
|
129 |
|
|
.SH DESCRIPTION
|
130 |
|
|
.PP
|
131 |
|
|
These procedures provide facilities for drawing window borders in a
|
132 |
|
|
way that produces a three-dimensional appearance. \fBTk_Get3DBorder\fR
|
133 |
|
|
allocates colors and Pixmaps needed to draw a border in the window
|
134 |
|
|
given by the \fItkwin\fR argument. The \fIcolorName\fR
|
135 |
|
|
argument indicates what colors should be used in the border.
|
136 |
|
|
\fIColorName\fR may be any value acceptable to \fBTk_GetColor\fR.
|
137 |
|
|
The color indicated by \fIcolorName\fR will not actually be used in
|
138 |
|
|
the border; it indicates the background color for the window
|
139 |
|
|
(i.e. a color for flat surfaces).
|
140 |
|
|
The illuminated portions of the border will appear brighter than indicated
|
141 |
|
|
by \fIcolorName\fR, and the shadowed portions of the border will appear
|
142 |
|
|
darker than \fIcolorName\fR.
|
143 |
|
|
.PP
|
144 |
|
|
\fBTk_Get3DBorder\fR returns a token that may be used in later calls
|
145 |
|
|
to \fBTk_Draw3DRectangle\fR. If an error occurs in allocating information
|
146 |
|
|
for the border (e.g. \fIcolorName\fR isn't a legal color specifier),
|
147 |
|
|
then NULL is returned and an error message is left in \fIinterp->result\fR.
|
148 |
|
|
.PP
|
149 |
|
|
Once a border structure has been created, \fBTk_Draw3DRectangle\fR may be
|
150 |
|
|
invoked to draw the border.
|
151 |
|
|
The \fItkwin\fR argument specifies the
|
152 |
|
|
window for which the border was allocated, and \fIdrawable\fR
|
153 |
|
|
specifies a window or pixmap in which the border is to be drawn.
|
154 |
|
|
\fIDrawable\fR need not refer to the same window as \fItkwin\fR, but it
|
155 |
|
|
must refer to a compatible
|
156 |
|
|
pixmap or window: one associated with the same screen and with the
|
157 |
|
|
same depth as \fItkwin\fR.
|
158 |
|
|
The \fIx\fR, \fIy\fR, \fIwidth\fR, and
|
159 |
|
|
\fIheight\fR arguments define the bounding box of the border region
|
160 |
|
|
within \fIdrawable\fR (usually \fIx\fR and \fIy\fR are zero and
|
161 |
|
|
\fIwidth\fR and \fIheight\fR are the dimensions of the window), and
|
162 |
|
|
\fIborderWidth\fR specifies the number of pixels actually
|
163 |
|
|
occupied by the border. The \fIrelief\fR argument indicates
|
164 |
|
|
which of several three-dimensional effects is desired:
|
165 |
|
|
TK_RELIEF_RAISED means that the interior of the rectangle should appear raised
|
166 |
|
|
relative to the exterior of the rectangle, and
|
167 |
|
|
TK_RELIEF_SUNKEN means that the interior should appear depressed.
|
168 |
|
|
TK_RELIEF_GROOVE and TK_RELIEF_RIDGE mean that there should appear to be
|
169 |
|
|
a groove or ridge around the exterior of the rectangle.
|
170 |
|
|
.PP
|
171 |
|
|
\fBTk_Fill3DRectangle\fR is somewhat like \fBTk_Draw3DRectangle\fR except
|
172 |
|
|
that it first fills the rectangular area with the background color
|
173 |
|
|
(one corresponding
|
174 |
|
|
to the \fIcolorName\fR used to create \fIborder\fR). Then it calls
|
175 |
|
|
\fBTk_Draw3DRectangle\fR to draw a border just inside the outer edge of
|
176 |
|
|
the rectangular area. The argument \fIrelief\fR indicates the desired
|
177 |
|
|
effect (TK_RELIEF_FLAT means no border should be drawn; all that
|
178 |
|
|
happens is to fill the rectangle with the background color).
|
179 |
|
|
.PP
|
180 |
|
|
The procedure \fBTk_Draw3DPolygon\fR may be used to draw more complex
|
181 |
|
|
shapes with a three-dimensional appearance. The \fIpointPtr\fR and
|
182 |
|
|
\fInumPoints\fR arguments define a trajectory, \fIpolyBorderWidth\fR
|
183 |
|
|
indicates how wide the border should be (and on which side of the
|
184 |
|
|
trajectory to draw it), and \fIleftRelief\fR indicates which side
|
185 |
|
|
of the trajectory should appear raised. \fBTk_Draw3DPolygon\fR
|
186 |
|
|
draws a border around the given trajectory using the colors from
|
187 |
|
|
\fIborder\fR to produce a three-dimensional appearance. If the trajectory is
|
188 |
|
|
non-self-intersecting, the appearance will be a raised or sunken
|
189 |
|
|
polygon shape. The trajectory may be self-intersecting, although
|
190 |
|
|
it's not clear how useful this is.
|
191 |
|
|
.PP
|
192 |
|
|
\fBTk_Fill3DPolygon\fR is to \fBTk_Draw3DPolygon\fR what
|
193 |
|
|
\fBTk_Fill3DRectangle\fR is to \fBTk_Draw3DRectangle\fR: it fills
|
194 |
|
|
the polygonal area with the background color from \fIborder\fR,
|
195 |
|
|
then calls \fBTk_Draw3DPolygon\fR to draw a border around the
|
196 |
|
|
area (unless \fIleftRelief\fR is TK_RELIEF_FLAT; in this case no
|
197 |
|
|
border is drawn).
|
198 |
|
|
.PP
|
199 |
|
|
The procedures \fBTk_3DVerticalBevel\fR and \fBTk_3DHorizontalBevel\fR
|
200 |
|
|
provide lower-level drawing primitives that are used by
|
201 |
|
|
procedures such as \fBTk_Draw3DRectangle\fR.
|
202 |
|
|
These procedures are also useful in their own right for drawing
|
203 |
|
|
rectilinear border shapes.
|
204 |
|
|
\fBTk_3DVerticalBevel\fR draws a vertical beveled edge, such as the
|
205 |
|
|
left or right side of a rectangle, and \fBTk_3DHorizontalBevel\fR
|
206 |
|
|
draws a horizontal beveled edge, such as the top or bottom of a
|
207 |
|
|
rectangle.
|
208 |
|
|
Each procedure takes \fIx\fR, \fIy\fR, \fIwidth\fR, and \fIheight\fR
|
209 |
|
|
arguments that describe the rectangular area of the beveled edge
|
210 |
|
|
(e.g., \fIwidth\fR is the border width for \fBTk_3DVerticalBevel\fR).
|
211 |
|
|
The \fIleftBorder\fR and \fItopBorder\fR arguments indicate the
|
212 |
|
|
position of the border relative to the ``inside'' of the object, and
|
213 |
|
|
\fIrelief\fR indicates the relief of the inside of the object relative
|
214 |
|
|
to the outside.
|
215 |
|
|
\fBTk_3DVerticalBevel\fR just draws a rectangular region.
|
216 |
|
|
\fBTk_3DHorizontalBevel\fR draws a trapezoidal region to generate
|
217 |
|
|
mitered corners; it should be called after \fBTk_3DVerticalBevel\fR
|
218 |
|
|
(otherwise \fBTk_3DVerticalBevel\fR will overwrite the mitering in
|
219 |
|
|
the corner).
|
220 |
|
|
The \fIleftIn\fR and \fIrightIn\fR arguments to \fBTk_3DHorizontalBevel\fR
|
221 |
|
|
describe the mitering at the corners; a value of 1 means that the bottom
|
222 |
|
|
edge of the trapezoid will be shorter than the top, 0 means it will
|
223 |
|
|
be longer.
|
224 |
|
|
For example, to draw a rectangular border the top bevel should be
|
225 |
|
|
drawn with 1 for both \fIleftIn\fR and \fIrightIn\fR, and the
|
226 |
|
|
bottom bevel should be drawn with 0 for both arguments.
|
227 |
|
|
.PP
|
228 |
|
|
The procedure \fBTk_SetBackgroundFromBorder\fR will modify the background
|
229 |
|
|
pixel and/or pixmap of \fItkwin\fR to produce a result compatible
|
230 |
|
|
with \fIborder\fR. For color displays, the resulting background will
|
231 |
|
|
just be the color given by the \fIcolorName\fR argument passed to
|
232 |
|
|
\fBTk_Get3DBorder\fR when \fIborder\fR was created; for monochrome
|
233 |
|
|
displays, the resulting background
|
234 |
|
|
will be a light stipple pattern, in order to distinguish the background from
|
235 |
|
|
the illuminated portion of the border.
|
236 |
|
|
.PP
|
237 |
|
|
Given a token for a border, the procedure \fBTk_NameOf3DBorder\fR
|
238 |
|
|
will return the \fIcolorName\fR string that was passed to
|
239 |
|
|
\fBTk_Get3DBorder\fR to create the border.
|
240 |
|
|
.PP
|
241 |
|
|
The procedure \fBTk_3DBorderColor\fR returns the XColor structure
|
242 |
|
|
that will be used for flat surfaces drawn for its \fIborder\fR
|
243 |
|
|
argument by procedures like \fBTk_Fill3DRectangle\fR.
|
244 |
|
|
The return value corresponds to the \fIcolorName\fR passed to
|
245 |
|
|
\fBTk_Get3DBorder\fR.
|
246 |
|
|
The XColor, and its associated pixel value, will remain allocated
|
247 |
|
|
as long as \fIborder\fR exists.
|
248 |
|
|
.PP
|
249 |
|
|
The procedure \fBTk_3DBorderGC\fR returns one of the X graphics contexts
|
250 |
|
|
that are used to draw the border.
|
251 |
|
|
The argument \fIwhich\fR selects which one of the three possible GC's:
|
252 |
|
|
TK_3D_FLAT_GC returns the context used for flat surfaces,
|
253 |
|
|
TK_3D_LIGHT_GC returns the context for light shadows,
|
254 |
|
|
and TK_3D_DARK_GC returns the context for dark shadows.
|
255 |
|
|
.PP
|
256 |
|
|
When a border is no longer needed, \fBTk_Free3DBorder\fR should
|
257 |
|
|
be called to release the resources associated with the border.
|
258 |
|
|
There should be exactly one call to \fBTk_Free3DBorder\fR for
|
259 |
|
|
each call to \fBTk_Get3DBorder\fR.
|
260 |
|
|
|
261 |
|
|
.SH KEYWORDS
|
262 |
|
|
3D, background, border, color, depressed, illumination, polygon, raised, shadow, three-dimensional effect
|