2008 05 14Projected coordinates of a 3D CALayer
CALayer, but you can use
convertRect:fromLayerto almost get them. Thanks to Simon Fraser on the Quartz ML for that.
Suppose you have layers setup like that :
rootLayer layerHavingA3DTransform layer1 layer2 layer3
layer3 will be transformed by
layerHavingA3DTransform and will appear 3D. To get their projected coordinates, use
CGRect projectedRect = [layer1 convertRect:localRect toLayer:[self layer]];
This will transform
localRect, a rect in
layer1 coordinates to root layer coordinates. If you want the layer extent, that's -
bounds.width/2, -bounds.height/2, bounds.width, bounds.height for the default
anchorPoint of (0.5, 0.5). Note that
projectedRect is in layer coordinates, not in
NSView coordinates. For this case I had manually centered
layerHavingA3DTransform in the view and got coordinates reflecting that, going from -size to +size.
convertPoint:fromLayerto convert each layer point.