Grabbing Image with Transparent Mask

Brahmanathaswami brahma at hindu.org
Thu Dec 24 20:21:14 EST 2015


I am working on a small routine that will later be incorporated into a 
kind of edu/game module.

This is a puzzle generating scenario where I am dynamically generating 
tiles from quotes for re-ordering by the player using this routine.

1) taking a field
2) stepping through each of the word
3) creating a button with the word as the label
4) then doing "import snapshow from btn "word_1"

*repeat* withx = 1tothenumberofwordsoffld"_Quote"
*set*theopaqueofthetemplateButtontofalse
*set*thetextFontofthetemplateButtonto"Arial Black"
*set*theshowborderofthetemplateButtontofalse
*set*thetextSizeofthetemplateButtontotTextSize*
set*theforegroundcolorofthetemplateButtontotRGB
*put*theformattedRectofwordx offld"_Quote"intotNextWordRect*
add*10toitem4oftNextWordRect *# needed to pick up descenders which are 
otherwise cut off*

*put*getLocation (tNextWordRect) intotWordLocation
*put*wordx offld"_Quote"intotNextWord
*create*ButtontNextWord
*put*heightofbtntNextWord intotHeight
*set*therectofbtntNextWord totNextWordRect**
*import*snapshotfrombuttontNextWord ofthiscd
*delete*buttontNextWord

-----
The tiles have a behavior set that includes  "grab me"

But... the image that results from the snapshot does not respond to 
mouseDown in areas where there is no letter.

So we have in image of the word (e.g.)

Learn

but the mouse must be touch some portion of any of the letters in order 
for it to be draggable.

i.e. the snap shot if being "faithful" to the shape of the letters and 
the opacity setting of the button, and a sort of transparent alpha 
channel mask has been made inside the image rect that will not send any 
mousedown message.

 From one angle, this behavior probably could be deemed "performed as 
expected."

Previously I had just use a snap shot of the formattedRect of the 
word... which included the background on the card, but this will not 
(and Peter says probably will *never, ever* work in HTML 5 and to try 
getting a snapshot from the object. I switch my snapshot code... which 
was really easy to change and YES! it works in HTML 5  BUT  I it's a 
"pain" for the user because she has to get her mouse right down on the 
letters to drag.

is there some other algorithm that I can use in the behavior so that if 
the user mouses down anywhere in the rect of the image, even on the 
transparent parts... that the mousedown/grab me message will be triggered?


the current background of the card uses a pattern and looks lovely, the 
other alternative is to either set the pattern of the background of the 
button to the same as the background of the card  OR to use ugly flat 
colors and make the background of the button opaque and use the same 
color... then there is not transparency and the whole image is 
responsive of the mousedown. But I would rather find the algorithm that 
will allow dragging the image regardless of the state of its background 
transparency.

it would also be super cool if we could set the blend level of just the 
background of any object (Actually there are many use cases for this 
besides this one)

Happy Pancha Ganapati Day 4!

Brahmanathaswami




More information about the use-livecode mailing list