On Apr 8, 2010, at 5:02 AM, vincent habchi wrote:

> I've been fiddling with NSAttributedString lately, and the way to display 
> them through Core Text. In the docs, I've read that NSAttributedString and 
> CFAttributedStringRef were supposed to be "toll free" bridged; I assumed that 
> meant that one could be used in lieu of the other with (or maybe even 
> without) a simple cast.
> 
> But I found this is not true. Specifically, I was getting strange errors like 
> "CFSet[Stroke|Fill]ColorFromColor : invalid context 0x0" each time I printed 
> my NSAttributedString by CTLineDraw(), although I had a perfectly valid 
> context. The glyph were drawn, but always in black, while I was attempting to 
> get another color via the NSForegroundColorAttributeName. At the end, I had 
> to replace the pair (NSColor, NSForeground…) by a (CGColorRef, 
> kCTForeground…), and now it works.
> 
> Is that supposed to be a "normal" behavior, did I misunderstand the meaning 
> of "toll free", or is it a bug?

You need to have a current NSGraphicsContext for NSColor (and possibly other) 
attributes.  This is pretty easy, as in the following snippet from my own code:

    [NSGraphicsContext saveGraphicsState];
    [NSGraphicsContext setCurrentContext:[NSGraphicsContext 
graphicsContextWithGraphicsPort:ctxt flipped:NO]];
    
    CTFrameDraw(frame, ctxt);
    CGContextFlush(ctxt);
    CFRelease(frame);
    
    [NSGraphicsContext restoreGraphicsState];

If this works, you can thank David Duncan for the fix: 
http://lists.apple.com/archives/quartz-dev/2008/Jun/msg00043.html


hth,
Adam

_______________________________________________

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

Reply via email to