X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1821877f7f20c454ef908171368ab20067fbe3cf..ad2db6f8ea1089531cf49ab9960fac772e75927f:/src/osx/carbon/utilscocoa.mm diff --git a/src/osx/carbon/utilscocoa.mm b/src/osx/carbon/utilscocoa.mm index 4beb7a3685..c787a15a33 100644 --- a/src/osx/carbon/utilscocoa.mm +++ b/src/osx/carbon/utilscocoa.mm @@ -102,6 +102,40 @@ void* wxMacCocoaRetain( void* obj ) // ---------------------------------------------------------------------------- #if wxOSX_USE_COCOA +wxFont::wxFont(WX_NSFont nsfont) +{ + [nsfont retain]; + wxNativeFontInfo info; + SetNativeInfoFromNSFont(nsfont, &info); + Create(info); +} + +void wxFont::SetNativeInfoFromNSFont(WX_NSFont nsfont, wxNativeFontInfo* info) +{ + NSFontDescriptor*desc = [[nsfont fontDescriptor] retain]; + if ( info->m_faceName.empty()) + { + wxFontStyle fontstyle = wxFONTSTYLE_NORMAL; + wxFontWeight fontweight = wxFONTWEIGHT_NORMAL; + bool underlined = false; + + int size = (int) ([desc pointSize]+0.5); + NSFontSymbolicTraits traits = [desc symbolicTraits]; + + if ( traits & NSFontBoldTrait ) + fontweight = wxFONTWEIGHT_BOLD ; + else + fontweight = wxFONTWEIGHT_NORMAL ; + if ( traits & NSFontItalicTrait ) + fontstyle = wxFONTSTYLE_ITALIC ; + + wxCFStringRef fontname( [desc postscriptName] ); + info->Init(size,wxFONTFAMILY_DEFAULT,fontstyle,fontweight,underlined, + fontname.AsString(), wxFONTENCODING_DEFAULT); + + } + info->m_nsFontDescriptor = desc; +} WX_NSFont wxFont::OSXCreateNSFont(wxOSXSystemFont font, wxNativeFontInfo* info) { @@ -138,29 +172,7 @@ WX_NSFont wxFont::OSXCreateNSFont(wxOSXSystemFont font, wxNativeFontInfo* info) break; } [nsfont retain]; - NSFontDescriptor*desc = [[nsfont fontDescriptor] retain]; - if ( info->m_faceName.empty()) - { - wxFontStyle fontstyle = wxFONTSTYLE_NORMAL; - wxFontWeight fontweight = wxFONTWEIGHT_NORMAL; - bool underlined = false; - - int size = (int) ([desc pointSize]+0.5); - NSFontSymbolicTraits traits = [desc symbolicTraits]; - - if ( traits & NSFontBoldTrait ) - fontweight = wxFONTWEIGHT_BOLD ; - else - fontweight = wxFONTWEIGHT_NORMAL ; - if ( traits & NSFontItalicTrait ) - fontstyle = wxFONTSTYLE_ITALIC ; - - wxCFStringRef fontname( [desc postscriptName] ); - info->Init(size,wxFONTFAMILY_DEFAULT,fontstyle,fontweight,underlined, - fontname.AsString(), wxFONTENCODING_DEFAULT); - - } - info->m_nsFontDescriptor = desc; + SetNativeInfoFromNSFont(nsfont, info); return nsfont; } @@ -182,7 +194,7 @@ void wxNativeFontInfo::OSXValidateNSFontDescriptor() traits |= NSFontItalicTrait; desc = [NSFontDescriptor fontDescriptorWithFontAttributes: - [[NSDictionary alloc] initWithObjectsAndKeys: + [NSDictionary dictionaryWithObjectsAndKeys: wxCFStringRef(m_faceName).AsNSString(), NSFontFamilyAttribute, [NSNumber numberWithFloat:m_pointSize], NSFontSizeAttribute, [NSNumber numberWithUnsignedInt:traits], NSFontSymbolicTrait, @@ -313,7 +325,7 @@ WX_NSImage wxOSXCreateNSImageFromCGImage( CGImageRef image ) return( newImage ); } -CGImageRef wxOSXCreateCGImageFromNSSImage( WX_NSImage nsimage ) +CGImageRef wxOSXCreateCGImageFromNSImage( WX_NSImage nsimage ) { // based on http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg18065.html @@ -323,7 +335,7 @@ CGImageRef wxOSXCreateCGImageFromNSSImage( WX_NSImage nsimage ) NSGraphicsContext *nsGraphicsContext = [NSGraphicsContext graphicsContextWithGraphicsPort:context flipped:NO]; [NSGraphicsContext saveGraphicsState]; [NSGraphicsContext setCurrentContext:nsGraphicsContext]; - [[NSColor yellowColor] setFill]; + [[NSColor whiteColor] setFill]; NSRectFill(NSMakeRect(0.0, 0.0, imageSize.width, imageSize.height)); [nsimage drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0]; [NSGraphicsContext setCurrentContext:nsGraphicsContext];