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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1994 The Australian National University
  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. '" Author: Paul Mackerras (paulus@cs.anu.edu.au),
  9. '"     Department of Computer Science,
  10. '"     Australian National University.
  11. '"
  12. '" RCS: @(#) $Id: FindPhoto.3,v 1.6 2002/08/05 04:30:38 dgp Exp $
  13. '"
  14. .so man.macros
  15. .TH Tk_FindPhoto 3 8.0 Tk "Tk Library Procedures"
  16. .BS
  17. .SH NAME
  18. Tk_FindPhoto, Tk_PhotoPutBlock, Tk_PhotoPutZoomedBlock, Tk_PhotoGetImage, Tk_PhotoBlank, Tk_PhotoExpand, Tk_PhotoGetSize, Tk_PhotoSetSize - manipulate the image data stored in a photo image.
  19. .SH SYNOPSIS
  20. .nf
  21. fB#include <tk.h>fR
  22. fB#include <tkPhoto.h>fR
  23. .sp
  24. Tk_PhotoHandle
  25. .VS 8.0 br
  26. fBTk_FindPhotofR(fIinterp, imageNamefR)
  27. .VE
  28. .sp
  29. void
  30. fBTk_PhotoPutBlockfR(fIhandle, blockPtr, x, y, width, height, compRulefR)
  31. .sp
  32. void
  33. fBTk_PhotoPutZoomedBlockfR(fIhandle, blockPtr, x, y, width, height,
  34. zoomX, zoomY, subsampleX, subsampleY, compRulefR)
  35. .sp
  36. int
  37. fBTk_PhotoGetImagefR(fIhandle, blockPtrfR)
  38. .sp
  39. void
  40. fBTk_PhotoBlankfR(fIhandlefR)
  41. .sp
  42. void
  43. fBTk_PhotoExpandfR(fIhandle, width, heightfR)
  44. .sp
  45. void
  46. fBTk_PhotoGetSizefR(fIhandle, widthPtr, heightPtrfR)
  47. .sp
  48. void
  49. fBTk_PhotoSetSizefR(fIhandle, width, heightfR)
  50. .SH ARGUMENTS
  51. .AS Tk_PhotoImageBlock window_path
  52. .AP Tcl_Interp *interp in
  53. .VS
  54. Interpreter in which image was created.
  55. .VE
  56. .AP "CONST char" *imageName in
  57. Name of the photo image.
  58. .AP Tk_PhotoHandle handle in
  59. Opaque handle identifying the photo image to be affected.
  60. .AP Tk_PhotoImageBlock *blockPtr in
  61. Specifies the address and storage layout of image data.
  62. .AP int x in
  63. Specifies the X coordinate where the top-left corner of the block is
  64. to be placed within the image.
  65. .AP int y in
  66. Specifies the Y coordinate where the top-left corner of the block is
  67. to be placed within the image.
  68. .AP int width in
  69. Specifies the width of the image area to be affected (for
  70. fBTk_PhotoPutBlockfR) or the desired image width (for
  71. fBTk_PhotoExpandfR and fBTk_PhotoSetSizefR).
  72. .VS 8.4
  73. .AP int compRule in
  74. Specifies the compositing rule used when combining transparent pixels
  75. in a block of data with a photo image.  Must be one of
  76. TK_PHOTO_COMPOSITE_OVERLAY (which puts the block of data over the top
  77. of the existing photo image, with the previous contents showing
  78. through in the transparent bits) or TK_PHOTO_COMPOSITE_SET (which
  79. discards the existing photo image contents in the rectangle covered by
  80. the data block.)
  81. .VE 8.4
  82. .AP int height in
  83. Specifies the height of the image area to be affected (for
  84. fBTk_PhotoPutBlockfR) or the desired image height (for
  85. fBTk_PhotoExpandfR and fBTk_PhotoSetSizefR).
  86. .AP int *widthPtr out
  87. Pointer to location in which to store the image width.
  88. .AP int *heightPtr out
  89. Pointer to location in which to store the image height.
  90. .AP int subsampleX in
  91. Specifies the subsampling factor in the X direction for input
  92. image data.
  93. .AP int subsampleY in
  94. Specifies the subsampling factor in the Y direction for input
  95. image data.
  96. .AP int zoomX in
  97. Specifies the zoom factor to be applied in the X direction to pixels
  98. being written to the photo image.
  99. .AP int zoomY in
  100. Specifies the zoom factor to be applied in the Y direction to pixels
  101. being written to the photo image.
  102. .BE
  103. .SH DESCRIPTION
  104. .PP
  105. fBTk_FindPhotofR returns an opaque handle that is used to identify a
  106. particular photo image to the other procedures.  The parameter is the
  107. name of the image, that is, the name specified to the fBimage create
  108. photofR command, or assigned by that command if no name was specified.
  109. .PP
  110. fBTk_PhotoPutBlockfR is used to supply blocks of image data to be
  111. displayed.  The call affects an area of the image of size
  112. fIwidthfR x fIheightfR pixels, with its top-left corner at
  113. coordinates (fIxfR,fIyfR).  All of fIwidthfR, fIheightfR,
  114. fIxfR, and fIyfR must be non-negative.
  115. If part of this area lies outside the
  116. current bounds of the image, the image will be expanded to include the
  117. area, unless the user has specified an explicit image size with the
  118. fB-widthfR and/or fB-heightfR widget configuration options
  119. (see photo(n)); in that
  120. case the area is silently clipped to the image boundaries.
  121. .PP
  122. The fIblockfR parameter is a pointer to a
  123. fBTk_PhotoImageBlockfR structure, defined as follows:
  124. .CS
  125. typedef struct {
  126. unsigned char *fIpixelPtrfR;
  127. int fIwidthfR;
  128. int fIheightfR;
  129. int fIpitchfR;
  130. int fIpixelSizefR;
  131. int fIoffset[4]fR;
  132. } Tk_PhotoImageBlock;
  133. .CE
  134. The fIpixelPtrfR field points to the first pixel, that is, the
  135. top-left pixel in the block.
  136. The fIwidthfR and fIheightfR fields specify the dimensions of the
  137. block of pixels.  The fIpixelSizefR field specifies the address
  138. difference between two horizontally adjacent pixels.  Often it is 3
  139. or 4, but it can have any value.  The fIpitchfR field specifies the
  140. address difference between two vertically adjacent pixels.  The
  141. fIoffsetfR array contains the offsets from the address of a pixel
  142. to the addresses of the bytes containing the red, green, blue and alpha
  143. (transparency) components.  These are normally 0, 1, 2 and 3, but can
  144. have other values, e.g., for images that are stored as separate red,
  145. green and blue planes.
  146. .PP
  147. .VS 8.4
  148. The fIcompRulefR parameter to fBTk_PhotoPutBlockfR specifies a
  149. compositing rule that says what to do with transparent pixels.  The
  150. value TK_PHOTO_COMPOSITE_OVERLAY says that the previous contents of
  151. the photo image should show through, and the value
  152. TK_PHOTO_COMPOSITE_SET says that the previous contents of the photo
  153. image should be completely ignored, and the values from the block be
  154. copied directly across.  The behavior in Tk8.3 and earlier was
  155. equivalent to having TK_PHOTO_COMPOSITE_OVERLAY as a compositing rule.
  156. .VE 8.4
  157. .PP
  158. The value given for the fIwidthfR and fIheightfR parameters to
  159. fBTk_PhotoPutBlockfR do not have to correspond to the values specified
  160. in fIblockfR.  If they are smaller, fBTk_PhotoPutBlockfR extracts a
  161. sub-block from the image data supplied.  If they are larger, the data
  162. given are replicated (in a tiled fashion) to fill the specified area.
  163. These rules operate independently in the horizontal and vertical
  164. directions.
  165. .PP
  166. fBTk_PhotoPutZoomedBlockfR works like fBTk_PhotoPutBlockfR except that
  167. the image can be reduced or enlarged for display.  The
  168. fIsubsampleXfR and fIsubsampleYfR parameters allow the size of the
  169. image to be reduced by subsampling.
  170. fBTk_PhotoPutZoomedBlockfR will use only pixels from the input image
  171. whose X coordinates are multiples of fIsubsampleXfR, and whose Y
  172. coordinates are multiples of fIsubsampleYfR.  For example, an image
  173. of 512x512 pixels can be reduced to 256x256 by setting
  174. fIsubsampleXfR and fIsubsampleYfR to 2.
  175. .PP
  176. The fIzoomXfR and fIzoomYfR parameters allow the image to be
  177. enlarged by pixel replication.  Each pixel of the (possibly subsampled)
  178. input image will be written to a block fIzoomXfR pixels wide and
  179. fIzoomYfR pixels high of the displayed image.  Subsampling and
  180. zooming can be used together for special effects.
  181. .PP
  182. fBTk_PhotoGetImagefR can be used to retrieve image data from a photo
  183. image.  fBTk_PhotoGetImagefR fills
  184. in the structure pointed to by the fIblockPtrfR parameter with values
  185. that describe the address and layout of the image data that the
  186. photo image has stored internally.  The values are valid
  187. until the image is destroyed or its size is changed.
  188. fBTk_PhotoGetImagefR returns 1 for compatibility with the
  189. corresponding procedure in the old photo widget.
  190. .PP
  191. fBTk_PhotoBlankfR blanks the entire area of the
  192. photo image.  Blank areas of a photo image are transparent.
  193. .PP
  194. fBTk_PhotoExpandfR requests that the widget's image be expanded to be
  195. at least fIwidthfR x fIheightfR pixels in size.  The width and/or
  196. height are unchanged if the user has specified an explicit image width
  197. or height with the fB-widthfR and/or fB-heightfR configuration
  198. options, respectively.
  199. If the image data
  200. are being supplied in many small blocks, it is more efficient to use
  201. fBTk_PhotoExpandfR or fBTk_PhotoSetSizefR at the beginning rather than
  202. allowing the image to expand in many small increments as image blocks
  203. are supplied.
  204. .PP
  205. fBTk_PhotoSetSizefR specifies the size of the image, as if the user
  206. had specified the given fIwidthfR and fIheightfR values to the
  207. fB-widthfR and fB-heightfR configuration options.  A value of
  208. zero for fIwidthfR or fIheightfR does not change the image's width
  209. or height, but allows the width or height to be changed by subsequent
  210. calls to fBTk_PhotoPutBlockfR, fBTk_PhotoPutZoomedBlockfR or
  211. fBTk_PhotoExpandfR.
  212. .PP
  213. fBTk_PhotoGetSizefR returns the dimensions of the image in
  214. *fIwidthPtrfR and *fIheightPtrfR.
  215. .SH PORTABILITY
  216. .VS 8.4
  217. .PP
  218. In Tk 8.3 and earlier, fBTk_PhotoPutBlockfR and
  219. fBTk_PhotoPutZoomedBlockfR had different signatures. If you want to
  220. compile code that uses the old interface against 8.4 without updating
  221. your code, compile it with the flag
  222. -DUSE_COMPOSITELESS_PHOTO_PUT_BLOCK.  Code linked using Stubs against
  223. older versions of Tk will continue to work.
  224. .VE 8.4
  225. .SH CREDITS
  226. .PP
  227. The code for the photo image type was developed by Paul Mackerras,
  228. based on his earlier photo widget code.
  229. .SH KEYWORDS
  230. photo, image