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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1990-1991 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: GetColor.3,v 1.4 2002/08/05 04:30:38 dgp Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tk_AllocColorFromObj 3 8.1 Tk "Tk Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tk_AllocColorFromObj, Tk_GetColor, Tk_GetColorFromObj, Tk_GetColorByValue, Tk_NameOfColor, Tk_FreeColorFromObj, Tk_FreeColor - maintain database of colors
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tk.h>fR
  18. .VS 8.1
  19. .sp
  20. XColor *
  21. fBTk_AllocColorFromObj(fIinterp, tkwin, objPtrfB)fR
  22. .sp
  23. XColor *
  24. fBTk_GetColor(fIinterp, tkwin, namefB)fR
  25. .sp
  26. XColor *
  27. fBTk_GetColorFromObj(fItkwin, objPtrfB)fR
  28. .VE
  29. .sp
  30. XColor *
  31. fBTk_GetColorByValue(fItkwin, prefPtrfB)fR
  32. .sp
  33. CONST char *
  34. fBTk_NameOfColor(fIcolorPtrfB)fR
  35. .sp
  36. GC
  37. fBTk_GCForColor(fIcolorPtr, drawablefB)fR
  38. .sp
  39. .VS 8.1
  40. fBTk_FreeColorFromObj(fItkwin, objPtrfB)fR
  41. .VE
  42. .sp
  43. fBTk_FreeColor(fIcolorPtrfB)fR
  44. .SH ARGUMENTS
  45. .AS "Tcl_Interp" *colorPtr
  46. .AP Tcl_Interp *interp in
  47. Interpreter to use for error reporting.
  48. .AP Tk_Window tkwin in
  49. Token for window in which color will be used.
  50. .VS 8.1 br
  51. .AP Tcl_Obj *objPtr in/out
  52. String value describes desired color; internal rep will be
  53. modified to cache pointer to corresponding (XColor *).
  54. .AP char *name in
  55. Same as fIobjPtrfR except description of color is passed as a string and
  56. resulting (XColor *) isn't cached.
  57. .VE
  58. .AP XColor *prefPtr in
  59. Indicates red, green, and blue intensities of desired
  60. color.
  61. .AP XColor *colorPtr in
  62. Pointer to X color information.  Must have been allocated by previous
  63. call to fBTk_AllocColorFromObjfR, fBTk_GetColorfR or
  64. fBTk_GetColorByValuefR, except when passed to fBTk_NameOfColorfR.
  65. .AP Drawable drawable in
  66. Drawable in which the result graphics context will be used.  Must have
  67. same screen and depth as the window for which the color was allocated.
  68. .BE
  69. .SH DESCRIPTION
  70. .VS 8.1
  71. .PP
  72. These procedures manage the colors being used by a Tk application.
  73. They allow colors to be shared whenever possible, so that colormap
  74. space is preserved, and they pick closest available colors when
  75. colormap space is exhausted.
  76. .PP
  77. Given a textual description of a color, fBTk_AllocColorFromObjfR
  78. locates a pixel value that may be used to render the color
  79. in a particular window.  The desired color is specified with an
  80. object whose string value must have one of the following forms:
  81. .VE
  82. .TP 20
  83. fIcolornamefR
  84. Any of the valid textual names for a color defined in the
  85. server's color database file, such as fBredfR or fBPeachPufffR.
  86. .TP 20
  87. fB#fIRGBfR
  88. .TP 20
  89. fB#fIRRGGBBfR
  90. .TP 20
  91. fB#fIRRRGGGBBBfR
  92. .TP 20
  93. fB#fIRRRRGGGGBBBBfR
  94. A numeric specification of the red, green, and blue intensities
  95. to use to display the color.  Each fIRfR, fIGfR, or fIBfR
  96. represents a single hexadecimal digit.  The four forms permit
  97. colors to be specified with 4-bit, 8-bit, 12-bit or 16-bit values.
  98. When fewer than 16 bits are provided for each color, they represent
  99. the most significant bits of the color.  For example, #3a7 is the
  100. same as #3000a0007000.
  101. .PP
  102. .VS 8.1
  103. fBTk_AllocColorFromObjfR returns a pointer to
  104. an XColor structure;  the structure indicates the exact intensities of
  105. the allocated color (which may differ slightly from those requested,
  106. depending on the limitations of the screen) and a pixel value
  107. that may be used to draw with the color in fItkwinfR.
  108. If an error occurs in fBTk_AllocColorFromObjfR (such as an unknown
  109. color name) then NULL is returned and an error message is stored in
  110. fIinterpfR's result if fIinterpfR isn't NULL.
  111. If the colormap for fItkwinfR is full, fBTk_AllocColorFromObjfR
  112. will use the closest existing color in the colormap.
  113. fBTk_AllocColorFromObjfR caches information about
  114. the return value in fIobjPtrfR, which speeds up future calls to procedures
  115. such as fBTk_AllocColorFromObjfR and fBTk_GetColorFromObjfR.
  116. .PP
  117. fBTk_GetColorfR is identical to fBTk_AllocColorFromObjfR except
  118. that the description of the color is specified with a string instead
  119. of an object.  This prevents fBTk_GetColorfR from caching the
  120. return value, so fBTk_GetColorfR is less efficient than
  121. fBTk_AllocColorFromObjfR.
  122. .PP
  123. fBTk_GetColorFromObjfR returns the token for an existing color, given
  124. the window and description used to create the color.
  125. fBTk_GetColorFromObjfR doesn't actually create the color; the color
  126. must already have been created with a previous call to
  127. fBTk_AllocColorFromObjfR or fBTk_GetColorfR.  The return
  128. value is cached in fIobjPtrfR, which speeds up
  129. future calls to fBTk_GetColorFromObjfR with the same fIobjPtrfR
  130. and fItkwinfR.
  131. .VE
  132. .PP
  133. fBTk_GetColorByValuefR is similar to fBTk_GetColorfR except that
  134. the desired color is indicated with the fIredfR, fIgreenfR, and
  135. fIbluefR fields of the structure pointed to by fIcolorPtrfR.
  136. .PP
  137. This package maintains a database
  138. of all the colors currently in use.
  139. If the same color is requested multiple times from
  140. fBTk_GetColorfR or fBTk_AllocColorFromObjfR (e.g. by different
  141. windows), or if the 
  142. same intensities are requested multiple times from
  143. fBTk_GetColorByValuefR, then existing pixel values will
  144. be re-used.  Re-using an existing pixel avoids any interaction
  145. with the window server, which makes the allocation much more
  146. efficient.  These procedures also provide a portable interface that
  147. works across all platforms.  For this reason, you should generally use
  148. fBTk_AllocColorFromObjfR, fBTk_GetColorfR, or fBTk_GetColorByValuefR
  149. instead of lower level procedures like fBXAllocColorfR.
  150. .PP
  151. Since different calls to this package
  152. may return the same shared
  153. pixel value, callers should never change the color of a pixel
  154. returned by the procedures.
  155. If you need to change a color value dynamically, you should use
  156. fBXAllocColorCellsfR to allocate the pixel value for the color.
  157. .PP
  158. The procedure fBTk_NameOfColorfR is roughly the inverse of
  159. fBTk_GetColorfR.  If its fIcolorPtrfR argument was created
  160. by fBTk_AllocColorFromObjfR or fBTk_GetColorfR then the return value
  161. is the string that was used to create the
  162. color.  If fIcolorPtrfR was created by a call to fBTk_GetColorByValuefR,
  163. or by any other mechanism, then the return value is a string
  164. that could be passed to fBTk_GetColorfR to return the same
  165. color.  Note:  the string returned by fBTk_NameOfColorfR is
  166. only guaranteed to persist until the next call to
  167. fBTk_NameOfColorfR.
  168. .PP
  169. fBTk_GCForColorfR returns a graphics context whose fBforegroundfR
  170. field is the pixel allocated for fIcolorPtrfR and whose other fields
  171. all have default values.
  172. This provides an easy way to do basic drawing with a color.
  173. The graphics context is cached with the color and will exist only as
  174. long as fIcolorPtrfR exists;  it is freed when the last reference
  175. to fIcolorPtrfR is freed by calling fBTk_FreeColorfR.
  176. .PP
  177. .VS 8.1
  178. When a color is no longer needed fBTk_FreeColorFromObjfR or
  179. fBTk_FreeColorfR should be called to release it.
  180. For fBTk_FreeColorFromObjfR the color to release is specified
  181. with the same information used to create it; for
  182. fBTk_FreeColorfR the color to release is specified
  183. with a pointer to its XColor structure.
  184. There should be exactly one call to fBTk_FreeColorFromObjfR
  185. or fBTk_FreeColorfR for each call to fBTk_AllocColorFromObjfR,
  186. fBTk_GetColorfR, or fBTk_GetColorByValuefR.
  187. .VE
  188. .SH KEYWORDS
  189. color, intensity, object, pixel value