On Mon, 14 Sep 2009 09:32:11 -0700, Matt Neuburg <m...@tidbits.com> said:
>For example, I can imagine something like this. Take a "screen shot" of the
>window. Cover the whole window with a secondary window. Behind the secondary
>window, move the primary window on to the next entity. Take a second "screen
>shot" of the window. Now I *do* have a "before" and "after" pair of
>pictures. Perform the page curl animation in the secondary window, and
>remove it.
>
>That seems very elaborate, so before I do that I'm checking to see whether
>that strategy is on the right track. m.

Well, no one said it was a bad idea so that is what I ended up doing.
Actually, to be more precise, my current strategy, now pretty well fleshed
out, is as follows:

(1) At app launch I make an invisible child window with a layer, ignoring
mouse events, laid over the actual window. The user is unaware of its
existence. It's just a pane of glass; because it's a child window, it moves
with the main window.

(2) When the time comes to display another entity, I take a "screen shot" of
my main window and display that in the child window's layer, which is now
opaque, thus hiding the main window. The user doesn't see anything happen
because the image in the child window looks just like what was showing in
the main window.

(3) Now in the main window I display the other entity, but the user can't
see that; the child window and its layer are hiding it. Now I take a second
"screen shot" of my main window.

(4) Now I perform the animated transition in the layer, using the second
screen shot as the target image.

(5) Finally, after the animation is over, I turn the layer to transparent
glass once again. The user doesn't see anything happen because the contents
of the layer look just like the contents of the main window revealed behind
it.

The only problem with this approach so far is that the "screen shot" omits
the resize handle at the lower right of the window. I guess that's because
it isn't part of the window's content view. I'm using
cacheDisplayInRect:toBitmapImageRep: to take the "screen shot". Maybe
there's a better way? Apart from that, the illusion is extremely convincing.
m.

-- 
matt neuburg, phd = m...@tidbits.com, <http://www.tidbits.com/matt/>
A fool + a tool + an autorelease pool = cool!
AppleScript: the Definitive Guide - Second Edition!
http://www.tidbits.com/matt/default.html#applescriptthings



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to