/*
 * ri.h - header file for RenderMan Interface
 *
 * The RenderMan (R) Interface Procedures and RIB Protocol are:
 *      Copyright 1988, 1989, Pixar.  All rights reserved.
 * RenderMan (R) is a registered trademark of Pixar.
 */

#ifndef RI_H
#define RI_H 1

#ifdef WIN32
#define PUBLIC __declspec( dllimport )
#else
#define PUBLIC
#endif

#ifdef __cplusplus
extern "C" {
#endif

#define RtVoid  void
typedef short   RtBoolean;
typedef int     RtInt;
typedef float   RtFloat;
typedef char   *RtToken;
typedef char   *RtString;
typedef void   *RtPointer;

typedef RtFloat RtColor[3];
typedef RtFloat RtPoint[3];
typedef RtFloat RtVector[3];
typedef RtFloat RtNormal[3];
typedef RtFloat RtHpoint[4];
typedef RtFloat RtMatrix[4][4];
typedef RtFloat RtBasis[4][4];
typedef RtFloat RtBound[6];

typedef RtFloat (*RtFilterFunc)(RtFloat, RtFloat, RtFloat, RtFloat);
typedef void  (*RtErrorHandler)(RtInt code, RtInt severity, char *msg);
typedef void  (*RtProcSubdivFunc)(RtPointer data, RtFloat deta);
typedef void  (*RtProcFreeFunc)(RtPointer data);
typedef void  (*RtArchiveCallback)(RtToken, char *, ...);
typedef void  (*RtFunc)();

typedef RtPointer RtObjectHandle;
typedef RtPointer RtLightHandle;
typedef RtPointer RtContextHandle;

#define RI_FALSE    0
#define RI_TRUE     1
#define RI_INFINITY (RtFloat)1.0e38
#define RI_EPSILON  (RtFloat)1.0e-10

#ifndef NULL
#define NULL 0
#endif
#define RI_NULL NULL

extern PUBLIC RtToken  RI_FRAMEBUFFER, RI_FILE;
extern PUBLIC RtToken  RI_RGB, RI_RGBA, RI_RGBZ, RI_RGBAZ, RI_A, RI_Z, RI_AZ;
extern PUBLIC RtToken  RI_PERSPECTIVE, RI_ORTHOGRAPHIC;
extern PUBLIC RtToken  RI_HIDDEN, RI_PAINT;
extern PUBLIC RtToken  RI_CONSTANT, RI_SMOOTH;
extern PUBLIC RtToken  RI_FLATNESS, RI_FOV;

extern PUBLIC RtToken  RI_AMBIENTLIGHT, RI_POINTLIGHT, RI_DISTANTLIGHT, RI_SPOTLIGHT;
extern PUBLIC RtToken  RI_INTENSITY, RI_LIGHTCOLOR, RI_FROM, RI_TO, RI_CONEANGLE,
                RI_CONEDELTAANGLE, RI_BEAMDISTRIBUTION;
extern PUBLIC RtToken  RI_MATTE, RI_METAL, RI_SHINYMETAL,
                RI_PLASTIC, RI_PAINTEDPLASTIC;
extern PUBLIC RtToken  RI_KA, RI_KD, RI_KS, RI_ROUGHNESS, RI_KR,
                RI_TEXTURENAME, RI_SPECULARCOLOR;
extern PUBLIC RtToken  RI_DEPTHCUE, RI_FOG, RI_BUMPY;
extern PUBLIC RtToken  RI_MINDISTANCE, RI_MAXDISTANCE, RI_BACKGROUND,
                RI_DISTANCE, RI_AMPLITUDE;

extern PUBLIC RtToken  RI_INSIDE, RI_OUTSIDE, RI_LH, RI_RH;
extern PUBLIC RtToken  RI_P, RI_PZ, RI_PW, RI_N, RI_NP, RI_CS,
                RI_OS, RI_S, RI_T, RI_ST;
extern PUBLIC RtToken  RI_BILINEAR, RI_BICUBIC;
extern PUBLIC RtToken  RI_PRIMITIVE, RI_INTERSECTION, RI_UNION, RI_DIFFERENCE;
extern PUBLIC RtToken  RI_PERIODIC, RI_NONPERIODIC, RI_CLAMP, RI_BLACK, RI_MIRROR;
extern PUBLIC RtToken  RI_IGNORE, RI_PRINT, RI_ABORT, RI_HANDLER;
extern PUBLIC RtToken  RI_ORIGIN, RI_IDENTIFIER, RI_NAME;
extern PUBLIC RtToken  RI_COMMENT, RI_STRUCTURE, RI_VERBATIM;
extern PUBLIC RtToken  RI_LINEAR, RI_CUBIC, RI_WIDTH, RI_CONSTANTWIDTH;

extern PUBLIC RtToken  RI_CURRENT, RI_WORLD, RI_OBJECT, RI_SHADER;
extern PUBLIC RtToken  RI_RASTER, RI_NDC, RI_SCREEN, RI_CAMERA, RI_EYE;

extern PUBLIC RtToken  RI_HOLE, RI_CREASE, RI_CORNER, RI_INTERPOLATEBOUNDARY;

extern PUBLIC RtToken  RI_USER;

extern PUBLIC RtBasis  RiBezierBasis, RiBSplineBasis, RiCatmullRomBasis,
                RiHermiteBasis, RiPowerBasis;

#define RI_BEZIERSTEP       ((RtInt)3)
#define RI_BSPLINESTEP      ((RtInt)1)
#define RI_CATMULLROMSTEP   ((RtInt)1)
#define RI_HERMITESTEP      ((RtInt)2)
#define RI_POWERSTEP        ((RtInt)4)

extern PUBLIC RtInt RiLastError;



/* Basic control flow, scoping, stacks */
PUBLIC void RiBegin (RtToken name);
PUBLIC void RiEnd (void);
PUBLIC RtContextHandle RiGetContext (void);
PUBLIC void RiContext (RtContextHandle handle);
PUBLIC void RiFrameBegin (RtInt number);
PUBLIC void RiFrameEnd (void);
PUBLIC void RiWorldBegin (void);
PUBLIC void RiWorldEnd (void);
PUBLIC void RiAttributeBegin (void);
PUBLIC void RiAttributeEnd (void);
PUBLIC void RiTransformBegin (void);
PUBLIC void RiTransformEnd (void);
PUBLIC void RiSolidBegin (RtToken type);
PUBLIC void RiSolidEnd(void);
PUBLIC void RiAcceleratorBegin (RtToken name, ... );
PUBLIC void RiAcceleratorBeginV (RtToken name, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiAcceleratorEnd(void);
PUBLIC void RiMotionBegin (RtInt N, ...);
PUBLIC void RiMotionBeginV (RtInt N, RtFloat times[]);
PUBLIC void RiMotionEnd (void);
PUBLIC RtToken RiDeclare (char *name, char *declaration);

/* Options */
PUBLIC void RiClipping (RtFloat hither, RtFloat yon);
PUBLIC void RiClippingPlane (RtFloat px, RtFloat py, RtFloat pz,
		      RtFloat nx, RtFloat ny, RtFloat nz);
PUBLIC void RiColorSamples (RtInt N, RtFloat *nRGB, RtFloat *RGBn);
PUBLIC void RiCropWindow (RtFloat xmin, RtFloat xmax, RtFloat ymin, RtFloat ymax);
PUBLIC void RiDepthOfField (RtFloat fstop, RtFloat focallength, RtFloat focaldistance);
PUBLIC void RiDisplay  (char *name, RtToken type, RtToken mode, ...);
PUBLIC void RiDisplayV (char *name, RtToken type, RtToken mode,
		 RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiExposure (RtFloat gain, RtFloat gamma);
PUBLIC void RiFormat (RtInt xres, RtInt yres, RtFloat aspect);
PUBLIC void RiFrameAspectRatio (RtFloat aspect);
PUBLIC void RiHider  (RtToken type, ...);
PUBLIC void RiHiderV (RtToken type, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiImager  (char *name, ...);
PUBLIC void RiImagerV (char *name, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiOption  (char *name, ...);
PUBLIC void RiOptionV (char *name, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiPixelFilter (RtFilterFunc function, RtFloat xwidth, RtFloat ywidth);
PUBLIC void RiPixelSamples (RtFloat xsamples, RtFloat ysamples);
PUBLIC void RiPixelVariance (RtFloat variation);
PUBLIC void RiProjection  (char *name, ...);
PUBLIC void RiProjectionV (char *name, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiQuantize (RtToken type, RtInt one, RtInt qmin, RtInt qmax, RtFloat ampl);
PUBLIC void RiRelativeDetail (RtFloat relativedetail);
PUBLIC void RiScreenWindow (RtFloat left, RtFloat right, RtFloat bot, RtFloat top);
PUBLIC void RiShutter (RtFloat opentime, RtFloat closetime);


/* Filters */
PUBLIC RtFloat RiBoxFilter (RtFloat x, RtFloat y, RtFloat xwidth, RtFloat ywidth);
PUBLIC RtFloat RiCatmullRomFilter (RtFloat x, RtFloat y, RtFloat xwidth, RtFloat ywidth);
PUBLIC RtFloat RiGaussianFilter (RtFloat x, RtFloat y, RtFloat xwidth, RtFloat ywidth);
PUBLIC RtFloat RiSincFilter (RtFloat x, RtFloat y, RtFloat xwidth, RtFloat ywidth);
PUBLIC RtFloat RiBSplineFilter (RtFloat x, RtFloat y, RtFloat xwidth, RtFloat ywidth);
PUBLIC RtFloat RiTriangleFilter (RtFloat x, RtFloat y, RtFloat xwidth, RtFloat ywidth);

/* Attributes */
PUBLIC void RiAttribute  (char *name, ...);
PUBLIC void RiAttributeV (char *name, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiBound (RtBound bound);
PUBLIC void RiColor (RtColor Cs);
PUBLIC void RiDetail (RtBound bound);
PUBLIC void RiDetailRange (RtFloat minvis, RtFloat lowtran,
		    RtFloat uptran, RtFloat maxvis);
PUBLIC void RiGeometricApproximation (RtToken type, RtFloat value);
PUBLIC void RiGeometricRepresentation (RtToken type);
PUBLIC void RiIlluminate (RtLightHandle light, RtBoolean onoff);
PUBLIC void RiMatte (RtBoolean onoff);
PUBLIC void RiOpacity (RtColor Cs);
PUBLIC void RiOrientation (RtToken orientation);
PUBLIC void RiReverseOrientation (void);
PUBLIC void RiShadingInterpolation (RtToken type);
PUBLIC void RiShadingRate (RtFloat size);
PUBLIC void RiSides (RtInt nsides);
PUBLIC void RiTextureCoordinates (RtFloat s1, RtFloat t1, RtFloat s2, RtFloat t2,
			   RtFloat s3, RtFloat t3, RtFloat s4, RtFloat t4);

/* Shaders */
PUBLIC RtLightHandle RiAreaLightSource  (char *name, ...);
PUBLIC RtLightHandle RiAreaLightSourceV (char *name, RtInt n,
				  RtToken tokens[], RtPointer params[]);
PUBLIC void RiAtmosphere  (char *name, ...);
PUBLIC void RiAtmosphereV (char *name, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiDisplacement  (char *name, ...);
PUBLIC void RiDisplacementV (char *name, RtInt n,
			RtToken tokens[], RtPointer params[]);
PUBLIC void RiExterior  (char *name, ...);
PUBLIC void RiExteriorV (char *name, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiInterior  (char *name, ...);
PUBLIC void RiInteriorV (char *name, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC RtLightHandle RiLightSource  (char *name, ...);
PUBLIC RtLightHandle RiLightSourceV (char *name, RtInt n,
			      RtToken tokens[], RtPointer params[]);
PUBLIC void RiSurface  (char *name, ...);
PUBLIC void RiSurfaceV (char *name, RtInt n, RtToken tokens[], RtPointer params[]);

/* Transformations */
PUBLIC void RiConcatTransform (RtMatrix transform);
PUBLIC void RiCoordinateSystem (RtToken space);
PUBLIC void RiCoordSysTransform (RtToken space);
PUBLIC void RiIdentity (void);
PUBLIC void RiPerspective (RtFloat fov);
PUBLIC void RiRotate (RtFloat angle, RtFloat dx, RtFloat dy, RtFloat dz);
PUBLIC void RiScale (RtFloat dx, RtFloat dy, RtFloat dz);
PUBLIC void RiSkew (RtFloat angle, RtFloat dx1, RtFloat dy1, RtFloat dz1,
	     RtFloat dx2, RtFloat dy2, RtFloat dz2);
PUBLIC void RiTransform (RtMatrix transform);
PUBLIC void RiTranslate (RtFloat dx, RtFloat dy, RtFloat dz);

PUBLIC RtPoint *RiTransformPoints (RtToken fromspace, RtToken tospace,
			    RtInt npoints, RtPoint *points);

/* Geometric Primitives (and a couple gprim-specific attributes) */
PUBLIC void RiBasis (RtBasis ubasis, RtInt ustep, RtBasis vbasis, RtInt vstep);
PUBLIC void RiBlobby (RtInt nleaf, RtInt ncode, RtInt code[],
	       RtInt nflt, RtFloat flt[], RtInt nstr, RtString str[], ...);
PUBLIC void RiBlobbyV (RtInt nleaf, RtInt ncode, RtInt code[],
		RtInt nflt, RtFloat flt[], RtInt nstr, RtString str[],
		RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiCone (RtFloat height, RtFloat radius, RtFloat thetamax, ...);
PUBLIC void RiConeV (RtFloat height, RtFloat radius, RtFloat thetamax, 
	      RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiCurves (RtToken degree, RtInt ncurves,
	       RtInt nverts[], RtToken wrap, ...);
PUBLIC void RiCurvesV (RtToken degree, RtInt ncurves, RtInt nverts[], RtToken wrap,
		RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiCylinder (RtFloat radius, RtFloat zmin, RtFloat zmax, 
		 RtFloat thetamax, ...);
PUBLIC void RiCylinderV (RtFloat radius, RtFloat zmin, RtFloat zmax, RtFloat thetamax,
		  RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiDisk (RtFloat height, RtFloat radius, RtFloat thetamax, ...);
PUBLIC void RiDiskV (RtFloat height, RtFloat radius, RtFloat thetamax, 
	      RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiGeneralPolygon (RtInt nloops, RtInt *nverts, ...);
PUBLIC void RiGeneralPolygonV (RtInt nloops, RtInt *nverts,
			RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiGeometry (RtToken type, ...);
PUBLIC void RiGeometryV (RtToken type, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiHyperboloid (RtPoint point1, RtPoint point2, RtFloat thetamax, ...);
PUBLIC void RiHyperboloidV (RtPoint point1, RtPoint point2, RtFloat thetamax, 
		     RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiNuPatch (RtInt nu, RtInt uorder, RtFloat *uknot,
		  RtFloat umin, RtFloat umax, RtInt nv, RtInt vorder,
		  RtFloat *vknot, RtFloat vmin, RtFloat vmax, ...);
PUBLIC void RiNuPatchV (RtInt nu, RtInt uorder, RtFloat *uknot,
		 RtFloat umin, RtFloat umax, RtInt nv, RtInt vorder,
		 RtFloat *vknot, RtFloat vmin, RtFloat vmax, 
		 RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiParaboloid (RtFloat rmax, RtFloat zmin,
		     RtFloat zmax, RtFloat thetamax, ...);
PUBLIC void RiParaboloidV (RtFloat rmax, RtFloat zmin, RtFloat zmax, RtFloat thetamax, 
		    RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiPatch (RtToken type, ...);
PUBLIC void RiPatchV (RtToken type, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiPatchMesh (RtToken type, RtInt nu, RtToken uwrap,
		    RtInt nv, RtToken vwrap, ...);
PUBLIC void RiPatchMeshV (RtToken type, RtInt nu, RtToken uwrap, RtInt nv,
		   RtToken vwrap, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiPoints (RtInt npts,...);
PUBLIC void RiPointsV (RtInt npts, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiPointsGeneralPolygons (RtInt npolys, RtInt *nloops,
			      RtInt *nverts, RtInt *verts, ...);
PUBLIC void RiPointsGeneralPolygonsV (RtInt npolys, RtInt *nloops,
			       RtInt *nverts, RtInt *verts, 
			       RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiPointsPolygons (RtInt npolys, RtInt *nverts, RtInt *verts, ...);
PUBLIC void RiPointsPolygonsV (RtInt npolys, RtInt *nverts, RtInt *verts, 
			RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiPolygon (RtInt nvertices, ...);
PUBLIC void RiPolygonV (RtInt nvertices, RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiSphere (RtFloat radius, RtFloat zmin,
	       RtFloat zmax, RtFloat thetamax, ...);
PUBLIC void RiSphereV (RtFloat radius, RtFloat zmin, RtFloat zmax, RtFloat thetamax,
		RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiSubdivisionMesh (RtToken scheme, RtInt nfaces,
			RtInt nvertices[], RtInt vertices[],
			RtInt ntags, RtToken tags[], RtInt nargs[],
			RtInt intargs[], RtFloat floatargs[], ...);
PUBLIC void RiSubdivisionMeshV (RtToken scheme, RtInt nfaces,
			 RtInt nvertices[], RtInt vertices[],
			 RtInt ntags, RtToken tags[], RtInt nargs[],
			 RtInt intargs[], RtFloat floatargs[], 
			 RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiTorus (RtFloat majorrad, RtFloat minorrad, RtFloat phimin,
	      RtFloat phimax, RtFloat thetamax, ...);
PUBLIC void RiTorusV (RtFloat majorrad, RtFloat minorrad, RtFloat phimin,
	       RtFloat phimax, RtFloat thetamax,
	       RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiTrimCurve (RtInt nloops, RtInt *ncurves, RtInt *order,
		  RtFloat *knot, RtFloat *amin, RtFloat *amax,
		  RtInt *n, RtFloat *u, RtFloat *v, RtFloat *w);
/* Procedural primitives */
PUBLIC void RiProcedural (RtPointer data, RtBound bound,
		   RtProcSubdivFunc subdivfunc, RtProcFreeFunc freefunc);
PUBLIC void RiProcDelayedReadArchive (RtPointer data, RtFloat detail);
PUBLIC void RiProcRunProgram (RtPointer data, RtFloat detail);
PUBLIC void RiProcDynamicLoad (RtPointer data, RtFloat detail);
PUBLIC void RiProcFree (RtPointer data);
/* Object Instancing */
RtObjectHandle RiObjectBegin (void);
PUBLIC void RiObjectEnd (void);
PUBLIC void RiObjectInstance (RtObjectHandle handle);



/* Texture map creation */
PUBLIC void RiMakeCubeFaceEnvironment (char *px, char *nx, char *py,
				char *ny, char *pz, char *nz,
				char *tex, RtFloat fov, RtFilterFunc filterfunc,
				RtFloat swidth, RtFloat twidth, ...);
PUBLIC void RiMakeCubeFaceEnvironmentV (char *px, char *nx, char *py,
				 char *ny, char *pz, char *nz,
				 char *tex, RtFloat fov, RtFilterFunc filterfunc,
				 RtFloat swidth, RtFloat twidth,
				 RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiMakeLatLongEnvironment (char *pic, char *tex, RtFilterFunc filterfunc,
			       RtFloat swidth, RtFloat twidth, ...);
PUBLIC void RiMakeLatLongEnvironmentV (char *pic, char *tex, RtFilterFunc filterfunc,
				RtFloat swidth, RtFloat twidth,
				RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiMakeShadow (char *pic, char *tex, ...);
PUBLIC void RiMakeShadowV (char *pic, char *tex,
		    RtInt n, RtToken tokens[], RtPointer params[]);
PUBLIC void RiMakeTexture (char *pic, char *tex, RtToken swrap, RtToken twrap,
		    RtFilterFunc filterfunc, RtFloat swidth, RtFloat twidth, ...);
PUBLIC void RiMakeTextureV (char *pic, char *tex, RtToken swrap, RtToken twrap,
		     RtFilterFunc filterfunc, RtFloat swidth, RtFloat twidth,
		     RtInt n, RtToken tokens[], RtPointer params[]);

/* Error Handlers */
PUBLIC void RiErrorHandler (RtErrorHandler handler);
PUBLIC void RiErrorAbort (RtInt code, RtInt severity, char *message);
PUBLIC void RiErrorIgnore (RtInt code, RtInt severity, char *message);
PUBLIC void RiErrorPrint (RtInt code, RtInt severity, char *message);

/* Reading and writing archive files */
PUBLIC void RiArchiveRecord (RtToken type, char *format, ...);
PUBLIC void RiReadArchive (RtString filename, RtArchiveCallback callback, ...);
PUBLIC void RiReadArchiveV (RtString filename, RtArchiveCallback callback,
		     int n, RtToken tokens[], RtPointer params[]);



/*
    Error codes

     1 - 10     System and File errors
    11 - 20     Program Limitations
    21 - 40     State Errors
    41 - 60     Parameter and Protocol Errors
    61 - 80     Execution Errors
*/

#define RIE_NOERROR         0

#define RIE_NOMEM           1       /* Out of memory */
#define RIE_SYSTEM          2       /* Miscellaneous system error */
#define RIE_NOFILE          3       /* File nonexistant */
#define RIE_BADFILE         4       /* Bad file format */
#define RIE_VERSION         5       /* File version mismatch */
#define RIE_DISKFULL        6       /* Target disk is full */

#define RIE_INCAPABLE      11       /* Optional RI feature */
#define RIE_OPTIONAL       11       /* Optional RI feature */
#define RIE_UNIMPLEMENT    12       /* Unimplemented feature */
#define RIE_LIMIT          13       /* Arbitrary program limit */
#define RIE_BUG            14       /* Probably a bug in renderer */

#define RIE_NOTSTARTED     23       /* RiBegin not called */
#define RIE_NESTING        24       /* Bad begin-end nesting */
#define RIE_NOTOPTIONS     25       /* Invalid state for options */
#define RIE_NOTATTRIBS     26       /* Invalid state for attributes */
#define RIE_NOTPRIMS       27       /* Invalid state for primitives */
#define RIE_ILLSTATE       28       /* Other invalid state */
#define RIE_BADMOTION      29       /* Badly formed motion block */
#define RIE_BADSOLID       30       /* Badly formed solid block */

#define RIE_BADTOKEN       41       /* Invalid token for request */
#define RIE_RANGE          42       /* Parameter out of range */
#define RIE_CONSISTENCY    43       /* Parameters inconsistent */
#define RIE_BADHANDLE      44       /* Bad object/light handle */
#define RIE_NOSHADER       45       /* Can't load requested shader */
#define RIE_MISSINGDATA    46       /* Required parameters not provided */
#define RIE_SYNTAX         47       /* Declare type syntax error */

#define RIE_MATH           61       /* Zerodivide, noninvert matrix, etc. */

#define RIE_MISC          101       /* Uncategorized error */


/* Error severity levels */
#define RIE_INFO            0       /* Rendering stats & other info */
#define RIE_WARNING         1       /* Something seems wrong, maybe okay */
#define RIE_ERROR           2       /* Problem.  Results may be wrong */
#define RIE_SEVERE          3       /* So bad you should probably abort */

#ifdef __cplusplus
}
#endif


#endif  /* RI_H */

