1 /* 2 * Copyright (C) 1997-2005, R3vis Corporation. 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 17 * USA, or visit http://www.gnu.org/copyleft/lgpl.html. 18 * 19 * Original Contributor: 20 * Wes Bethel, R3vis Corporation, Marin County, California 21 * Additional Contributor(s): 22 * 23 * The OpenRM project is located at http://openrm.sourceforge.net/. 24 */ 25 26 /* 27 * $Id: rmpublic.h,v 1.22 2005/06/15 02:10:29 wes Exp $ 28 * 29 * $Revision: 1.22 $ 30 * Version: $Name: OpenRM-1-6-0-2-RC2 $ 31 * $Log: rmpublic.h,v $ 32 * Revision 1.22 2005/06/15 02:10:29 wes 33 * Added initial support for application-settable defaults. Apps 34 * will use rmSetEnum/rmGetEnum to set or get defaults that are RMenums. 35 * The first round of variables that can be set/get by apps are 36 * RMnode traversal masks assigned to new scene graph nodes by rmNodeNew. 37 * 38 * Revision 1.21 2005/06/12 21:22:56 wes 39 * Minor documentation changes. 40 * 41 * Revision 1.20 2005/05/28 16:26:34 wes 42 * Added pickEnable attribute to RMnodes, and function prototypes for 43 * rmNodeSetPickEnable and rmNodeGetPickEnable 44 * 45 * Revision 1.19 2005/05/16 01:08:33 wes 46 * Removed dead code. 47 * 48 * Revision 1.18 2005/03/19 17:19:48 wes 49 * Fixed typo on rmMarkerInternal2DDelete function prototype. 50 * 51 * Revision 1.17 2005/02/27 19:32:55 wes 52 * Added support for application supplied texture object IDs and display lists. 53 * 54 * Revision 1.16 2005/02/19 16:47:24 wes 55 * Distro sync and consolidation. 56 * 57 * Revision 1.15 2005/01/23 17:17:34 wes 58 * Copyright update to 2005. 59 * Updates to support use of extensions: multitexturing on all platforms, 60 * 3d texturing (for volume rendering support) on Win32 61 * 62 * Revision 1.14 2004/04/09 14:47:31 wes 63 * No significant changes. 64 * 65 * Revision 1.13 2004/03/30 14:13:05 wes 66 * Fixed declarations for a couple of routines. 67 * 68 * Revision 1.12 2004/03/10 01:48:50 wes 69 * Updated minor version to 1.5.2, added RM_INDEXED_QUAD_STRIP def. 70 * 71 * Revision 1.11 2004/01/17 04:06:42 wes 72 * Updated Copyright line for 2004. 73 * 74 * Revision 1.10 2003/12/06 03:26:04 wes 75 * Documentation tweaks to RMtime routines, updates to RMtime routines for 76 * Windows. 77 * 78 * Revision 1.9 2003/12/01 02:13:37 wes 79 * Additions to support constate-rate rendering on Unix and Win32. 80 * 81 * Revision 1.8 2003/11/22 00:53:52 wes 82 * Changes to support RMtextures being shared when assigned as scene parameters 83 * to properly implement instancing. 84 * 85 * Revision 1.7 2003/11/16 16:18:32 wes 86 * Added routine rmTimeSleep. 87 * 88 * Revision 1.6 2003/11/05 15:36:32 wes 89 * Added rmTime* family of routines to measure time. 90 * 91 * Revision 1.5 2003/06/20 01:40:56 wes 92 * Marked rmNodeSet/GetOpacity as being deprecated. These routines will be 93 * removed in v1.5.1. 94 * 95 * Revision 1.4 2003/04/05 14:14:40 wes 96 * Renamed rmMutexDestroy to rmMutexDelete. 97 * 98 * Revision 1.3 2003/02/02 17:50:55 wes 99 * Added bounding boxes to RMprimitives, as a supplement to node-level bboxes. 100 * The RMprimitive level bboxes are needed for the retained-mode CR work. 101 * 102 * Revision 1.2 2003/02/02 02:07:14 wes 103 * Updated copyright to 2003. 104 * 105 * Revision 1.1.1.1 2003/01/28 02:15:23 wes 106 * Manual rebuild of rm150 repository. 107 * 108 * Revision 1.15 2002/09/17 14:12:54 wes 109 * Added rmComponentManagerPrintStatus() - v1.4.3 110 * 111 * Revision 1.14 2002/08/19 00:54:26 wes 112 * Added API entries for new experiemental routines to get and set 113 * the size of the OpenRM component manager object pool. 114 * 115 * Revision 1.13 2002/08/19 00:29:34 wes 116 * Created external declarations for the rmStats* family of routines. 117 * 118 * Revision 1.12 2002/08/17 15:18:25 wes 119 * Added two new routines: rmNodeSetRenderOrderCallback() and 120 * rmInitComponentPoolSize(). 121 * 122 * Revision 1.11 2002/06/17 01:11:06 wes 123 * Removed rmPickListDelete, rmSubtreeFrame and a couple of other 124 * routines that were not actually defined anywhere in the code. 125 * Added rmPickDelete definition. 126 * 127 * Revision 1.10 2002/04/30 19:42:33 wes 128 * Updated copyright dates. 129 * 130 * Revision 1.9 2001/07/15 17:21:47 wes 131 * Cleaned up prototype for rmTextPropsSetAttribs(). 132 * 133 * Revision 1.8 2001/03/31 17:13:59 wes 134 * v1.4.0-alpha-2 checkin 135 * 136 * Revision 1.7 2000/12/05 03:13:11 wes 137 * Removed unused code, added rmFrame() [!]. 138 * 139 * Revision 1.6 2000/12/03 23:20:22 wes 140 * Thread-safety mods. 141 * 142 * Revision 1.5 2000/10/03 11:41:14 wes 143 * Contribution from jdb - proto cleanups. 144 * 145 * Revision 1.4 2000/05/17 14:31:00 wes 146 * Fixed compile warnings on rmTextPropsSet/GetAttribs(). 147 * 148 * Revision 1.3 2000/05/14 23:35:31 wes 149 * Minor updates to reflect doc changes. 150 * 151 * Revision 1.2 2000/04/20 16:30:23 wes 152 * Added copyright info. 153 * 154 * Revision 1.1.1.1 2000/02/28 21:29:40 wes 155 * OpenRM 1.2 Checkin 156 * 157 * Revision 1.1.1.1 2000/02/28 17:18:48 wes 158 * Initial entry - pre-RM120 release, source base for OpenRM 1.2. 159 * 160 */ 161 162 #ifndef _rmpublic_h 163 #define _rmpublic_h 164 165 /* macros */ 166 #define VCOPY(s,d) memcpy((void *)(d),(void *)(s),sizeof(RMvertex3D)) 167 #define V3COPY(s,d) memcpy((void *)(d),(void *)(s),sizeof(RMvertex3D)) 168 #define V2COPY(s,d) memcpy(d,s,sizeof(RMvertex2D)) 169 #define V4COPY(s,d) memcpy(d,s,sizeof(RMcolor4D)) 170 171 #ifdef __cplusplus 172 extern "C" { 173 #endif 174 175 /* rmarray.c: array routines [6] */ 176 RM_EXPORT_API RMenum rmArrayAdd(RMarray *toModify, void *newData); 177 RM_EXPORT_API RMenum rmArrayDelete(RMarray **a); 178 RM_EXPORT_API void *rmArrayGet(const RMarray *toQuery, int indx); 179 RM_EXPORT_API RMarray *rmArrayNew(int initSize,int chunkSize,int elementSize); 180 RM_EXPORT_API int rmArrayNumItems(const RMarray *toQuery); 181 RM_EXPORT_API void rmArraySort(RMarray *, int (*compareFunc)(const void *a, const void *b)); 182 183 /* rmbitmap.c: bitmap routines [8] */ 184 RM_EXPORT_API RMbitmap *rmBitmapNew (int width, int height); 185 RM_EXPORT_API RMenum rmBitmapCopy (RMbitmap *dst, const RMbitmap *src); 186 RM_EXPORT_API RMbitmap *rmBitmapDup (const RMbitmap *src); 187 RM_EXPORT_API void rmBitmapDelete (RMbitmap *toDelete); 188 RM_EXPORT_API RMenum rmBitmapSetPixelData (RMbitmap *toModify, const void *pixeldata); 189 RM_EXPORT_API void *rmBitmapGetPixelData (const RMbitmap *toQuery); 190 RM_EXPORT_API RMenum rmBitmapGetSize (const RMbitmap *toQuery, int *widthReturn, int *heightReturn, int *bytesWidthReturn); 191 RM_EXPORT_API RMenum rmBitmapSetBit (RMbitmap *toModify, int columnIndex, int rowIndex); 192 193 /* rmcamera.c: 2D cameras [11] */ 194 RM_EXPORT_API RMcamera2D *rmCamera2DNew (void); 195 RM_EXPORT_API RMenum rmCamera2DCopy (RMcamera2D *dst, const RMcamera2D *src); 196 RM_EXPORT_API void rmCamera2DDelete (RMcamera2D *toDelete); 197 RM_EXPORT_API RMenum rmDefaultCamera2D (RMcamera2D *c); 198 RM_EXPORT_API RMenum rmCamera2DSetAspectRatio (RMcamera2D *toModify, float newAspect); 199 RM_EXPORT_API RMenum rmCamera2DResetAspectRatio (RMcamera2D *toModify, const float *vp, int windowWidth, int windowWeight); 200 RM_EXPORT_API RMenum rmCamera2DGetAspectRatio (const RMcamera2D *toQuery, float *retValue); 201 RM_EXPORT_API RMenum rmCamera2DSetExtents (RMcamera2D *toModify, float xmin, float ymin, float xmax, float ymax); 202 RM_EXPORT_API RMenum rmCamera2DGetExtents (const RMcamera2D *toQuery, float *xmin, float *ymin, float *xmax, float *ymax); 203 RM_EXPORT_API RMenum rmCamera2DComputeViewMatrix (const RMcamera2D *c, RMmatrix *m); 204 RM_EXPORT_API RMenum rmCamera2DComputeViewFromGeometry (RMcamera2D *toModify, const RMnode *source); 205 206 /* rmcamera.c: 3D cameras [29] */ 207 RM_EXPORT_API RMcamera3D *rmCamera3DNew (void); 208 RM_EXPORT_API RMenum rmCamera3DCopy (RMcamera3D *dst, const RMcamera3D *src); 209 RM_EXPORT_API void rmCamera3DDelete (RMcamera3D *toDelete); 210 RM_EXPORT_API RMenum rmDefaultCamera3D (RMcamera3D *c); 211 RM_EXPORT_API RMenum rmCamera3DSetAspectRatio (RMcamera3D *toModify, const float newAspect); 212 RM_EXPORT_API RMenum rmCamera3DResetAspectRatio (RMcamera3D *toModify, const float *vp, int windowWidth, int windowHeight); 213 RM_EXPORT_API float rmCamera3DGetAspectRatio (const RMcamera3D *toQuery); 214 RM_EXPORT_API RMenum rmCamera3DSetProjection (RMcamera3D *toQuery, RMenum newVal); 215 RM_EXPORT_API RMenum rmCamera3DGetProjection (const RMcamera3D *toQuery); 216 RM_EXPORT_API RMenum rmCamera3DSetEye (RMcamera3D *toModify, const RMvertex3D *newEye); 217 RM_EXPORT_API RMenum rmCamera3DGetEye (const RMcamera3D *toQuery, RMvertex3D *returnEye); 218 RM_EXPORT_API RMenum rmCamera3DSetAt (RMcamera3D *toModify, const RMvertex3D *newAt); 219 RM_EXPORT_API RMenum rmCamera3DGetAt (const RMcamera3D *toQuery, RMvertex3D *returnAt); 220 RM_EXPORT_API RMenum rmCamera3DSetUpVector (RMcamera3D *toModify, const RMvertex3D *newUpVector); 221 RM_EXPORT_API RMenum rmCamera3DGetUpVector (const RMcamera3D *toQuery, RMvertex3D *returnUpVector); 222 RM_EXPORT_API RMenum rmCamera3DSetFOV (RMcamera3D *toQuery, float newFOV); 223 RM_EXPORT_API float rmCamera3DGetFOV (const RMcamera3D *toQuery); 224 RM_EXPORT_API RMenum rmCamera3DSetHither (RMcamera3D *toModify, float newHither); 225 RM_EXPORT_API float rmCamera3DGetHither (const RMcamera3D *toQuery); 226 RM_EXPORT_API RMenum rmCamera3DSetYon (RMcamera3D *toModify, float newYon); 227 RM_EXPORT_API float rmCamera3DGetYon (const RMcamera3D *toQuery); 228 RM_EXPORT_API RMenum rmCamera3DSetStereo (RMcamera3D *toModify, RMenum newBoolValue); 229 RM_EXPORT_API RMenum rmCamera3DGetStereo (const RMcamera3D *toQuery); 230 RM_EXPORT_API RMenum rmCamera3DSetEyeSeparation (RMcamera3D *toModify, float newval); 231 RM_EXPORT_API float rmCamera3DGetEyeSeparation (const RMcamera3D *toQuery); 232 RM_EXPORT_API RMenum rmCamera3DSetFocalDistance (RMcamera3D *toModify, float newval); 233 RM_EXPORT_API float rmCamera3DGetFocalDistance (const RMcamera3D *toQuery); 234 RM_EXPORT_API RMenum rmCamera3DComputeViewMatrix (const RMcamera3D *source, RMmatrix *viewReturn, RMmatrix *projectionReturn); 235 RM_EXPORT_API RMenum rmCamera3DComputeViewFromGeometry (RMcamera3D *toModify, const RMnode *source, int windowWidth, int windowHeight); 236 237 /* rmclip.c: clipping plane routines [7] */ 238 RM_EXPORT_API RMclipPlane *rmClipPlaneNew (void); 239 RM_EXPORT_API RMenum rmClipPlaneDelete (RMclipPlane *toDelete); 240 RM_EXPORT_API RMenum rmClipPlaneSetPointNormal (RMclipPlane *toModify, const RMvertex3D *point, const RMvertex3D *normal); 241 RM_EXPORT_API RMenum rmClipPlaneGetPointNormal (const RMclipPlane *toQuery, RMvertex3D *point, RMvertex3D *normal); 242 RM_EXPORT_API RMenum rmClipPlaneEnable (RMclipPlane *toModify); 243 RM_EXPORT_API RMenum rmClipPlaneDisable (RMclipPlane *toModify); 244 RM_EXPORT_API RMenum rmClipPlaneIsEnabled (const RMclipPlane *toQuery); 245 246 /* rmcmpmgr.c: the RM component manager [1] */ 247 RM_EXPORT_API void rmComponentManagerPrintStatus(void); 248 249 /* rmerror.c: errors, warnings and notices [4] */ 250 RM_EXPORT_API void rmError (const char *msg); 251 RM_EXPORT_API void rmNotice (const char *msg); 252 RM_EXPORT_API RMenum rmNotifyLevel (RMenum level); 253 RM_EXPORT_API void rmSplash (const char *msg); 254 RM_EXPORT_API void rmWarning (const char *msg); 255 256 /* rmdefaults.c: set/get routines for default values [2] */ 257 RM_EXPORT_API RMenum rmGetEnum(RMenum queryTag, RMenum *returnValue); 258 RM_EXPORT_API RMenum rmSetEnum(RMenum setTag, RMenum newValue); 259 260 /* rmfog.c: fogging routines [11] */ 261 RM_EXPORT_API RMfog *rmFogNew (void); 262 RM_EXPORT_API RMfog *rmFogDup (const RMfog *toDuplicate); 263 RM_EXPORT_API RMenum rmFogDelete (RMfog *toDelete); 264 RM_EXPORT_API RMenum rmFogSetMode (RMfog *toModify, GLenum newMode); 265 RM_EXPORT_API GLenum rmFogGetMode (const RMfog *toQuery); 266 RM_EXPORT_API RMenum rmFogSetColor (RMfog *toModify, const RMcolor4D *newColor); 267 RM_EXPORT_API RMenum rmFogGetColor (const RMfog *toQuery, RMcolor4D *returnColor); 268 RM_EXPORT_API RMenum rmFogSetDensity (RMfog *toModify, GLfloat newDensity); 269 RM_EXPORT_API GLfloat rmFogGetDensity (const RMfog *toQuery); 270 RM_EXPORT_API RMenum rmFogSetStartEnd (RMfog *toModify, GLfloat newStart, GLfloat newEnd); 271 RM_EXPORT_API RMenum rmFogGetStartEnd (const RMfog *toModify, GLfloat *startReturn, GLfloat *endReturn); 272 273 /* rmframe.c: rendering functions [2] */ 274 /*RM_EXPORT_API void rmSubtreeFrame (RMpipe *drawToPipe, RMnode *rootedTree); */ 275 RM_EXPORT_API void rmFrame (RMpipe *drawToPipe, RMnode *rootedTree); 276 277 /* rmimage.c: image routines [20] */ 278 RM_EXPORT_API RMimage *rmImageNew (int ndims, int width, int height, int depth, RMenum formatEnum, RMenum typeEnum, RMenum copyFlag); 279 RM_EXPORT_API RMimage *rmImageDup (const RMimage *toDuplicate); 280 RM_EXPORT_API RMenum rmImageDelete (RMimage *toDelete); 281 RM_EXPORT_API RMenum rmImageSetPixelData (RMimage *toModify, void *pixelData, RMenum copyEnum, void (*appFreeFunc)(void *)); 282 RM_EXPORT_API void *rmImageGetPixelData (const RMimage *toQuery); 283 RM_EXPORT_API unsigned int rmImageGetBytesPerScanline (const RMimage *toQuery); 284 RM_EXPORT_API RMenum rmImageGetCopyFlag (const RMimage *toQuery); 285 RM_EXPORT_API RMenum rmImageGetType (const RMimage *toQuery); 286 RM_EXPORT_API RMenum rmImageGetFormat (const RMimage *toQuery); 287 RM_EXPORT_API RMenum rmImageGetImageSize (const RMimage *toQuery, int *returnNDims, int *returnWidth, int *returnHeight, int *returnDepth, int *returnElements, int *returnBytesPerScanline); 288 RM_EXPORT_API RMenum rmImageSetPixelZoom (RMimage *toModify, float xzoom, float yzoom); 289 RM_EXPORT_API RMenum rmImageGetPixelZoom (const RMimage *toQuery, float *returnXZoom, float *returnYZoom); 290 RM_EXPORT_API RMenum rmImageSetVismap (RMimage *toModify, const RMvisMap *vismap); 291 RM_EXPORT_API RMenum rmImageGetVismap (const RMimage *toQuery, RMvisMap **vismapReturn); 292 RM_EXPORT_API RMenum rmImageMirror (RMimage *toMirror, RMenum mirrorAxisEnum); 293 RM_EXPORT_API RMenum rmImageResize (const RMimage *src, RMimage *dst, RMenum hardwareEnum, RMpipe *p); 294 RM_EXPORT_API RMenum rmImageSetScale (RMimage *toModify, float newScale); 295 RM_EXPORT_API RMenum rmImageGetScale (const RMimage *toQuery, float *returnScale); 296 RM_EXPORT_API RMenum rmImageSetBias (RMimage *toModify, float newBias); 297 RM_EXPORT_API RMenum rmImageGetBias (const RMimage *toQuery, float *returnBias); 298 299 /* rmlites.c: light sources [18] */ 300 RM_EXPORT_API RMlight *rmLightNew (void); 301 RM_EXPORT_API void rmLightDelete (RMlight *toDelete); 302 RM_EXPORT_API RMenum rmLightSetType (RMlight *toModify, RMenum newType); 303 RM_EXPORT_API RMenum rmLightGetType (const RMlight *toQuery); 304 RM_EXPORT_API RMenum rmLightSetXYZ (RMlight *toModify, const RMvertex3D *newXYZ); 305 RM_EXPORT_API RMenum rmLightGetXYZ (const RMlight *toQuery, RMvertex3D *retXYZ); 306 RM_EXPORT_API RMenum rmLightSetColor (RMlight *toModify, const RMcolor4D *newAmbientColor, const RMcolor4D *newDiffuseColor, const RMcolor4D *newSpecularColor); 307 RM_EXPORT_API RMenum rmLightGetColor (const RMlight *toQuery, RMcolor4D *retAmbientColor, RMcolor4D *retDiffuseColor, RMcolor4D *retSpecularColor); 308 RM_EXPORT_API RMenum rmLightSetAttenuation (RMlight *toModify, float newConstantAttenuation, float newLinearAttenuation, float newQuadraticAttenuation); 309 RM_EXPORT_API RMenum rmLightGetAttenuation (const RMlight *toQuery, float *retConstantAttenuation, float *retLinearAttenuation, float *retQuadraticAttenuation); 310 RM_EXPORT_API RMenum rmLightSetEnable (RMlight *toModify, RMenum newValue); 311 RM_EXPORT_API RMenum rmLightGetEnable (const RMlight *toQuery); 312 RM_EXPORT_API RMenum rmLightSetSpotDirection (RMlight *toModify, const RMvertex3D *newSpotDirection); 313 RM_EXPORT_API RMenum rmLightGetSpotDirection (const RMlight *toModify, RMvertex3D *retDirection); 314 RM_EXPORT_API RMenum rmLightSetSpotCutoff (RMlight *toModify, float newValue); 315 RM_EXPORT_API RMenum rmLightGetSpotCutoff (const RMlight *toQuery, float *retValue); 316 RM_EXPORT_API RMenum rmLightSetSpotExponent (RMlight *toModify, float newValue); 317 RM_EXPORT_API RMenum rmLightGetSpotExponent (const RMlight *toQuery, float *retValue); 318 319 /* rmlites.c: light models [9] */ 320 RM_EXPORT_API RMlightModel *rmLightModelNew (void); 321 RM_EXPORT_API RMenum rmLightModelDelete (RMlightModel *toDelete); 322 RM_EXPORT_API RMenum rmLightModelSetAmbient (RMlightModel *toModify, const RMcolor4D *newAmbientColor); 323 RM_EXPORT_API RMenum rmLightModelGetAmbient (const RMlightModel *toQuery, RMcolor4D *retAmbientColor); 324 RM_EXPORT_API RMenum rmLightModelSetTwoSided (RMlightModel *toModify, RMenum newValue); 325 RM_EXPORT_API RMenum rmLightModelGetTwoSided (const RMlightModel *toQuery); 326 RM_EXPORT_API RMenum rmLightModelSetLocalViewer (RMlightModel *toModify, RMenum newValue); 327 RM_EXPORT_API RMenum rmLightModelGetLocalViewer (const RMlightModel *toQuery); 328 RM_EXPORT_API RMenum rmDefaultLighting (RMnode *toModify); 329 330 /* rmmalloc.c: creation and deletion functions [25] */ 331 RM_EXPORT_API float *rmFloatNew (int num_floats); 332 RM_EXPORT_API void rmFloatDelete (float *f); 333 RM_EXPORT_API RMvertex2D *rmVertex2DNew (int n); 334 RM_EXPORT_API void rmVertex2DDelete (RMvertex2D *); 335 RM_EXPORT_API RMvertex3D *rmVertex3DNew (int n); 336 RM_EXPORT_API void rmVertex3DDelete (RMvertex3D *); 337 #define rmColor3DNew(a) ((RMcolor3D *)rmVertex3DNew((a))) 338 #define rmColor3DDelete(a) (rmVertex3DDelete((RMvertex3D *)(a))) 339 RM_EXPORT_API RMcolor4D *rmColor4DNew (int n); 340 RM_EXPORT_API void rmColor4DDelete (RMcolor4D *to_delete); 341 RM_EXPORT_API RMinternalMarker2D *rmInternalMarker2DNew (int nverts, int begin_flag, RMvertex2D *dverts); 342 RM_EXPORT_API void rmInternalMarker2DDelete (RMinternalMarker2D *t); 343 #define rmInternalMarker2DGetNpts(n) ((n)->npts) 344 #define rmInternalMarker2DSetNpts(m,n) ((m)->npts = n) 345 #define rmInternalMarker2DGetVerts(n) ((n)->vlist) 346 #define rmInternalMarker2DSetBFlag(m,f) ((m)->gl_begin_flag = (f)) 347 #define rmInternalMarker2DGetBFlag(m) ((m)->gl_begin_flag) 348 RM_EXPORT_API unsigned char **rmMalloc2DByteBuffer (int width, int height); 349 RM_EXPORT_API void rmFree2DByteBuffer (unsigned char **c); 350 RM_EXPORT_API float **rmMalloc2DFloatBuffer (int width, int height); 351 RM_EXPORT_API void rmFree2DFloatBuffer (float **f); 352 RM_EXPORT_API unsigned char ***rmMalloc3DByteBuffer (int width, int height, int depth); 353 RM_EXPORT_API void rmFree3DByteBuffer (unsigned char ***c); 354 RM_EXPORT_API float ***rmMalloc3DFloatBuffer (int width, int height, int depth); 355 RM_EXPORT_API void rmFree3DFloatBuffer (float ***c); 356 357 /* rmmatrix.c: matrix routines [12] */ 358 RM_EXPORT_API RMmatrix *rmMatrixNew (void); 359 RM_EXPORT_API RMenum rmMatrixCopy (RMmatrix *dst, const RMmatrix *src); 360 RM_EXPORT_API RMenum rmMatrixDelete (RMmatrix *toDelete); 361 RM_EXPORT_API RMenum rmMatrixIdentity (RMmatrix *toModify); 362 RM_EXPORT_API RMenum rmMatrixSetValue (RMmatrix *toModify, int row, int col, float newValue); 363 RM_EXPORT_API float rmMatrixGetValue (const RMmatrix *toQuery, int row, int col); 364 RM_EXPORT_API RMenum rmMatrixTranspose (const RMmatrix *src, RMmatrix *dst); 365 RM_EXPORT_API RMenum rmMatrixMultiply (const RMmatrix *srcA, const RMmatrix *srcB, RMmatrix *dst); 366 RM_EXPORT_API RMenum rmMatrixInverse (const RMmatrix *src, RMmatrix *dst); 367 RM_EXPORT_API RMenum rmPoint4MatrixTransform (const float *src, const RMmatrix *matrix, float *dst); 368 RM_EXPORT_API RMenum rmPointMatrixTransform (const RMvertex3D *src, const RMmatrix *m, RMvertex3D *dst); 369 RM_EXPORT_API RMenum rmPrintMatrix (const RMmatrix *toPrint); 370 371 /* rmmatrix.c: min/max routines [3] */ 372 RM_EXPORT_API RMenum rmPointMin (const float *input, int count, int vdims, int stride, RMvertex3D *minReturn); 373 RM_EXPORT_API RMenum rmPointMax (const float *input, int count, int vdims, int stride, RMvertex3D *maxReturn); 374 RM_EXPORT_API RMenum rmPointMinMax (const float *input, int count, int vdims, int stride, RMvertex3D *minReturn, RMvertex3D *maxReturn); 375 376 /* rmmatrix.c: vector routines [10] */ 377 RM_EXPORT_API double rmVertex3DMag (const RMvertex3D *v); 378 RM_EXPORT_API RMenum rmVertex3DSum (const RMvertex3D *a, const RMvertex3D *b, RMvertex3D *dst); 379 RM_EXPORT_API RMenum rmVertex3DDiff (const RMvertex3D *a, const RMvertex3D *b, RMvertex3D *dst); 380 RM_EXPORT_API double rmVertex3DDot (const RMvertex3D *a, const RMvertex3D *b); 381 RM_EXPORT_API RMenum rmVertex3DCross (RMvertex3D *p, RMvertex3D *r, RMvertex3D *result); 382 RM_EXPORT_API RMenum rmVertex3DNormalize (RMvertex3D *toNormalize); 383 RM_EXPORT_API RMenum rmVertex3DMagNormalize (RMvertex3D *toNormalize, double *magReturn); 384 RM_EXPORT_API RMenum rmVertex3DMidpoint (const RMvertex3D *a, const RMvertex3D *b, RMvertex3D *dst); 385 RM_EXPORT_API RMenum rmDCFromWC3 (const RMvertex3D *src, RMvertex3D *dst, int nPoints, const RMcamera3D *cam3d, const RMmatrix *model, float viewPort[4], int windowWidth, int windowHeight); 386 RM_EXPORT_API RMenum rmDCFromWC2 (const RMvertex2D *src, RMvertex2D *dst, int nPoints, const RMcamera2D *cam3d, const RMmatrix *model, float viewPort[4], int windowWidth, int windowHeight); 387 388 /* rmnode.c: node functions [25] */ 389 RM_EXPORT_API RMnode *rmRootNode (void); 390 RM_EXPORT_API RMnode *rmNodeNew (char *name, RMenum renderpassVdims, RMenum renderpassOpaque); 391 RM_EXPORT_API RMenum rmNodeDelete (RMnode *toDelete); 392 RM_EXPORT_API RMenum rmSubTreeDelete (RMnode *toDelete); 393 RM_EXPORT_API RMenum rmNodeSetName (RMnode *toModify, const char *name); 394 RM_EXPORT_API char *rmNodeGetName (const RMnode *toQuery); 395 RM_EXPORT_API RMenum rmNodeSetPickEnable (RMnode *toModify, RMenum newVal); 396 RM_EXPORT_API RMenum rmNodeSetTraverseEnable (RMnode *toModify, RMenum newval); 397 RM_EXPORT_API RMenum rmNodeGetTraverseEnable (const RMnode *toQuery); 398 RM_EXPORT_API RMenum rmNodeGetPickEnable (const RMnode *toQuery); 399 RM_EXPORT_API RMenum rmNodeAddChild (RMnode *parent, RMnode *child); 400 RM_EXPORT_API RMenum rmNodeRemoveChild (RMnode *parent, RMnode *child); 401 RM_EXPORT_API RMenum rmNodeRemoveAllChildren (RMnode *toModify); 402 RM_EXPORT_API RMenum rmNodeRemoveAllPrims (RMnode *toModify); 403 RM_EXPORT_API int rmNodeGetNumChildren (const RMnode *toQuery); 404 RM_EXPORT_API int rmNodeGetNumPrims (const RMnode *toQuery); 405 RM_EXPORT_API RMnode *rmNodeGetIthChild (const RMnode *toQuery, int indx); 406 RM_EXPORT_API RMnode *rmFindNamedNode (const RMnode *start, const char *name); 407 RM_EXPORT_API void rmSceneGraphWalk (const RMpipe *p, RMnode *r, void (*userfunc)(RMnode *node, const RMstate *s, void *clientData), void *clientData); 408 RM_EXPORT_API void rmPrintSceneGraph (const RMnode *root, RMenum printMode, const char *fileName); 409 RM_EXPORT_API RMenum rmNodeMutexInit (RMnode *toModify, RMenum lockStatus); 410 RM_EXPORT_API RMenum rmNodeMutexLock (RMnode *toModify); 411 RM_EXPORT_API RMenum rmNodeMutexUnlock (RMnode *toModify); 412 RM_EXPORT_API RMenum rmNodeMutexTryLock (const RMnode *toQuery); 413 RM_EXPORT_API RMmutex *rmNodeGetMutex (const RMnode *toQuery); 414 RM_EXPORT_API RMenum rmNodeMutexDelete (RMnode *toModify); 415 416 /* rmnode.c: node bounding box stuff [5] */ 417 RM_EXPORT_API RMenum rmNodeSetBoundingBox (RMnode *toModify, const RMvertex3D *vMin, const RMvertex3D *vMax); 418 RM_EXPORT_API RMenum rmNodeGetBoundingBox (const RMnode *toQuery, RMvertex3D *vMinReturn, RMvertex3D *vMaxReturn); 419 RM_EXPORT_API RMenum rmNodeComputeCenterFromBoundingBox (RMnode *toModify); 420 RM_EXPORT_API RMenum rmNodeComputeBoundingBox (RMnode *toModify); 421 RM_EXPORT_API RMenum rmNodeUnionAllBoxes (RMnode *toModify); 422 423 /* rmnode.c: node material properties [12] */ 424 RM_EXPORT_API RMenum rmNodeSetAmbientColor (RMnode *toModify, const RMcolor4D *newColor); 425 RM_EXPORT_API RMenum rmNodeGetAmbientColor (const RMnode *toQuery, RMcolor4D *ambientReturn); 426 RM_EXPORT_API RMenum rmNodeSetDiffuseColor (RMnode *toModify, const RMcolor4D *newColor); 427 RM_EXPORT_API RMenum rmNodeGetDiffuseColor (const RMnode *toQuery, RMcolor4D *diffuseReturn); 428 RM_EXPORT_API RMenum rmNodeSetSpecularColor (RMnode *toModify, const RMcolor4D *newColor); 429 RM_EXPORT_API RMenum rmNodeGetSpecularColor (const RMnode *toQuery, RMcolor4D *diffuseReturn); 430 RM_EXPORT_API RMenum rmNodeSetSpecularExponent (RMnode *toModify, float newValue); 431 RM_EXPORT_API RMenum rmNodeGetSpecularExponent (const RMnode *toQuery, float *retValue); 432 RM_EXPORT_API RMenum rmNodeSetUnlitColor (RMnode *toModify, const RMcolor4D *newColor); 433 RM_EXPORT_API RMenum rmNodeGetUnlitColor (const RMnode *toQuery, RMcolor4D *retColor); 434 /* deprecated */ RM_EXPORT_API RMenum rmNodeSetOpacity (RMnode *toModify, float newValue); 435 /* deprecated */ RM_EXPORT_API RMenum rmNodeGetOpacity (const RMnode *toQuery, float *retValue); 436 437 /* rmnode.c: drawing attributes [16] */ 438 RM_EXPORT_API RMenum rmNodeSetNormalizeNormals (RMnode *toModify, RMenum newValue); 439 RM_EXPORT_API RMenum rmNodeGetNormalizeNormals (const RMnode *toQuery, RMenum *retValue); 440 RM_EXPORT_API RMenum rmNodeSetLineStyle (RMnode *toModify, RMenum newStyle); 441 RM_EXPORT_API RMenum rmNodeGetLineStyle (const RMnode *toQuery, RMenum *retStyle); 442 RM_EXPORT_API RMenum rmNodeSetLineWidth (RMnode *toModify, RMenum newWidthEnum); 443 RM_EXPORT_API RMenum rmNodeGetLineWidth (const RMnode *toQuery, RMenum *retWidthEnum); 444 RM_EXPORT_API RMenum rmNodeSetPointSize (RMnode *toModify, float newsize); 445 RM_EXPORT_API RMenum rmNodeGetPointSize (const RMnode *toQuery, float *sizeReturn); 446 RM_EXPORT_API RMenum rmNodeSetShader (RMnode *toModify, RMenum newShaderEnum); 447 RM_EXPORT_API RMenum rmNodeGetShader (const RMnode *toQuery, RMenum *retShaderEnum); 448 RM_EXPORT_API RMenum rmNodeSetPolygonDrawMode (RMnode *toModify, RMenum whichFace, RMenum newMode); 449 RM_EXPORT_API RMenum rmNodeGetPolygonDrawMode (const RMnode *toQuery, RMenum *returnFace, RMenum *returnMode); 450 RM_EXPORT_API RMenum rmNodeSetPolygonCullMode (RMnode *toModify, RMenum newMode); 451 RM_EXPORT_API RMenum rmNodeGetPolygonCullMode (const RMnode *toQuery, RMenum *modeReturn); 452 RM_EXPORT_API RMenum rmNodeSetFrontFace (RMnode *toModify, RMenum newMode); 453 RM_EXPORT_API RMenum rmNodeGetFrontFace (const RMnode *toQuery, RMenum *modeReturn); 454 455 /* rmnode.c: traversal mask control [6] */ 456 RM_EXPORT_API RMenum rmNodeSetTraversalMaskOpacity (RMnode *toModify,RMenum opacityTraversalMask); 457 RM_EXPORT_API RMenum rmNodeGetTraversalMaskOpacity (const RMnode *toQuery, RMenum *opacityTraversalMaskReturn); 458 RM_EXPORT_API RMenum rmNodeSetTraversalMaskDims (RMnode *n, RMenum dimsTraversalMask); 459 RM_EXPORT_API RMenum rmNodeGetTraversalMaskDims (RMnode *n, RMenum *dimsTraversalMaskReturn); 460 RM_EXPORT_API RMenum rmNodeSetTraversalMaskChannel(RMnode *toModify, RMenum newval); 461 RM_EXPORT_API RMenum rmNodeGetTraversalMaskChannel(const RMnode *toQuery, RMenum *channelTraversalMaskReturn); 462 463 /* rmnode.c: node transformations [17] */ 464 RM_EXPORT_API RMenum rmNodeSetTransformMode (RMnode *toModify, RMenum newMode); 465 RM_EXPORT_API RMenum rmNodeGetTransformMode (const RMnode *toQuery); 466 RM_EXPORT_API RMenum rmNodeSetPreMatrix (RMnode *toModify, const RMmatrix *newMatrix); 467 RM_EXPORT_API RMenum rmNodeGetPreMatrix (const RMnode *toQuery, RMmatrix *matrixReturn); 468 RM_EXPORT_API RMenum rmNodeSetCenter (RMnode *toModify, const RMvertex3D *newVertex); 469 RM_EXPORT_API RMenum rmNodeGetCenter (const RMnode *toQuery, RMvertex3D *retVector); 470 RM_EXPORT_API RMenum rmNodeSetScaleMatrix (RMnode *toModify, const RMmatrix *newMatrix); 471 RM_EXPORT_API RMenum rmNodeGetScaleMatrix (const RMnode *toQuery, RMmatrix *matrixReturn); 472 RM_EXPORT_API RMenum rmNodeSetRotateMatrix (RMnode *toModify, const RMmatrix *newMatrix); 473 RM_EXPORT_API RMenum rmNodeGetRotateMatrix (const RMnode *toQuery, RMmatrix *matrixReturn); 474 RM_EXPORT_API RMenum rmNodeSetPostRotateScaleMatrix (RMnode *toModify, const RMmatrix *newMatrix); 475 RM_EXPORT_API RMenum rmNodeGetPostRotateScaleMatrix (const RMnode *toQuery, RMmatrix *matrixReturn); 476 RM_EXPORT_API RMenum rmNodeSetTranslateVector (RMnode *toModify, const RMvertex3D *newVector); 477 RM_EXPORT_API RMenum rmNodeGetTranslateVector (const RMnode *toQuery, RMvertex3D *returnVector); 478 RM_EXPORT_API RMenum rmNodeSetPostMatrix (RMnode *toModify, const RMmatrix *newMatrix); 479 RM_EXPORT_API RMenum rmNodeGetPostMatrix (const RMnode *toQuery, RMmatrix *matrixReturn); 480 RM_EXPORT_API RMenum rmNodeGetCompositeModelMatrix (RMnode *toQuery, RMmatrix *transformReturn); 481 482 /* rmnode.c: node callbacks [4] */ 483 RM_EXPORT_API RMenum rmNodeSetSwitchCallback (RMnode *toModify, int (*appFunc)(const RMnode *, const RMstate *)); 484 RM_EXPORT_API RMenum rmNodeSetPreTraversalCallback (RMnode *toModify, RMenum whichPass, int (*appFunc)(const RMnode *, const RMstate *)); 485 RM_EXPORT_API RMenum rmNodeSetPostTraversalCallback (RMnode *toModify, RMenum whichPass, int (*appFunc)(const RMnode *, const RMstate *)); 486 RM_EXPORT_API RMenum rmNodeSetRenderOrderCallback (RMnode *toModify, int (*appFunc)(const RMnode *, const RMstate *, int *orderIndices, int nChildren)); 487 488 /* rmnode.c: default view frustum callback */ 489 RM_EXPORT_API int rmNodeFrustumCullCallback(const RMnode *n, const RMstate *s); 490 491 /* rminit.c: init, epilogue [2] */ 492 RM_EXPORT_API void rmInit (void); 493 RM_EXPORT_API void rmFinish (void); 494 495 /* rmpick.c: picking [7] */ 496 RM_EXPORT_API RMpick *rmFramePick (RMpipe *renderPipe, RMnode *subTree, int xpick, int ypick); 497 RM_EXPORT_API int rmFramePickList (RMpipe *renderPipe, RMnode *subTree, int xpick, int ypick, RMpick **listReturn); 498 RM_EXPORT_API RMenum rmPickDelete (RMpick *toDelete); 499 RM_EXPORT_API RMnode *rmPickedNode (const RMpick *toQuery); 500 RM_EXPORT_API int rmPickedPrimitive (const RMpick *toQuery); 501 RM_EXPORT_API char *rmPickedNodeName (const RMpick *toQuery); 502 RM_EXPORT_API float rmPickedPrimitiveZval (const RMpick *toQuery); 503 504 /* rmprim.c: primitives [32] */ 505 RM_EXPORT_API RMprimitive *rmPrimitiveNew (RMenum primType); 506 RM_EXPORT_API void rmPrimitiveDelete (RMprimitive *toDelete); 507 RM_EXPORT_API RMenum rmPrimitiveSetRenderFunc (RMprimitive *toModify, void (*drawFunc) OGLPRIMPARMLIST() ); 508 RM_EXPORT_API void *rmPrimitiveGetRenderFunc (const RMprimitive *toQuery); 509 RM_EXPORT_API RMenum rmPrimitiveSetModelFlag (RMprimitive *toModify, int newVal); 510 RM_EXPORT_API int rmPrimitiveGetModelFlag (const RMprimitive *toQuery); 511 RM_EXPORT_API RMenum rmPrimitiveSetBoundingBox(RMprimitive *p, const RMvertex3D *bmin, const RMvertex3D *bmax); 512 RM_EXPORT_API RMenum rmPrimitiveGetBoundingBox(const RMprimitive *p, RMvertex3D *bmin, RMvertex3D *bmax); 513 RM_EXPORT_API RMenum rmPrimitiveComputeBoundingBox (RMprimitive *p); 514 515 RM_EXPORT_API RMenum rmPrimitiveGetType (const RMprimitive *toQuery); 516 RM_EXPORT_API RMenum rmPrimitiveSetClientData (RMprimitive *toModify, void *clientData, void (*cdFreeFunc)(RMprimitive *, void *)); 517 RM_EXPORT_API void *rmPrimitiveGetClientData (const RMprimitive *toQuery); 518 RM_EXPORT_API RMenum rmPrimitiveSetAppDisplayList(RMprimitive *toModify, GLuint displayListID); 519 RM_EXPORT_API RMenum rmPrimitiveSetVertex2D (RMprimitive *toModify, int nVertices, RMvertex2D *vertexData, RMenum copyEnum, void (*appFreeFunc)(void *)); 520 RM_EXPORT_API RMenum rmPrimitiveSetVertex3D (RMprimitive *toModify, int nVertices, RMvertex3D *vertexData, RMenum copyEnum, void (*appFreeFunc)(void *)); 521 RM_EXPORT_API RMenum rmPrimitiveSetColor3D (RMprimitive *toModify, int nColors, RMcolor3D *colorData, RMenum copyEnum, void (*appFreeFunc)(void *)); 522 RM_EXPORT_API RMenum rmPrimitiveSetColor4D (RMprimitive *toModify, int nColors, RMcolor4D *colorData, RMenum copyEnum, void (*appFreeFunc)(void *)); 523 RM_EXPORT_API RMenum rmPrimitiveSetRadii (RMprimitive *toModify, int nRadii, float *radii, RMenum copyEnum, void (*freeFunc)(void *)); 524 RM_EXPORT_API RMenum rmPrimitiveSetNormal3D (RMprimitive *toModify, int nNormals, RMvertex3D *normalsData, RMenum copyEnum, void (*freeFunc)(void *)); 525 RM_EXPORT_API RMenum rmPrimitiveSetTexcoord1D (RMprimitive *toModify, int nTexCoords, float *texCoordData, RMenum copyEnum, void (*appFreeFunc)(void *)); 526 RM_EXPORT_API RMenum rmPrimitiveSetTexcoord2D (RMprimitive *toModify, int nTexCoords, RMvertex2D *texCoordData, RMenum copyEnum, void (*appFreeFunc)(void *)); 527 RM_EXPORT_API RMenum rmPrimitiveSetTexcoord3D (RMprimitive *toModify, int nTexcoords, RMvertex3D *texCoordData, RMenum copyEnum, void (*appFreeFunc)(void *)); 528 RM_EXPORT_API RMenum rmPrimitiveSetTexcoord2D (RMprimitive *toModify, int nTexCoords, RMvertex2D *texCoordData, RMenum copyEnum, void (*appFreeFunc)(void *)); 529 RM_EXPORT_API RMenum rmPrimitiveSetTexcoord3D (RMprimitive *toModify, int nTexcoords, RMvertex3D *texCoordData, RMenum copyEnum, void (*appFreeFunc)(void *)); 530 RM_EXPORT_API RMenum rmPrimitiveSetMultiTexcoord1D (RMprimitive *toModify, int nTexCoords, float *texCoordData, RMenum copyEnum, void (*appFreeFunc)(void *), int textureUnitIndx); 531 RM_EXPORT_API RMenum rmPrimitiveSetMultiTexcoord2D (RMprimitive *toModify, int nTexCoords, RMvertex2D *texCoordData, RMenum copyEnum, void (*appFreeFunc)(void *), int textureUnitIndx); 532 RM_EXPORT_API RMenum rmPrimitiveSetMultiTexcoord3D (RMprimitive *toModify, int nTexcoords, RMvertex3D *texCoordData, RMenum copyEnum, void (*appFreeFunc)(void *), int textureUnitIndx); 533 RM_EXPORT_API RMenum rmPrimitiveSetIndices (RMprimitive *toModify, int numIndices, int *indicesArray, RMenum copyEnum, void (*appFreeFunc)(void *)); 534 RM_EXPORT_API RMenum rmPrimitiveSetSprites (RMprimitive *toModify, int nSprites, RMimage **spriteArray); 535 RM_EXPORT_API RMenum rmPrimitiveSetBitmaps (RMprimitive *toModify, int nBitmaps, RMbitmap **bmapArray); 536 RM_EXPORT_API RMenum rmPrimitiveSetQmeshDims (RMprimitive *toModify, int uSize, int vSize); 537 RM_EXPORT_API RMenum rmPrimitiveSetOmeshDims (RMprimitive *toModify, int isize, int jsize, int ksize); 538 RM_EXPORT_API RMenum rmPrimitiveSetOmeshMinMaxGrid (RMprimitive *toModify, const RMvertex3D *gridMin, const RMvertex3D *gridMax); 539 RM_EXPORT_API RMenum rmPrimitiveSetMarkerScale (RMprimitive *toModify, int npts, float *scales, RMenum copyEnum, void (*appFreeFunc)(void *)); 540 RM_EXPORT_API RMenum rmPrimitiveSetMarkerPrims (RMprimitive *toModify, int nMarkerPrims, RMinternalMarker2D **mArray); 541 RM_EXPORT_API RMenum rmPrimitiveSetEllipse2DRotate (RMprimitive *toModify, int nVals, float *rotationValues, RMenum copyEnum, void (*appFreeFunc)(void *)); 542 RM_EXPORT_API RMenum rmPrimitiveSetText (RMprimitive *toModify, int nStrings, char *strings[]); 543 RM_EXPORT_API RMenum rmPrimitiveSetDisplayListEnable (RMprimitive *toModify, RMenum newMode); 544 545 RM_EXPORT_API RMenum rmNodeAddPrimitive (RMnode *addTo, RMprimitive *src); 546 RM_EXPORT_API RMprimitive *rmNodeGetPrimitive (const RMnode *toQuery, int indx); 547 RM_EXPORT_API RMenum rmNodeSetClientData (RMnode *toModify, void *clientData, void (*cdFreeFunc)(RMnode *,void *)); 548 RM_EXPORT_API void *rmNodeGetClientData (const RMnode *toQuery); 549 550 /* rmrstate.c: render state interface [13] */ 551 RM_EXPORT_API RMstate *rmStateNew (void); 552 RM_EXPORT_API void rmStateDelete (RMstate *toDelete); 553 RM_EXPORT_API void rmStateCopy (const RMstate *src, RMstate *dst); 554 RM_EXPORT_API const RMmatrix *rmStateGetModelViewMatrix (const RMstate *toQuery); 555 RM_EXPORT_API const RMmatrix *rmStateGetProjectionMatrix (const RMstate *toQuery); 556 RM_EXPORT_API RMenum rmStateGetShader(const RMstate *toQuery); 557 RM_EXPORT_API RMenum rmStateGetPolygonDrawMode(const RMstate *toQuery, RMenum *whichFaceReturn, RMenum *drawModeReturn); 558 RM_EXPORT_API RMenum rmStateGetPolygonCullMode(const RMstate *toQuery, RMenum *cullModeReturn); 559 RM_EXPORT_API RMenum rmStateGetFrontFace(const RMstate *toQuery, RMenum *frontFaceReturn); 560 RM_EXPORT_API RMenum rmStateGetLineWidth(const RMstate *toQuery, RMenum *lineWidthReturn); 561 RM_EXPORT_API RMenum rmStateGetLineStyle(const RMstate *toQuery, RMenum *lineStyleReturn); 562 RM_EXPORT_API RMenum rmStateGetPointSize(const RMstate *toQuery, float *sizeReturn); 563 RM_EXPORT_API int rmStateGetFrameNumber(const RMstate *toQuery); 564 565 /* rmscene.c: node scene parameters [30] */ 566 RM_EXPORT_API RMenum rmNodeSetSceneBackgroundColor (RMnode *toModify, const RMcolor4D *newColor); 567 RM_EXPORT_API RMenum rmNodeGetSceneBackgroundColor (const RMnode *toQuery, RMcolor4D *returnColor); 568 RM_EXPORT_API RMenum rmNodeSetSceneBackgroundImage (RMnode *toModify, const RMimage *newImageTile); 569 RM_EXPORT_API RMenum rmNodeGetSceneBackgroundImage (const RMnode *toQuery, RMimage **returnImageTile); 570 RM_EXPORT_API RMenum rmNodeSetSceneCamera2D (RMnode *toModify, const RMcamera2D *newCamera); 571 RM_EXPORT_API RMenum rmNodeGetSceneCamera2D (const RMnode *toQuery, RMcamera2D **returnCamera); 572 RM_EXPORT_API RMenum rmNodeSetSceneCamera3D (RMnode *toModify, const RMcamera3D *newCamera); 573 RM_EXPORT_API RMenum rmNodeGetSceneCamera3D (const RMnode *toQuery, RMcamera3D **returnCamera); 574 RM_EXPORT_API RMenum rmNodeSetSceneClipPlane (RMnode *toModify, RMenum clipPlaneEnum, const RMclipPlane *newClipPlane); 575 RM_EXPORT_API RMenum rmNodeGetSceneClipPlane (const RMnode *toQuery, RMenum clipPlaneEnum, RMclipPlane **returnClipPlaneCopy); 576 RM_EXPORT_API RMenum rmNodeSetSceneDepthImage (RMnode *toModify, const RMimage *newDepthImage); 577 RM_EXPORT_API RMenum rmNodeGetSceneDepthImage (const RMnode *toQuery, RMimage **returnDepthImage); 578 RM_EXPORT_API RMenum rmNodeSetSceneDepthValue (RMnode *toModify, const float *newDepthValue); 579 RM_EXPORT_API RMenum rmNodeGetSceneDepthValue (const RMnode *toQuery, float *returnDepthValue); 580 RM_EXPORT_API RMenum rmNodeSetSceneFog (RMnode *toModify, const RMfog *newFog); 581 RM_EXPORT_API RMenum rmNodeGetSceneFog (const RMnode *toQuery, RMfog **returnFog); 582 RM_EXPORT_API RMenum rmNodeSetSceneLight (RMnode *toModify, RMenum whichLightEnum, const RMlight *newLight); 583 RM_EXPORT_API RMenum rmNodeGetSceneLight (const RMnode *toQuery, RMenum whichLightEnum, RMlight **returnLightCopy); 584 RM_EXPORT_API RMenum rmNodeSetSceneLightModel (RMnode *toQuery, const RMlightModel *newLightModel); 585 RM_EXPORT_API RMenum rmNodeGetSceneLightModel (const RMnode *toQuery, RMlightModel **retLightModel); 586 RM_EXPORT_API RMenum rmNodeGetSceneMultiTexture (const RMnode *n, int textureUnitIndx, RMtexture **t); 587 RM_EXPORT_API RMenum rmNodeSetSceneMultiTexture (RMnode *n, RMtexture *t, int textureUnit); 588 589 RM_EXPORT_API RMtextProps *rmTextPropsNew (void); 590 RM_EXPORT_API RMenum rmTextPropsDelete (RMtextProps *t); 591 RM_EXPORT_API RMenum rmNodeSetSceneTextProps (RMnode *toModify, const RMtextProps *newTextProps); 592 RM_EXPORT_API RMenum rmNodeGetSceneTextProps (const RMnode *toQuery, RMtextProps **returnTextProps); 593 RM_EXPORT_API RMenum rmNodeSetSceneTexture (RMnode *toModify, RMtexture *newTexture); 594 RM_EXPORT_API RMenum rmNodeGetSceneTexture (const RMnode *toQuery, RMtexture **returnTexture); 595 RM_EXPORT_API RMenum rmNodeSetSceneViewport (RMnode *toModify, const float *newViewport); 596 RM_EXPORT_API RMenum rmNodeGetSceneViewport (const RMnode *toQuery, float **returnViewport); 597 598 /* rmstats.c: scene graph statistics [4] */ 599 RM_EXPORT_API RMenum rmStatsComputeDemography (RMnode *r); 600 RM_EXPORT_API RMenum rmStatsPrint(void); 601 RM_EXPORT_API RMenum rmStatsEndTime(void); 602 RM_EXPORT_API RMenum rmStatsStartTime(void); 603 604 605 /* rmtext.c: text properties [2] */ 606 RM_EXPORT_API RMenum rmTextPropsSetAttribs (RMtextProps *toModify, int fontEnum, int sizeEnum, RMenum boldEnum, RMenum italicEnum, RMenum hJustifyEnum, RMenum vJustifyEnum); 607 RM_EXPORT_API RMenum rmTextPropsGetAttribs (const RMtextProps *toQuery, int *fontEnumReturn, int *sizeEnumReturn, RMenum *boldEnumReturn, RMenum *italicEnumReturn, RMenum *hJustifyReturn, RMenum *vJustifyReturn); 608 /* rmxtext.c: text computation [1] */ 609 RM_EXPORT_API RMenum rmTextGetExtents (const char *string, int fontEnum, int sizeEnum, RMenum boldEnum, RMenum italicEnum, int *widthReturn, int *heightReturn, const RMpipe *renderPipe); 610 611 /* rmtime.c: time routines [7] */ 612 RM_EXPORT_API RMtime *rmTimeNew(void); 613 RM_EXPORT_API RMenum rmTimeDelete(RMtime *toDelete); 614 RM_EXPORT_API RMenum rmTimeCurrent(RMtime *returnVal); 615 RM_EXPORT_API RMenum rmTimeDifference(const RMtime *startTime, const RMtime *endTime, RMtime *diffTime); 616 RM_EXPORT_API double rmTimeDifferenceMS(const RMtime *startTime, const RMtime *endTime); 617 RM_EXPORT_API RMenum rmTimeSet(RMtime *toModify, long secs, long usecs); 618 RM_EXPORT_API RMenum rmTimeGet(const RMtime *toQuery, long *returnSecs, long *returnUSecs); 619 RM_EXPORT_API RMenum rmTimeSleep(const RMtime *tSleep); 620 RM_EXPORT_API RMenum rmTimeEncodeMS(RMtime *result, double ms); 621 RM_EXPORT_API RMenum rmTimeDecodeMS(const RMtime *src, double *resultMS); 622 623 /* rmtxture.c: texturing routines [14] */ 624 RM_EXPORT_API RMtexture *rmTextureNew (int ntdims); 625 RM_EXPORT_API RMenum rmTextureDelete (RMtexture *toDelete, RMenum deleteImagesBool); 626 RM_EXPORT_API RMenum rmTextureSetImages (RMtexture *toModify, RMimage **imageArray, int nimages, int borderWidth); 627 RM_EXPORT_API RMenum rmTextureGetImages (const RMtexture *toQuery, RMimage ***imageArray, int *nimages, int *borderWidth); 628 RM_EXPORT_API RMenum rmTextureSetFilterMode (RMtexture *toModify, GLenum minMode, GLenum magMode); 629 RM_EXPORT_API RMenum rmTextureGetFilterMode (const RMtexture *toQuery, GLenum *minModeReturn, GLenum *magModeReturn); 630 RM_EXPORT_API RMenum rmTextureSetWrapMode (RMtexture *toModify, GLenum wrapMode); 631 RM_EXPORT_API RMenum rmTextureGetWrapMode (const RMtexture *toQuery, GLenum *wrapModeReturn); 632 RM_EXPORT_API RMenum rmTextureSetEnv (RMtexture *toModify, GLenum envMode, const RMcolor4D *blendColor); 633 RM_EXPORT_API RMenum rmTextureGetEnv (const RMtexture *toQuery, GLenum *envModeReturn, RMcolor4D *blendColorReturn); 634 RM_EXPORT_API RMenum rmTextureSetGLTexelFormat (RMtexture *toModify, GLenum internalTexelFormat); 635 RM_EXPORT_API RMenum rmTextureGetGLTexelFormat (const RMtexture *toQuery, GLenum *returnTexelFormat); 636 RM_EXPORT_API RMenum rmTextureGetTextureID (const RMtexture *toQuery, GLuint *returnTextureID); 637 RM_EXPORT_API RMenum rmTextureSetTextureID (RMtexture *toModify, GLuint *textureID); 638 639 /* rmutil.c: various utilities [7] */ 640 RM_EXPORT_API int rmNearestPowerOfTwo (int n); 641 RM_EXPORT_API int rmIntMagnitude (int m); 642 RM_EXPORT_API void rmHSVtoRGB (float hue, float saturation, float value, float *redReturn, float *greenReturn, float *blueReturn); 643 RM_EXPORT_API void rmRGBtoHSV (float red, float green, float blue, float *hueReturn, float *saturationReturn, float *valueReturn); 644 RM_EXPORT_API RMenum rmUnionBoundingBoxes (const RMvertex3D *s1min, const RMvertex3D *s1max, const RMvertex3D *s2min, const RMvertex3D *s2max, RMvertex3D *dmin, RMvertex3D *dmax); 645 RM_EXPORT_API int rmGLGetError (const char *string); 646 RM_EXPORT_API int rmImageBuildMipmaps (const RMimage *src, RMimage ***mapsReturn, RMenum hardwareEnum, RMpipe *hwPipe); 647 648 /* rmx.c or rmw.c: buffer swap [1] */ 649 RM_EXPORT_API void rmSwapBuffers (RMpipe *p); 650 651 #ifdef __cplusplus 652 } 653 #endif 654 655 #endif /* _rmpublic_h */ 656 657 /* EOF */ 658