Copying an image, or part of it, to the clipboard

David Epstein dfepstein at gmail.com
Fri Mar 9 18:49:38 CST 2007


Many thanks for the insights on image opacity.  Here's another image
problem I've encountered.  Using MC 2.5 on Mac OSX 10.4.

I want to be able to copy part or all of an image to the clipboard.
An image is visible in stack "LBROW".  A handler catches mouse action
on that image, and if the user drags out a rectangle a translucent
graphic "pickRect" is created to designate that sub-area of the image.
 The script below is supposed to (1) load the entire image to the
clipboard if the user has not created a "pickRect" graphic; and (2)
load that sub-area of the image if the user has created a "pickRect"
graphic.  Case (1) works as expected.  Case (2) does not; some blank
image seems to be loaded to the clipboard instead.

But why?  When debugging this script, it is evident that the import
snapshot statement is indeed creating a new image of the correct
subarea.  Why doesn't "set the clipboardData["image"] work on it?
Another puzzle:  when debugging, MC 2.5 gives me an "execution error"
when it gets to the end of the handler.

on copyImage
  if there is not a graphic "pickRect" of stack "LBROW" then
    set the clipboardData["image"] to image 1 of group "pdfGroup" of
stack "LBROW"
  else
    set the defaultStack to "LBROW"
    put shiftedRect(the rect of graphic "pickRect",the topLeft of
stack "LBROW") into r
    delete graphic "pickRect"
    import snapshot from rect r
    set the clipboardData["image"] to last image
    delete last image
  end if
  choose browse tool
end copyImage

function shiftedRect r,s
  -- used to convert to screen coordinates the coordinates of rect r
in a stack whose topLeft is at s
  -- eg for use in import snapshot

  repeat with i = 1 to 4
    add item (1 + (i+1) mod 2) of s to item i of r
  end repeat
  return r
end shiftedRect

Any insights about this would be greatly appreciated.

David Epstein


More information about the metacard mailing list