home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / Examples / InfoWow-0.00-MIHS / src / WowView.m < prev   
Encoding:
Text File  |  1993-12-07  |  2.7 KB  |  103 lines

  1.  
  2. #import "WowView.h"
  3.  
  4. @implementation WowView
  5.  
  6. - initFrame:(const NXRect *)frm // initialize instance
  7. {
  8.     [super initFrame:frm];
  9.     // load the fading and scrolling images that we will use.
  10.     welcomeImage = [NXImage findImageNamed:"Fade2.tiff"];
  11.     creditsImage = [NXImage findImageNamed:"Fade1.tiff"];
  12.     scrollImage = [NXImage findImageNamed:"ScrollingImage.tiff"];
  13.     // start at the beginning.
  14.     state = FADE_IN_WELCOME; frameNumber = 0;
  15.     return self;
  16. }
  17.  
  18. - start:sender
  19. { // make sure we start out from the beginning of the sequence...
  20.     state = FADE_IN_WELCOME; frameNumber = 0;
  21.     return [super start:sender];
  22. }
  23.  
  24. static framesInState[NUMSTATES] = { WELCOME_FRAMES, HOLD_FRAMES,
  25.     SCROLL_FRAMES, HOLD_FRAMES, CREDIT_FRAMES, HOLD_FRAMES, CREDIT_FRAMES };
  26. static nextState[NUMSTATES] = { WELCOME_HOLD, SCROLLING, SCROLL_HOLD, FADE_TO_CREDIT, CREDITS_HOLD, FADE_TO_GRAY, FADE_IN_WELCOME };
  27.  
  28. - autoUpdate:sender
  29. {
  30.     frameNumber++;
  31.     if (state == SCROLLING) frameNumber += SCROLL_JUMP;
  32.     if (frameNumber > framesInState[state]) {
  33.         state = nextState[state];
  34.         frameNumber = 0;
  35.     }
  36.     [window disableFlushWindow];
  37.     [self update];
  38.     [window display];
  39.     [window reenableFlushWindow];
  40.     [window flushWindow];
  41.     NXPing();    // sync up with the window server.
  42.     return self;
  43. }
  44.  
  45. - drawSelf:(NXRect *)rects :(int)rectCount    // redraws the screen.
  46. {
  47.     switch (state) {
  48.         case FADE_IN_WELCOME : {
  49.             PSsetgray(0.666);
  50.             NXRectFill(&bounds);
  51.             [welcomeImage dissolve:((float)frameNumber/(float)WELCOME_FRAMES)
  52.                     toPoint:&(bounds.origin)];
  53.             break;
  54.         }
  55.         case SCROLLING : {
  56.             NXRect scrollRect =
  57.                     {{ 0.0, 650 - frameNumber }, { 354, MIN(frameNumber, 130) }};
  58.             if (frameNumber < 130)
  59.                 [welcomeImage composite:NX_COPY toPoint:&(bounds.origin)];
  60.             [scrollImage composite:NX_COPY fromRect:&scrollRect
  61.                     toPoint:&(bounds.origin)];
  62.             break;
  63.         }
  64.         case FADE_TO_CREDIT : {
  65.             NXRect scrollRect = {{ 0.0, 0.0 }, { 354, 130 }};
  66.             [scrollImage composite:NX_COPY fromRect:&scrollRect
  67.                     toPoint:&(bounds.origin)];
  68.             [creditsImage dissolve:((float)frameNumber/(float)CREDIT_FRAMES)
  69.                     toPoint:&(bounds.origin)];
  70.             break;
  71.         }
  72.         case FADE_TO_GRAY : {
  73.             PSsetgray(0.666);
  74.             NXRectFill(&bounds);
  75.             [creditsImage dissolve:(1.0-((float)frameNumber/(float)CREDIT_FRAMES))
  76.                     toPoint:&(bounds.origin)];
  77.             break;
  78.         }
  79.         case CREDITS_HOLD : {
  80.             [creditsImage composite:NX_COPY toPoint:&(bounds.origin)];
  81.             break;
  82.         }
  83.         case WELCOME_HOLD : {
  84.             [welcomeImage composite:NX_COPY toPoint:&(bounds.origin)];
  85.             break;
  86.         }
  87.         case SCROLL_HOLD : {
  88.             NXRect scrollRect = {{ 0.0, 0.0 }, { 354, 130 }};
  89.             [scrollImage composite:NX_COPY fromRect:&scrollRect
  90.                     toPoint:&(bounds.origin)];
  91.             break;
  92.         }
  93.         default : {
  94.             PSsetgray(0.666);
  95.             NXRectFill(&bounds);
  96.             break;
  97.         }
  98.     }
  99.     return self;
  100. }
  101.  
  102. @end
  103.