ftp.nice.ch/pub/next/graphics/movie/Movie.2.51.1.s.tar.gz#/Movie/MovieView.h

This is MovieView.h in view mode; [Download] [Up]

#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

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.