home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / windows / x / 14312 < prev    next >
Encoding:
Internet Message Format  |  1992-07-23  |  3.1 KB

  1. Path: sparky!uunet!zephyr.ens.tek.com!uw-beaver!micro-heart-of-gold.mit.edu!bloom-beacon!INTERNET!dont-send-mail-to-path-lines
  2. From: debbieg@mathworks.UUCP
  3. Newsgroups: comp.windows.x
  4. Subject: Blitting through a clipmask
  5. Message-ID: <9207232018.AA00192@yellowpig.mathworks.com>
  6. Date: 23 Jul 92 20:18:27 GMT
  7. Sender: daemon@athena.mit.edu (Mr Background)
  8. Organization: The Internet
  9. Lines: 76
  10.  
  11. Hi,
  12.  
  13. I'm having a problem with clipmasks and blitting.
  14. Here's the situation:
  15.  
  16.  
  17.         +-------------------------------------------+
  18.         |                                           |
  19.         |                ............               |
  20.         |                .          .               |
  21.         |                .          .               |
  22.         |                .          .               |
  23.         |                .          .               |
  24.         |                .          .               |
  25.         |                .          .               |
  26.         |                .          .               |
  27.         |                .      +-------+           |
  28.         |                .      |   .   |           |
  29.         |                .      |   .   |           |
  30.         |                .      +-------+           |
  31.         |                .          .               |
  32.         |                ............               |
  33.         |                                           |
  34.         |                                           |
  35.         +-------------------------------------------+
  36.  
  37. The outer box is my window.  The dotted ('.') box is the current
  38. GC clipmask.  The small box is the area where I want to blit
  39. an image.
  40.  
  41. The image could look something like this:
  42.  
  43.     +--------+
  44.     |xxx/\xxx|
  45.     |xx/  \xx|
  46.     |x/    \x|
  47.     |/      \|
  48.     |\      /|
  49.     |x\    /x|
  50.     |xx\  /xx|
  51.     |xxx\/xxx|
  52.     +--------+
  53.  
  54. Where x is unknown and the blank part is filled with what I want
  55. to be displayed on the screen.
  56. I also have a clipmask set up to look just like the image except
  57. that the x's are 0's and the blank part is filled with 1's.
  58.  
  59. How do I blit the image through my clipmask through the GC's
  60. clipmask onto the screen?  I've tried a lot of things and none of
  61. them seems to work.
  62. Here is the final way I tried:
  63. 1) Create a 1 bit blank pixmap and a Screen Depth blank pixmap.
  64. 2) Create the clipmask image and the data image.
  65. 3) Do an XPutImage using the window's gc to put the clipmask
  66.    image into the Screen Depth blank pixmap.
  67. 4) Create a 1 bit gc (its drawable is the 1 bit pixmap)
  68.    with foreground 1 and background 0.
  69. 5) XCopyPlane the Screen Depth pixmap to the 1 bit blank pixmap.
  70. 6) Set the window's gc's clipmask to the 1 bit pixmap.
  71. 7) Set the window's gc's cliporigin to where the image is going
  72.    in the window.
  73. 8) XPutImage the image into the window.
  74.  
  75. Somehow, after step 3, the Screen Depth pixmap is still blank (and doesn't
  76. contain the clipmask ANDed with the window's gc's clipmask like it should)
  77. no matter what I try setting the clip origin to.  When I set the window's
  78. gc's clipmask to None though, the Screen Depth pixmap contains the whole
  79. clipmask image.
  80. How can I get the Screen Depth pixmap to contain the clipmask image ANDed
  81. with the window's gc's clipmask?????
  82. Or can anyone tell me a better way to do this whole thing?
  83.  
  84.                         Thanx,
  85.                         Mike Moretti
  86.                         The MathWorks
  87.