From: David Elliott Date: Thu, 10 Jul 2003 21:01:06 +0000 (+0000) Subject: Add support for foreground and background colors to DoDrawText X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c0440c7833f4a7966fac477b1541b085142adaa6 Add support for foreground and background colors to DoDrawText git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21878 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/cocoa/dc.mm b/src/cocoa/dc.mm index b527083297..d9e7e3af62 100644 --- a/src/cocoa/dc.mm +++ b/src/cocoa/dc.mm @@ -110,6 +110,20 @@ void wxDC::DoDrawText(const wxString& text, wxCoord x, wxCoord y) [sm_cocoaNSTextStorage setAttributedString:attributedString]; [attributedString release]; + // Set the color (and later font) attributes + NSColor *fgColor = m_textForegroundColour.GetNSColor(); + NSColor *bgColor = m_textBackgroundColour.GetNSColor(); + if(!fgColor) + fgColor = [NSColor clearColor]; + if(!bgColor) + bgColor = [NSColor clearColor]; + NSDictionary *attrDict = [[NSDictionary alloc] initWithObjectsAndKeys: + fgColor, NSForegroundColorAttributeName, + bgColor, NSBackgroundColorAttributeName, + nil]; + [sm_cocoaNSTextStorage addAttributes: attrDict range:NSMakeRange(0,[sm_cocoaNSTextStorage length])]; + [attrDict release]; + NSRange glyphRange = [sm_cocoaNSLayoutManager glyphRangeForTextContainer:sm_cocoaNSTextContainer]; NSRect usedRect = [sm_cocoaNSLayoutManager usedRectForTextContainer:sm_cocoaNSTextContainer]; // NOTE: We'll crash trying to get the location of glyphAtIndex:0 if @@ -150,8 +164,8 @@ void wxDC::DoDrawText(const wxString& text, wxCoord x, wxCoord y) layoutLocation.x = 0.0; layoutLocation.y *= -1.0; layoutLocation.y += [[sm_cocoaNSLayoutManager typesetter] baselineOffsetInLayoutManager:sm_cocoaNSLayoutManager glyphIndex:0]; - // NOTE: That's NSMakePoint, not NSMakePint (working on that though) - [m_textForegroundColour.GetNSColor() set]; + if(m_backgroundMode==wxSOLID) + [sm_cocoaNSLayoutManager drawBackgroundForGlyphRange:glyphRange atPoint:NSZeroPoint]; [sm_cocoaNSLayoutManager drawGlyphsForGlyphRange:glyphRange atPoint:layoutLocation]; [context restoreGraphicsState];