use static variables and class methods for resource loading. b=358165 r=hwaara

This commit is contained in:
joshmoz%gmail.com 2006-10-26 12:26:52 +00:00
Родитель 457a7bb799
Коммит 971ab33afc
1 изменённых файлов: 25 добавлений и 22 удалений

Просмотреть файл

@ -165,8 +165,6 @@
@interface nsResourceCursor : nsMacCursor @interface nsResourceCursor : nsMacCursor
{ {
@private @private
short mRefNum;
short mSaveResFile;
int mFirstFrame; int mFirstFrame;
int mLastFrame; int mLastFrame;
} }
@ -382,20 +380,14 @@
@end @end
@implementation nsResourceCursor @implementation nsResourceCursor
-(id) initWithFirstFrame: (int) aFirstFrame lastFrame: (int) aLastFrame
{ static short sRefNum = kResFileNotOpened;
self= [super init]; static short sSaveResFile = 0;
//Appearance Manager cursors all fall into the range 0..127. Custom application CURS resources begin at id 128.
NS_ASSERTION(aFirstFrame >= 128 && aLastFrame >= 128 && aLastFrame >= aFirstFrame, "Nonsensical frame indicies");
mFirstFrame = aFirstFrame;
mLastFrame = aLastFrame;
return self;
}
// this could be simplified if it was rewritten using Cocoa // this could be simplified if it was rewritten using Cocoa
-(void)openLocalResourceFile +(void)openLocalResourceFile
{ {
if (mRefNum == kResFileNotOpened) { if (sRefNum == kResFileNotOpened) {
CFBundleRef appBundle = ::CFBundleGetMainBundle(); CFBundleRef appBundle = ::CFBundleGetMainBundle();
if (appBundle) { if (appBundle) {
CFURLRef executable = ::CFBundleCopyExecutableURL(appBundle); CFURLRef executable = ::CFBundleCopyExecutableURL(appBundle);
@ -407,7 +399,7 @@
if (resourceFile) { if (resourceFile) {
FSRef resourceRef; FSRef resourceRef;
if (::CFURLGetFSRef(resourceFile, &resourceRef)) if (::CFURLGetFSRef(resourceFile, &resourceRef))
::FSOpenResourceFile(&resourceRef, 0, NULL, fsRdPerm, &mRefNum); ::FSOpenResourceFile(&resourceRef, 0, NULL, fsRdPerm, &sRefNum);
::CFRelease(resourceFile); ::CFRelease(resourceFile);
} }
::CFRelease(binDir); ::CFRelease(binDir);
@ -417,31 +409,42 @@
} }
} }
if (mRefNum == kResFileNotOpened) if (sRefNum == kResFileNotOpened)
return; return;
mSaveResFile = ::CurResFile(); sSaveResFile = ::CurResFile();
::UseResFile(mRefNum); ::UseResFile(sRefNum);
} }
-(void)closeLocalResourceFile +(void)closeLocalResourceFile
{ {
if (mRefNum == kResFileNotOpened) if (sRefNum == kResFileNotOpened)
return; return;
::UseResFile(mSaveResFile); ::UseResFile(sSaveResFile);
}
-(id) initWithFirstFrame: (int) aFirstFrame lastFrame: (int) aLastFrame
{
if ((self = [super init])) {
//Appearance Manager cursors all fall into the range 0..127. Custom application CURS resources begin at id 128.
NS_ASSERTION(aFirstFrame >= 128 && aLastFrame >= 128 && aLastFrame >= aFirstFrame, "Nonsensical frame indicies");
mFirstFrame = aFirstFrame;
mLastFrame = aLastFrame;
}
return self;
} }
- (void) setFrame: (int) aFrameIndex - (void) setFrame: (int) aFrameIndex
{ {
[self openLocalResourceFile]; [nsResourceCursor openLocalResourceFile];
CursHandle cursHandle = ::GetCursor(mFirstFrame + aFrameIndex); CursHandle cursHandle = ::GetCursor(mFirstFrame + aFrameIndex);
NS_ASSERTION(cursHandle, "Can't load cursor, is the resource file installed correctly?"); NS_ASSERTION(cursHandle, "Can't load cursor, is the resource file installed correctly?");
if (cursHandle) if (cursHandle)
{ {
::SetCursor(*cursHandle); ::SetCursor(*cursHandle);
} }
[self closeLocalResourceFile]; [nsResourceCursor closeLocalResourceFile];
} }
- (int) numFrames - (int) numFrames