On Tue, Nov 18, 2008 at 1:57 PM, Rua Haszard Morris
<[EMAIL PROTECTED]> wrote:
> What are the different options for flipping the coordinates of the
> destination view? I've tried doing it by scaling and translating the
> CGContext, but this results in problems with underlining or the character
> orientation (depending on whether i flip the view back before or after
> drawing the text).
>
> At the moment the only method which results in correct text is to have a
> custom view and override isFlipped - is this the only recommended method?

Doug answered the overall question, but maybe I'll chime on this bit
specifically.

As you're finding, -isFlipped and the CTM are entirely orthogonal
pieces of data.  If you're using NSLayoutManager, you need the current
context to return YES to -[NSGraphicsContext isFlipped], and you also
want the CTM set up so that the text goes where you want.

There is no setter for -[NSGraphicsContext isFlipped], but you don't
need to use a custom view.  [NSGraphicsContext
graphicsContextWithGraphicsPort:[originalContext graphicsPort]
flipped:YES] would give you a graphics context object that is flipped
without otherwise modifying the CTM or anything.

-Ken

> I ask because I have to use these strings within custom views (which may for
> example have rotated contexts), as well as in standard controls, and simpler
> custom views purely for drawing these attributed strings. If the only method
> to have the attributes (particularly underline) interpreted correctly is to
> perform the drawing in a isFlipped NSView subclass, then I need to rejig
> things so the complex custom views embed an NSView rather than draw the
> attributed string manually.
>
> thanks
> Rua HM.
>
> On Nov 19, 2008, at 9:40 am, 11(November)/19/08, Rua Haszard Morris wrote:
>
>> Thanks for the link, you are right, I had not seen that document!
>>
>> On Nov 19, 2008, at 9:33 am, 11(November)/19/08, Douglas Davidson wrote:
>>
>>>
>>> On Nov 18, 2008, at 12:18 PM, Rua Haszard Morris wrote:
>>>
>>>> To follow up.. below I have pasted the code that draws the text (for my
>>>> test app, as opposed to the more complex ways of reproducing the bug
>>>> elsewhere in my code). (the full test app is attached to the radar bug)
>>>>
>>>> I have been consulting the Text System Overview documentation, which I
>>>> don't believe mentions this fact.
>>>>
>>>> http://developer.apple.com/documentation/Cocoa/Conceptual/TextArchitecture/TextArchitecture.html
>>>>
>>>> I can understand that drawing text top to bottom makes sense, but I am
>>>> surprised that the coordinate system of the destination context has such
>>>> far-reaching side effects.
>>>
>>> You're looking at the Text Systems Overview, which is very general
>>> conceptual documentation, the sort you would consult to decide which class
>>> to use.  What you want is the Text Layout Programming Guide for Cocoa, which
>>> gives more detailed direction as to how to use these classes.  The first
>>> section,
>>> http://developer.apple.com/documentation/Cocoa/Conceptual/TextLayout/Concepts/LayoutManager.html
>>>  under
>>> the heading "Glyph Drawing" says, "The text system expects view coordinates
>>> to be flipped, like those of NSTextView."  If you are going to be drawing
>>> using the layout manager directly, this is a hard-and-fast rule.
>>>
>>> Douglas Davidson
>>>
>>
>> _______________________________________________
>>
>> 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/r.haszardmorris%40adinstruments.com
>>
>> This email sent to [EMAIL PROTECTED]
>
> _______________________________________________
>
> 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/kenferry%40gmail.com
>
> This email sent to [EMAIL PROTECTED]
>
_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to