home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <libc.h>
- #include <math.h>
- #include <sys/file.h> /* access() */
- #include <string.h> /* strfoo() */
- #include <sys/dir.h> /* getdirentries */
- #include <sys/stat.h>
- #include <sys/file.h>
-
- #import <objc/List.h>
- #import <appkit/Application.h> /* NX_BASETHRESHOLD */
- #import <appkit/View.h>
- #import <appkit/Pasteboard.h>
- #import <appkit/NXBitmapImageRep.h>
- #import <appkit/NXImage.h>
- #import <appkit/nextstd.h>
- #import <dpsclient/wraps.h>
- #import <appkit/Slider.h>
- #import <appkit/Button.h>
- #import <appkit/Matrix.h>
- #import <appkit/Text.h>
- #import <appkit/Panel.h>
- #import <appkit/OpenPanel.h>
- #import <appkit/SavePanel.h>
- #import <defaults/defaults.h>
- #import <streams/streams.h>
-
-
- #import "Animator.h"
-
- typedef enum { REVERSE = -1, STOPPED = 0, FORWARD = 1, LOADING = 2 } runState;
- typedef enum { LOOP = 0, BOUNCE=1, ONCE=2} runMode;
- typedef enum { D_DEF=0, D_2=1, D_8=2, D_12=3, D_24=4} depthMode;
-
- #define VERSION __DATE__
-
- #define REVSTEP 0
- #define REV 1
- #define STOP 2
- #define FWD 3
- #define FWDSTEP 4
-
- typedef struct _mpeg_info
- {
- // window settings
- int colorSpace,
- zoom,
- backing;
- BOOL sync,
- drop;
- float fps;
- // stream attributes
- unsigned int h_size;
- unsigned int v_size;
- unsigned char aspect_ratio; // Code for aspect ratio.
- unsigned char picture_rate; // Code for picture rate.
- unsigned long bit_rate; // Bit rate.
- unsigned int vbv_buffer_size; // Minimum buffer size.
- BOOL const_param_flag; // Contrained parameter flag.
- // measured statistics
- int totalFrames,
- frameCount;
- double elapsedTime;
- } mpegInfo;
-
- /* a single frame of the movie */
- typedef struct {
- NXBitmapImageRep *original;
- NXImage *image;
- } movieFrameStruct;
-
- @interface MovieView : View
- {
- char moviePath[MAXPATHLEN];
- movieFrameStruct *movieFrame;
- int numFrames;
- int currentFrameIndex;
- int frameCount;
- NXSize maxSize; /* size of biggest frame (for restore: method) */
- float frameRate;
-
- runState state; /* fwd, back, stopped */
- runMode mode; /* once, loop, bounce */
- depthMode dmode; /* depth on-screen */
- BOOL updateControls, showFrameNumber;
- BOOL noOriginals, fromStream;
-
- id panel; /* control panel */
-
- id fpsSlider; /* things in the control panel */
- id fNumSlider;
- id fpsText;
- id actualFpsText;
- id nFramesText;
- id fNumText;
- id modeButtons;
- id stateButtons;
- id depthButtons;
- id statusText;
- double oldt;
-
- BOOL pingDuringDisplay;
- Animator *anim;
- }
-
- - initFrame:(const NXRect *) frameRect;
- - drawSelf:(const NXRect *) rects :(int)count;
-
- - makeWindow;
- - makePanel:(char *)filename;
- - setFps:(float)fps;
- - setNoOriginals;
-
- - (BOOL)open:sender;
- - (BOOL)play:sender;
- - (BOOL)openFile:(char *)filename;
- - (List *)openAnimDirectory:(char *)filenameRoot;
- - openMPEGfile:(char *)filename;
-
- - addBitmap:bm;
- - allocateFrames:(List *)frames;
-
- - superviewSizeChanged:(NXSize *)old;
- - renderFrames;
- - recache;
-
- - save:sender;
- - (BOOL) panelValidateFilenames:sender; // SavePanel's delegate
-
- - freeCaches;
- - freeOriginals;
- - free;
- - copy:sender;
- - fwd:sender;
- - rev:sender;
- - move:sender;
- - stop:sender;
- - fwdStep:sender;
- - revStep:sender;
- - step:(int) direction;
- - reSize:(NXSize *)s;
- - expand2x:sender;
- - reduce50pct:sender;
- - restore:sender;
- - modeButtonsChanged:sender;
- - fNumSliderChanged:sender;
- - fpsSliderChanged:sender;
- - pingButtonChanged:sender;
- - selectStateButton:(runState)b;
- - depthButtonsChanged:sender;
- - updateCheckBoxChanged:sender;
- - frameCheckBoxChanged:sender;
-
- // Window's delegate
- - windowWillClose:sender;
- - windowDidMiniaturize:sender;
- - windowDidDeminiaturize:sender;
-
- @end
-