Platforms to show: All Mac Windows Linux Cross-Platform
Back to NSLayoutManagerMBS class.
NSLayoutManagerMBS.addTextContainer(container as NSTextContainerMBS)
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 12.4 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
container: The text container to append.
Invalidates glyphs and layout as needed, but doesn't perform glyph generation or layout.
NSLayoutManagerMBS.characterIndexForPoint(point as NSPointMBS, container as NSTextContainerMBS, byref partialFraction as Double) as Integer
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
point: The point to test.
container: The text container within which the point is tested.
partialFraction: A fraction of the distance from the insertion point, logically before the given character to the next one.
Returns the index of the character falling under point.
Analogous to glyphIndexForPoint:inTextContainer, but expressed in character index terms. The method returns the index of the character falling under point, expressed in coordinate system of container; if no character is under the point, the nearest character is returned, where nearest is defined according to the requirements of selection by mouse. However, this is not simply equivalent to taking the result of the corresponding glyph index method and converting it to a character index, because in some cases a single glyph represents more than one selectable character, for example an fi ligature glyph. In that case, there is an insertion point within the glyph, and this method returns one character or the other, depending on whether the specified point lies to the left or the right of that insertion point.
In general, this method returns only character indexes for which there is an insertion point. The partialFraction is a fraction of the distance from the insertion point, logically before the given character to the next one, which may be either to the right or to the left depending on directionality.
Available in OS X v10.6 and later.
NSLayoutManagerMBS.Constructor
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 12.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
NSLayoutManagerMBS.glyphIndexForPoint(point as NSPointMBS, container as NSTextContainerMBS) as Integer
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
See also:
NSLayoutManagerMBS.glyphIndexForPoint(point as NSPointMBS, container as NSTextContainerMBS, byref partialFraction as Double) as Integer
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
point: The point for which to return the glyph, in coordinates of container.
container: The container in which the returned glyph is laid out.
partialFraction: On output, the fraction of the distance between the location of the glyph returned and the location of the next glyph.
Returns the index of the glyph falling under the given point, expressed in the given container's coordinate system.
If no glyph is under point, the nearest glyph is returned, where nearest is defined according to the requirements of selection by mouse. Clients who wish to determine whether the the point actually lies within the bounds of the glyph returned should follow this with a call to boundingRectForGlyphRange and test whether the point falls in the rectangle returned by that method. If partialFraction is non-NULL, it returns by reference the fraction of the distance between the location of the glyph returned and the location of the next glyph.
For purposes such as dragging out a selection or placing the insertion point, a partial percentage less than or equal to 0.5 indicates that point should be considered as falling before the glyph index returned; a partial percentage greater than 0.5 indicates that it should be considered as falling after the glyph index returned. If the nearest glyph doesn't lie under point at all (for example, if point is beyond the beginning or end of a line), this ratio is 0 or 1.
If the glyph stream contains the glyphs "A" and "b", with the width of "A" being 13 points, and the user clicks at a location 8 points into "A", partialFraction is 8/13, or 0.615. In this case, the point given should be considered as falling between "A" and "b" for purposes such as dragging out a selection or placing the insertion point.
Performs glyph generation and layout if needed.
As part of its implementation, this method calls fractionOfDistanceThroughGlyphForPoint and glyphIndexForPoint. To change this method's behavior, override those two methods instead of this one.
See also:
NSLayoutManagerMBS.glyphRangeForTextContainer(container as NSTextContainerMBS) as NSRangeMBS
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
This is a less efficient method than the similar textContainerForGlyphAtIndex.
Performs glyph generation and layout if needed.
NSLayoutManagerMBS.InvisibleCharMapping(character as Integer) as string
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
property | Cocoa | MBS MacCocoa Plugin | 12.5 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
By default characters are set for endofline, tab and spaces.
Set showInvisibleCharacters to true and put here all the characters you need.
(Read and Write computed property)
Some examples using this property:
NSLayoutManagerMBS.lineFragmentRectForGlyphAtIndex(glyphIndex as Integer, byref effectiveRange as NSRangeMBS) as NSRectMBS
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
glyphIndex: The glyph for which to return the line fragment rectangle.
effectiveGlyphRange: On output, the range for all glyphs in the line fragment.
Retuns the line fragment in which the given glyph is laid out.
This method causes glyph generation and layout for the line fragment containing the specified glyph, or if noncontiguous layout is not enabled, for all of the text up to and including that line fragment.
Line fragment rectangles are always in container coordinates.
Overriding this method is not recommended. If the the line fragment rectangle needs to be modified, that should be done at the typesetter level or by calling setLineFragmentRect:forGlyphRange.
See also:
NSLayoutManagerMBS.lineFragmentRectForGlyphAtIndex(glyphIndex as Integer, byref effectiveRange as NSRangeMBS, withoutAdditionalLayout as boolean) as NSRectMBS
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
glyphIndex: The glyph for which to return the line fragment rectangle.
effectiveGlyphRange: On output, the range for all glyphs in the line fragment.
withoutAdditionalLayout: If true, glyph generation and layout are not performed, so this option should not be used unless layout is known to be complete for the range in question, or unless noncontiguous layout is enabled; if false, both are performed as needed.
Returns the line fragment in which the given glyph is laid out.
This method is primarily for use from within NSTypesetter, after layout is complete for the range in question, but before the layout manager's call to NSTypesetter has returned. In that case glyph and layout holes have not yet been recalculated, so the layout manager does not yet know that layout is complete for that range, and this variant must be used.
Overriding this method is not recommended. If the the line fragment rectangle needs to be modified, that should be done at the typesetter level or by calling setLineFragmentRect.
See also:
NSLayoutManagerMBS.lineFragmentUsedRectForGlyphAtIndex(glyphIndex as Integer, byref effectiveRange as NSRangeMBS) as NSRectMBS
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
glyphIndex: The glyph for which to return the line fragment used rectangle.
effectiveGlyphRange: On output, the range for all glyphs in the line fragment.
Returns the used rectangle for the line fragment in which the given glyph is laid out.
This method causes glyph generation and layout for the line fragment containing the specified glyph, or if noncontiguous layout is not enabled, up to and including that line fragment.
Line fragment used rectangles are always in container coordinates.
Overriding this method is not recommended. If the the line fragment used rectangle needs to be modified, that should be done at the typesetter level or by calling setLineFragmentRect.
See also:
NSLayoutManagerMBS.lineFragmentUsedRectForGlyphAtIndex(glyphIndex as Integer, byref effectiveRange as NSRangeMBS, withoutAdditionalLayout as boolean) as NSRectMBS
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
glyphIndex: The glyph for which to return the line fragment used rectangle.
effectiveGlyphRange: On output, the range for all glyphs in the line fragment.
withoutAdditionalLayout: If true, glyph generation and layout are not performed, so this option should not be used unless layout is known to be complete for the range in question, or unless noncontiguous layout is enabled; if false, both are performed as needed.
Returns the used rectangle for the line fragment in which the given glyph is laid out.
This method causes glyph generation and layout for the line fragment containing the specified glyph, or if noncontiguous layout is not enabled, up to and including that line fragment.
Line fragment used rectangles are always in container coordinates.
Overriding this method is not recommended. If the the line fragment used rectangle needs to be modified, that should be done at the typesetter level or by calling setLineFragmentRect.
See also:
NSLayoutManagerMBS.locationForGlyphAtIndex(glyphIndex as Integer) as NSPointMBS
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
glyphIndex: The glyph whose location is returned.
Returns the location of the given glyph.
If the given glyph does not have an explicit location set for it (for example, if it is part of (but not first in) a sequence of nominally spaced characters), the location is calculated by glyph advancements from the location of the most recent preceding glyph with a location set.
Glyph locations are relative to their line fragment rectangle's origin. The line fragment rectangle in turn is defined in the coordinate system of the text container where it resides.
This method causes glyph generation and layout for the line fragment containing the specified glyph, or if noncontiguous layout is not enabled, up to and including that line fragment.
NSLayoutManagerMBS.rangeOfNominallySpacedGlyphsContainingIndex(glyphIndex as Integer) as NSRangeMBS
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
glyphIndex: Index of the glyph to test.
Returns the range of nominally spaced glyphs.
The range returned begins with the first glyph, counting back from glyphIndex, that has a location set, and it continues up to, but does not include, the next glyph that has a location set.
Performs glyph generation and layout if needed.
NSLayoutManagerMBS.rectArrayForCharacterRange(charRange as NSRangeMBS, selCharRange as NSRangeMBS, container as NSTextContainerMBS, byref rectCount as Integer) as NSRectMBS()
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
charRange: The character range for which to return rectangles.
selCharRange: Selected characters within charRange, which can affect the size of the rectangles; it must be equal to or contain charRange. If the caller is interested in this more from an enclosing point of view rather than a selection point of view, pass {NSNotFound, 0} as the selected range.
container: The text container in which the text is laid out.
rectCount: The number of rectangles returned.
Returns the array of rectangles enclosing the given range.
These rectangles can be used to draw the text background or highlight for the given range of characters. If a selected range is given in selCharRange, the rectangles returned are correct for drawing the selection. Selection rectangles are generally more complicated than enclosing rectangles and supplying a selected range is the clue this method uses to determine whether to go to the trouble of doing this special work.
The number of rectangles returned isn't necessarily the number of lines enclosing the specified range. Contiguous lines can share an enclosing rectangle, and lines broken into several fragments have a separate enclosing rectangle for each fragment.
These rectangles don't necessarily enclose glyphs that draw outside their line fragment rectangles; use boundingRectForGlyphRange to determine the area that contains all drawing performed for a range of glyphs.
Performs glyph generation and layout if needed.
NSLayoutManagerMBS.rectArrayForGlyphRange(glyphRange as NSRangeMBS, selGlyphRange as NSRangeMBS, container as NSTextContainerMBS, byref rectCount as Integer) as NSRectMBS()
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 13.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
glyphRange: The glyph range for which to return rectangles.
selGlyphRange: Selected glyphs within glyphRange, which can affect the size of the rectangles; it must be equal to or contain glyphRange. If the caller is interested in this more from an enclosing point of view rather than a selection point of view, pass {NSNotFound, 0} as the selected range.
container: The text container in which the text is laid out.
rectCount: The number of rectangles returned.
Returns the array of rectangles enclosing the given range.
These rectangles can be used to draw the text background or highlight for the given range of characters. If a selected range is given in selGlyphRange, the rectangles returned are correct for drawing the selection. Selection rectangles are generally more complicated than enclosing rectangles and supplying a selected range is the clue this method uses to determine whether to go to the trouble of doing this special work.
The number of rectangles returned isn't necessarily the number of lines enclosing the specified range. Contiguous lines can share an enclosing rectangle, and lines broken into several fragments have a separate enclosing rectangle for each fragment.
The purpose of this method is to calculate line rectangles for drawing the text background and highlighting. These rectangles don't necessarily enclose glyphs that draw outside their line fragment rectangles; use boundingRectForGlyphRange to determine the area that contains all drawing performed for a range of glyphs.
Performs glyph generation and layout if needed.
NSLayoutManagerMBS.removeTextContainerAtIndex(index as Integer)
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 12.4 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
index: The index of the text container to remove.
This method invalidates glyph information as needed.
NSLayoutManagerMBS.replaceGlyphAtIndex(glyphIndex as Integer, newGlyph as Integer)
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 12.4 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
glyphIndex: Index of the glyph to replace.
newGlyph: The new glyph.
Doesn't alter the glyph-to-character mapping or invalidate layout information. The character index of the glyph is assumed to remain the same (although it can, of course, be set explicitly if needed).
This method is for use by the glyph-generation mechanism and doesn't perform any invalidation or generation of the glyphs or layout. This method should be invoked only during glyph generation and typesetting, in almost all cases only by the glyph generator or typesetter. For example, a custom glyph generator or typesetter might invoke it.
NSLayoutManagerMBS.replaceTextStorage(newTextStorage as NSTextStorageMBS)
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 12.1 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
All NSLayoutManager objects sharing the original NSTextStorage object then share the new one. This method makes all the adjustments necessary to keep these relationships intact, unlike setting textStorage property.
NSLayoutManagerMBS.setCharacterIndex(charIndex as Integer, glyphIndex as Integer)
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 12.4 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
charIndex: The index to set.
glyphIndex: The glyph corresponding to the character whose index is set. The glyph must already be present.
This method is for use by the glyph-generation mechanism and doesn't perform any invalidation or generation of the glyphs or layout. This method should be invoked only during glyph generation and typesetting, in almost all cases only by the glyph generator or typesetter. For example, a custom glyph generator or typesetter might invoke it.
NSLayoutManagerMBS.setExtraLineFragmentRect(fragmentRect as NSRectMBS, usedRect as NSRectMBS, TextContainer as NSTextContainerMBS)
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 14.2 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
fragmentRect: The rectangle to set.
usedRect: Indicates where the insertion point is drawn.
TextContainer: The text container where the rectangle is to be laid out.
The extra line fragment is used when the text backing ends with a hard line break or when the text backing is totally empty, to define the extra line which needs to be displayed at the end of the text. If the text backing is not empty and does not end with a hard line break, this should be set to NSRectMBS.Zero and nil.
Line fragment rectangles and line fragment used rectangles are always in container coordinates.
This method is used by the layout mechanism and should be invoked only during typesetting, in almost all cases only by the typesetter. For example, a custom typesetter might invoke it.
NSLayoutManagerMBS.setLineFragmentRect(fragmentRect as NSRectMBS, glyphRange as NSRangeMBS, usedRect as NSRectMBS)
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 14.2 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
fragmentRect: The rectangle of the line fragment.
glyphRange: The range of glyphs to be associated with fragmentRect.
usedRect: The portion of fragmentRect that actually contains glyphs or other marks that are drawn (including the text container’s line fragment padding. Must be equal to or contained within fragmentRect.
The typesetter must specify the text container first with setTextContainer, and it sets the exact positions of the glyphs afterwards with setLocation.
In the course of layout, all glyphs should end up being included in a range passed to this method, but only glyphs that start a new line fragment should be at the start of such ranges.
Line fragment rectangles and line fragment used rectangles are always in container coordinates.
This method is used by the layout mechanism and should be invoked only during typesetting, in almost all cases only by the typesetter. For example, a custom typesetter might invoke it.
NSLayoutManagerMBS.usedRectForTextContainer(container as NSTextContainerMBS) as NSRectMBS
Type | Topic | Plugin | Version | macOS | Windows | Linux | iOS | Targets |
method | Cocoa | MBS MacCocoa Plugin | 17.2 | ✅ Yes | ❌ No | ❌ No | ❌ No | Desktop only |
Returns the text container's currently used area, which determines the size that the view would need to be in order to display all the glyphs that are currently laid out in the container. This causes neither glyph generation nor layout.
Used rectangles are always in container coordinates.
The items on this page are in the following plugins: MBS MacCocoa Plugin.
