home *** CD-ROM | disk | FTP | other *** search
/ Altsys Virtuoso 2.0K / virtuoso_20k.iso / DemoApps / Graphics / Multimedia / Movie / Source / MovieView.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-26  |  2.7 KB  |  125 lines

  1. #include <stdio.h>
  2. #include <libc.h>
  3. #include <math.h>
  4. #include <sys/file.h> /* access() */
  5. #include <string.h> /* strfoo() */
  6. #include <sys/dir.h> /* getdirentries */
  7. #include <sys/stat.h>
  8. #include <sys/file.h>
  9.  
  10. #import <objc/List.h>
  11. #import <appkit/Application.h>   /* NX_BASETHRESHOLD */
  12. #import <appkit/View.h>
  13. #import <appkit/Pasteboard.h>
  14. #import <appkit/NXBitmapImageRep.h>
  15. #import <appkit/NXImage.h>
  16. #import <appkit/nextstd.h>
  17. #import <dpsclient/wraps.h>
  18. #import <appkit/Slider.h>
  19. #import <appkit/Button.h>
  20. #import <appkit/Matrix.h>
  21. #import <appkit/Text.h>
  22. #import <appkit/Panel.h>
  23. #import <appkit/OpenPanel.h>
  24. #import <appkit/SavePanel.h>
  25. #import <defaults/defaults.h>
  26. #import <streams/streams.h>
  27.  
  28.  
  29. #import "Animator.h"
  30.  
  31. typedef enum { REVERSE = -1, STOPPED = 0, FORWARD = 1, } runState;
  32. typedef enum { LOOP = 0, BOUNCE=1, ONCE=2} runMode;
  33. typedef enum { D_DEF=0, D_2=1, D_8=2, D_12=3, D_24=4} depthMode;
  34.  
  35. #define VERSION __DATE__
  36.  
  37. #define REVSTEP 0
  38. #define REV 1
  39. #define STOP 2
  40. #define FWD 3
  41. #define FWDSTEP 4
  42.  
  43. /* a single frame of the movie */
  44. typedef struct {
  45.   NXBitmapImageRep *original;
  46.   NXImage *image;
  47.   } movieFrameStruct;
  48.  
  49. @interface MovieView : View
  50. {
  51.   char moviePath[MAXPATHLEN];
  52.   movieFrameStruct *movieFrame;
  53.   int numFrames;
  54.   int currentFrameIndex;
  55.   NXCoord maxw,maxh; /* size of biggest frame (for restore: method) */
  56.  
  57.   runState state; /* fwd, back, stopped */
  58.   runMode mode; /* once, loop, bounce */
  59.   depthMode dmode; /* depth on-screen */
  60.   BOOL updateControls;
  61.  
  62.   id panel; /* control panel */
  63.  
  64.   id fpsSlider;  /* things in the control panel */
  65.   id fNumSlider;
  66.   id fpsText;
  67.   id actualFpsText;
  68.   id nFramesText;
  69.   id fNumText;
  70.   id modeButtons;
  71.   id stateButtons;
  72.   id depthButtons;
  73.   id statusText;
  74.   double oldt;
  75.  
  76.   BOOL pingDuringDisplay;
  77.   Animator *anim;
  78. }
  79.  
  80. - initFrame:(const NXRect *) frameRect;
  81. - drawSelf:(const NXRect *) rects :(int)count;
  82.  
  83. - (BOOL)open:sender;
  84. - (BOOL)openFile:(char *)filename;
  85. - setUpWindowStuff:(char *)filename;
  86. - (List *)openAnimDirectory:(char *)filenameRoot;
  87.  
  88. - allocateFrames:(List *)frames;
  89.  
  90. - superviewSizeChanged:(NXSize *)old;
  91. - renderFrames;
  92. - recache;
  93.  
  94. - save:sender;
  95. - (BOOL) panelValidateFilenames:sender; // SavePanel's delegate
  96.  
  97. - freeCaches;
  98. - freeOriginals;
  99. - free;
  100. - copy:sender;
  101. - fwd:sender;
  102. - rev:sender;
  103. - move:sender;
  104. - stop:sender;
  105. - fwdStep:sender;
  106. - revStep:sender;
  107. - step:(int) direction;
  108. - expand2x:sender;
  109. - reduce50pct:sender;
  110. - restore:sender;
  111. - modeButtonsChanged:sender;
  112. - fNumSliderChanged:sender;
  113. - fpsSliderChanged:sender;
  114. - pingButtonChanged:sender;
  115. - selectStateButton:(runState)b;
  116. - depthButtonsChanged:sender;
  117. - updateCheckBoxChanged:sender;
  118.  
  119. // Window's delegate
  120. - windowWillClose:sender;
  121. - windowDidMiniaturize:sender;
  122. - windowDidDeminiaturize:sender;
  123.  
  124. @end
  125.