Douglas -- Something somewhere must be trying to compensate for the unflipped context, because the text isn't drawn upside-down. Yes, the positioning is calculated with the assumption that the context is flipped, and effects like strikethrough and underline are drawn with the assumption that the context is flipped.
But the text glyphs themselves are always drawn right-side up. Isn't this a bug? (And doesn't pretty much every developer who touches the text system trip over this?) If the glyphs were actually drawn upside-down then the problem would be pretty obvious. Instead, forgetting to flip the context produces weird effects (but not upside-down text). And when some one posts to the list and asks for help, and they are told that the context isn't flipped, then their first reaction is to believe that that can't be the problem--after all, the text isn't upside-down. That was certainly my reaction the last time I tripped over this and it appears that the original poster has had that reaction as well. So why aren't glyphs drawn upside-down when the context hasn't been flipped?! David On Jan 31, 2011, at 3:15 PM, Douglas Davidson wrote: > The layout manager expects to be drawing within a flipped context. > > Douglas Davidson > > On Jan 31, 2011, at 2:09 PM, Todd Heberlein wrote: > >> I'm doing a simple experiment using NSTextStorage, NSLayoutManager, >> NSTextContainer to draw some text (I am basing this on the CircleView >> example because I want some of that orientation power later). >> >> I have found that when rendering the text using >> drawGlyphsForGlyphRange:atPoint:, I don't get the text where I expected. It >> is higher than I expect. Furthermore, when I draw a rectangle around the >> text (or try to) using the rectangle from usedRectForTextContainer:, the >> text is outside the rectangle (in short, the rectangle is where I expect it >> to be, but the text glyphs are not). >> >> Is there a secret incantation that I am missing? >> >> Thanks, >> >> Todd >> >> Basic code snippet: >> >> point = NSMakePoint(1.0, 1.0); >> glyphRange = [layoutManager glyphRangeForTextContainer:textContainer]; >> usedRect = [layoutManager usedRectForTextContainer:textContainer]; >> usedRect.origin = point; >> >> [layoutManager drawGlyphsForGlyphRange:glyphRange atPoint:point]; >> [[NSBezierPath bezierPathWithRect: rect] stroke]; >> _______________________________________________ >> >> 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: >> http://lists.apple.com/mailman/options/cocoa-dev/ddavidso%40apple.com >> >> This email sent to ddavi...@apple.com > > _______________________________________________ > > 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: > http://lists.apple.com/mailman/options/cocoa-dev/davidf%40gmx.us > > This email sent to dav...@gmx.us _______________________________________________ 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com