• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: text highlighting with CALayer and NSTextVew
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: text highlighting with CALayer and NSTextVew


  • Subject: Re: text highlighting with CALayer and NSTextVew
  • From: Koen van der Drift <email@hidden>
  • Date: Thu, 23 Aug 2012 09:55:49 -0400

On Thu, Aug 23, 2012 at 8:09 AM, Graham Cox <email@hidden> wrote:
>
> On 23/08/2012, at 9:16 PM, Koen van der Drift <email@hidden> 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.

I already tried that, but it didn't put the CALayer in the right spot.
I'll keep trying things, probably need to offset the rect.origin.y
value.

>
>> 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.

Good idea, I could maybe create a CALayer as a sublayer for each rect
in th erectArray.

Thanks,

- Koen.

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

References: 
 >text highlighting with CALayer and NSTextVew (From: Koen van der Drift <email@hidden>)
 >Re: text highlighting with CALayer and NSTextVew (From: Koen van der Drift <email@hidden>)
 >Re: text highlighting with CALayer and NSTextVew (From: Koen van der Drift <email@hidden>)
 >Re: text highlighting with CALayer and NSTextVew (From: Graham Cox <email@hidden>)

  • Prev by Date: DisplayReconfigurationCallBack with nil cgDisplayID
  • Next by Date: Re: text highlighting with CALayer and NSTextVew
  • Previous by thread: Re: text highlighting with CALayer and NSTextVew
  • Next by thread: Re: text highlighting with CALayer and NSTextVew
  • Index(es):
    • Date
    • Thread