At 10:49 AM +0100 6/18/02, James wrote:
>Buzz Kettles <[EMAIL PROTECTED]> wrote:
>>  Do you know if copypixels supports [#ink : #reverse]?
>
>Hi Buzz,
>
>According to Werner Sharp, the formula for reverse ink is:
>destination = destination XOR source.
>
>Truth table for XOR:
>
>    |  0  1
>---|-------
>  0 |  1  0
>    |
>  1 |  0  1
>
>(Though I imagine that you know this already :-)

yes

>
>This operation is applied to each of the bits in each 8-bit color component:
>
>rgb(127,   0,   5) = 01111111 00000000 000000101
>rgb(128, 127,   5) = 10000000 10000000 000000101
>            XOR       00000000 01111111 111111111
>
>You should only be getting white pixels is if both destination and source
>are the same color, as in the blue component above.

AHA! - I had taken the same rect & reversed itself onto itself!

>So it sounds as if you are using the same image as source and destination.

YES - I had been placing a black rect set to reverse ink onto 
something & I was trying to simulate that.  DOH!

I had separated the grab pixels & copyPixels back on (so I wasn't 
drawing to & from the same image, but had forgotten to clear out with 
black in-between.

image.fill on the same rect between them got it beautifully.

Thanks so much for the reminder on how it works.

-Buzz

>To reverse an image, you should use black as the destination.  Using other
>colors gives different effects, as shown in the demonstration below.
>
>Cheers,
>
>James
>
>
>-- In a Movie Script:
>
>on reverseInk(aTextColor, aDestinationColor)
>   -- Create a text member with the text "Buzz" in the chosen color
>   tTextMember           = new(#text)
>   tTextMember.text      = "Buzz"
>   tTextMember.fontSize  = 18
>   tTextMember.font      = "Arial"
>   tTextMember.alignment = #center
>   tTextMember.width     = 64
>
>   if ilk(aTextColor) = #color then
>     tTextMember.color = aTextColor
>   end if
>
>   -- Convert the text to an image with an alpha channel
>   tSource = tTextMember.image
>
>   -- Prepare a destination image with the chosen background color
>   tRect  = tSource.rect
>   tImage = image(tRect.width, tRect.height, 32)
>   if ilk(aDestinationColor) <> #color then
>     aDestinationColor = rgb(0, 0, 0) -- use black as default
>   end if
>   tImage.fill(tRect, aDestinationColor)
>
>   -- Use reverse ink to copy the text image across
>   tImage.copyPixels(tSource, tRect, tRect, [#ink: #reverse])
>
>   -- Create a new bitmap member from the resulting image
>   new(#bitmap).image = tImage
>end
>
>
>-- In the Message window:
>-- To create white letters on a black background
>reverseInk()
>-- Using red text to create green letters on a blue background
>reverseInk(rgb(255, 0, 0), rgb(0, 0, 255))
>
>
>-- rgb(255, 0,   0) = 11111111 00000000 00000000 -- red
>-- rgb  (0, 0, 255) = 00000000 00000000 11111111 -- blue
>--              XOR   00000000 11111111 00000000 -- green
>
>[To remove yourself from this list, or to change to digest mode, go 
>to http://www.penworks.com/lingo-l.cgi  To post messages to the 
>list, email [EMAIL PROTECTED]  (Problems, email 
>[EMAIL PROTECTED]). Lingo-L is for learning and helping with 
>programming Lingo.  Thanks!]

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]

Reply via email to