3DBorder.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:13k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1990-1993 The Regents of the University of California.
  3. '" Copyright (c) 1994-1998 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.4 2002/08/05 04:30:38 dgp Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tk_Alloc3DBorderFromObj 3 8.1 Tk "Tk Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tk_Alloc3DBorderFromObj, Tk_Get3DBorder, Tk_Get3DBorderFromObj, Tk_Draw3DRectangle, Tk_Fill3DRectangle, Tk_Draw3DPolygon, Tk_Fill3DPolygon, Tk_3DVerticalBevel, Tk_3DHorizontalBevel, Tk_SetBackgroundFromBorder, Tk_NameOf3DBorder, Tk_3DBorderColor, Tk_3DBorderGC, Tk_Free3DBorderFromObj, Tk_Free3DBorder - draw borders with three-dimensional appearance
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tk.h>fR
  18. .sp
  19. .VS 8.1
  20. Tk_3DBorder
  21. fBTk_Alloc3DBorderFromObj(fIinterp, tkwin, objPtrfB)fR
  22. .sp
  23. Tk_3DBorder
  24. fBTk_Get3DBorder(fIinterp, tkwin, colorNamefB)fR
  25. .sp
  26. Tk_3DBorder
  27. fBTk_Get3DBorderFromObj(fItkwin, objPtrfB)fR
  28. .VE
  29. .sp
  30. void
  31. fBTk_Draw3DRectangle(fItkwin, drawable, border, x, y, width, height, borderWidth, relieffB)fR
  32. .sp
  33. void
  34. fBTk_Fill3DRectangle(fItkwin, drawable, border, x, y, width, height, borderWidth, relieffB)fR
  35. .sp
  36. void
  37. fBTk_Draw3DPolygon(fItkwin, drawable, border, pointPtr, numPoints, polyBorderWidth, leftRelieffB)fR
  38. .sp
  39. void
  40. fBTk_Fill3DPolygon(fItkwin, drawable, border, pointPtr, numPoints, polyBorderWidth, leftRelieffB)fR
  41. .sp
  42. void
  43. fBTk_3DVerticalBevelfR(fItkwin, drawable, border, x, y, width, height, leftBevel, relieffB)fR
  44. .sp
  45. void
  46. fBTk_3DHorizontalBevelfR(fItkwin, drawable, border, x, y, width, height, leftIn, rightIn, topBevel, relieffB)fR
  47. .sp
  48. void
  49. fBTk_SetBackgroundFromBorder(fItkwin, borderfB)fR
  50. .sp
  51. CONST char *
  52. fBTk_NameOf3DBorder(fIborderfB)fR
  53. .sp
  54. XColor *
  55. fBTk_3DBorderColor(fIborderfB)fR
  56. .sp
  57. GC *
  58. fBTk_3DBorderGC(fItkwin, border, whichfB)fR
  59. .sp
  60. .VS 8.1
  61. fBTk_Free3DBorderFromObj(fItkwin, objPtrfB)fR
  62. .VE
  63. .sp
  64. fBTk_Free3DBorder(fIborderfB)fR
  65. .SH ARGUMENTS
  66. .AS "Tk_3DBorder" borderWidth
  67. .AP Tcl_Interp *interp in
  68. Interpreter to use for error reporting.
  69. .AP Tk_Window tkwin in
  70. Token for window (for all procedures except fBTk_Get3DBorderfR,
  71. must be the window for which the border was allocated).
  72. .AP Tcl_Obj *objPtr in
  73. .VS 8.1
  74. Pointer to object whose value describes color corresponding to
  75. background (flat areas).  Illuminated edges will be brighter than
  76. this and shadowed edges will be darker than this.
  77. .AP char *colorName in
  78. Same as fIobjPtrfR except value is supplied as a string rather
  79. than an object.
  80. .VE
  81. .AP Drawable drawable in
  82. X token for window or pixmap;  indicates where graphics are to be drawn.
  83. Must either be the X window for fItkwinfR or a pixmap with the
  84. same screen and depth as fItkwinfR.
  85. .AP Tk_3DBorder border in
  86. Token for border previously allocated in call to fBTk_Get3DBorderfR.
  87. .AP int x in
  88. X-coordinate of upper-left corner of rectangle describing border
  89. or bevel, in pixels.
  90. .AP int y in
  91. Y-coordinate of upper-left corner of rectangle describing border or
  92. bevel, in pixels.
  93. .AP int width in
  94. Width of rectangle describing border or bevel, in pixels.
  95. .AP int height in
  96. Height of rectangle describing border or bevel, in pixels.
  97. .AP int borderWidth in
  98. Width of border in pixels. Positive means border is inside rectangle
  99. given by fIxfR, fIyfR, fIwidthfR, fIheightfR, negative means
  100. border is outside rectangle.
  101. .AP int relief in
  102. Indicates 3-D position of interior of object relative to exterior;
  103. should be TK_RELIEF_RAISED, TK_RELIEF_SUNKEN, TK_RELIEF_GROOVE, 
  104. TK_RELIEF_SOLID, or TK_RELIEF_RIDGE (may also be TK_RELIEF_FLAT
  105. for fBTk_Fill3DRectanglefR).
  106. .AP XPoint *pointPtr in
  107. Pointer to array of points describing the set of vertices in a polygon.
  108. The polygon need not be closed (it will be closed automatically if it
  109. isn't).
  110. .AP int numPoints in
  111. Number of points at fI*pointPtrfR.
  112. .AP int polyBorderWidth in
  113. Width of border in pixels.  If positive, border is drawn to left of
  114. trajectory given by fIpointPtrfR;  if negative, border is drawn to
  115. right of trajectory.  If fIleftRelieffR is TK_RELIEF_GROOVE or
  116. TK_RELIEF_RIDGE then the border is centered on the trajectory.
  117. .AP int leftRelief in
  118. Height of left side of polygon's path relative to right.  TK_RELIEF_RAISED
  119. means left side should appear higher and TK_RELIEF_SUNKEN means right side
  120. should appear higher;
  121. TK_RELIEF_GROOVE and TK_RELIEF_RIDGE mean the obvious things.
  122. For fBTk_Fill3DPolygonfR, TK_RELIEF_FLAT may also be specified to
  123. indicate no difference in height.
  124. .AP int leftBevel in
  125. Non-zero means this bevel forms the left side of the object;  zero means
  126. it forms the right side.
  127. .AP int leftIn in
  128. Non-zero means that the left edge of the horizontal bevel angles in,
  129. so that the bottom of the edge is farther to the right than
  130. the top.
  131. Zero means the edge angles out, so that the bottom is farther to the
  132. left than the top.
  133. .AP int rightIn in
  134. Non-zero means that the right edge of the horizontal bevel angles in,
  135. so that the bottom of the edge is farther to the left than the top.
  136. Zero means the edge angles out, so that the bottom is farther to the
  137. right than the top.
  138. .AP int topBevel in
  139. Non-zero means this bevel forms the top side of the object;  zero means
  140. it forms the bottom side.
  141. .AP int which in
  142. Specifies which of the border's graphics contexts is desired.
  143. Must be TK_3D_FLAT_GC, TK_3D_LIGHT_GC, or TK_3D_DARK_GC.
  144. .BE
  145. .SH DESCRIPTION
  146. .PP
  147. These procedures provide facilities for drawing window borders in a
  148. way that produces a three-dimensional appearance.
  149. .VS 8.1
  150. fBTk_Alloc3DBorderFromObjfR
  151. allocates colors and Pixmaps needed to draw a border in the window
  152. given by the fItkwinfR argument.  The value of fIobjPtrfR
  153. is a standard Tk color name that determines the border colors.
  154. The color indicated by fIobjPtrfR will not actually be used in
  155. the border;  it indicates the background color for the window
  156. (i.e. a color for flat surfaces).
  157. The illuminated portions of the border will appear brighter than indicated
  158. by fIobjPtrfR, and the shadowed portions of the border will appear
  159. darker than fIobjPtrfR.
  160. .PP
  161. fBTk_Alloc3DBorderFromObjfR returns a token that may be used in later calls
  162. to fBTk_Draw3DRectanglefR.  If an error occurs in allocating information
  163. for the border (e.g. a bogus color name was given)
  164. then NULL is returned and an error message is left in fIinterp->resultfR.
  165. If it returns successfully, fBTk_Alloc3DBorderFromObjfR caches
  166. information about the return value in fIobjPtrfR, which speeds up
  167. future calls to fBTk_Alloc3DBorderFromObjfR with the same fIobjPtrfR
  168. and fItkwinfR.
  169. .PP
  170. fBTk_Get3DBorderfR is identical to fBTk_Alloc3DBorderFromObjfR except
  171. that the color is specified with a string instead of an object.  This
  172. prevents fBTk_Get3DBorderfR from caching the return value, so
  173. fBTk_Get3DBorderfR is less efficient than fBTk_Alloc3DBorderFromObjfR.
  174. .PP
  175. fBTk_Get3DBorderFromObjfR returns the token for an existing border, given
  176. the window and color name used to create the border.
  177. fBTk_Get3DBorderFromObjfR doesn't actually create the border; it must
  178. already have been created with a previous call to
  179. fBTk_Alloc3DBorderFromObjfR or fBTk_Get3DBorderfR.  The return
  180. value is cached in fIobjPtrfR, which speeds up
  181. future calls to fBTk_Get3DBorderFromObjfR with the same fIobjPtrfR
  182. and fItkwinfR.
  183. .VE
  184. .PP
  185. Once a border structure has been created, fBTk_Draw3DRectanglefR may be
  186. invoked to draw the border.
  187. The fItkwinfR argument specifies the
  188. window for which the border was allocated, and fIdrawablefR
  189. specifies a window or pixmap in which the border is to be drawn.
  190. fIDrawablefR need not refer to the same window as fItkwinfR, but it
  191. must refer to a compatible
  192. pixmap or window:  one associated with the same screen and with the
  193. same depth as fItkwinfR.
  194. The fIxfR, fIyfR, fIwidthfR, and
  195. fIheightfR arguments define the bounding box of the border region
  196. within fIdrawablefR (usually fIxfR and fIyfR are zero and
  197. fIwidthfR and fIheightfR are the dimensions of the window), and
  198. fIborderWidthfR specifies the number of pixels actually
  199. occupied by the border.  The fIrelieffR argument indicates
  200. which of several three-dimensional effects is desired:
  201. TK_RELIEF_RAISED means that the interior of the rectangle should appear raised
  202. relative to the exterior of the rectangle, and
  203. TK_RELIEF_SUNKEN means that the interior should appear depressed.
  204. TK_RELIEF_GROOVE and TK_RELIEF_RIDGE mean that there should appear to be
  205. a groove or ridge around the exterior of the rectangle.
  206. .PP
  207. fBTk_Fill3DRectanglefR is somewhat like fBTk_Draw3DRectanglefR except
  208. that it first fills the rectangular area with the background color
  209. (one corresponding
  210. to the color used to create fIborderfR).  Then it calls
  211. fBTk_Draw3DRectanglefR to draw a border just inside the outer edge of
  212. the rectangular area.  The argument fIrelieffR indicates the desired
  213. effect (TK_RELIEF_FLAT means no border should be drawn; all that
  214. happens is to fill the rectangle with the background color).
  215. .PP
  216. The procedure fBTk_Draw3DPolygonfR may be used to draw more complex
  217. shapes with a three-dimensional appearance.  The fIpointPtrfR and
  218. fInumPointsfR arguments define a trajectory, fIpolyBorderWidthfR
  219. indicates how wide the border should be (and on which side of the
  220. trajectory to draw it), and fIleftRelieffR indicates which side
  221. of the trajectory should appear raised.  fBTk_Draw3DPolygonfR
  222. draws a border around the given trajectory using the colors from
  223. fIborderfR to produce a three-dimensional appearance.  If the trajectory is
  224. non-self-intersecting, the appearance will be a raised or sunken
  225. polygon shape.  The trajectory may be self-intersecting, although
  226. it's not clear how useful this is.
  227. .PP
  228. fBTk_Fill3DPolygonfR is to fBTk_Draw3DPolygonfR what
  229. fBTk_Fill3DRectanglefR is to fBTk_Draw3DRectanglefR:  it fills
  230. the polygonal area with the background color from fIborderfR,
  231. then calls fBTk_Draw3DPolygonfR to draw a border around the
  232. area (unless fIleftRelieffR is TK_RELIEF_FLAT;  in this case no
  233. border is drawn).
  234. .PP
  235. The procedures fBTk_3DVerticalBevelfR and fBTk_3DHorizontalBevelfR
  236. provide lower-level drawing primitives that are used by
  237. procedures such as fBTk_Draw3DRectanglefR.
  238. These procedures are also useful in their own right for drawing
  239. rectilinear border shapes.
  240. fBTk_3DVerticalBevelfR draws a vertical beveled edge, such as the
  241. left or right side of a rectangle, and fBTk_3DHorizontalBevelfR
  242. draws a horizontal beveled edge, such as the top or bottom of a
  243. rectangle.
  244. Each procedure takes fIxfR, fIyfR, fIwidthfR, and fIheightfR
  245. arguments that describe the rectangular area of the beveled edge
  246. (e.g., fIwidthfR is the border width for fBTk_3DVerticalBevelfR).
  247. The fIleftBorderfR and fItopBorderfR arguments indicate the
  248. position of the border relative to the ``inside'' of the object, and
  249. fIrelieffR indicates the relief of the inside of the object relative
  250. to the outside.
  251. fBTk_3DVerticalBevelfR just draws a rectangular region.
  252. fBTk_3DHorizontalBevelfR draws a trapezoidal region to generate
  253. mitered corners;  it should be called after fBTk_3DVerticalBevelfR
  254. (otherwise fBTk_3DVerticalBevelfR will overwrite the mitering in
  255. the corner).
  256. The fIleftInfR and fIrightInfR arguments to fBTk_3DHorizontalBevelfR
  257. describe the mitering at the corners;  a value of 1 means that the bottom
  258. edge of the trapezoid will be shorter than the top, 0 means it will
  259. be longer.
  260. For example, to draw a rectangular border the top bevel should be
  261. drawn with 1 for both fIleftInfR and fIrightInfR, and the
  262. bottom bevel should be drawn with 0 for both arguments.
  263. .PP
  264. The procedure fBTk_SetBackgroundFromBorderfR will modify the background
  265. pixel and/or pixmap of fItkwinfR to produce a result compatible
  266. with fIborderfR.  For color displays, the resulting background will
  267. just be the color specified when fIborderfR was created;  for monochrome
  268. displays, the resulting background
  269. will be a light stipple pattern, in order to distinguish the background from
  270. the illuminated portion of the border.
  271. .PP
  272. Given a token for a border, the procedure fBTk_NameOf3DBorderfR
  273. will return the color name that was used to create the border.
  274. .PP
  275. The procedure fBTk_3DBorderColorfR returns the XColor structure
  276. that will be used for flat surfaces drawn for its fIborderfR
  277. argument by procedures like fBTk_Fill3DRectanglefR.
  278. The return value corresponds to the color name that was used to
  279. create the border.
  280. The XColor, and its associated pixel value, will remain allocated
  281. as long as fIborderfR exists.
  282. .PP
  283. The procedure fBTk_3DBorderGCfR returns one of the X graphics contexts
  284. that are used to draw the border.
  285. The argument fIwhichfR selects which one of the three possible GC's:
  286. TK_3D_FLAT_GC returns the context used for flat surfaces,
  287. TK_3D_LIGHT_GC returns the context for light shadows,
  288. and TK_3D_DARK_GC returns the context for dark shadows.
  289. .PP
  290. .VS 8.1
  291. When a border is no longer needed, fBTk_Free3DBorderFromObjfR
  292. or fBTk_Free3DBorderfR should
  293. be called to release the resources associated with it.
  294. For fBTk_Free3DBorderFromObjfR the border to release is specified
  295. with the window and color name used to create the
  296. border; for fBTk_Free3DBorderfR the border to release is specified
  297. with the Tk_3DBorder token for the border.
  298. There should be exactly one call to fBTk_Free3DBorderFromObjfR or
  299. fBTk_Free3DBorderfR for each call to fBTk_Alloc3DBorderFromObjfR
  300. or fBTk_Get3DBorderfR.
  301. .VE
  302. .SH KEYWORDS
  303. 3D, background, border, color, depressed, illumination, object, polygon, raised, shadow, three-dimensional effect