FROM : Vincent Coetzee
DATE : Fri Nov 07 20:18:00 2003
Hi there
Thanks for your help guys, but I found a reference to the exact
solution I was looking for on MamaSan, thanks to Koen van der Drift and
Jim Derry. Thanks for publishing the source guys.
Vince
On Nov 07, 2003, at 19:05, Fritz Anderson wrote:
> For the first character of each paragraph,
> charRange is NSMakeRange(first char offset, 1)
> noRange is NSMakeRange(NSNotFound, 0)
> container is [theTextView container]
> layoutManager is [theTextView layoutManager]
> unsigned rectCount
> NSRect * rects = [layoutManager rectArrayForCharacterRange: charRange
> withinSelectedCharacterRange: noRange
> inTextContainer: container rectCount: &rectCount
>
> rectCount will always be 1. NSMinY(rects[0]) will be the top of the
> first line in the paragraph.
>
> For all the line-fragment rectangles,
>
> allChars is NSMakeRange(0, [textStorage length])
> allGlyphs is allChars converted to a glyph range by layoutManager
> currRange starts at NSMakeRange(0, 0)
> while NSMaxRange(currRange) < NSMaxRange(allGlyphs)
> currFragmentRect is [layoutManager lineFragmentRectForGlyphAtIndex:
> currRange.location
> effectiveRange: &currRange];
> process currFragmentRect. There may be more than one per line; look
> for the rect at the left margin
> currRange.location = NSMaxRange(currRange)
> currRange.length = 0;
>
> -- F
>
> On 7 Nov 2003, at 1:11 AM, Vincent Coetzee wrote:
>
>> Hi there
>>
>> I have a requirement for drawing line numbers next to a text view.
>> Obviously the easiest way to do this in Cocoa is by means of a
>> subclass of NSRuler. How all this works I can figure out, what is
>> confusing me is how to ascertain the line number that is currently at
>> the top of the NSTextView. In the case of unformatted text, i.e. one
>> line == one paragraph, the number of paragraphs in the NSTextStorage
>> is the number of lines, but how does one ascertain the relative
>> positions of paragraphs with respect to the top of the NSTextView. I
>> have spent hours reading NSTextStorage, NSLayoutManager,
>> NSTextContainer, NSText, and NSTextView documentation without being
>> able to figure this out. Has anyone any more in-depth knowledge on
>> this subject that perhaps suggested a route ?
_______________________________________________
cocoa-dev mailing list | <email_removed>
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
DATE : Fri Nov 07 20:18:00 2003
Hi there
Thanks for your help guys, but I found a reference to the exact
solution I was looking for on MamaSan, thanks to Koen van der Drift and
Jim Derry. Thanks for publishing the source guys.
Vince
On Nov 07, 2003, at 19:05, Fritz Anderson wrote:
> For the first character of each paragraph,
> charRange is NSMakeRange(first char offset, 1)
> noRange is NSMakeRange(NSNotFound, 0)
> container is [theTextView container]
> layoutManager is [theTextView layoutManager]
> unsigned rectCount
> NSRect * rects = [layoutManager rectArrayForCharacterRange: charRange
> withinSelectedCharacterRange: noRange
> inTextContainer: container rectCount: &rectCount
>
> rectCount will always be 1. NSMinY(rects[0]) will be the top of the
> first line in the paragraph.
>
> For all the line-fragment rectangles,
>
> allChars is NSMakeRange(0, [textStorage length])
> allGlyphs is allChars converted to a glyph range by layoutManager
> currRange starts at NSMakeRange(0, 0)
> while NSMaxRange(currRange) < NSMaxRange(allGlyphs)
> currFragmentRect is [layoutManager lineFragmentRectForGlyphAtIndex:
> currRange.location
> effectiveRange: &currRange];
> process currFragmentRect. There may be more than one per line; look
> for the rect at the left margin
> currRange.location = NSMaxRange(currRange)
> currRange.length = 0;
>
> -- F
>
> On 7 Nov 2003, at 1:11 AM, Vincent Coetzee wrote:
>
>> Hi there
>>
>> I have a requirement for drawing line numbers next to a text view.
>> Obviously the easiest way to do this in Cocoa is by means of a
>> subclass of NSRuler. How all this works I can figure out, what is
>> confusing me is how to ascertain the line number that is currently at
>> the top of the NSTextView. In the case of unformatted text, i.e. one
>> line == one paragraph, the number of paragraphs in the NSTextStorage
>> is the number of lines, but how does one ascertain the relative
>> positions of paragraphs with respect to the top of the NSTextView. I
>> have spent hours reading NSTextStorage, NSLayoutManager,
>> NSTextContainer, NSText, and NSTextView documentation without being
>> able to figure this out. Has anyone any more in-depth knowledge on
>> this subject that perhaps suggested a route ?
_______________________________________________
cocoa-dev mailing list | <email_removed>
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
| Related mails | Author | Date |
|---|---|---|
| Vincent Coetzee | Nov 7, 08:11 | |
| Fritz Anderson | Nov 7, 18:05 | |
| Vincent Coetzee | Nov 7, 20:18 |






Cocoa mail archive

