This is Animator.m in view mode; [Download] [Up]
//***************************************************************************** // // Animator.m // // Controls app Icon animation // // by Felipe A. Rodriguez // // This code is supplied "as is" the author makes no warranty as to its // suitability for any purpose. This code is free and may be distributed // in accordance with the terms of the: // // GNU GENERAL PUBLIC LICENSE // Version 2, June 1991 // copyright (C) 1989, 1991 Free Software Foundation, Inc. // 675 Mass Ave, Cambridge, MA 02139, USA // //***************************************************************************** #import <appkit/appkit.h> #import "Animator.h" #import "IconView.h" @interface Animator (Private) static void Animate(); // called by timed entry events static DPSTimedEntry aniTimeTag; @end @implementation Animator //***************************************************************************** // // standard init // //***************************************************************************** - init { NXRect appIconFrame; NXRect lineViewRect; id appIcon; [super init]; // setup appIcon for animation appIcon = [NXApp appIcon]; // get appIcon window [appIcon getFrame:&appIconFrame]; // get frame rect [Window getContentRect:&lineViewRect // get content view rect appIco forFrameRect:&appIconFrame style:[appIcon style]]; NX_X(&lineViewRect) = 1; // reduce the size and width/ht NX_Y(&lineViewRect) = 1; // by a border of 1 NX_WIDTH(&lineViewRect) -= 1 ; NX_HEIGHT(&lineViewRect) -= 1; theIconView = [[IconView alloc] initFrame:&lineViewRect]; [[appIcon contentView] addSubview:theIconView]; imageList = [[List alloc] init]; // produce an image objects array [imageList insertObject: [NXImage findImageNamed: "g20"] at: 0]; // open [imageList insertObject: [NXImage findImageNamed: "g21"] at: 1]; [imageList insertObject: [NXImage findImageNamed: "g22"] at: 2]; [imageList insertObject: [NXImage findImageNamed: "g23"] at: 3]; [imageList insertObject: [NXImage findImageNamed: "g24"] at: 4]; // clos [imageList insertObject: [NXImage findImageNamed: "g10"] at: 5]; // dial [imageList insertObject: [NXImage findImageNamed: "g11"] at: 6]; [imageList insertObject: [NXImage findImageNamed: "g12"] at: 7]; [imageList insertObject: [NXImage findImageNamed: "g13"] at: 8]; // dial [imageList insertObject: [NXImage findImageNamed: "GateKeeper"] at: 9]; index = 9; return self; } //***************************************************************************** // // setup to do open gate anim // //***************************************************************************** - startAnimTimer { if(!aniTimeTag) aniTimeTag = DPSAddTimedEntry( // register function Animate 0.2, // to be called every period of (DPSTimedEntryProc)Animate, // arg0 (id)self, NX_BASETHRESHOLD); return self; } //***************************************************************************** // // icon animation // //***************************************************************************** - _animate { if(standBy) // app running but not dialing { index--; if(index < 0) // anim seq completed { [self removeTimedEntry]; standBy = NO; index = 9; } } if(dialing) // app dialing but not pppup { index++; if(index > 8) index = 5; } [theIconView setImage:[imageList objectAt:index]]; return self; } //***************************************************************************** // // animate should stop icon sequence // //***************************************************************************** - pppup { [self removeTimedEntry]; index = 4; dialing = NO; standBy = NO; return self; } //***************************************************************************** // // animate should do open gate icon sequence // //***************************************************************************** - dialing { standBy = NO; reverse = NO; if(!dialing) { index = 0; dialing = YES; [self startAnimTimer]; // cycle thru animation } return self; } //***************************************************************************** // // animate should do open standby icon seq // //***************************************************************************** - standBy { dialing = NO; if(!standBy && index != 9) { standBy = YES; [self startAnimTimer]; // cycle thru animation } return self; } //***************************************************************************** // // remove the timed entry when connection is made or we exit // //***************************************************************************** - removeTimedEntry { if (aniTimeTag) DPSRemoveTimedEntry (aniTimeTag); aniTimeTag = 0; return self; } //***************************************************************************** // // return the app icon view // //***************************************************************************** - iconView { return theIconView; } //***************************************************************************** // // free gets rid of everything we created // //***************************************************************************** - free { if(imageList) [imageList free]; return [super free]; } @end @implementation Animator (Private) //***************************************************************************** // // This fucntion is registered by DPSaddtimedentry. // It is subsequently called every period t as registered // in arg 0 of DPSaddtimedentry. // //***************************************************************************** static void Animate(DPSTimedEntry time_tag, double now, id self) { [self _animate]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.