ftp.nice.ch/pub/next/developer/languages/c/gcc.2.7.2.2.I.b.tar.gz#/lib/gcc-lib/m68k-next-nextstep3/2.7.2.2.f.2/include/3Dkit/N3DCamera.h

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

/*
    Copyright (c) 1991, 1992 by NeXT Computer, Inc as an unpublished work.
    All rights reserved.

*/

#import "N3DShape.h"
#import "next3d.h"
#import <appkit/View.h>
#import <appkit/color.h>
#import <objc/List.h>
#import <ri/ri.h>

@interface N3DCamera : View
{
    unsigned int	globalWindowNum; /* the server global window number */
    RtToken		windowResource;  /* the resource ID of our window */
    N3DProjectionType	projectionType;	 /* perpective or orthographic */
    RtToken		contextToken;	 /* the RMan name for the context */
    id			worldShape;	 /* top of shape hierarchy */
    List		*lightList;	 /* list of global N3DLights */
    id			delegate;	 /* get called when frames are done */
    NXColor		backgroundColor; /* color of rectangle under RIB */
    N3DHider		hider;

    struct _cameraFlags {
	unsigned int degenerate : 1;  /* view is 0 width or height */
	unsigned int windowChanged : 1;	 /* the window changed */
	unsigned int needsWindow : 1;
	unsigned int basisChanged : 1;	/* basis changed w.r.t. world coords */
	unsigned int canRender : 1;  /* rendering legal */
	unsigned int usePreTM : 1;  /* pre-multiply the ct */
	unsigned int doFlush : 1;  /* Flush at FrameEnd? */
	unsigned int inWorldBlock : 1; /* inside a World{Begin,End} block ? */
	unsigned int drawBackground : 1; /* draw bkgnd each drawSelf? */
	
	/* private flags */
	unsigned int _computeAspect : 1; /* user-supplied aspect? */
	unsigned int _computeSWindow : 1; /* user-supplied aspect? */
	unsigned int _reserved : 21;
    } cameraFlags;

    struct _projectionRectangle {
	float l, r, t, b;
    } projectionRectangle;
    
    RtPoint		eyePoint, viewPoint;  /* view vector */
    float		rollAngle;  /* neg. rot. about uBasis */
    float		fov;
    float		pixelAspectRatio;
    float		nearPlane, farPlane;
    RtPoint		sBasis, tBasis, uBasis;  /* basis w.r.t. world space */
    
    RtMatrix		preTransform;	/* pre-multiply the camera matrix by
				    this matrix, if desired (cache for
				    above object) */
    RtMatrix		transform; /* world-to-eye transformation:
				    ct = Te . R, Te translates eye
				    point to origin, R rotates view
				    vector, V = view - eye, such
				    that it is parallel with the
				    z-axis, and rotates the resulting
				    vector about the z-axis by
				    -rollAngle. */

    char 		*_printribfile;  /* rib file generated during printing*/
    id			_contextManager; /* context manager for the app*/
    List		*_selList;
    void		*_N3Dprivate;
}

- init;
- initFrame:(const NXRect *)fRect;
- free;

/* frame and view management methods */
- (BOOL)lockFocus;
- unlockFocus;
- setFlushRIB:(BOOL)flag;
- (BOOL)doesFlushRIB;
- flushRIB;

- drawPS:(NXRect *)rects :(int)nRects;
- drawSelf:(const NXRect *)rects :(int)nRects;
- render;
- renderSelf:(RtToken)context;
- worldBegin:(RtToken)context;
- worldEnd:(RtToken)context;
- copyRIBCode:(NXStream *)stream;
- setBackgroundColor:(NXColor)c;
- (NXColor)backgroundColor;
- setDrawBackgroundColor:(BOOL)flag;
- (BOOL)doesDrawBackgroundColor;
- setFrame:(const NXRect *)fRect;
- moveTo:(NXCoord)x :(NXCoord)y;
- moveBy:(NXCoord)deltaX :(NXCoord)deltaY;
- sizeTo:(NXCoord)width :(NXCoord)height;
- sizeBy:(NXCoord)deltaWidth :(NXCoord)deltaHeight;
- rotateTo:(NXCoord)angle;
- rotateBy:(NXCoord)deltaAngle;
- setWorldShape:a3DObject;
- worldShape;
- addLight:aLight;
- removeLight:aLight;
- lightList;
- setHider:(N3DHider)hider;
- (N3DHider)hider;
- setSurfaceTypeForAll:(N3DSurfaceType)surfaceType chooseHider:(BOOL)flag;

/* Picking */
- selectShapesIn:(const NXRect *)selectionRect;

/* eye vector and viewing frustum manipulation methods */
- setProjectionRectangle:(float)l :(float)r :(float)t :(float)b;
- getProjectionRectangle:(float *)lp :(float *)rp :(float *)tp :(float *)bp;
- setProjection:(N3DProjectionType)aProjectionType;
- (N3DProjectionType)projectionType;
- setPreTransformMatrix:(RtMatrix)newPreTM;
- getPreTransformMatrix:(RtMatrix)preTM;
- setUsePreTransformMatrix:(BOOL)flag;
- (BOOL)usesPreTransformMatrix;
- setEyeAt:(RtPoint)fromPoint toward:(RtPoint)toPoint roll:(float)aRollAngle;
- getEyeAt:(RtPoint *)anEyePoint toward:(RtPoint *)aViewPoint
		roll:(float *)aRollAngle;
- setClipPlanesNear:(float)aNearPlane far:(float)aFarPlane;
- getClipPlanesNear:(float *)aNearPlane far:(float *)aFarPlane;
- setFieldOfViewByAngle:(float)aFieldOfView;
- setFieldOfViewByFocalLength:(float)aFocalLength;
- (float)fieldOfView;
- setPixelAspectRatio:(float)pixAspect;
- (float)pixelAspectRatio;

- convertPoints:(NXPoint *)mcoords count:(int)npts toWorld:(RtPoint *)wcoords;
- convertPoints:(RtPoint *)points count:(int)n fromSpace:aShape;
	 
- moveEyeBy:(float)ds :(float)dt :(float)du;
- rotateEyeBy:(float)dElev :(float)dAzim about:(RtPoint)pivotPtr;

- (int)numCropWindows;
- cropInRects:(NXRect *)rects nRects:(int)n;
- (int)frameNumber;
- (BOOL)canPrintRIB;

- awake;
- read:(NXTypedStream *)stream;
- write:(NXTypedStream *)stream;

- (int)renderAsTIFF;
- (int)renderAsEPS;
- setDelegate:sender;
- delegate;
@end


@interface Object(N3DCameraDelegate)
- camera:sender didRenderStream:(NXStream *)s tag:(int)atag frameNumber:(int)n;
@end

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