#include "wx/osx/private.h"
#endif
+#include "wx/fontutil.h"
+
#ifdef __WXMAC__
#if wxOSX_USE_CARBON
#endif
-#if defined( __WXCOCOCA__ ) || wxOSX_USE_COCOA
+#if wxOSX_USE_COCOA
-CGContextRef wxMacGetContextFromCurrentNSContext()
+CGContextRef wxOSXGetContextFromCurrentContext()
{
CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext]
graphicsPort];
return context;
}
+bool wxOSXLockFocus( WXWidget view)
+{
+ return [view lockFocusIfCanDraw];
+}
+
+void wxOSXUnlockFocus( WXWidget view)
+{
+ [view unlockFocus];
+}
+
+#endif
+
+#if wxOSX_USE_IPHONE
+
+CGContextRef wxOSXGetContextFromCurrentContext()
+{
+ CGContextRef context = UIGraphicsGetCurrentContext();
+ return context;
+}
+
#endif
// ----------------------------------------------------------------------------
[(NSObject*)obj autorelease];
}
-void wxMacCocoaRetain( void* obj )
+void* wxMacCocoaRetain( void* obj )
{
[(NSObject*)obj retain];
+ return obj;
}
+// ----------------------------------------------------------------------------
+// NSFont Utils
+// ----------------------------------------------------------------------------
+
#if wxOSX_USE_COCOA
+WX_NSFont wxFont::OSXCreateNSFont(wxOSXSystemFont font, wxNativeFontInfo* info)
+{
+ NSFont* nsfont = nil;
+ switch( font )
+ {
+ case wxOSX_SYSTEM_FONT_NORMAL:
+ nsfont = [NSFont systemFontOfSize:[NSFont systemFontSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_BOLD:
+ nsfont = [NSFont boldSystemFontOfSize:[NSFont systemFontSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_SMALL:
+ nsfont = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_SMALL_BOLD:
+ nsfont = [NSFont boldSystemFontOfSize:[NSFont smallSystemFontSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_MINI:
+ nsfont = [NSFont systemFontOfSize:
+ [NSFont systemFontSizeForControlSize:NSMiniControlSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_MINI_BOLD:
+ nsfont = [NSFont boldSystemFontOfSize:
+ [NSFont systemFontSizeForControlSize:NSMiniControlSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_LABELS:
+ nsfont = [NSFont labelFontOfSize:[NSFont labelFontSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_VIEWS:
+ nsfont = [NSFont controlContentFontOfSize:0];
+ break;
+ default:
+ 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;
+ return nsfont;
+}
+
+void wxNativeFontInfo::OSXValidateNSFontDescriptor()
+{
+ NSFontDescriptor* desc = [NSFontDescriptor fontDescriptorWithName:wxCFStringRef(m_faceName).AsNSString() size:m_pointSize];
+ NSFontSymbolicTraits traits = 0;
+
+ if (m_weight == wxFONTWEIGHT_BOLD)
+ traits |= NSFontBoldTrait;
+ if (m_style == wxFONTSTYLE_ITALIC || m_style == wxFONTSTYLE_SLANT)
+ traits |= NSFontItalicTrait;
+
+ if ( traits != 0 )
+ {
+ desc = [desc fontDescriptorWithSymbolicTraits:traits];
+ }
+ wxMacCocoaRetain(desc);
+ m_nsFontDescriptor = desc;
+}
+
+WX_NSFont wxFont::OSXCreateNSFont(const wxNativeFontInfo* info)
+{
+ NSFont* nsFont;
+ nsFont = [NSFont fontWithDescriptor:info->m_nsFontDescriptor size:info->m_pointSize];
+ wxMacCocoaRetain(nsFont);
+ return nsFont;
+}
+
+#endif
+
+#if wxOSX_USE_IPHONE
+
+WX_UIFont wxFont::OSXCreateUIFont(wxOSXSystemFont font, wxNativeFontInfo* info)
+{
+ UIFont* uifont;
+ switch( font )
+ {
+ case wxOSX_SYSTEM_FONT_NORMAL:
+ uifont = [UIFont systemFontOfSize:[UIFont systemFontSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_BOLD:
+ uifont = [UIFont boldSystemFontOfSize:[UIFont systemFontSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_MINI:
+ case wxOSX_SYSTEM_FONT_SMALL:
+ uifont = [UIFont systemFontOfSize:[UIFont smallSystemFontSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_MINI_BOLD:
+ case wxOSX_SYSTEM_FONT_SMALL_BOLD:
+ uifont = [UIFont boldSystemFontOfSize:[UIFont smallSystemFontSize]];
+ break;
+ case wxOSX_SYSTEM_FONT_VIEWS:
+ case wxOSX_SYSTEM_FONT_LABELS:
+ uifont = [UIFont systemFontOfSize:[UIFont labelFontSize]];
+ break;
+ default:
+ break;
+ }
+ [uifont retain];
+ if ( info->m_faceName.empty())
+ {
+ wxFontStyle fontstyle = wxFONTSTYLE_NORMAL;
+ wxFontWeight fontweight = wxFONTWEIGHT_NORMAL;
+ bool underlined = false;
+
+ int size = (int) ([uifont 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( [uifont familyName] );
+ info->Init(size,wxFONTFAMILY_DEFAULT,fontstyle,fontweight,underlined,
+ fontname.AsString(), wxFONTENCODING_DEFAULT);
+
+ }
+ return uifont;
+}
+
+WX_UIFont wxFont::OSXCreateUIFont(const wxNativeFontInfo* info)
+{
+ UIFont* uiFont;
+ uiFont = [UIFont fontWithName:wxCFStringRef(info->m_faceName).AsNSString() size:info->m_pointSize];
+ wxMacCocoaRetain(uiFont);
+ return uiFont;
+}
+
+#endif
// ----------------------------------------------------------------------------
// NSImage Utils
// ----------------------------------------------------------------------------
+#if wxOSX_USE_COCOA
+
// From "Cocoa Drawing Guide:Working with Images"
WX_NSImage wxOSXCreateNSImageFromCGImage( CGImageRef image )
{
case wxCURSOR_HAND:
cursor = [[NSCursor pointingHandCursor] retain];
break;
-
+
case wxCURSOR_BULLSEYE:
cursor = wxGetStockCursor(kwxCursorBullseye);
break;
cursor = wxGetStockCursor(kwxCursorRoller);
break;
+ case wxCURSOR_OPEN_HAND:
+ cursor = [[NSCursor openHandCursor] retain];
+ break;
+
+ case wxCURSOR_CLOSED_HAND:
+ cursor = [[NSCursor closedHandCursor] retain];
+ break;
+
case wxCURSOR_CHAR:
case wxCURSOR_ARROW:
case wxCURSOR_LEFT_BUTTON: