diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llwindow/llwindowmacosx-objc.mm |
Print done when done.
Diffstat (limited to 'indra/llwindow/llwindowmacosx-objc.mm')
-rw-r--r-- | indra/llwindow/llwindowmacosx-objc.mm | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm new file mode 100644 index 0000000000..82d2babab5 --- /dev/null +++ b/indra/llwindow/llwindowmacosx-objc.mm @@ -0,0 +1,87 @@ +/** + * @file llwindowmacosx-objc.mm + * @brief Definition of functions shared between llwindowmacosx.cpp + * and llwindowmacosx-objc.mm. + * + * Copyright (c) 2006-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include <AppKit/AppKit.h> + +/* + * These functions are broken out into a separate file because the + * objective-C typedef for 'BOOL' conflicts with the one in + * llcommon/stdtypes.h. This makes it impossible to use the standard + * linden headers with any objective-C++ source. + */ + +#include "llwindowmacosx-objc.h" + +void setupCocoa() +{ + static bool inited = false; + + if(!inited) + { + // This is a bit of voodoo taken from the Apple sample code "CarbonCocoa_PictureCursor": + // http://developer.apple.com/samplecode/CarbonCocoa_PictureCursor/index.html + + // Needed for Carbon based applications which call into Cocoa + NSApplicationLoad(); + + // 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]; + } +} + +CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + // extra retain on the NSCursor since we want it to live for the lifetime of the app. + NSCursor *cursor = + [[[NSCursor alloc] + initWithImage: + [[[NSImage alloc] initWithContentsOfFile: + [NSString stringWithFormat:@"%s", fullpath] + ]autorelease] + hotSpot:NSMakePoint(hotspotX, hotspotY) + ]retain]; + + [pool release]; + + return (CursorRef)cursor; +} + +// This is currently unused, since we want all our cursors to persist for the life of the app, but I've included it for completeness. +OSErr releaseImageCursor(CursorRef ref) +{ + if( ref != NULL ) + { + NSCursor *cursor = (NSCursor*)ref; + [cursor release]; + } + else + { + return paramErr; + } + + return noErr; +} + +OSErr setImageCursor(CursorRef ref) +{ + if( ref != NULL ) + { + NSCursor *cursor = (NSCursor*)ref; + [cursor set]; + } + else + { + return paramErr; + } + + return noErr; +} + |