return context;
}
-bool wxOSXLockFocus( WXWidget view)
+bool wxOSXLockFocus( WXWidget view)
{
return [view lockFocusIfCanDraw];
}
-void wxOSXUnlockFocus( WXWidget view)
+void wxOSXUnlockFocus( WXWidget view)
{
[view unlockFocus];
}
// ----------------------------------------------------------------------------
#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;
}
{
NSFontDescriptor* desc = nil;
NSFontSymbolicTraits traits = 0;
- float weight = 0;
+ float weight = 0;
if (m_weight == wxFONTWEIGHT_BOLD)
{
}
else if (m_weight == wxFONTWEIGHT_LIGHT)
weight = -1;
-
+
if (m_style == wxFONTSTYLE_ITALIC || m_style == wxFONTSTYLE_SLANT)
traits |= NSFontItalicTrait;
desc = [NSFontDescriptor fontDescriptorWithFontAttributes:
- [[NSDictionary alloc] initWithObjectsAndKeys:
- wxCFStringRef(m_faceName).AsNSString(), NSFontFamilyAttribute,
- [NSNumber numberWithFloat:m_pointSize], NSFontSizeAttribute,
- [NSNumber numberWithUnsignedInt:traits], NSFontSymbolicTrait,
+ [NSDictionary dictionaryWithObjectsAndKeys:
+ wxCFStringRef(m_faceName).AsNSString(), NSFontFamilyAttribute,
+ [NSNumber numberWithFloat:m_pointSize], NSFontSizeAttribute,
+ [NSNumber numberWithUnsignedInt:traits], NSFontSymbolicTrait,
[NSNumber numberWithFloat:weight],NSFontWeightTrait,
nil]];
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
if ( traits & NSFontItalicTrait )
fontstyle = wxFONTSTYLE_ITALIC ;
*/
- wxCFStringRef fontname( [uifont familyName] );
+ wxCFStringRef fontname( wxCFRetain([uifont familyName]) );
info->Init(size,wxFONTFAMILY_DEFAULT,fontstyle,fontweight,underlined,
fontname.AsString(), wxFONTENCODING_DEFAULT);
-
+
}
return uifont;
}
// NSImage Utils
// ----------------------------------------------------------------------------
+#if wxOSX_USE_IPHONE
+
+WX_UIImage wxOSXCreateUIImageFromCGImage( CGImageRef image )
+{
+ UIImage *newImage = [UIImage imageWithCGImage:image];
+ [newImage autorelease];
+ return( newImage );
+}
+
+#endif
+
#if wxOSX_USE_COCOA
// From "Cocoa Drawing Guide:Working with Images"
WX_NSImage wxOSXCreateNSImageFromCGImage( CGImageRef image )
{
NSRect imageRect = NSMakeRect(0.0, 0.0, 0.0, 0.0);
-
+
// Get the image dimensions.
imageRect.size.height = CGImageGetHeight(image);
imageRect.size.width = CGImageGetWidth(image);
-
+
// Create a new image to receive the Quartz image data.
- NSImage *newImage = [[NSImage alloc] initWithSize:imageRect.size];
+ NSImage *newImage = [[NSImage alloc] initWithSize:imageRect.size];
[newImage lockFocus];
-
+
// Get the Quartz context and draw.
CGContextRef imageContext = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort];
CGContextDrawImage( imageContext, *(CGRect*)&imageRect, image );
[newImage unlockFocus];
-
+
/*
// Create a bitmap rep from the image...
NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:cgImage];
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
// ----------------------------------------------------------------------------
case wxCURSOR_HAND:
cursor = [[NSCursor pointingHandCursor] retain];
break;
-
+
case wxCURSOR_BULLSEYE:
cursor = wxGetStockCursor(kwxCursorBullseye);
break;
WX_NSCursor wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef, float hotSpotX, float hotSpotY )
{
static BOOL firstTime = YES;
-
+
if ( firstTime )
{
// Must first call [[[NSWindow alloc] init] release] to get the NSWindow machinery set up so that NSCursor can use a window to cache the cursor image
[[[NSWindow alloc] init] release];
firstTime = NO;
}
-
+
NSImage *nsImage = wxOSXCreateNSImageFromCGImage( cgImageRef );
NSCursor *cursor = [[NSCursor alloc] initWithImage:nsImage hotSpot:NSMakePoint( hotSpotX, hotSpotY )];
-
+
[nsImage release];
-
+
return cursor;
}