]> git.saurik.com Git - wxWidgets.git/commitdiff
adding iphone code
authorStefan Csomor <csomor@advancedconcepts.ch>
Sun, 29 Mar 2009 20:48:05 +0000 (20:48 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sun, 29 Mar 2009 20:48:05 +0000 (20:48 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59924 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/font.h
src/osx/carbon/font.cpp
src/osx/carbon/graphics.cpp
src/osx/carbon/utilscocoa.mm

index 03352c01445b078f2648d5f18ed5bcddd752e9c6..158df31e4df6663dff57eddabcbedf2585f68d49 100644 (file)
@@ -161,7 +161,8 @@ public:
 
 #if wxOSX_USE_IPHONE
     WX_UIFont OSXGetUIFont() const;
-    static WX_NSFont OSXCreateUIFont(wxOSXSystemFont font, wxNativeFontInfo* info);
+    static WX_UIFont OSXCreateUIFont(wxOSXSystemFont font, wxNativeFontInfo* info);
+    static WX_UIFont OSXCreateUIFont(const wxNativeFontInfo* info);
 #endif
 
 protected:
index f9b5bc90d20d7379f8b71d2041a0f3c4b9e6ae5c..fac6a43dc5c4721acefe7491ba2dfcc0278057c9 100644 (file)
@@ -209,7 +209,7 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data)
     m_nsFont = (NSFont*) wxMacCocoaRetain(data.m_nsFont);
 #endif
 #if wxOSX_USE_IPHONE
-    m_uiFont = wxMacCocoaRetain(data.m_uiFont);
+    m_uiFont = (UIFont*) wxMacCocoaRetain(data.m_uiFont);
 #endif
     
 }
@@ -931,9 +931,6 @@ void wxNativeFontInfo::Init()
 #endif
 #if wxOSX_USE_COCOA
     m_nsFontDescriptor = NULL;
-#endif
-#if wxOSX_USE_IPHONE
-    m_uiFontDescriptor = NULL;
 #endif
     m_pointSize = 0;
     m_family = wxFONTFAMILY_DEFAULT;
@@ -1082,9 +1079,6 @@ void wxNativeFontInfo::Init(const wxNativeFontInfo& info)
 #endif
 #if wxOSX_USE_COCOA
     m_nsFontDescriptor = (NSFontDescriptor*) wxMacCocoaRetain(info.m_nsFontDescriptor);
-#endif
-#if wxOSX_USE_IPHONE
-    m_uiFontDescriptor = wxMacCocoaRetain(info.m_uiFontDescriptor);;
 #endif
     m_pointSize = info.m_pointSize;
     m_family = info.m_family;
@@ -1129,10 +1123,6 @@ void wxNativeFontInfo::Free()
 #if wxOSX_USE_COCOA
     wxMacCocoaRelease(m_nsFontDescriptor);
     m_nsFontDescriptor = NULL;
-#endif
-#if wxOSX_USE_IPHONE
-    wxMacCocoaRelease(m_uiFontDescriptor);
-    m_uiFontDescriptor = NULL
 #endif
     m_descriptorValid = false;
 }
index 4bf733644a174bf82cd05b81e2336a2009c1a206..4a1e139f31780e58e6a6be569e561b6f06b4d37c 100644 (file)
@@ -72,10 +72,12 @@ int UMAGetSystemVersion()
 #endif
 
 #if wxOSX_USE_COCOA_OR_IPHONE
-extern CGContextRef wxOSXGetContextFromCurrentNSContext() ;
+extern CGContextRef wxOSXGetContextFromCurrentContext() ;
+#if wxOSX_USE_COCOA
 extern bool wxOSXLockFocus( WXWidget view) ;
 extern void wxOSXUnlockFocus( WXWidget view) ;
 #endif
+#endif
 
 #if 1 // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
 
@@ -1519,12 +1521,14 @@ wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer
 #if wxOSX_USE_COCOA_OR_IPHONE
     m_view = window->GetHandle();
 
-    if ( !((wxWidgetCocoaImpl*) window->GetPeer())->IsFlipped() )
+#if wxOSX_USE_COCOA
+    if ( ! window->GetPeer()->IsFlipped() )
     {
         m_windowTransform = CGAffineTransformMakeTranslation( 0 , m_height );
         m_windowTransform = CGAffineTransformScale( m_windowTransform , 1 , -1 );
     }
     else
+#endif
     {
         m_windowTransform = CGAffineTransformIdentity;
     }
@@ -1594,10 +1598,10 @@ bool wxMacCoreGraphicsContext::EnsureIsValid()
         if (m_invisible)
             return false;
             
-#if wxOSX_USE_COCOA_OR_IPHONE
+#if wxOSX_USE_COCOA
         if ( wxOSXLockFocus(m_view) )
         {
-            m_cgContext = wxOSXGetContextFromCurrentNSContext();
+            m_cgContext = wxOSXGetContextFromCurrentContext();
             wxASSERT_MSG( m_cgContext != NULL, _T("Unable to retrieve drawing context from View"));
         }
         else
@@ -1605,6 +1609,13 @@ bool wxMacCoreGraphicsContext::EnsureIsValid()
             m_invisible = true;
         }
 #endif
+#if wxOSX_USE_IPHONE
+        m_cgContext = wxOSXGetContextFromCurrentContext();
+        if ( m_cgContext == NULL )
+        {
+            m_invisible = true;
+        }
+#endif
 #if wxOSX_USE_CARBON
         OSStatus status = QDBeginCGContext( GetWindowPort( m_windowRef ) , &m_cgContext );
         if ( status != noErr )
@@ -1617,6 +1628,7 @@ bool wxMacCoreGraphicsContext::EnsureIsValid()
             CGContextConcatCTM( m_cgContext, m_windowTransform );
             CGContextSaveGState( m_cgContext );
             m_contextSynthesized = true;
+#if wxOSX_USE_COCOA_OR_CARBON
             if ( m_clipRgn.get() )
             {
                 // the clip region is in device coordinates, so we convert this again to user coordinates
@@ -1635,6 +1647,7 @@ bool wxMacCoreGraphicsContext::EnsureIsValid()
                     CGContextClip( m_cgContext );
                 }
             }
+#endif
             CGContextSaveGState( m_cgContext );
             
 #if 0 // turn on for debugging of clientdc
@@ -2016,7 +2029,7 @@ void wxMacCoreGraphicsContext::SetNativeContext( CGContextRef cg )
 #if wxOSX_USE_CARBON
             QDEndCGContext( GetWindowPort( m_windowRef ) , &m_cgContext);
 #endif
-#if wxOSX_USE_COCOA_OR_IPHONE
+#if wxOSX_USE_COCOA
             wxOSXUnlockFocus(m_view);
 #endif
         }
index aa7468ef84d9416e29a0ab727e965f552fcc59b9..239a45f8d8a9807abb19f64c43e62e2747b6e3e7 100644 (file)
@@ -46,9 +46,9 @@ wxMacAutoreleasePool::~wxMacAutoreleasePool()
 
 #endif
 
-#if wxOSX_USE_COCOA_OR_IPHONE
+#if wxOSX_USE_COCOA
 
-CGContextRef wxOSXGetContextFromCurrentNSContext()
+CGContextRef wxOSXGetContextFromCurrentContext()
 {
     CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext]
                                           graphicsPort];
@@ -67,6 +67,16 @@ void wxOSXUnlockFocus( WXWidget view)
 
 #endif
 
+#if wxOSX_USE_IPHONE
+
+CGContextRef wxOSXGetContextFromCurrentContext()
+{
+    CGContextRef context = UIGraphicsGetCurrentContext();
+    return context;
+}
+
+#endif
+
 // ----------------------------------------------------------------------------
 // NSObject Utils
 // ----------------------------------------------------------------------------
@@ -111,15 +121,15 @@ WX_NSFont wxFont::OSXCreateNSFont(wxOSXSystemFont font, wxNativeFontInfo* info)
             nsfont = [NSFont boldSystemFontOfSize:[NSFont smallSystemFontSize]];
             break;
         case wxOSX_SYSTEM_FONT_MINI:
-            nsfont = [NSFont systemFontOfSize:[NSFont systemFontSize]];
+            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 systemFontSizeForControlSize:NSMiniControlSize]];
+            nsfont = [NSFont labelFontOfSize:[NSFont labelFontSize]];
             break;
        case wxOSX_SYSTEM_FONT_VIEWS:
             nsfont = [NSFont controlContentFontOfSize:0];
@@ -182,6 +192,69 @@ WX_NSFont wxFont::OSXCreateNSFont(const wxNativeFontInfo* info)
 
 #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
 // ----------------------------------------------------------------------------