// ----------------------------------------------------------------------------
#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)
{
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;
}
traits |= NSFontItalicTrait;
desc = [NSFontDescriptor fontDescriptorWithFontAttributes:
- [[NSDictionary alloc] initWithObjectsAndKeys:
+ [NSDictionary dictionaryWithObjectsAndKeys:
wxCFStringRef(m_faceName).AsNSString(), NSFontFamilyAttribute,
[NSNumber numberWithFloat:m_pointSize], NSFontSizeAttribute,
[NSNumber numberWithUnsignedInt:traits], NSFontSymbolicTrait,
return( newImage );
}
+CGImageRef wxOSXCreateCGImageFromNSImage( WX_NSImage nsimage )
+{
+ // based on http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg18065.html
+
+ NSSize imageSize = [nsimage size];
+ CGColorSpaceRef genericRGB = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
+ CGContextRef context = CGBitmapContextCreate(NULL, imageSize.width, imageSize.height, 8, 0, genericRGB, kCGImageAlphaPremultipliedFirst);
+ NSGraphicsContext *nsGraphicsContext = [NSGraphicsContext graphicsContextWithGraphicsPort:context flipped:NO];
+ [NSGraphicsContext saveGraphicsState];
+ [NSGraphicsContext setCurrentContext:nsGraphicsContext];
+ [[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];
+ CGImageRef image = CGBitmapContextCreateImage(context);
+ CFRelease(context);
+ return image;
+ }
+
// ----------------------------------------------------------------------------
// NSCursor Utils
// ----------------------------------------------------------------------------