On 23/08/2012, at 9:16 PM, Koen van der Drift <koenvanderdr...@gmail.com> wrote:
> Another update, I guess I love to talk to myself. > > I got the drawing part done as follows: > > > CALayer *aLayer = [CALayer layer]; > NSRect r = [self.layoutManager boundingRectForGlyphRange: aRange > inTextContainer: self.textContainer]; > > aLayer.backgroundColor = CGColorCreateGenericRGB (0.2, 0.2, 0.2, > 0.2); // obviously this will be changed to something nicer > aLayer.frame = r; > aLayer.cornerRadius = 6.0f; > > [self.layer addSublayer: aLayer]; > > > There are two problems: > > 1. the y-location of the layer that is drawn is wrong, I think it has to do > with the coordinates being flipped Text views generally use flipped coordinates (since most text systems render top-down). You may need to set the -geometryFlipped property of the CALayer to match. > 2. when the range contains a line break, I get the rect for two whole lines, > not just the glyphs. You probably want to use [NSLayoutManager rectArrayForCharacterRange:....] instead, which gives you all of the rectangles necessary to perform a highlight, which can consist of numerous parts, considering a text highlight can extend over many lines, be disjoint, etc. Of course you can't just set a CALayer frame with this - it might be better to create a custom layer that can draw the necessary rectangles behind the text. --Graham _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com