30 #if !(defined(JAVASCRIPT_STUB) || defined(JAVASCRIPT_DUK))
31 #include <system_threads.h>
35 #include <libFreeWRL.h>
40 #include "../vrml_parser/Structs.h"
41 #include "../main/headers.h"
42 #include "../main/ProdCon.h"
43 #include "../vrml_parser/CParseGeneral.h"
44 #include "../main/Snapshot.h"
45 #include "../scenegraph/LinearAlgebra.h"
46 #include "../scenegraph/Collision.h"
47 #include "../scenegraph/quaternion.h"
48 #include "../scenegraph/Viewer.h"
49 #include "../input/SensInterps.h"
50 #include "../x3d_parser/Bindable.h"
51 #include "../input/InputFunctions.h"
53 #include <system_js.h>
58 #include "jsVRMLClasses.h"
70 double MIN(
double a,
double b,
double c) {
72 if((a<b)&&(a<c))min=a;
else if((b<a)&&(b<c))min=b;
else min=c;
return min;
75 double MAX(
double a,
double b,
double c) {
77 if((a>b)&&(a>c))max=a;
else if((b>a)&&(b>c))max=b;
else max=c;
return max;
80 void convertRGBtoHSV(
double r,
double g,
double b,
double *h,
double *s,
double *v) {
81 double my_min, my_max, delta;
83 my_min = MIN( r, g, b );
84 my_max = MAX( r, g, b );
86 delta = my_max - my_min;
96 *h = ( g - b ) / delta;
97 else if( g == my_max )
98 *h = 2 + ( b - r ) / delta;
100 *h = 4 + ( r - g ) / delta;
105 void convertHSVtoRGB(
double h,
double s,
double v ,
double *r,
double *g,
double *b)
115 i = (int) floor( h );
118 q = v * ( 1 - s * f );
119 t = v * ( 1 - s * ( 1 - f ) );
121 case 0: *r = v; *g = t; *b = p;
break;
122 case 1: *r = q; *g = v; *b = p;
break;
123 case 2: *r = p; *g = v; *b = t;
break;
124 case 3: *r = p; *g = q; *b = v;
break;
125 case 4: *r = t; *g = p; *b = v;
break;
126 default: *r = v; *g = p; *b = q;
break;
132 SFColorGetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
134 SFColorGetHSV(JSContext *cx, uintN argc, jsval *vp) {
135 JSObject *obj = JS_THIS_OBJECT(cx,vp);
136 jsval *argv = JS_ARGV(cx,vp);
146 printf (
"SFColorGetHSV; arguments found but not expected\n");
151 if ((ptr = (
SFColorNative *)JS_GetPrivate(cx, obj)) == NULL) {
152 printf(
"JS_GetPrivate failed in SFColorToString.\n");
157 convertRGBtoHSV((ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2],&xp[0],&xp[1],&xp[2]);
159 #ifdef JSVRMLCLASSESVERBOSE
160 printf(
"hsv code, orig rgb is %.9g %.9g %.9g\n", (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
161 printf (
"hsv conversion is %lf %lf %lf\n",xp[0],xp[1],xp[2]);
164 result = JS_NewArrayObject(cx, 3, NULL);
165 ADD_ROOT(cx, result);
167 if (JS_NewNumberValue(cx, xp[i],&_v) == JS_FALSE) {
168 printf(
"JS_NewDouble failed for %f in SFColorGetHSV.\n", xp[i]);
171 JS_SetElement(cx, result, (jsint)i, &_v);
176 *rval = OBJECT_TO_JSVAL(result);
178 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(result));
185 SFColorSetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
187 SFColorSetHSV(JSContext *cx, uintN argc, jsval *vp) {
188 JSObject *obj = JS_THIS_OBJECT(cx,vp);
189 jsval *argv = JS_ARGV(cx,vp);
192 double hue, saturation, value;
193 double red,green,blue;
195 if ((ptr = (
SFColorNative *)JS_GetPrivate(cx, obj)) == NULL) {
196 printf(
"JS_GetPrivate failed in SFColorToString.\n");
199 if (!JS_ConvertArguments(cx, argc, argv,
"d d d", &hue, &saturation, &value)) {
200 printf(
"JS_ConvertArguments failed in SFColorSetHSV.\n");
205 #ifdef JSCLASSESVERBOSE
206 printf(
"hsv code, orig rgb is %.9g %.9g %.9g\n", (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
207 printf (
"SFColorSetHSV, have %lf %lf %lf\n",hue,saturation,value);
210 convertHSVtoRGB(hue,saturation,value, &red, &green, &blue);
211 ptr->v.c[0] = (float) red;
212 ptr->v.c[1] = (float) green;
213 ptr->v.c[2] = (float) blue;
214 ptr->valueChanged ++;
215 #ifdef JSCLASSESVERBOSE
216 printf(
"hsv code, now rgb is %.9g %.9g %.9g\n", (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
220 *rval = OBJECT_TO_JSVAL(obj);
222 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
230 SFColorToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
232 SFColorToString(JSContext *cx, uintN argc, jsval *vp) {
233 JSObject *obj = JS_THIS_OBJECT(cx,vp);
234 jsval *argv = JS_ARGV(cx,vp);
242 if ((ptr = (
SFColorNative *)JS_GetPrivate(cx, obj)) == NULL) {
243 printf(
"JS_GetPrivate failed in SFColorToString.\n");
247 memset(_buff, 0, STRING);
248 sprintf(_buff,
"%.9g %.9g %.9g",
249 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
250 _str = JS_NewStringCopyZ(cx, _buff);
252 *rval = STRING_TO_JSVAL(_str);
254 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
261 SFColorAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
263 SFColorAssign(JSContext *cx, uintN argc, jsval *vp) {
264 JSObject *obj = JS_THIS_OBJECT(cx,vp);
265 jsval *argv = JS_ARGV(cx,vp);
275 if ((ptr = (
SFColorNative *)JS_GetPrivate(cx, obj)) == NULL) {
276 printf(
"JS_GetPrivate failed for obj in SFColorAssign.\n");
281 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFColorClass)
284 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
286 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
287 _id_str = JS_EncodeString(cx,_id_jsstr);
290 printf(
"JS_ConvertArguments failed in SFColorAssign.\n");
294 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFColorClass)
296 if ((fptr = (
SFColorNative *)JS_GetPrivate(cx, _from_obj)) == NULL) {
297 printf(
"JS_GetPrivate failed for _from_obj in SFColorAssign.\n");
300 #ifdef JSVRMLCLASSESVERBOSE
301 printf(
"SFColorAssign: obj = %p, id = \"%s\", from = %p\n", obj, _id_str, _from_obj);
304 SFColorNativeAssign(ptr, fptr);
306 *rval = OBJECT_TO_JSVAL(obj);
308 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
316 SFColorConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
318 SFColorConstr(JSContext *cx, uintN argc, jsval *vp) {
319 JSObject *obj = JS_NewObject(cx,&SFColorClass,NULL,NULL);
320 jsval *argv = JS_ARGV(cx,vp);
328 printf(
"SFColorNativeNew failed in SFColorConstr.\n");
337 if (!JS_SetPrivate(cx, obj, ptr)) {
338 printf(
"JS_SetPrivate failed in SFColorConstr.\n");
343 (ptr->v).c[0] = (
float) 0.0;
344 (ptr->v).c[1] = (
float) 0.0;
345 (ptr->v).c[2] = (
float) 0.0;
346 }
else if (JS_ConvertArguments(cx, argc, argv,
"d d d", &(pars[0]), &(pars[1]), &(pars[2]))) {
347 (ptr->v).c[0] = (
float) pars[0];
348 (ptr->v).c[1] = (
float) pars[1];
349 (ptr->v).c[2] = (
float) pars[2];
351 printf(
"Invalid arguments for SFColorConstr.\n");
354 #ifdef JSVRMLCLASSESVERBOSE
355 printf(
"SFColorConstr: obj = %p args = %d, %f %f %f\n",
357 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
360 ptr->valueChanged = 1;
363 *rval = OBJECT_TO_JSVAL(obj);
365 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
374 SFColorGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
376 SFColorGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
381 #if JS_VERSION >= 185
383 if (!JS_IdToValue(cx,iid,&
id)) {
384 printf(
"JS_IdToValue failed in SFColorGetProperty.\n");
389 if ((ptr = (
SFColorNative *)JS_GetPrivate(cx, obj)) == NULL) {
390 printf(
"JS_GetPrivate failed in SFColorGetProperty.\n");
393 if (JSVAL_IS_INT(
id)) {
394 switch (JSVAL_TO_INT(
id)) {
397 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
399 "JS_NewDouble failed for %f in SFColorGetProperty.\n",
406 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
408 "JS_NewDouble failed for %f in SFColorGetProperty.\n",
415 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
417 "JS_NewDouble failed for %f in SFColorGetProperty.\n",
429 SFColorSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
431 SFColorSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp)
436 #if JS_VERSION >= 185
438 if (!JS_IdToValue(cx,iid,&
id)) {
439 printf(
"JS_IdToValue failed in SFColorSetProperty.\n");
444 if ((ptr = (
SFColorNative *)JS_GetPrivate(cx, obj)) == NULL) {
445 printf(
"JS_GetPrivate failed in SFColorSetProperty.\n");
449 #ifdef JSVRMLCLASSESVERBOSE
450 printf(
"SFColorSetProperty: obj = %p, id = %d, valueChanged = %d\n",
451 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
454 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &_val)) {
455 printf(
"JS_ConvertValue failed in SFColorSetProperty.\n");
459 if (JSVAL_IS_INT(
id)) {
460 switch (JSVAL_TO_INT(
id)) {
463 (ptr->v).c[0] = (
float) *JSVAL_TO_DOUBLE(_val);
465 (ptr->v).c[0] = (
float) JSVAL_TO_DOUBLE(_val);
470 (ptr->v).c[1] = (
float) *JSVAL_TO_DOUBLE(_val);
472 (ptr->v).c[1] = (
float) JSVAL_TO_DOUBLE(_val);
477 (ptr->v).c[2] = (
float) *JSVAL_TO_DOUBLE(_val);
479 (ptr->v).c[2] = (
float) JSVAL_TO_DOUBLE(_val);
491 SFColorRGBAGetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
493 SFColorRGBAGetHSV(JSContext *cx, uintN argc, jsval *vp) {
494 JSObject *obj = JS_THIS_OBJECT(cx,vp);
495 jsval *argv = JS_ARGV(cx,vp);
500 jsdouble hue = 0, saturation = 0, value = 0;
508 if ((_arrayObj = JS_NewArrayObject(cx, 0, NULL)) == NULL) {
509 printf(
"JS_NewArrayObject failed in SFColorRGBAGetHSV.\n");
514 JS_NewNumberValue(cx,hue,&_v);
515 if (!JS_SetElement(cx, _arrayObj, 0, &_v)) {
516 printf(
"JS_SetElement failed for hue in SFColorRGBAGetHSV.\n");
519 JS_NewNumberValue(cx,saturation,&_v);
520 if (!JS_SetElement(cx, _arrayObj, 1, &_v)) {
521 printf(
"JS_SetElement failed for saturation in SFColorRGBAGetHSV.\n");
524 JS_NewNumberValue(cx,value,&_v);
525 if (!JS_SetElement(cx, _arrayObj, 2, &_v)) {
526 printf(
"JS_SetElement failed for value in SFColorRGBAGetHSV.\n");
530 *rval = OBJECT_TO_JSVAL(_arrayObj);
532 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_arrayObj));
541 SFColorRGBASetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
543 SFColorRGBASetHSV(JSContext *cx, uintN argc, jsval *vp) {
544 JSObject *obj = JS_THIS_OBJECT(cx,vp);
545 jsval *argv = JS_ARGV(cx,vp);
549 jsdouble hue, saturation, value;
552 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
555 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
556 &hue, &saturation, &value)) {
557 printf(
"JS_ConvertArguments failed in SFColorRGBASetHSV.\n");
564 *rval = OBJECT_TO_JSVAL(obj);
566 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
574 SFColorRGBAToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
576 SFColorRGBAToString(JSContext *cx, uintN argc, jsval *vp) {
577 JSObject *obj = JS_THIS_OBJECT(cx,vp);
578 jsval *argv = JS_ARGV(cx,vp);
588 printf(
"JS_GetPrivate failed in SFColorRGBAToString.\n");
592 memset(_buff, 0, STRING);
593 sprintf(_buff,
"%.9g %.9g %.9g %.9g",
594 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2],(ptr->v).c[3]);
595 _str = JS_NewStringCopyZ(cx, _buff);
598 *rval = STRING_TO_JSVAL(_str);
600 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
608 SFColorRGBAAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
610 SFColorRGBAAssign(JSContext *cx, uintN argc, jsval *vp) {
611 JSObject *obj = JS_THIS_OBJECT(cx,vp);
612 jsval *argv = JS_ARGV(cx,vp);
624 printf(
"JS_GetPrivate failed for obj in SFColorRGBAAssign.\n");
628 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFColorRGBAClass)
631 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
633 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
634 _id_str = JS_EncodeString(cx,_id_jsstr);
637 printf(
"JS_ConvertArguments failed in SFColorRGBAAssign.\n");
641 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFColorRGBAClass)
644 printf(
"JS_GetPrivate failed for _from_obj in SFColorRGBAAssign.\n");
647 #ifdef JSVRMLCLASSESVERBOSE
648 printf(
"SFColorRGBAAssign: obj = %p, id = \"%s\", from = %p\n",
649 obj, _id_str, _from_obj);
652 SFColorRGBANativeAssign(ptr, fptr);
655 *rval = OBJECT_TO_JSVAL(obj);
657 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
665 SFColorRGBAConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
667 SFColorRGBAConstr(JSContext *cx, uintN argc, jsval *vp) {
668 JSObject *obj = JS_NewObject(cx,&SFColorRGBAClass,NULL,NULL);
669 jsval *argv = JS_ARGV(cx,vp);
678 printf(
"SFColorRGBANativeNew failed in SFColorConstr.\n");
687 if (!JS_SetPrivate(cx, obj, ptr)) {
688 printf(
"JS_SetPrivate failed in SFColorRGBAConstr.\n");
693 (ptr->v).c[0] = (
float) 0.0;
694 (ptr->v).c[1] = (
float) 0.0;
695 (ptr->v).c[2] = (
float) 0.0;
696 (ptr->v).c[3] = (
float) 0.0;
697 }
else if (JS_ConvertArguments(cx, argc, argv,
"d d d d",
698 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
699 (ptr->v).c[0] = (
float) pars[0];
700 (ptr->v).c[1] = (
float) pars[1];
701 (ptr->v).c[2] = (
float) pars[2];
702 (ptr->v).c[3] = (
float) pars[3];
704 printf(
"Invalid arguments for SFColorRGBAConstr.\n");
709 ptr->valueChanged = 1;
711 #ifdef JSVRMLCLASSESVERBOSE
712 printf(
"SFColorRGBAConstr: obj = %p %u args, %f %f %f %f\n",
714 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2],(ptr->v).c[3]);
717 *rval = OBJECT_TO_JSVAL(obj);
719 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
727 SFColorRGBAGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
729 SFColorRGBAGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
734 #if JS_VERSION >= 185
736 if (!JS_IdToValue(cx,iid,&
id)) {
737 printf(
"JS_IdToValue failed in SFColorRGBAGetProperty.\n");
743 printf(
"JS_GetPrivate failed in SFColorRGBAGetProperty.\n");
746 if (JSVAL_IS_INT(
id)) {
747 switch (JSVAL_TO_INT(
id)) {
750 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
752 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
759 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
761 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
768 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
770 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
777 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
779 "JS_NewDouble failed for %f in SFColorRGBAGetProperty.\n",
791 SFColorRGBASetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
793 SFColorRGBASetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp)
798 #if JS_VERSION >= 185
800 if (!JS_IdToValue(cx,iid,&
id)) {
801 printf(
"JS_IdToValue failed in SFColorRGBASetProperty.\n");
807 printf(
"JS_GetPrivate failed in SFColorRGBASetProperty.\n");
811 #ifdef JSVRMLCLASSESVERBOSE
812 printf(
"SFColorRGBASetProperty: obj = %p, id = %d, valueChanged = %d\n",
813 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
816 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &_val)) {
817 printf(
"JS_ConvertValue failed in SFColorRGBASetProperty.\n");
821 if (JSVAL_IS_INT(
id)) {
822 switch (JSVAL_TO_INT(
id)) {
825 (ptr->v).c[0] = (
float) *JSVAL_TO_DOUBLE(_val);
827 (ptr->v).c[0] = (
float) JSVAL_TO_DOUBLE(_val);
832 (ptr->v).c[1] = (
float) *JSVAL_TO_DOUBLE(_val);
834 (ptr->v).c[1] = (
float) JSVAL_TO_DOUBLE(_val);
839 (ptr->v).c[2] = (
float) *JSVAL_TO_DOUBLE(_val);
841 (ptr->v).c[2] = (
float) JSVAL_TO_DOUBLE(_val);
846 (ptr->v).c[3] = (
float) *JSVAL_TO_DOUBLE(_val);
848 (ptr->v).c[3] = (
float) JSVAL_TO_DOUBLE(_val);
859 SFImageToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
861 SFImageToString(JSContext *cx, uintN argc, jsval *vp) {
862 JSObject *obj = JS_THIS_OBJECT(cx,vp);
863 jsval *argv = JS_ARGV(cx,vp);
868 #ifdef JSVRMLCLASSESVERBOSE
869 printf(
"SFImageToString: obj = %p, %u args\n", obj, argc);
876 return doMFToString(cx, obj,
"SFImage", rval);
878 retval = doMFToString(cx, obj,
"SFImage", &rval);
879 JS_SET_RVAL(cx,vp,rval);
886 SFImageAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
888 SFImageAssign(JSContext *cx, uintN argc, jsval *vp) {
889 JSObject *obj = JS_THIS_OBJECT(cx,vp);
890 jsval *argv = JS_ARGV(cx,vp);
895 #ifdef JSVRMLCLASSESVERBOSE
896 printf(
"SFImageAssign: obj = %p, %u args\n", obj, argc);
900 return _standardMFAssign (cx, obj, argc, argv, rval, &SFImageClass,FIELDTYPE_SFImage);
902 retval = _standardMFAssign (cx, obj, argc, argv, &rval, &SFImageClass,FIELDTYPE_SFImage);
903 JS_SET_RVAL(cx,vp,rval);
910 SFImageConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
912 SFImageConstr(JSContext *cx, uintN argc, jsval *vp) {
913 JSObject *obj = JS_NewObject(cx,&SFImageClass,NULL,NULL);
914 jsval *argv = JS_ARGV(cx,vp);
926 #ifdef JSVRMLCLASSESVERBOSE
927 printf(
"SFImageConstr: obj = %p, %u args\n", obj, argc);
932 printf(
"SFImageNativeNew failed in SFImageConstr.\n");
936 if (!JS_SetPrivate(cx, obj, ptr)) {
937 printf(
"JS_SetPrivate failed in SFImageConstr.\n");
941 ptr->valueChanged = 1;
952 mv = INT_TO_JSVAL(0);
953 for (i=0; i<4; i++) {
956 MFInt32Constr(cx, obj, 0, NULL, &mv);
966 MFInt32ConstrInternals(cx, obj, 0, NULL, &mv);
969 if (!JS_DefineElement(cx, obj, (jsint) i, mv, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB6, JSPROP_ENUMERATE)) {
970 printf(
"JS_DefineElement failed for arg %d in SFImageConstr.\n", i);
974 DEFINE_LENGTH(cx,obj,4)
975 #if JS_VERSION >= 185
977 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
983 if ((argc != 4) && (argc != 3)) {
984 printf (
"SFImageConstr, expect 4 parameters, got %d\n",argc);
989 DEFINE_LENGTH(cx,obj,argc)
992 for (i=0; i<3; i++) {
994 if (JSVAL_IS_INT(argv[i])) {
996 param[i] = JSVAL_TO_INT(argv[i]);
999 printf (
"SFImageConstr: parameter %d is not a number\n",i);
1004 expectedSize = param[0] * param[1];
1008 if ((param[2]<0) || (param[2]>4)) {
1010 printf (
"SFImageConstr: with size > 0, comp must be between 1 and 4 inclusive, got %d\n",param[2]);
1015 if ((expectedSize == 0) && (param[2] != 0)) {
1016 printf (
"SFImageConstr: with x and y equal to zero, comp must be zero\n");
1020 if ((expectedSize != 0) && (param[2] == 0)) {
1021 printf (
"SFImageConstr: with x and y not zero, comp must be non-zero\n");
1029 #ifdef JSVRMLCLASSESVERBOSE
1030 printJSNodeType(cx,JSVAL_TO_OBJECT(argv[3]));
1033 CHECK_CLASS(cx,JSVAL_TO_OBJECT(argv[3]),NULL,__FUNCTION__,MFInt32Class)
1034 if (!JS_GetProperty(cx, JSVAL_TO_OBJECT(argv[3]), MF_LENGTH_FIELD, &mv)) {
1035 printf(
"JS_GetProperty failed for MFInt32 length in SFImageConstr\n");
1038 if (expectedSize != JSVAL_TO_INT(mv)) {
1039 printf (
"SFImageConstr: expected %d elements in image data, got %d\n",expectedSize, JSVAL_TO_INT(mv));
1045 for (i=0; i<argc; i++) {
1046 if (!JS_DefineElement(cx, obj, (jsint) i, argv[i], JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB6, JSPROP_ENUMERATE)) {
1047 printf(
"JS_DefineElement failed for arg %d in SFImageConstr.\n", i);
1053 #if JS_VERSION < 185
1054 *rval = OBJECT_TO_JSVAL(obj);
1056 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1062 SFImageAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1063 return doMFAddProperty(cx, obj,
id, vp,
"SFImage");
1067 SFImageGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1068 return _standardMFGetProperty(cx, obj,
id, vp,
"_FreeWRL_Internal = 0", FIELDTYPE_SFImage);
1072 #if JS_VERSION < 185
1073 SFImageSetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp) {
1075 SFImageSetProperty(JSContext *cx, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1077 return doMFSetProperty(cx, obj,
id, vp, FIELDTYPE_SFImage);
1085 #if JS_VERSION < 185
1086 SFNodeToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1088 SFNodeToString(JSContext *cx, uintN argc, jsval *vp) {
1089 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1090 jsval *argv = JS_ARGV(cx,vp);
1092 jsval *rval = &rvalinst;
1098 #ifdef JSVRMLCLASSESVERBOSE
1099 printf (
"SFNODETOSTRING\n");
1101 if ((ptr = (
SFNodeNative *)JS_GetPrivate(cx, obj)) == NULL) {
1102 printf(
"JS_GetPrivate failed in SFNodeToString.\n");
1118 sprintf (tmpline,
"%ld",(
long int) ptr->handle);
1123 nv = strtod(tmpline,NULL);
1127 if (!JS_NewNumberValue(cx, nv, rval)) {
1128 ConsoleMessage (
"Conversion issue in SFNodeToString");
1133 #ifdef JSVRMLCLASSESVERBOSE
1134 printf (
"SFNodeToString, handle %p ",ptr->handle);
1135 printf (
"SFNodeToString, handle as unsignned %u ",(
unsigned int)ptr->handle);
1136 if (ptr->handle != NULL) {
1137 printf (
" (%s) ", stringNodeType (((
struct X3D_Node *)ptr->handle)->_nodeType));
1139 printf (
"string \"%s\"\n",ptr->X3DString);
1142 #if JS_VERSION >= 185
1143 JS_SET_RVAL(cx,vp,*rval);
1149 #if JS_VERSION < 185
1150 SFNodeAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1152 SFNodeAssign(JSContext *cx, uintN argc, jsval *vp) {
1153 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1154 jsval *argv = JS_ARGV(cx,vp);
1155 JSString *_id_jsstr;
1158 JSObject *_from_obj;
1166 #ifdef JSVRMLCLASSESVERBOSE
1167 printf (
"start of SFNodeAssign argc %d\n",argc);
1171 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFNodeClass)
1174 if ((ptr = (
SFNodeNative *)JS_GetPrivate(cx, obj)) == NULL) {
1175 printf(
"JS_GetPrivate failed for obj in SFNodeAssign.\n");
1180 #ifdef JSVRMLCLASSESVERBOSE
1181 printf (
"SFNodeAssign, we have %d and %d\n",(
int)argv[0], (
int)argv[1]);
1184 #if JS_VERSION < 185
1185 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
1187 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
1188 _id_str = JS_EncodeString(cx,_id_jsstr);
1191 printf(
"JS_ConvertArguments failed in SFNodeAssign.\n");
1194 if (_from_obj != NULL) {
1195 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFNodeClass)
1197 if ((fptr = (
SFNodeNative *)JS_GetPrivate(cx, _from_obj)) == NULL) {
1198 printf(
"JS_GetPrivate failed for _from_obj in SFNodeAssign.\n");
1201 #ifdef JSVRMLCLASSESVERBOSE
1202 printf(
"SFNodeAssign: obj = %p, id = \"%s\", from = %p\n",
1203 obj, _id_str, _from_obj);
1205 }
else { fptr = NULL; }
1208 if (!SFNodeNativeAssign(ptr, fptr)) {
1209 printf(
"SFNodeNativeAssign failed in SFNodeAssign.\n");
1213 #if JS_VERSION < 185
1214 *rval = OBJECT_TO_JSVAL(obj);
1216 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1219 #ifdef JSVRMLCLASSESVERBOSE
1220 printf (
"end of SFNodeAssign\n");
1228 #if JS_VERSION < 185
1229 SFNodeConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1231 SFNodeConstr(JSContext *cx, uintN argc, jsval *vp) {
1232 JSObject *obj = JS_NewObject(cx,&SFNodeClass,NULL,NULL);
1233 jsval *argv = JS_ARGV(cx,vp);
1275 #ifdef JSVRMLCLASSESVERBOSE
1276 printf (
"Start of SFNodeConstr argc %d object %p\n",argc,obj);
1282 cString = STRDUP(
"SFNodeConstr from argc eq 0");
1283 }
else if (argc == 1) {
1285 myStr = JS_ValueToString(cx, argv[0]);
1286 #if JS_VERSION < 185
1287 cString = JS_GetStringBytes(myStr);
1289 cString = JS_EncodeString(cx,myStr);
1291 #ifdef JSVRMLCLASSESVERBOSE
1292 printf (
"SFNodeConstr, argc =1l string %s\n",cString);
1296 if (JSVAL_IS_OBJECT(argv[0])) {
1298 #ifdef JSVRMLCLASSESVERBOSE
1299 printf (
"SFNodeConstr, cstring was an object\n");
1302 if ((oldPtr = (
SFNodeNative *)JS_GetPrivate(cx, JSVAL_TO_OBJECT(argv[0]))) == NULL) {
1303 #ifdef JSVRMLCLASSESVERBOSE
1304 printf(
"JS_GetPrivate failed in SFNodeConstr.\n");
1309 newHandle = oldPtr->handle;
1310 cString = STRDUP(oldPtr->X3DString);
1313 #ifdef JSVRMLCLASSESVERBOSE
1314 printf (
"SFNodeConstr, cstring was NOT an object\n");
1318 if (!((cString[0] >=
'A' && cString [0] <=
'Z')||(cString[0] >=
'a' && cString [0] <=
'z'))) {
1320 if (sscanf (cString,
"%p",&newHandle) != 1) {
1321 ConsoleMessage (
"expected pointer for Javascript SFNode constr, got :%s:",cString);
1323 #ifdef JSVRMLCLASSESVERBOSE
1324 printf (
"SFNodeConstr, expected pointer for Javascript SFNode constr, got :%s:\n",cString);
1326 printf (
"SFNodeConstr, got pointer for Javascript SFNode constr, :%p:\n",newHandle);
1335 res->whereToPlaceData = myGroup;
1336 res->ectx = myGroup;
1337 res->media_type = resm_vrml;
1338 res->parsed_request =
"From the EAI bootcamp of life ";
1339 res->offsetFromWhereToPlaceData = (int) offsetof (
struct X3D_Group, children);
1340 #ifdef JSVRMLCLASSESVERBOSE
1341 printf (
"SFNodeConstr, sending resource to parser\n");
1344 #ifdef JSVRMLCLASSESVERBOSE
1345 printf (
"SFNodeConstr, waiting on resource\n");
1349 #ifdef JSVRMLCLASSESVERBOSE
1350 printf (
"SFNodeConstr we have created %d nodes\n",myGroup->children.n);
1358 parser_process_res_VRML_X3D(res);
1359 newHandle = X3D_NODE(myGroup->children.p[0]);
1362 cString = STRDUP(
"node created in SFNodeConstr");
1365 }
else if (argc == 2) {
1368 #ifdef JSVRMLCLASSESVERBOSE
1369 printf (
"SFNodeConstr - have 2 arguments\n");
1372 if ((JSVAL_IS_STRING(argv[0])) && (JSVAL_IS_STRING(argv[1]))) {
1376 _idStr = JS_ValueToString(cx, argv[0]);
1377 #if JS_VERSION < 185
1378 _id_c = JS_GetStringBytes(_idStr);
1380 _id_c = JS_EncodeString(cx,_idStr);
1384 cString = STRDUP(_id_c);
1386 _idStr = JS_ValueToString(cx, argv[1]);
1387 #if JS_VERSION < 185
1388 _id_c = JS_GetStringBytes(_idStr);
1390 _id_c = JS_EncodeString(cx,_idStr);
1394 if (sscanf (_id_c,
"%p",&newHandle) != 1) {
1395 printf (
"SFNodeConstr - can not get handle from %s\n",_id_c);
1400 #ifdef JSVRMLCLASSESVERBOSE
1401 printf (
"string is :%s: new handle is %p\n",cString,newHandle);
1405 printf (
"SFNodeConstr - 2 args, expected 2 strings\n");
1411 printf(
"SFNodeConstr requires at least 1 string arg.\n");
1417 if ((newPtr = (
SFNodeNative *) SFNodeNativeNew()) == NULL) {
1418 printf(
"SFNodeNativeNew failed in SFNodeConstr.\n");
1427 if (!JS_SetPrivate(cx, obj, newPtr)) {
1428 printf(
"JS_SetPrivate failed in SFNodeConstr.\n");
1432 newPtr->handle = newHandle;
1433 newPtr->X3DString = (
char *)STRDUP(cString);
1435 if (!JS_DefineSFNodeSpecificProperties (cx, obj, newHandle)) {
1436 printf(
"JS_DefineSFNodeSpecificProperties failed in SFNodeConstr.\n");
1441 newPtr->valueChanged = 1;
1444 #ifdef JSVRMLCLASSESVERBOSE
1446 if (newHandle == NULL)
1447 printf(
"end of SFNodeConstr: created obj = %p, argc: %u mem ptr: %p (null pointer) text string: %s\n",
1448 obj, argc, newHandle, cString);
1450 printf(
"end of SFNodeConstr: created obj = %p, argc: %u mem ptr: %p (%s) text string: %s\n",
1451 obj, argc, newHandle, stringNodeType(newHandle->_nodeType),cString);
1455 #if JS_VERSION < 185
1456 *rval = OBJECT_TO_JSVAL(obj);
1458 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
1467 SFNodeFinalize(JSContext *cx, JSObject *obj)
1471 #ifdef JSVRMLCLASSESVERBOSE
1472 printf(
"SFNodeFinalize: obj = %p\n", obj);
1490 if ((ptr = (
SFNodeNative *)JS_GetPrivate(cx, obj)) == NULL) {
1494 FREE_IF_NZ (ptr->X3DString);
1499 #if JS_VERSION < 185
1500 SFNodeGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
1502 SFNodeGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
1514 #if JS_VERSION >= 185
1516 if (!JS_IdToValue(cx,iid,&
id)) {
1517 printf(
"JS_IdToValue failed in SFNodeGetProperty.\n");
1521 if (JSVAL_IS_INT(
id)) {
1522 printf(
"SFNode has no [index] property.\n");
1528 _idStr = JS_ValueToString(cx,
id);
1529 #if JS_VERSION < 185
1530 _id_c = JS_GetStringBytes(_idStr);
1532 _id_c = JS_EncodeString(cx,_idStr);
1534 #ifdef JSVRMLCLASSESVERBOSE
1535 printf (
"start of SFNodeGetProperty... id is %s\n",_id_c);
1539 if (strcmp (
"undefined",_id_c) == 0)
return JS_TRUE;
1542 if (strcmp (
"toString",_id_c) == 0)
return JS_TRUE;
1543 if (strcmp (
"assign",_id_c) == 0)
return JS_TRUE;
1546 if ((ptr = (
SFNodeNative *)JS_GetPrivate(cx, obj)) != NULL) {
1547 #ifdef JSVRMLCLASSESVERBOSE
1548 printf (
"SFNodeGetProperty, working on node %p, field %s\n",ptr->handle,_id_c);
1553 if( ptr->handle && ptr->handle->_nodeType== NODE_Script )
1559 myObj = X3D_SCRIPT(ptr->handle)->__scriptObj;
1561 ScriptControl = getScriptControlIndex(myObj->num);
1562 cx2 = (JSContext*)ScriptControl->cx;
1563 obj2 = (JSObject*)ScriptControl->glob;
1564 if (JS_GetProperty (cx2, obj2, _id_c, &rval)) {
1565 if (JSVAL_IS_NULL(rval)) {
1566 ConsoleMessage (
"Script - field :%s: does not exist",_id_c);
1575 JS_DefineSFNodeSpecificProperties (cx, obj, ptr->handle);
1578 if (JS_LookupProperty (cx, obj, _id_c, &rval)) {
1579 if (JSVAL_IS_NULL(rval)) {
1582 ConsoleMessage (
"SFNode - field :%s: does not exist",_id_c);
1587 #ifdef JSVRMLCLASSESVERBOSE
1588 printf (
"wondering about rval.. %d. it is a\n",(
int)rval);
1589 if (JSVAL_IS_INT(rval)) printf (
"IS AN INT\n");
1590 if (JSVAL_IS_OBJECT(rval)) printf (
"IS AN OBJECT\n");
1591 if (JSVAL_IS_STRING(rval)) printf (
"IS AN STRING\n");
1592 if (rval == JSVAL_FALSE) printf (
"FALSE\n");
1593 if (rval == JSVAL_NULL) printf (
"NULL\n");
1594 if (rval == JSVAL_ONE) printf (
"ONE\n");
1595 if (rval == JSVAL_ZERO) printf (
"ZERO\n");
1596 if (rval == JSVAL_VOID) printf (
"VOID\n");
1597 if (rval == JSVAL_TRUE) printf (
"TRUE\n");
1605 #ifdef JSVRMLCLASSESVERBOSE
1606 printf (
"SFNodeGetProperty, found field \"%s\" in node, returning property\n",_id_c);
1611 #ifdef JSVRMLCLASSESVERBOSE
1612 printf (
"SFNodeGetProperty, did not find field \"%s\" in node.\n",_id_c);
1617 printf (
"could not get private for SFNodeGetProperty, field :%s:\n",_id_c);
1624 void Parser_scanStringValueToMem_B(
union anyVrml* any, indexT ctype,
const char *value,
int isXML);
1627 #if JS_VERSION < 185
1628 SFNodeSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
1630 SFNodeSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp)
1633 JSString *_idStr, *_valStr;
1634 char *_id_c, *_val_c;
1638 #if JS_VERSION >= 185
1640 if (!JS_IdToValue(cx,iid,&
id)) {
1641 printf(
"JS_IdToValue failed in SFNodeSetProperty.\n");
1651 _idStr = JS_ValueToString(cx,
id);
1652 _valStr = JS_ValueToString(cx, *vp);
1653 #if JS_VERSION < 185
1654 _id_c = JS_GetStringBytes(_idStr);
1655 _val_c = JS_GetStringBytes(_valStr);
1657 _id_c = JS_EncodeString(cx,_idStr);
1658 _val_c = JS_EncodeString(cx,_valStr);
1662 #ifdef JSVRMLCLASSESVERBOSE
1663 printf(
"SFNodeSetProperty: obj = %p, id = %s, vp = %s\n",
1664 obj, _id_c, _val_c);
1668 if ((ptr = (
SFNodeNative *)JS_GetPrivate(cx, obj)) == NULL) {
1669 printf(
"JS_GetPrivate failed in SFNodeSetProperty.\n");
1673 if (JSVAL_IS_INT(
id)) {
1678 ptr->valueChanged++;
1679 val_len = (int) strlen(_val_c) + 1;
1681 #ifdef JSVRMLCLASSESVERBOSE
1682 printf (
"switching on %d\n",JSVAL_TO_INT(
id));
1685 switch (JSVAL_TO_INT(
id)) {
1687 if ((strlen(ptr->X3DString) + 1) > val_len) {
1689 (
char *) REALLOC (ptr->X3DString, val_len *
sizeof(
char));
1691 memset(ptr->X3DString, 0, val_len);
1692 memmove(ptr->X3DString, _val_c, val_len);
1695 scanUnsignedIntoValue(_val_c,&tmp);
1696 ptr->handle = X3D_NODE(tmp);
1701 #ifdef JSVRMLCLASSESVERBOSE
1702 printf (
"JS_IS_INT false\n");
1704 printf (
"SFNodeSetProperty, setting node %p field %s to value %s\n", ptr->handle,_id_c,_val_c);
1708 ptx = X3D_NODE(ptr->handle);
1709 printf (
"node is of type %s\n",stringNodeType(ptx->_nodeType));
1714 if( ptr->handle->_nodeType== NODE_Script )
1721 char scriptline[100];
1722 JSObject *eventInFunction;
1733 myObj = X3D_SCRIPT(ptr->handle)->__scriptObj;
1735 ScriptControl = getScriptControlIndex(myObj->num);
1736 if ((!ScriptControl->_initialized) || (!ScriptControl->scriptOK)) {
1742 cx2 = (JSContext*)ScriptControl->cx;
1743 obj2 = (JSObject*)ScriptControl->glob;
1748 #if defined(JS_THREADSAFE)
1749 JS_BeginRequest(cx);
1755 JS_NewNumberValue(cx2, TickTime(), &zimbo);
1756 if (!JS_DefineProperty(cx2,obj2,
"__eventInTickTime", zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) {
1757 printf(
"JS_DefineProperty failed for __eventInTickTime at %s:%d.\n",__FILE__,__LINE__);
1764 myfield = script_getField_viaCharName(myObj, _id_c);
1850 sprintf (scriptline,
"__eventIn_Value_%s", _id_c);
1851 #ifdef JSVRMLCLASSESVERBOSE
1852 printf (
"set_one_ECMAtype, calling JS_DefineProperty on name %s obj %u, setting setECMANative, 0 \n",scriptline,obj2);
1855 if (!JS_DefineProperty(cx2,obj2, scriptline, newval, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB3, JSPROP_PERMANENT)) {
1856 printf(
"JS_DefineProperty failed for SFNodeSetProperty at %s:%d.\n",__FILE__,__LINE__);
1857 #if defined(JS_THREADSAFE)
1864 JSparamnames = getJSparamnames();
1865 eventInFunction = JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction;
1866 if ( eventInFunction == NULL) {
1867 sprintf (scriptline,
"%s(__eventIn_Value_%s,__eventInTickTime)", _id_c, _id_c);
1869 eventInFunction = JS_CompileScript(cx2, obj2, scriptline, strlen(scriptline),
"compile eventIn",1);
1872 JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction = eventInFunction;
1873 #if JS_VERSION >= 185
1874 if (!JS_AddObjectRoot(cx,(JSSCRIPT**)(&JSparamnames[myfield->fieldDecl->JSparamNameIndex].eventInFunction))) {
1875 printf(
"JS_AddObjectRoot failed for compilation of script \"%s\" at %s:%d.\n",scriptline,__FILE__,__LINE__);
1885 if (!JS_ExecuteScript(cx2, obj2, eventInFunction, &zimbo))
1887 printf (
"failed to set parameter for eventIn %s in FreeWRL code %s:%d\n",_id_c,__FILE__,__LINE__); \
1893 #if defined(JS_THREADSAFE)
1901 if(0)
if( ptr->handle->_nodeType== NODE_Script )
1908 script = X3D_SCRIPT(ptr->handle)->__scriptObj;
1910 ScriptControl = getScriptControlIndex(script->num);
1911 if ((!ScriptControl->_initialized) || (!ScriptControl->scriptOK)) {
1915 myfield = script_getField_viaCharName(script, _id_c);
1916 if(!myfield)
return JS_FALSE;
1917 itype = ScriptFieldDecl_getType(myfield);
1918 kind = ScriptFieldDecl_getMode(myfield);
1919 Parser_scanStringValueToMem_B(&myfield->value, itype, _val_c, FALSE);
1920 if(kind == PKW_inputOnly || kind == PKW_inputOutput)
1921 myfield->eventInSet = TRUE;
1922 if(kind == PKW_inputOutput || kind == PKW_outputOnly)
1923 myfield->valueChanged = TRUE;
1927 setField_fromJavascript (X3D_NODE(ptr->handle), _id_c, _val_c, FALSE);
1937 #if JS_VERSION < 185
1938 SFRotationGetAxis(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1940 SFRotationGetAxis(JSContext *cx, uintN argc, jsval *vp) {
1941 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1942 jsval *argv = JS_ARGV(cx,vp);
1950 #ifdef JSVRMLCLASSESVERBOSE
1951 printf (
"start of SFRotationGetAxis\n");
1954 if ((_retObj = JS_ConstructObject(cx, &SFVec3fClass, NULL, NULL)) == NULL) {
1955 printf(
"JS_ConstructObject failed in SFRotationGetAxis.\n");
1959 #if JS_VERSION < 185
1960 *rval = OBJECT_TO_JSVAL(_retObj);
1962 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
1966 printf(
"JS_GetPrivate failed for obj in SFRotationGetAxis.\n");
1970 if ((_retNative = (
SFVec3fNative *)JS_GetPrivate(cx, _retObj)) == NULL) {
1971 printf(
"JS_GetPrivate failed for _retObj in SFRotationGetAxis.\n");
1975 (_retNative->v).c[0] = (_rot->v).c[0];
1976 (_retNative->v).c[1] = (_rot->v).c[1];
1977 (_retNative->v).c[2] = (_rot->v).c[2];
1979 #ifdef JSVRMLCLASSESVERBOSE
1980 printf(
"SFRotationGetAxis: obj = %p, result = [%.9g, %.9g, %.9g]\n",
1982 (_retNative->v).c[0],
1983 (_retNative->v).c[1],
1984 (_retNative->v).c[2]);
1991 #if JS_VERSION < 185
1992 SFRotationInverse(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
1994 SFRotationInverse(JSContext *cx, uintN argc, jsval *vp) {
1995 JSObject *obj = JS_THIS_OBJECT(cx,vp);
1996 jsval *argv = JS_ARGV(cx,vp);
1998 JSObject *_retObj, *_proto;
2005 #ifdef JSVRMLCLASSESVERBOSE
2006 printf (
"start of SFRotationInverse\n");
2009 if ((_proto = JS_GetPrototype(cx, obj)) == NULL) {
2010 printf(
"JS_GetPrototype failed in SFRotationInverse.\n");
2013 if ((_retObj = JS_ConstructObject(cx, &SFRotationClass, _proto, NULL)) == NULL) {
2014 printf(
"JS_ConstructObject failed in SFRotationInverse.\n");
2017 #if JS_VERSION < 185
2018 *rval = OBJECT_TO_JSVAL(_retObj);
2020 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2024 printf(
"JS_GetPrivate failed for obj in SFRotationInverse.\n");
2028 if ((_retNative = (
SFRotationNative *)JS_GetPrivate(cx, _retObj)) == NULL) {
2029 printf(
"JS_GetPrivate failed for _retObj in SFRotationInverse.\n");
2034 vrmlrot_to_quaternion(&q1, (
double) _rot->v.c[0],
2035 (
double) _rot->v.c[1], (
double) _rot->v.c[2], (
double) _rot->v.c[3]);
2038 quaternion_inverse(&qret,&q1);
2042 quaternion_to_vrmlrot(&qret, &a, &b, &c, &d);
2044 _retNative->v.c[0] = (float) a;
2045 _retNative->v.c[1] = (float) b;
2046 _retNative->v.c[2] = (float) c;
2047 _retNative->v.c[3] = (float) d;
2050 _retNative->valueChanged = 1;
2056 #if JS_VERSION < 185
2057 SFRotationMultiply(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2059 SFRotationMultiply(JSContext *cx, uintN argc, jsval *vp) {
2060 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2061 jsval *argv = JS_ARGV(cx,vp);
2066 JSObject *_multObj, *_proto, *_retObj;
2068 #ifdef JSVRMLCLASSESVERBOSE
2069 printf (
"start of SFRotationMultiply\n");
2072 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_multObj)) {
2073 printf(
"JS_ConvertArguments failed in SFRotationMultiply.\n");
2076 CHECK_CLASS(cx,_multObj,argv,__FUNCTION__,SFRotationClass)
2078 if ((_proto = JS_GetPrototype(cx, _multObj)) == NULL) {
2079 printf(
"JS_GetPrototype failed in SFRotationMultiply.\n");
2083 if ((_retObj = JS_ConstructObject(cx, &SFRotationClass, _proto, NULL)) == NULL) {
2084 printf(
"JS_ConstructObject failed in SFRotationMultiply.\n");
2089 #if JS_VERSION < 185
2090 *rval = OBJECT_TO_JSVAL(_retObj);
2092 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2096 printf(
"JS_GetPrivate failed for obj in SFRotationMultiply.\n");
2101 printf(
"JS_GetPrivate failed for _multObj in SFRotationMultiply.\n");
2105 if ((_retNative = (
SFRotationNative *)JS_GetPrivate(cx, _retObj)) == NULL) {
2106 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultiply.\n");
2111 vrmlrot_to_quaternion(&q1, (
double) _rot1->v.c[0],
2112 (
double) _rot1->v.c[1], (
double) _rot1->v.c[2], (
double) _rot1->v.c[3]);
2113 vrmlrot_to_quaternion(&q2, (
double) _rot2->v.c[0],
2114 (
double) _rot2->v.c[1], (
double) _rot2->v.c[2], (
double) _rot2->v.c[3]);
2117 quaternion_multiply(&qret,&q1,&q2);
2121 quaternion_to_vrmlrot(&qret, &a, &b, &c, &d);
2123 _retNative->v.c[0] = (float) a;
2124 _retNative->v.c[1] = (float) b;
2125 _retNative->v.c[2] = (float) c;
2126 _retNative->v.c[3] = (float) d;
2129 _retNative->valueChanged = 1;
2135 #if JS_VERSION < 185
2136 SFRotationMultVec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2138 SFRotationMultVec(JSContext *cx, uintN argc, jsval *vp) {
2139 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2140 jsval *argv = JS_ARGV(cx,vp);
2142 JSObject *_multObj, *_retObj, *_proto;
2151 #ifdef JSVRMLCLASSESVERBOSE
2152 printf (
"start of SFRotationMultiVec\n");
2155 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_multObj)) {
2156 printf(
"JS_ConvertArguments failed in SFRotationMultVec.\n");
2160 CHECK_CLASS(cx,_multObj,argv,__FUNCTION__,SFVec3fClass)
2162 if ((_proto = JS_GetPrototype(cx, _multObj)) == NULL) {
2163 printf(
"JS_GetPrototype failed in SFRotationMultVec.\n");
2167 if ((_retObj = JS_ConstructObject(cx, &SFVec3fClass, _proto, NULL)) == NULL) {
2168 printf(
"JS_ConstructObject failed in SFRotationMultVec.\n");
2172 #if JS_VERSION < 185
2173 *rval = OBJECT_TO_JSVAL(_retObj);
2175 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(_retObj));
2179 printf(
"JS_GetPrivate failed for obj in SFRotationMultVec.\n");
2182 COPY_SFVEC3F_TO_POINT_XYZ(r,_rot->v.c);
2183 angle = _rot->v.c[3];
2185 if ((_vec = (
SFVec3fNative *)JS_GetPrivate(cx, _multObj)) == NULL) {
2186 printf(
"JS_GetPrivate failed for_multObjin SFRotationMultVec.\n");
2189 COPY_SFVEC3F_TO_POINT_XYZ(v,_vec->v.c);
2190 if ((_retNative = (
SFVec3fNative *)JS_GetPrivate(cx, _retObj)) == NULL) {
2191 printf(
"JS_GetPrivate failed for _retObj in SFRotationMultVec.\n");
2198 s = (float) sin(angle);
2199 c = (float) cos(angle);
2201 VECSCALE(c1, 1.0 / rl);
2203 VECSCALE(c2, 1.0 / rl) ;
2204 _retNative->v.c[0] = (float) (v.x + s * c1.x + (1-c) * c2.x);
2205 _retNative->v.c[1] = (float) (v.y + s * c1.y + (1-c) * c2.y);
2206 _retNative->v.c[2] = (float) (v.z + s * c1.z + (1-c) * c2.z);
2212 #if JS_VERSION < 185
2213 SFRotationSetAxis(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2215 SFRotationSetAxis(JSContext *cx, uintN argc, jsval *vp) {
2216 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2217 jsval *argv = JS_ARGV(cx,vp);
2219 JSObject *_setAxisObj;
2223 #ifdef JSVRMLCLASSESVERBOSE
2224 printf (
"start of SFRotationSetAxis\n");
2227 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_setAxisObj)) {
2228 printf(
"JS_ConvertArguments failed in SFRotationSetAxis.\n");
2232 CHECK_CLASS(cx,_setAxisObj,argv,__FUNCTION__,SFVec3fClass)
2236 printf(
"JS_GetPrivate failed for obj in SFRotationSetAxis.\n");
2240 if ((_vec = (
SFVec3fNative *)JS_GetPrivate(cx, _setAxisObj)) == NULL) {
2241 printf(
"JS_GetPrivate failed for _retObj in SFRotationSetAxis.\n");
2245 (_rot->v).c[0] = (_vec->v).c[0];
2246 (_rot->v).c[1] = (_vec->v).c[1];
2247 (_rot->v).c[2] = (_vec->v).c[2];
2249 #if JS_VERSION < 185
2250 *rval = OBJECT_TO_JSVAL(obj);
2252 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
2255 #ifdef JSVRMLCLASSESVERBOSE
2256 printf(
"SFRotationSetAxis: obj = %p, result = [%.9g, %.9g, %.9g, %.9g]\n",
2268 #if JS_VERSION < 185
2269 SFRotationSlerp(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2271 SFRotationSlerp(JSContext *cx, uintN argc, jsval *vp) {
2272 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2273 jsval *argv = JS_ARGV(cx,vp);
2275 jsval *rval = &rvalinst;
2277 JSObject *_destObj, *_retObj, *_proto;
2282 #ifdef JSVRMLCLASSESVERBOSE
2283 printf (
"start of SFRotationSlerp\n");
2285 if (!JS_ConvertArguments(cx, argc, argv,
"o d", &_destObj, &t)) {
2286 printf(
"JS_ConvertArguments failed in SFRotationSlerp.\n");
2290 CHECK_CLASS(cx,_destObj,argv,__FUNCTION__,SFRotationClass)
2301 *rval = OBJECT_TO_JSVAL(obj);
2302 }
else if (APPROX(t, 1)) {
2303 *rval = OBJECT_TO_JSVAL(_destObj);
2305 if ((_proto = JS_GetPrototype(cx, _destObj)) == NULL) {
2306 printf(
"JS_GetPrototype failed in SFRotationSlerp.\n");
2310 if ((_retObj = JS_ConstructObject(cx, &SFRotationClass, _proto, NULL)) == NULL) {
2311 printf(
"JS_ConstructObject failed in SFRotationSlerp.\n");
2315 *rval = OBJECT_TO_JSVAL(_retObj);
2318 printf(
"JS_GetPrivate failed for obj in SFRotationSlerp.\n");
2323 printf(
"JS_GetPrivate failed for _destObj in SFRotationSlerp.\n");
2328 printf(
"JS_GetPrivate failed for _retObj in SFRotationSlerp.\n");
2332 vrmlrot_to_quaternion(&_quat,
2338 vrmlrot_to_quaternion(&_quat_dest,
2344 quaternion_slerp(&_quat_ret, &_quat, &_quat_dest, t);
2345 quaternion_to_vrmlrot(&_quat_ret,
2346 (
double *) &(_ret->v).c[0],
2347 (
double *) &(_ret->v).c[1],
2348 (
double *) &(_ret->v).c[2],
2349 (
double *) &(_ret->v).c[3]);
2352 #if JS_VERSION >= 185
2353 JS_SET_RVAL(cx,vp,*rval);
2359 #if JS_VERSION < 185
2360 SFRotationToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2362 SFRotationToString(JSContext *cx, uintN argc, jsval *vp) {
2363 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2364 jsval *argv = JS_ARGV(cx,vp);
2372 #ifdef JSVRMLCLASSESVERBOSE
2373 printf (
"start of SFRotationToString\n");
2379 printf(
"JS_GetPrivate failed in SFRotationToString.\n");
2382 memset(buff, 0, STRING);
2383 sprintf(buff,
"%.9g %.9g %.9g %.9g",
2384 ptr->v.c[0], ptr->v.c[1], ptr->v.c[2], ptr->v.c[3]);
2385 _str = JS_NewStringCopyZ(cx, buff);
2387 #if JS_VERSION < 185
2388 *rval = STRING_TO_JSVAL(_str);
2390 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
2393 REMOVE_ROOT (cx,ptr)
2394 REMOVE_ROOT (cx,_str)
2399 #if JS_VERSION < 185
2400 SFRotationAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2402 SFRotationAssign(JSContext *cx, uintN argc, jsval *vp) {
2403 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2404 jsval *argv = JS_ARGV(cx,vp);
2405 JSString *_id_jsstr;
2407 JSObject *_from_obj;
2414 #ifdef JSVRMLCLASSESVERBOSE
2415 printf (
"start of SFRotationAssign\n");
2419 printf(
"JS_GetPrivate failed for obj in SFRotationAssign.\n");
2423 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFRotationClass)
2425 #if JS_VERSION < 185
2426 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
2428 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
2429 _id_str = JS_EncodeString(cx,_id_jsstr);
2432 printf(
"JS_ConvertArguments failed in SFRotationAssign.\n");
2437 if (_from_obj == NULL) {
2438 printf (
"we have an assignment to null in SFRotationAssign\n");
2439 #if JS_VERSION < 185
2442 JS_SET_RVAL(cx,vp,JSVAL_VOID);
2447 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFRotationClass)
2450 printf(
"JS_GetPrivate failed for _from_obj in SFRotationAssign.\n");
2453 #ifdef JSVRMLCLASSESVERBOSE
2454 printf(
"SFRotationAssign: obj = %p, id = \"%s\", from = %p\n",
2455 obj, _id_str, _from_obj);
2458 SFRotationNativeAssign(ptr, fptr);
2459 #if JS_VERSION < 185
2460 *rval = OBJECT_TO_JSVAL(obj);
2462 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
2465 #ifdef JSVRMLCLASSESVERBOSE
2466 printf(
"SFRotationAssign: returning object as jsval\n");
2472 #if JS_VERSION < 185
2473 SFRotationConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2475 SFRotationConstr(JSContext *cx, uintN argc, jsval *vp) {
2476 JSObject *obj = JS_NewObject(cx,&SFRotationClass,NULL,NULL);
2477 jsval *argv = JS_ARGV(cx,vp);
2483 JSObject *_ob1, *_ob2;
2491 #ifdef JSVRMLCLASSESVERBOSE
2492 printf (
"start of SFRotationConstr\n");
2497 printf(
"SFRotationNativeNew failed in SFRotationConstr.\n");
2506 if (!JS_SetPrivate(cx, obj, ptr)) {
2507 printf(
"JS_SetPrivate failed in SFRotationConstr.\n");
2512 (ptr->v).c[0] = (
float) 0.0; (ptr->v).c[1] = (
float) 0.0; (ptr->v).c[2] = (
float) 1.0; (ptr->v).c[3] = (
float) 0.0;
2514 }
else if (argc == 2) {
2516 if (JSVAL_IS_OBJECT(argv[0])) {
2518 _ob1 = JSVAL_TO_OBJECT(argv[0]);
2521 CHECK_CLASS(cx,_ob1,argv,__FUNCTION__,SFVec3fClass)
2523 if ((_vec = (
SFVec3fNative *)JS_GetPrivate(cx, _ob1)) == NULL) {
2524 printf(
"JS_GetPrivate failed for arg format \"o d\" in SFRotationConstr.\n");
2528 if (JSVAL_IS_OBJECT(argv[1])) {
2530 _ob2 = JSVAL_TO_OBJECT(argv[1]);
2534 CHECK_CLASS(cx,_ob2,argv,__FUNCTION__,SFVec3fClass)
2536 if ((_vec2 = (
SFVec3fNative *)JS_GetPrivate(cx, _ob2)) == NULL) {
2537 printf(
"JS_GetPrivate failed for _ob1 in SFRotationConstr.\n");
2542 if (!JSVAL_IS_NUMBER(argv[1])) {
2543 printf (
"SFRotationConstr param error - number expected\n");
2546 if (!JS_ValueToNumber(cx, argv[1], &doub)) {
2547 printf(
"JS_ValueToNumber failed in SFRotationConstr.\n");
2554 (ptr->v).c[0] = _vec->v.c[0];
2555 (ptr->v).c[1] = _vec->v.c[1];
2556 (ptr->v).c[2] = _vec->v.c[2];
2557 (ptr->v).c[3] = (float) doub;
2559 v1.x = _vec->v.c[0];
2560 v1.y = _vec->v.c[1];
2561 v1.z = _vec->v.c[2];
2562 v2.x = _vec2->v.c[0];
2563 v2.y = _vec2->v.c[1];
2564 v2.z = _vec2->v.c[2];
2566 v1len = veclength(v1);
2567 v2len = veclength(v2);
2568 v12dp = vecdot(&v1, &v2);
2569 (ptr->v).c[0] = (
float) (v1.y * v2.z - v2.y * v1.z);
2570 (ptr->v).c[1] = (
float) (v1.z * v2.x - v2.z * v1.x);
2571 (ptr->v).c[2] = (
float) (v1.x * v2.y - v2.x * v1.y);
2572 v12dp /= v1len * v2len;
2573 (ptr->v).c[3] = (
float) atan2(sqrt(1 - v12dp * v12dp), v12dp);
2575 }
else if (argc == 4 && JS_ConvertArguments(cx, argc, argv,
"d d d d",
2576 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
2577 (ptr->v).c[0] = (
float) pars[0];
2578 (ptr->v).c[1] = (
float) pars[1];
2579 (ptr->v).c[2] = (
float) pars[2];
2580 (ptr->v).c[3] = (
float) pars[3];
2582 printf(
"Invalid arguments for SFRotationConstr.\n");
2586 #ifdef JSVRMLCLASSESVERBOSE
2587 printf(
"SFRotationConstr: obj = %p, %u args, %f %f %f %f\n",
2589 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2], (ptr->v).c[3]);
2592 ptr->valueChanged = 1;
2594 #if JS_VERSION < 185
2595 *rval = OBJECT_TO_JSVAL(obj);
2597 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
2604 #if JS_VERSION < 185
2605 SFRotationGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
2607 SFRotationGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
2612 #if JS_VERSION >= 185
2614 if (!JS_IdToValue(cx,iid,&
id)) {
2615 printf(
"JS_IdToValue failed in SFRotationGetProperty.\n");
2620 #ifdef JSVRMLCLASSESVERBOSE
2621 printf (
"start of SFRotationGetProperty\n");
2625 printf(
"JS_GetPrivate failed in SFRotationGetProperty.\n");
2629 if (JSVAL_IS_INT(
id)) {
2630 switch (JSVAL_TO_INT(
id)) {
2633 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
2635 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
2642 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
2644 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
2651 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
2653 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
2660 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
2662 "JS_NewDouble failed for %f in SFRotationGetProperty.\n",
2673 #if JS_VERSION < 185
2674 SFRotationSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
2676 SFRotationSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp)
2681 #if JS_VERSION >= 185
2683 if (!JS_IdToValue(cx,iid,&
id)) {
2684 printf(
"JS_IdToValue failed in SFRotationSetProperty.\n");
2689 #ifdef JSVRMLCLASSESVERBOSE
2690 printf (
"start of SFRotationSetProperty\n");
2694 printf(
"JS_GetPrivate failed in SFRotationSetProperty.\n");
2697 ptr->valueChanged++;
2698 #ifdef JSVRMLCLASSESVERBOSE
2699 printf(
"SFRotationSetProperty: obj = %p, id = %d, valueChanged = %d\n",
2700 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
2703 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
2704 printf(
"JS_ConvertValue failed in SFRotationSetProperty.\n");
2708 if (JSVAL_IS_INT(
id)) {
2709 switch (JSVAL_TO_INT(
id)) {
2711 #if JS_VERSION < 185
2712 (ptr->v).c[0] = (
float) *JSVAL_TO_DOUBLE(myv);
2714 (ptr->v).c[0] = (
float) JSVAL_TO_DOUBLE(myv);
2718 #if JS_VERSION < 185
2719 (ptr->v).c[1] = (
float) *JSVAL_TO_DOUBLE(myv);
2721 (ptr->v).c[1] = (
float) JSVAL_TO_DOUBLE(myv);
2725 #if JS_VERSION < 185
2726 (ptr->v).c[2] = (
float) *JSVAL_TO_DOUBLE(myv);
2728 (ptr->v).c[2] = (
float) JSVAL_TO_DOUBLE(myv);
2732 #if JS_VERSION < 185
2733 (ptr->v).c[3] = (
float) *JSVAL_TO_DOUBLE(myv);
2735 (ptr->v).c[3] = (
float) JSVAL_TO_DOUBLE(myv);
2747 #define __2FDIVIDE 2
2751 #define __2FLENGTH 6
2752 #define __2FNORMALIZE 8
2753 JSBool SFVec2fGeneric( JSContext *cx, JSObject *obj,
2754 uintN argc, jsval *argv, jsval *rval,
int op) {
2756 JSObject *_paramObj, *_proto, *_retObj;
2767 int SFParam = FALSE;
2768 int numParam = FALSE;
2771 int retSFVec2f = FALSE;
2772 int retNumeric = FALSE;
2781 if ((op==__2FADD)||(op==__2FDOT)||(op==__2FSUBT))SFParam=TRUE;
2782 if ((op==__2FDIVIDE)||(op==__2FMULT))numParam=TRUE;
2785 if ((op==__2FDOT)||(op==__2FLENGTH)) retNumeric = TRUE;
2786 retSFVec2f = (!retNumeric);
2790 param_isString = JSVAL_IS_STRING (*argv);
2793 if ((SFParam) || (numParam)) {
2795 if (!JSVAL_IS_NUMBER(argv[0])) {
2796 printf (
"SFVec2f param error - number expected\n");
2799 if (!JS_ValueToNumber(cx, argv[0], &d)) {
2800 printf(
"JS_ValueToNumber failed in SFVec2f.\n");
2806 if (param_isString) {
2807 _str = JS_ValueToString(cx, *argv);
2808 #if JS_VERSION < 185
2809 charString = JS_GetStringBytes(_str);
2811 charString = JS_EncodeString(cx,_str);
2814 if (sscanf(charString,
"%lf %lf",
2815 &(pars[0]), &(pars[1])) != 2) {
2816 printf (
"conversion problem in SFVec2fGeneric\n");
2821 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
2822 printf(
"JS_ConvertArguments failed in SFVec2f.\n");
2826 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec2fClass)
2828 if ((_vec2 = (
SFVec2fNative*)JS_GetPrivate(cx, _paramObj)) == NULL) {
2829 printf(
"JS_GetPrivate failed for _paramObj in SFVec2f.\n");
2832 pars[0]= (_vec2->v).c[0];
2833 pars[1] = (_vec2->v).c[1];
2839 if ((_vec1 = (
SFVec2fNative*)JS_GetPrivate(cx, obj)) == NULL) {
2840 printf(
"JS_GetPrivate failed for obj in SFVec2fAdd.\n");
2848 d0 = (_vec1->v).c[0] + (_vec2->v).c[0];
2849 d1 = (_vec1->v).c[1] + (_vec2->v).c[1];
2852 d0 = (_vec1->v).c[0] / d;
2853 d1 = (_vec1->v).c[1] / d;
2856 d0 = (_vec1->v).c[0] * d;
2857 d1 = (_vec1->v).c[1] * d;
2860 d0 = (_vec1->v).c[0] - (_vec2->v).c[0];
2861 d1 = (_vec1->v).c[1] - (_vec2->v).c[1];
2864 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=0.0;
2865 v2.x = (_vec2->v).c[0]; v2.y=(_vec2->v).c[1];v2.z=0.0;
2866 d = vecdot (&v1, &v2);
2869 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=0.0;
2873 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=0.0;
2874 vecnormal(&v1, &v1);
2875 d0 = v1.x; d1 = v1.y;
2883 if ((_proto = JS_GetPrototype(cx, obj)) == NULL) {
2884 printf(
"JS_GetPrototype failed in SFVec2f.\n");
2888 JS_ConstructObject(cx, &SFVec2fClass, _proto, NULL)) == NULL) {
2889 printf(
"JS_ConstructObject failed in SFVec2f.\n");
2892 *rval = OBJECT_TO_JSVAL(_retObj);
2893 if ((_retNative = (
SFVec2fNative*)JS_GetPrivate(cx, _retObj)) == NULL) {
2894 printf(
"JS_GetPrivate failed for _retObj in SFVec2f.\n");
2897 (_retNative->v).c[0] = (
float) d0;
2898 (_retNative->v).c[1] = (
float) d1;
2899 }
else if (retNumeric) {
2900 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
2901 printf(
"JS_NewDouble failed for %f in SFVec2f.\n",d);
2906 #ifdef JSVRMLCLASSESVERBOSE
2908 printf(
"SFVec2fgeneric: obj = %p, result = [%.9g, %.9g]\n",
2910 (_retNative->v).c[0], (_retNative->v).c[1]);
2913 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
2922 #if JS_VERSION < 185
2923 SFVec2fAdd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2924 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FADD);
2926 SFVec2fAdd(JSContext *cx, uintN argc, jsval *vp) {
2927 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2928 jsval *argv = JS_ARGV(cx,vp);
2930 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FADD);
2931 JS_SET_RVAL(cx,vp,rval);
2937 #if JS_VERSION < 185
2938 SFVec2fDivide(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2939 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FDIVIDE);
2941 SFVec2fDivide(JSContext *cx, uintN argc, jsval *vp) {
2942 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2943 jsval *argv = JS_ARGV(cx,vp);
2945 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FDIVIDE);
2946 JS_SET_RVAL(cx,vp,rval);
2952 #if JS_VERSION < 185
2953 SFVec2fMultiply(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2954 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FMULT);
2956 SFVec2fMultiply(JSContext *cx, uintN argc, jsval *vp) {
2957 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2958 jsval *argv = JS_ARGV(cx,vp);
2960 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FMULT);
2961 JS_SET_RVAL(cx,vp,rval);
2967 #if JS_VERSION < 185
2968 SFVec2fSubtract(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2969 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FSUBT);
2971 SFVec2fSubtract(JSContext *cx, uintN argc, jsval *vp) {
2972 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2973 jsval *argv = JS_ARGV(cx,vp);
2975 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FSUBT);
2976 JS_SET_RVAL(cx,vp,rval);
2982 #if JS_VERSION < 185
2983 SFVec2fDot(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2984 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FDOT);
2986 SFVec2fDot(JSContext *cx, uintN argc, jsval *vp) {
2987 JSObject *obj = JS_THIS_OBJECT(cx,vp);
2988 jsval *argv = JS_ARGV(cx,vp);
2990 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FDOT);
2991 JS_SET_RVAL(cx,vp,rval);
2997 #if JS_VERSION < 185
2998 SFVec2fLength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
2999 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FLENGTH);
3001 SFVec2fLength(JSContext *cx, uintN argc, jsval *vp) {
3002 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3003 jsval *argv = JS_ARGV(cx,vp);
3005 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FLENGTH);
3006 JS_SET_RVAL(cx,vp,rval);
3012 #if JS_VERSION < 185
3013 SFVec2fNormalize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3014 return SFVec2fGeneric(cx, obj, argc, argv, rval, __2FNORMALIZE);
3016 SFVec2fNormalize(JSContext *cx, uintN argc, jsval *vp) {
3017 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3018 jsval *argv = JS_ARGV(cx,vp);
3020 JSBool retval = SFVec2fGeneric(cx, obj, argc, argv, &rval, __2FNORMALIZE);
3021 JS_SET_RVAL(cx,vp,rval);
3027 #if JS_VERSION < 185
3028 SFVec2fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3030 SFVec2fToString(JSContext *cx, uintN argc, jsval *vp) {
3031 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3032 jsval *argv = JS_ARGV(cx,vp);
3040 if ((ptr = (
SFVec2fNative*)JS_GetPrivate(cx, obj)) == NULL) {
3041 printf(
"JS_GetPrivate failed in SFVec2fToString.\n");
3045 memset(buff, 0, STRING);
3046 sprintf(buff,
"%.9g %.9g",
3047 (ptr->v).c[0], (ptr->v).c[1]);
3048 _str = JS_NewStringCopyZ(cx, buff);
3049 #if JS_VERSION < 185
3050 *rval = STRING_TO_JSVAL(_str);
3052 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
3059 #if JS_VERSION < 185
3060 SFVec2fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3062 SFVec2fAssign(JSContext *cx, uintN argc, jsval *vp) {
3063 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3064 jsval *argv = JS_ARGV(cx,vp);
3065 JSString *_id_jsstr;
3067 JSObject *_from_obj;
3074 if ((ptr = (
SFVec2fNative *)JS_GetPrivate(cx, obj)) == NULL) {
3075 printf(
"JS_GetPrivate failed for obj in SFVec2fAssign.\n");
3079 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec2fClass)
3081 #if JS_VERSION < 185
3082 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
3084 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
3085 _id_str = JS_EncodeString(cx,_id_jsstr);
3088 printf(
"JS_ConvertArguments failed in SFVec2fAssign.\n");
3092 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec2fClass)
3094 if ((fptr = (
SFVec2fNative *)JS_GetPrivate(cx, _from_obj)) == NULL) {
3095 printf(
"JS_GetPrivate failed for _from_obj in SFVec2fAssign.\n");
3098 #ifdef JSVRMLCLASSESVERBOSE
3099 printf(
"SFVec2fAssign: obj = %p, id = \"%s\", from = %p\n",
3100 obj, _id_str, _from_obj);
3103 SFVec2fNativeAssign(ptr, fptr);
3104 #if JS_VERSION < 185
3105 *rval = OBJECT_TO_JSVAL(obj);
3107 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3114 #if JS_VERSION < 185
3115 SFVec2fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3117 SFVec2fConstr(JSContext *cx, uintN argc, jsval *vp) {
3118 JSObject *obj = JS_NewObject(cx,&SFVec2fClass,NULL,NULL);
3119 jsval *argv = JS_ARGV(cx,vp);
3127 printf(
"SFVec2fNativeNew failed in SFVec2fConstr.\n");
3135 if (!JS_SetPrivate(cx, obj, ptr)) {
3136 printf(
"JS_SetPrivate failed in SFVec2fConstr.\n");
3141 (ptr->v).c[0] = (
float) 0.0;
3142 (ptr->v).c[1] = (
float) 0.0;
3144 if (!JS_ConvertArguments(cx, argc, argv,
"d d", &(pars[0]), &(pars[1]))) {
3145 printf(
"JS_ConvertArguments failed in SFVec2fConstr.\n");
3148 (ptr->v).c[0] = (
float) pars[0];
3149 (ptr->v).c[1] = (
float) pars[1];
3151 #ifdef JSVRMLCLASSESVERBOSE
3152 printf(
"SFVec2fConstr: obj = %p, %u args, %f %f\n",
3154 (ptr->v).c[0], (ptr->v).c[1]);
3157 ptr->valueChanged = 1;
3159 #if JS_VERSION < 185
3160 *rval = OBJECT_TO_JSVAL(obj);
3162 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3169 #if JS_VERSION < 185
3170 SFVec2fGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
3172 SFVec2fGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
3177 #if JS_VERSION >= 185
3179 if (!JS_IdToValue(cx,iid,&
id)) {
3180 printf(
"JS_IdToValue failed in SFVec2fGetProperty.\n");
3185 if ((ptr = (
SFVec2fNative *)JS_GetPrivate(cx,obj)) == NULL) {
3186 printf(
"JS_GetPrivate failed in SFVec2fGetProperty.\n");
3190 if (JSVAL_IS_INT(
id)) {
3191 switch (JSVAL_TO_INT(
id)) {
3194 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3196 "JS_NewDouble failed for %f in SFVec2fGetProperty.\n",
3203 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3205 "JS_NewDouble failed for %f in SFVec2fGetProperty.\n",
3216 #if JS_VERSION < 185
3217 SFVec2fSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
3219 SFVec2fSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp)
3224 #if JS_VERSION >= 185
3226 if (!JS_IdToValue(cx,iid,&
id)) {
3227 printf(
"JS_IdToValue failed in SFVec2fSetProperty.\n");
3232 if ((ptr = (
SFVec2fNative *)JS_GetPrivate(cx, obj)) == NULL) {
3233 printf(
"JS_GetPrivate failed in SFVec2fSetProperty.\n");
3236 ptr->valueChanged++;
3237 #ifdef JSVRMLCLASSESVERBOSE
3238 printf(
"SFVec2fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
3239 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
3242 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
3243 printf(
"JS_ConvertValue failed in SFVec2fSetProperty.\n");
3247 if (JSVAL_IS_INT(
id)) {
3248 switch (JSVAL_TO_INT(
id)) {
3250 #if JS_VERSION < 185
3251 (ptr->v).c[0] = (
float) *JSVAL_TO_DOUBLE(myv);
3253 (ptr->v).c[0] = (
float) JSVAL_TO_DOUBLE(myv);
3257 #if JS_VERSION < 185
3258 (ptr->v).c[1] = (
float) *JSVAL_TO_DOUBLE(myv);
3260 (ptr->v).c[1] = (
float) JSVAL_TO_DOUBLE(myv);
3264 #if JS_VERSION < 185
3265 (ptr->v).c[2] = (
float) *JSVAL_TO_DOUBLE(myv);
3267 (ptr->v).c[2] = (
float) JSVAL_TO_DOUBLE(myv);
3280 #define __3FDIVIDE 2
3284 #define __3FLENGTH 6
3285 #define __3FNORMALIZE 8
3286 #define __3FNEGATE 7
3289 JSBool SFVec3fGeneric( JSContext *cx, JSObject *obj,
3290 uintN argc, jsval *argv, jsval *rval,
int op) {
3291 JSObject *_paramObj, *_proto, *_retObj;
3301 int SFParam = FALSE;
3302 int numParam = FALSE;
3305 int retSFVec3f = FALSE;
3306 int retNumeric = FALSE;
3314 #ifdef JSVRMLCLASSESVERBOSE
3315 printf (
"SFVec3fGeneric\n");
3319 if ((op==__3FADD)||(op==__3FDOT)||(op==__3FCROSS)||(op==__3FSUBT))SFParam=TRUE;
3320 if ((op==__3FDIVIDE)||(op==__3FMULT))numParam=TRUE;
3323 if ((op==__3FDOT)||(op==__3FLENGTH)) retNumeric = TRUE;
3324 retSFVec3f = (!retNumeric);
3328 param_isString = JSVAL_IS_STRING (*argv);
3331 if ((SFParam) || (numParam)) {
3333 if (!JSVAL_IS_NUMBER(argv[0])) {
3334 printf (
"SFVec3f param error - number expected\n");
3337 if (!JS_ValueToNumber(cx, argv[0], &d)) {
3338 printf(
"JS_ValueToNumber failed in SFVec3f.\n");
3344 if (param_isString) {
3345 _str = JS_ValueToString(cx, *argv);
3346 #if JS_VERSION < 185
3347 charString = JS_GetStringBytes(_str);
3349 charString = JS_EncodeString(cx,_str);
3352 if (sscanf(charString,
"%lf %lf %lf",
3353 &(pars[0]), &(pars[1]), &(pars[2])) != 3) {
3354 printf (
"conversion problem in SFVec3fGeneric\n");
3359 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
3360 printf(
"JS_ConvertArguments failed in SFVec3f.\n");
3364 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec3fClass)
3367 if ((_vec2 = (
SFVec3fNative*)JS_GetPrivate(cx, _paramObj)) == NULL) {
3368 printf(
"JS_GetPrivate failed for _paramObj in SFVec3f.\n");
3371 pars[0]= (_vec2->v).c[0];
3372 pars[1] = (_vec2->v).c[1];
3373 pars[2] = (_vec2->v).c[2];
3379 if ((_vec1 = (
SFVec3fNative*)JS_GetPrivate(cx, obj)) == NULL) {
3380 printf(
"JS_GetPrivate failed for obj in SFVec3fAdd.\n");
3385 #ifdef JSVRMLCLASSESVERBOSE
3386 printf (
"SFVec3f generic, vec2 %f %f %f\n",pars[0],pars[1],pars[2]);
3392 d0 = (_vec1->v).c[0] + pars[0];
3393 d1 = (_vec1->v).c[1] + pars[1];
3394 d2 = (_vec1->v).c[2] + pars[2];
3397 d0 = (_vec1->v).c[0] / d;
3398 d1 = (_vec1->v).c[1] / d;
3399 d2 = (_vec1->v).c[2] / d;
3402 d0 = (_vec1->v).c[0] * d;
3403 d1 = (_vec1->v).c[1] * d;
3404 d2 = (_vec1->v).c[2] * d;
3407 d0 = (_vec1->v).c[0] - pars[0];
3408 d1 = (_vec1->v).c[1] - pars[1];
3409 d2 = (_vec1->v).c[2] - pars[2];
3412 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=(_vec1->v).c[2];
3413 v2.x = (float) pars[0]; v2.y=(float) pars[1];v2.z=(float) pars[2];
3414 d = vecdot (&v1, &v2);
3417 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=(_vec1->v).c[2];
3418 v2.x = (float) pars[0]; v2.y=(float) pars[1];v2.z=(float) pars[2];
3419 veccross(&ret, v1, v2);
3420 d0 = ret.x;d1 = ret.y, d2 = ret.z;
3423 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=(_vec1->v).c[2];
3427 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=(_vec1->v).c[2];
3428 vecnormal(&v1, &v1);
3429 d0 = v1.x; d1 = v1.y; d2 = v1.z;
3432 d0 = -(_vec1->v).c[0];
3433 d1 = -(_vec1->v).c[1];
3434 d2 = -(_vec1->v).c[2];
3437 printf (
"woops... %d\n",op);
3441 #ifdef JSVRMLCLASSESVERBOSE
3442 printf (
"past calcs\n");
3447 #ifdef JSVRMLCLASSESVERBOSE
3448 printf (
"returning SFVec3f\n");
3450 if ((_proto = JS_GetPrototype(cx, obj)) == NULL) {
3451 printf(
"JS_GetPrototype failed in SFVec3f.\n");
3455 JS_ConstructObject(cx, &SFVec3fClass, _proto, NULL)) == NULL) {
3456 printf(
"JS_ConstructObject failed in SFVec3f.\n");
3459 *rval = OBJECT_TO_JSVAL(_retObj);
3460 if ((_retNative = (
SFVec3fNative*)JS_GetPrivate(cx, _retObj)) == NULL) {
3461 printf(
"JS_GetPrivate failed for _retObj in SFVec3f.\n");
3464 (_retNative->v).c[0] = (
float) d0;
3465 (_retNative->v).c[1] = (
float) d1;
3466 (_retNative->v).c[2] = (
float) d2;
3467 }
else if (retNumeric) {
3468 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
3469 printf(
"JS_NewDouble failed for %f in SFVec3f.\n",d);
3473 #ifdef JSVRMLCLASSESVERBOSE
3475 printf(
"SFVec3fgeneric: obj = %p, result = [%.9g, %.9g, %.9g]\n",
3477 (_retNative->v).c[0], (_retNative->v).c[1],
3478 (_retNative->v).c[2]);
3481 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
3489 #if JS_VERSION < 185
3490 SFVec3fAdd(JSContext *cx, JSObject *obj,
3491 uintN argc, jsval *argv, jsval *rval) {
3492 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FADD);
3494 SFVec3fAdd(JSContext *cx, uintN argc, jsval *vp) {
3495 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3496 jsval *argv = JS_ARGV(cx,vp);
3498 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FADD);
3499 JS_SET_RVAL(cx,vp,rval);
3505 #if JS_VERSION < 185
3506 SFVec3fCross(JSContext *cx, JSObject *obj,
3507 uintN argc, jsval *argv, jsval *rval) {
3508 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FCROSS);
3510 SFVec3fCross(JSContext *cx, uintN argc, jsval *vp) {
3511 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3512 jsval *argv = JS_ARGV(cx,vp);
3514 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FCROSS);
3515 JS_SET_RVAL(cx,vp,rval);
3521 #if JS_VERSION < 185
3522 SFVec3fDivide(JSContext *cx, JSObject *obj,
3523 uintN argc, jsval *argv, jsval *rval) {
3524 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FDIVIDE);
3526 SFVec3fDivide(JSContext *cx, uintN argc, jsval *vp) {
3527 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3528 jsval *argv = JS_ARGV(cx,vp);
3530 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FDIVIDE);
3531 JS_SET_RVAL(cx,vp,rval);
3537 #if JS_VERSION < 185
3538 SFVec3fDot(JSContext *cx, JSObject *obj,
3539 uintN argc, jsval *argv, jsval *rval) {
3540 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FDOT);
3542 SFVec3fDot(JSContext *cx, uintN argc, jsval *vp) {
3543 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3544 jsval *argv = JS_ARGV(cx,vp);
3546 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FDOT);
3547 JS_SET_RVAL(cx,vp,rval);
3553 #if JS_VERSION < 185
3554 SFVec3fLength(JSContext *cx, JSObject *obj,
3555 uintN argc, jsval *argv, jsval *rval) {
3556 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FLENGTH);
3558 SFVec3fLength(JSContext *cx, uintN argc, jsval *vp) {
3559 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3560 jsval *argv = JS_ARGV(cx,vp);
3562 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FLENGTH);
3563 JS_SET_RVAL(cx,vp,rval);
3570 #if JS_VERSION < 185
3571 SFVec3fMultiply(JSContext *cx, JSObject *obj,
3572 uintN argc, jsval *argv, jsval *rval) {
3573 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FMULT);
3575 SFVec3fMultiply(JSContext *cx, uintN argc, jsval *vp) {
3576 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3577 jsval *argv = JS_ARGV(cx,vp);
3579 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FMULT);
3580 JS_SET_RVAL(cx,vp,rval);
3587 #if JS_VERSION < 185
3588 SFVec3fNegate(JSContext *cx, JSObject *obj,
3589 uintN argc, jsval *argv, jsval *rval) {
3590 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FNEGATE);
3592 SFVec3fNegate(JSContext *cx, uintN argc, jsval *vp) {
3593 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3594 jsval *argv = JS_ARGV(cx,vp);
3596 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FNEGATE);
3597 JS_SET_RVAL(cx,vp,rval);
3603 #if JS_VERSION < 185
3604 SFVec3fNormalize(JSContext *cx, JSObject *obj,
3605 uintN argc, jsval *argv, jsval *rval) {
3606 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FNORMALIZE);
3608 SFVec3fNormalize(JSContext *cx, uintN argc, jsval *vp) {
3609 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3610 jsval *argv = JS_ARGV(cx,vp);
3612 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FNORMALIZE);
3613 JS_SET_RVAL(cx,vp,rval);
3619 #if JS_VERSION < 185
3620 SFVec3fSubtract(JSContext *cx, JSObject *obj,
3621 uintN argc, jsval *argv, jsval *rval) {
3622 return SFVec3fGeneric(cx, obj, argc, argv, rval, __3FSUBT);
3624 SFVec3fSubtract(JSContext *cx, uintN argc, jsval *vp) {
3625 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3626 jsval *argv = JS_ARGV(cx,vp);
3628 JSBool retval = SFVec3fGeneric(cx, obj, argc, argv, &rval, __3FSUBT);
3629 JS_SET_RVAL(cx,vp,rval);
3635 #if JS_VERSION < 185
3636 SFVec3fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3638 SFVec3fToString(JSContext *cx, uintN argc, jsval *vp) {
3639 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3640 jsval *argv = JS_ARGV(cx,vp);
3648 if ((ptr = (
SFVec3fNative *)JS_GetPrivate(cx, obj)) == NULL) {
3649 printf(
"JS_GetPrivate failed in SFVec3fToString.\n");
3653 memset(buff, 0, STRING);
3654 sprintf(buff,
"%.9g %.9g %.9g",
3655 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
3656 _str = JS_NewStringCopyZ(cx, buff);
3658 #if JS_VERSION < 185
3659 *rval = STRING_TO_JSVAL(_str);
3661 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
3664 #ifdef JSVRMLCLASSESVERBOSE
3665 printf (
"SFVec3fToString, string is :%s:\n",buff);
3673 #if JS_VERSION < 185
3674 SFVec3fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3676 SFVec3fAssign(JSContext *cx, uintN argc, jsval *vp) {
3677 JSObject *obj = JS_THIS_OBJECT(cx,vp);
3678 jsval *argv = JS_ARGV(cx,vp);
3679 JSString *_id_jsstr;
3681 JSObject *_from_obj;
3688 #ifdef JSVRMLCLASSESVERBOSE
3689 printf (
"start of SFVec3fAssign\n");
3692 if ((ptr = (
SFVec3fNative *)JS_GetPrivate(cx, obj)) == NULL) {
3693 printf(
"JS_GetPrivate failed for obj in SFVec3fAssign.\n");
3697 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec3fClass)
3699 #if JS_VERSION < 185
3700 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
3702 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr)) {
3703 _id_str = JS_EncodeString(cx,_id_jsstr);
3706 printf(
"JS_ConvertArguments failed in SFVec3fAssign.\n");
3710 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec3fClass)
3712 if ((fptr = (
SFVec3fNative *)JS_GetPrivate(cx, _from_obj)) == NULL) {
3713 printf(
"JS_GetPrivate failed for _from_obj in SFVec3fAssign.\n");
3716 #ifdef JSVRMLCLASSESVERBOSE
3717 printf(
"SFVec3fAssign: obj = %p, id = \"%s\", from = %p\n",
3718 obj, _id_str, _from_obj);
3721 SFVec3fNativeAssign(ptr, fptr);
3722 #if JS_VERSION < 185
3723 *rval = OBJECT_TO_JSVAL(obj);
3725 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3728 #ifdef JSVRMLCLASSESVERBOSE
3729 printf (
"end of SFVec3fAssign\n");
3736 #if JS_VERSION < 185
3737 SFVec3fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
3739 SFVec3fConstr(JSContext *cx, uintN argc, jsval *vp) {
3740 JSObject *obj = JS_NewObject(cx,&SFVec3fClass,NULL,NULL);
3741 jsval *argv = JS_ARGV(cx,vp);
3746 #ifdef JSVRMLCLASSESVERBOSE
3747 printf (
"start of SFVec3fConstr\n");
3753 printf(
"SFVec3fNativeNew failed in SFVec3fConstr.\n");
3761 if (!JS_SetPrivate(cx, obj, ptr)) {
3762 printf(
"JS_SetPrivate failed in SFVec3fConstr.\n");
3767 (ptr->v).c[0] = (
float) 0.0;
3768 (ptr->v).c[1] = (
float) 0.0;
3769 (ptr->v).c[2] = (
float) 0.0;
3771 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
3772 &(pars[0]), &(pars[1]), &(pars[2]))) {
3773 printf(
"JS_ConvertArguments failed in SFVec3fConstr.\n");
3776 (ptr->v).c[0] = (
float) pars[0];
3777 (ptr->v).c[1] = (
float) pars[1];
3778 (ptr->v).c[2] = (
float) pars[2];
3780 #ifdef JSVRMLCLASSESVERBOSE
3781 printf(
"SFVec3fConstr: obj = %p, %u args, %f %f %f\n",
3783 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
3786 ptr->valueChanged = 1;
3788 #if JS_VERSION < 185
3789 *rval = OBJECT_TO_JSVAL(obj);
3791 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
3797 #if JS_VERSION < 185
3798 SFVec3fGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
3800 SFVec3fGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
3805 #ifdef JSVRMLCLASSESVERBOSE
3809 #if JS_VERSION >= 185
3811 if (!JS_IdToValue(cx,iid,&
id)) {
3812 printf(
"JS_IdToValue failed in SFVec3fGetProperty.\n");
3817 #ifdef JSVRMLCLASSESVERBOSE
3825 _idStr = JS_ValueToString(cx, *vp);
3826 #if JS_VERSION < 185
3827 _id_c = JS_GetStringBytes(_idStr);
3829 _id_c = JS_EncodeString(cx,_idStr);
3833 if ((ptr = (
SFVec3fNative *)JS_GetPrivate(cx,obj)) == NULL) {
3834 printf(
"JS_GetPrivate failed in SFVec3fGetProperty.\n");
3838 if (JSVAL_IS_INT(
id)) {
3839 switch (JSVAL_TO_INT(
id)) {
3842 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3844 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
3851 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3853 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
3860 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
3862 "JS_NewDouble failed for %f in SFVec3fGetProperty.\n",
3869 #ifdef JSVRMLCLASSESVERBOSE
3870 printf (
"SFVec3fGetProperty, id is NOT an int...\n");
3878 #if JS_VERSION < 185
3879 SFVec3fSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
3881 SFVec3fSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp)
3886 #if JS_VERSION >= 185
3888 if (!JS_IdToValue(cx,iid,&
id)) {
3889 printf(
"JS_IdToValue failed in SFVec3fSetProperty.\n");
3894 if ((ptr = (
SFVec3fNative *)JS_GetPrivate(cx, obj)) == NULL) {
3895 printf(
"JS_GetPrivate failed in SFVec3fSetProperty.\n");
3898 ptr->valueChanged++;
3899 #ifdef JSVRMLCLASSESVERBOSE
3900 printf(
"SFVec3fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
3901 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
3904 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
3905 printf(
"JS_ConvertValue failed in SFVec3fSetProperty.\n");
3909 if (JSVAL_IS_INT(
id)) {
3910 switch (JSVAL_TO_INT(
id)) {
3912 #if JS_VERSION < 185
3913 (ptr->v).c[0] = (
float) *JSVAL_TO_DOUBLE(myv);
3915 (ptr->v).c[0] = (
float) JSVAL_TO_DOUBLE(myv);
3919 #if JS_VERSION < 185
3920 (ptr->v).c[1] = (
float) *JSVAL_TO_DOUBLE(myv);
3922 (ptr->v).c[1] = (
float) JSVAL_TO_DOUBLE(myv);
3926 #if JS_VERSION < 185
3927 (ptr->v).c[2] = (
float) *JSVAL_TO_DOUBLE(myv);
3929 (ptr->v).c[2] = (
float) JSVAL_TO_DOUBLE(myv);
3951 JSBool SFVec3dGeneric( JSContext *cx, JSObject *obj,
3952 uintN argc, jsval *argv, jsval *rval,
int op) {
3953 JSObject *_paramObj, *_proto, *_retObj;
3963 int SFParam = FALSE;
3964 int numParam = FALSE;
3967 int retSFVec3d = FALSE;
3968 int retNumeric = FALSE;
3977 if ((op==__3FADD)||(op==__3FDOT)||(op==__3FCROSS)||(op==__3FSUBT))SFParam=TRUE;
3978 if ((op==__3FDIVIDE)||(op==__3FMULT))numParam=TRUE;
3981 if ((op==__3FDOT)||(op==__3FLENGTH)) retNumeric = TRUE;
3982 retSFVec3d = (!retNumeric);
3986 param_isString = JSVAL_IS_STRING (*argv);
3989 if ((SFParam) || (numParam)) {
3991 if (!JSVAL_IS_NUMBER(argv[0])) {
3992 printf (
"SFVec3d param error - number expected\n");
3995 if (!JS_ValueToNumber(cx, argv[0], &d)) {
3996 printf(
"JS_ValueToNumber failed in SFVec3d.\n");
4002 if (param_isString) {
4003 _str = JS_ValueToString(cx, *argv);
4004 #if JS_VERSION < 185
4005 charString = JS_GetStringBytes(_str);
4007 charString = JS_EncodeString(cx,_str);
4010 if (sscanf(charString,
"%lf %lf %lf",
4011 &(pars[0]), &(pars[1]), &(pars[2])) != 3) {
4012 printf (
"conversion problem in SFVec3dGeneric\n");
4017 if (!JS_ConvertArguments(cx, argc, argv,
"o", &_paramObj)) {
4018 printf(
"JS_ConvertArguments failed in SFVec3d.\n");
4022 CHECK_CLASS(cx,_paramObj,argv,__FUNCTION__,SFVec3dClass)
4025 if ((_vec2 = (
SFVec3dNative*)JS_GetPrivate(cx, _paramObj)) == NULL) {
4026 printf(
"JS_GetPrivate failed for _paramObj in SFVec3d.\n");
4029 pars[0]= (_vec2->v).c[0];
4030 pars[1] = (_vec2->v).c[1];
4031 pars[2] = (_vec2->v).c[2];
4037 if ((_vec1 = (
SFVec3dNative*)JS_GetPrivate(cx, obj)) == NULL) {
4038 printf(
"JS_GetPrivate failed for obj in SFVec3dAdd.\n");
4043 #ifdef JSVRMLCLASSESVERBOSE
4044 printf (
"SFVec3d generic, vec2 %f %f %f\n",pars[0],pars[1],pars[2]);
4050 d0 = (_vec1->v).c[0] + pars[0];
4051 d1 = (_vec1->v).c[1] + pars[1];
4052 d2 = (_vec1->v).c[2] + pars[2];
4055 d0 = (_vec1->v).c[0] / d;
4056 d1 = (_vec1->v).c[1] / d;
4057 d2 = (_vec1->v).c[2] / d;
4060 d0 = (_vec1->v).c[0] * d;
4061 d1 = (_vec1->v).c[1] * d;
4062 d2 = (_vec1->v).c[2] * d;
4065 d0 = (_vec1->v).c[0] - pars[0];
4066 d1 = (_vec1->v).c[1] - pars[1];
4067 d2 = (_vec1->v).c[2] - pars[2];
4070 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=(_vec1->v).c[2];
4071 v2.x = (float) pars[0]; v2.y=(float) pars[1];v2.z=(float) pars[2];
4072 d = vecdot (&v1, &v2);
4075 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=(_vec1->v).c[2];
4076 v2.x = (float) pars[0]; v2.y=(float) pars[1];v2.z=(float) pars[2];
4077 veccross(&ret, v1, v2);
4078 d0 = ret.x;d1 = ret.y, d2 = ret.z;
4081 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=(_vec1->v).c[2];
4085 v1.x = (_vec1->v).c[0]; v1.y=(_vec1->v).c[1];v1.z=(_vec1->v).c[2];
4086 vecnormal(&v1, &v1);
4087 d0 = v1.x; d1 = v1.y; d2 = v1.z;
4090 d0 = -(_vec1->v).c[0];
4091 d1 = -(_vec1->v).c[1];
4092 d2 = -(_vec1->v).c[2];
4095 printf (
"woops... %d\n",op);
4099 #ifdef JSVRMLCLASSESVERBOSE
4100 printf (
"past calcs\n");
4105 #ifdef JSVRMLCLASSESVERBOSE
4106 printf (
"returning SFVec3d\n");
4108 if ((_proto = JS_GetPrototype(cx, obj)) == NULL) {
4109 printf(
"JS_GetPrototype failed in SFVec3d.\n");
4113 JS_ConstructObject(cx, &SFVec3dClass, _proto, NULL)) == NULL) {
4114 printf(
"JS_ConstructObject failed in SFVec3d.\n");
4117 *rval = OBJECT_TO_JSVAL(_retObj);
4118 if ((_retNative = (
SFVec3dNative*)JS_GetPrivate(cx, _retObj)) == NULL) {
4119 printf(
"JS_GetPrivate failed for _retObj in SFVec3d.\n");
4122 (_retNative->v).c[0] = d0;
4123 (_retNative->v).c[1] = d1;
4124 (_retNative->v).c[2] = d2;
4125 }
else if (retNumeric) {
4126 if (JS_NewNumberValue(cx,d,rval) == JS_FALSE) {
4127 printf(
"JS_NewDouble failed for %f in SFVec3d.\n",d);
4131 #ifdef JSVRMLCLASSESVERBOSE
4133 printf(
"SFVec3dgeneric: obj = %p, result = [%.9g, %.9g, %.9g]\n",
4135 (_retNative->v).c[0], (_retNative->v).c[1],
4136 (_retNative->v).c[2]);
4139 printf(
"SFVec2fgeneric: obj = %p, result = %.9g\n",
4147 #if JS_VERSION < 185
4148 SFVec3dAdd(JSContext *cx, JSObject *obj,
4149 uintN argc, jsval *argv, jsval *rval) {
4150 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FADD);
4152 SFVec3dAdd(JSContext *cx, uintN argc, jsval *vp) {
4153 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4154 jsval *argv = JS_ARGV(cx,vp);
4156 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FADD);
4157 JS_SET_RVAL(cx,vp,rval);
4163 #if JS_VERSION < 185
4164 SFVec3dCross(JSContext *cx, JSObject *obj,
4165 uintN argc, jsval *argv, jsval *rval) {
4166 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FCROSS);
4168 SFVec3dCross(JSContext *cx, uintN argc, jsval *vp) {
4169 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4170 jsval *argv = JS_ARGV(cx,vp);
4172 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FCROSS);
4173 JS_SET_RVAL(cx,vp,rval);
4179 #if JS_VERSION < 185
4180 SFVec3dDivide(JSContext *cx, JSObject *obj,
4181 uintN argc, jsval *argv, jsval *rval) {
4182 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FDIVIDE);
4184 SFVec3dDivide(JSContext *cx, uintN argc, jsval *vp) {
4185 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4186 jsval *argv = JS_ARGV(cx,vp);
4188 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FDIVIDE);
4189 JS_SET_RVAL(cx,vp,rval);
4195 #if JS_VERSION < 185
4196 SFVec3dDot(JSContext *cx, JSObject *obj,
4197 uintN argc, jsval *argv, jsval *rval) {
4198 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FDOT);
4200 SFVec3dDot(JSContext *cx, uintN argc, jsval *vp) {
4201 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4202 jsval *argv = JS_ARGV(cx,vp);
4204 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FDOT);
4205 JS_SET_RVAL(cx,vp,rval);
4211 #if JS_VERSION < 185
4212 SFVec3dLength(JSContext *cx, JSObject *obj,
4213 uintN argc, jsval *argv, jsval *rval) {
4214 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FLENGTH);
4216 SFVec3dLength(JSContext *cx, uintN argc, jsval *vp) {
4217 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4218 jsval *argv = JS_ARGV(cx,vp);
4220 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FLENGTH);
4221 JS_SET_RVAL(cx,vp,rval);
4228 #if JS_VERSION < 185
4229 SFVec3dMultiply(JSContext *cx, JSObject *obj,
4230 uintN argc, jsval *argv, jsval *rval) {
4231 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FMULT);
4233 SFVec3dMultiply(JSContext *cx, uintN argc, jsval *vp) {
4234 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4235 jsval *argv = JS_ARGV(cx,vp);
4237 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FMULT);
4238 JS_SET_RVAL(cx,vp,rval);
4245 #if JS_VERSION < 185
4246 SFVec3dNegate(JSContext *cx, JSObject *obj,
4247 uintN argc, jsval *argv, jsval *rval) {
4248 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FNEGATE);
4250 SFVec3dNegate(JSContext *cx, uintN argc, jsval *vp) {
4251 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4252 jsval *argv = JS_ARGV(cx,vp);
4254 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FNEGATE);
4255 JS_SET_RVAL(cx,vp,rval);
4261 #if JS_VERSION < 185
4262 SFVec3dNormalize(JSContext *cx, JSObject *obj,
4263 uintN argc, jsval *argv, jsval *rval) {
4264 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FNORMALIZE);
4266 SFVec3dNormalize(JSContext *cx, uintN argc, jsval *vp) {
4267 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4268 jsval *argv = JS_ARGV(cx,vp);
4270 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FNORMALIZE);
4271 JS_SET_RVAL(cx,vp,rval);
4277 #if JS_VERSION < 185
4278 SFVec3dSubtract(JSContext *cx, JSObject *obj,
4279 uintN argc, jsval *argv, jsval *rval) {
4280 return SFVec3dGeneric(cx, obj, argc, argv, rval, __3FSUBT);
4282 SFVec3dSubtract(JSContext *cx, uintN argc, jsval *vp) {
4283 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4284 jsval *argv = JS_ARGV(cx,vp);
4286 JSBool retval = SFVec3dGeneric(cx, obj, argc, argv, &rval, __3FSUBT);
4287 JS_SET_RVAL(cx,vp,rval);
4293 #if JS_VERSION < 185
4294 SFVec3dToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4296 SFVec3dToString(JSContext *cx, uintN argc, jsval *vp) {
4297 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4298 jsval *argv = JS_ARGV(cx,vp);
4306 if ((ptr = (
SFVec3dNative *)JS_GetPrivate(cx, obj)) == NULL) {
4307 printf(
"JS_GetPrivate failed in SFVec3dToString.\n");
4311 memset(buff, 0, STRING);
4312 sprintf(buff,
"%.9g %.9g %.9g",
4313 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
4314 _str = JS_NewStringCopyZ(cx, buff);
4315 #if JS_VERSION < 185
4316 *rval = STRING_TO_JSVAL(_str);
4318 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
4321 #ifdef JSVRMLCLASSESVERBOSE
4322 printf (
"SFVec3dToString, string is :%s:\n",buff);
4329 #if JS_VERSION < 185
4330 SFVec3dAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4332 SFVec3dAssign(JSContext *cx, uintN argc, jsval *vp) {
4333 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4334 jsval *argv = JS_ARGV(cx,vp);
4335 JSString *_id_jsstr;
4337 JSObject *_from_obj;
4344 #ifdef JSVRMLCLASSESVERBOSE
4345 printf (
"start of SFVec3dAssign\n");
4348 if ((ptr = (
SFVec3dNative *)JS_GetPrivate(cx, obj)) == NULL) {
4349 printf(
"JS_GetPrivate failed for obj in SFVec3dAssign.\n");
4353 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec3dClass)
4355 #if JS_VERSION < 185
4356 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
4358 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
4359 _id_str = JS_EncodeString(cx,_id_jsstr);
4362 printf(
"JS_ConvertArguments failed in SFVec3dAssign.\n");
4366 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec3dClass)
4368 if ((fptr = (
SFVec3dNative *)JS_GetPrivate(cx, _from_obj)) == NULL) {
4369 printf(
"JS_GetPrivate failed for _from_obj in SFVec3dAssign.\n");
4372 #ifdef JSVRMLCLASSESVERBOSE
4373 printf(
"SFVec3dAssign: obj = %p, id = \"%s\", from = %p\n",
4374 obj, _id_str, _from_obj);
4377 SFVec3dNativeAssign(ptr, fptr);
4378 #if JS_VERSION < 185
4379 *rval = OBJECT_TO_JSVAL(obj);
4381 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4384 #ifdef JSVRMLCLASSESVERBOSE
4385 printf (
"end of SFVec3dAssign\n");
4392 #if JS_VERSION < 185
4393 SFVec3dConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4395 SFVec3dConstr(JSContext *cx, uintN argc, jsval *vp) {
4396 JSObject *obj = JS_NewObject(cx,&SFVec3dClass,NULL,NULL);
4397 jsval *argv = JS_ARGV(cx,vp);
4402 #ifdef JSVRMLCLASSESVERBOSE
4403 printf (
"start of SFVec3dConstr\n");
4409 printf(
"SFVec3dNativeNew failed in SFVec3dConstr.\n");
4417 if (!JS_SetPrivate(cx, obj, ptr)) {
4418 printf(
"JS_SetPrivate failed in SFVec3dConstr.\n");
4423 (ptr->v).c[0] = (
float) 0.0;
4424 (ptr->v).c[1] = (
float) 0.0;
4425 (ptr->v).c[2] = (
float) 0.0;
4427 if (!JS_ConvertArguments(cx, argc, argv,
"d d d",
4428 &(pars[0]), &(pars[1]), &(pars[2]))) {
4429 printf(
"JS_ConvertArguments failed in SFVec3dConstr.\n");
4432 (ptr->v).c[0] = (
float) pars[0];
4433 (ptr->v).c[1] = (
float) pars[1];
4434 (ptr->v).c[2] = (
float) pars[2];
4436 #ifdef JSVRMLCLASSESVERBOSE
4437 printf(
"SFVec3dConstr: obj = %p, %u args, %f %f %f\n",
4439 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2]);
4442 ptr->valueChanged = 1;
4444 #if JS_VERSION < 185
4445 *rval = OBJECT_TO_JSVAL(obj);
4447 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4453 #if JS_VERSION < 185
4454 SFVec3dGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
4456 SFVec3dGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
4461 #ifdef JSVRMLCLASSESVERBOSE
4465 #if JS_VERSION >= 185
4467 if (!JS_IdToValue(cx,iid,&
id)) {
4468 printf(
"JS_IdToValue failed in SFVec3dGetProperty.\n");
4473 #ifdef JSVRMLCLASSESVERBOSE
4479 _idStr = JS_ValueToString(cx, *vp);
4480 #if JS_VERSION < 185
4481 _id_c = JS_GetStringBytes(_idStr);
4483 _id_c = JS_EncodeString(cx,_idStr);
4487 if ((ptr = (
SFVec3dNative *)JS_GetPrivate(cx,obj)) == NULL) {
4488 printf(
"JS_GetPrivate failed in SFVec3dGetProperty.\n");
4492 if (JSVAL_IS_INT(
id)) {
4493 switch (JSVAL_TO_INT(
id)) {
4496 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4498 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
4505 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4507 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
4514 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4516 "JS_NewDouble failed for %f in SFVec3dGetProperty.\n",
4523 #ifdef JSVRMLCLASSESVERBOSE
4524 printf (
"SFVec3dGetProperty, id is NOT an int...\n");
4532 #if JS_VERSION < 185
4533 SFVec3dSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
4535 SFVec3dSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp)
4540 #if JS_VERSION >= 185
4542 if (!JS_IdToValue(cx,iid,&
id)) {
4543 printf(
"JS_IdToValue failed in SFVec3dSetProperty.\n");
4548 if ((ptr = (
SFVec3dNative *)JS_GetPrivate(cx, obj)) == NULL) {
4549 printf(
"JS_GetPrivate failed in SFVec3dSetProperty.\n");
4552 ptr->valueChanged++;
4553 #ifdef JSVRMLCLASSESVERBOSE
4554 printf(
"SFVec3dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
4555 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
4558 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
4559 printf(
"JS_ConvertValue failed in SFVec3dSetProperty.\n");
4563 if (JSVAL_IS_INT(
id)) {
4564 switch (JSVAL_TO_INT(
id)) {
4566 #if JS_VERSION < 185
4567 (ptr->v).c[0] = *JSVAL_TO_DOUBLE(myv);
4569 (ptr->v).c[0] = JSVAL_TO_DOUBLE(myv);
4573 #if JS_VERSION < 185
4574 (ptr->v).c[1] = *JSVAL_TO_DOUBLE(myv);
4576 (ptr->v).c[1] = JSVAL_TO_DOUBLE(myv);
4580 #if JS_VERSION < 185
4581 (ptr->v).c[2] = *JSVAL_TO_DOUBLE(myv);
4583 (ptr->v).c[2] = JSVAL_TO_DOUBLE(myv);
4593 #if JS_VERSION < 185
4594 SFVec4fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4596 SFVec4fToString(JSContext *cx, uintN argc, jsval *vp) {
4597 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4598 jsval *argv = JS_ARGV(cx,vp);
4606 if ((ptr = (
SFVec4fNative *)JS_GetPrivate(cx, obj)) == NULL) {
4607 printf(
"JS_GetPrivate failed in SFVec4fToString.\n");
4611 memset(buff, 0, STRING);
4612 sprintf(buff,
"%.9g %.9g %.9g %.9g",
4613 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2],ptr->v.c[3]);
4614 _str = JS_NewStringCopyZ(cx, buff);
4615 #if JS_VERSION < 185
4616 *rval = STRING_TO_JSVAL(_str);
4618 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
4621 #ifdef JSVRMLCLASSESVERBOSE
4622 printf (
"SFVec4fToString, string is :%s:\n",buff);
4629 #if JS_VERSION < 185
4630 SFVec4fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4632 SFVec4fAssign(JSContext *cx, uintN argc, jsval *vp) {
4633 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4634 jsval *argv = JS_ARGV(cx,vp);
4635 JSString *_id_jsstr;
4637 JSObject *_from_obj;
4644 #ifdef JSVRMLCLASSESVERBOSE
4645 printf (
"start of SFVec4fAssign\n");
4648 if ((ptr = (
SFVec4fNative *)JS_GetPrivate(cx, obj)) == NULL) {
4649 printf(
"JS_GetPrivate failed for obj in SFVec4fAssign.\n");
4653 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec4fClass)
4655 #if JS_VERSION < 185
4656 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
4658 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
4659 _id_str = JS_EncodeString(cx,_id_jsstr);
4662 printf(
"JS_ConvertArguments failed in SFVec4fAssign.\n");
4666 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec4fClass)
4668 if ((fptr = (
SFVec4fNative *)JS_GetPrivate(cx, _from_obj)) == NULL) {
4669 printf(
"JS_GetPrivate failed for _from_obj in SFVec4fAssign.\n");
4672 #ifdef JSVRMLCLASSESVERBOSE
4673 printf(
"SFVec4fAssign: obj = %p, id = \"%s\", from = %p\n",
4674 obj, _id_str, _from_obj);
4677 SFVec4fNativeAssign(ptr, fptr);
4678 #if JS_VERSION < 185
4679 *rval = OBJECT_TO_JSVAL(obj);
4681 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4684 #ifdef JSVRMLCLASSESVERBOSE
4685 printf (
"end of SFVec4fAssign\n");
4692 #if JS_VERSION < 185
4693 SFVec4fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4695 SFVec4fConstr(JSContext *cx, uintN argc, jsval *vp) {
4696 JSObject *obj = JS_NewObject(cx,&SFVec4fClass,NULL,NULL);
4697 jsval *argv = JS_ARGV(cx,vp);
4702 #ifdef JSVRMLCLASSESVERBOSE
4703 printf (
"start of SFVec4fConstr\n");
4709 printf(
"SFVec4fNativeNew failed in SFVec4fConstr.\n");
4717 if (!JS_SetPrivate(cx, obj, ptr)) {
4718 printf(
"JS_SetPrivate failed in SFVec4fConstr.\n");
4723 (ptr->v).c[0] = (
float) 0.0;
4724 (ptr->v).c[1] = (
float) 0.0;
4725 (ptr->v).c[2] = (
float) 0.0;
4726 (ptr->v).c[3] = (
float) 0.0;
4728 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d",
4729 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
4730 printf(
"JS_ConvertArguments failed in SFVec4fConstr.\n");
4733 (ptr->v).c[0] = (
float) pars[0];
4734 (ptr->v).c[1] = (
float) pars[1];
4735 (ptr->v).c[2] = (
float) pars[2];
4736 (ptr->v).c[3] = (
float) pars[3];
4738 #ifdef JSVRMLCLASSESVERBOSE
4739 printf(
"SFVec4fConstr: obj = %p, %u args, %f %f %f %f\n",
4741 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2], ptr->v.c[3]);
4744 ptr->valueChanged = 1;
4746 #if JS_VERSION < 185
4747 *rval = OBJECT_TO_JSVAL(obj);
4749 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
4755 #if JS_VERSION < 185
4756 SFVec4fGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
4758 SFVec4fGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
4763 #ifdef JSVRMLCLASSESVERBOSE
4767 #if JS_VERSION >= 185
4769 if (!JS_IdToValue(cx,iid,&
id)) {
4770 printf(
"JS_IdToValue failed in SFVec4fGetProperty.\n");
4775 #ifdef JSVRMLCLASSESVERBOSE
4783 _idStr = JS_ValueToString(cx, *vp);
4784 #if JS_VERSION < 185
4785 _id_c = JS_GetStringBytes(_idStr);
4787 _id_c = JS_EncodeString(cx,_idStr);
4791 if ((ptr = (
SFVec4fNative *)JS_GetPrivate(cx,obj)) == NULL) {
4792 printf(
"JS_GetPrivate failed in SFVec4fGetProperty.\n");
4796 if (JSVAL_IS_INT(
id)) {
4797 switch (JSVAL_TO_INT(
id)) {
4800 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4802 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
4809 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4811 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
4818 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4820 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
4827 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
4829 "JS_NewDouble failed for %f in SFVec4fGetProperty.\n",
4836 #ifdef JSVRMLCLASSESVERBOSE
4837 printf (
"SFVec4fGetProperty, id is NOT an int...\n");
4845 #if JS_VERSION < 185
4846 SFVec4fSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
4848 SFVec4fSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp)
4853 #if JS_VERSION >= 185
4855 if (!JS_IdToValue(cx,iid,&
id)) {
4856 printf(
"JS_IdToValue failed in SFVec4fSetProperty.\n");
4861 if ((ptr = (
SFVec4fNative *)JS_GetPrivate(cx, obj)) == NULL) {
4862 printf(
"JS_GetPrivate failed in SFVec4fSetProperty.\n");
4865 ptr->valueChanged++;
4866 #ifdef JSVRMLCLASSESVERBOSE
4867 printf(
"SFVec4fSetProperty: obj = %p, id = %d, valueChanged = %d\n",
4868 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
4871 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
4872 printf(
"JS_ConvertValue failed in SFVec4fSetProperty.\n");
4876 if (JSVAL_IS_INT(
id)) {
4877 switch (JSVAL_TO_INT(
id)) {
4879 #if JS_VERSION < 185
4880 (ptr->v).c[0] = (
float) *JSVAL_TO_DOUBLE(myv);
4882 (ptr->v).c[0] = (
float) JSVAL_TO_DOUBLE(myv);
4886 #if JS_VERSION < 185
4887 (ptr->v).c[1] = (
float) *JSVAL_TO_DOUBLE(myv);
4889 (ptr->v).c[1] = (
float) JSVAL_TO_DOUBLE(myv);
4893 #if JS_VERSION < 185
4894 (ptr->v).c[2] = (
float) *JSVAL_TO_DOUBLE(myv);
4896 (ptr->v).c[2] = (
float) JSVAL_TO_DOUBLE(myv);
4900 #if JS_VERSION < 185
4901 (ptr->v).c[3] = (
float) *JSVAL_TO_DOUBLE(myv);
4903 (ptr->v).c[3] = (
float) JSVAL_TO_DOUBLE(myv);
4914 #if JS_VERSION < 185
4915 SFVec4dToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4917 SFVec4dToString(JSContext *cx, uintN argc, jsval *vp) {
4918 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4919 jsval *argv = JS_ARGV(cx,vp);
4927 if ((ptr = (
SFVec4dNative *)JS_GetPrivate(cx, obj)) == NULL) {
4928 printf(
"JS_GetPrivate failed in SFVec4dToString.\n");
4932 memset(buff, 0, STRING);
4933 sprintf(buff,
"%.9g %.9g %.9g %.9g",
4934 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2],ptr->v.c[3]);
4935 _str = JS_NewStringCopyZ(cx, buff);
4937 #if JS_VERSION < 185
4938 *rval = STRING_TO_JSVAL(_str);
4940 JS_SET_RVAL(cx,vp,STRING_TO_JSVAL(_str));
4943 #ifdef JSVRMLCLASSESVERBOSE
4944 printf (
"SFVec4dToString, string is :%s:\n",buff);
4951 #if JS_VERSION < 185
4952 SFVec4dAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
4954 SFVec4dAssign(JSContext *cx, uintN argc, jsval *vp) {
4955 JSObject *obj = JS_THIS_OBJECT(cx,vp);
4956 jsval *argv = JS_ARGV(cx,vp);
4957 JSString *_id_jsstr;
4959 JSObject *_from_obj;
4965 #ifdef JSVRMLCLASSESVERBOSE
4966 printf (
"start of SFVec4dAssign\n");
4969 if ((ptr = (
SFVec4dNative *)JS_GetPrivate(cx, obj)) == NULL) {
4970 printf(
"JS_GetPrivate failed for obj in SFVec4dAssign.\n");
4974 CHECK_CLASS(cx,obj,argv,__FUNCTION__,SFVec4dClass)
4976 #if JS_VERSION < 185
4977 if (!JS_ConvertArguments(cx, argc, argv,
"o s", &_from_obj, &_id_str)) {
4979 if (JS_ConvertArguments(cx, argc, argv,
"oS", &_from_obj, &_id_jsstr) == JS_TRUE) {
4980 _id_str = JS_EncodeString(cx,_id_jsstr);
4983 printf(
"JS_ConvertArguments failed in SFVec4dAssign.\n");
4987 CHECK_CLASS(cx,_from_obj,argv,__FUNCTION__,SFVec4dClass)
4989 if ((fptr = (
SFVec4dNative *)JS_GetPrivate(cx, _from_obj)) == NULL) {
4990 printf(
"JS_GetPrivate failed for _from_obj in SFVec4dAssign.\n");
4993 #ifdef JSVRMLCLASSESVERBOSE
4994 printf(
"SFVec4dAssign: obj = %p, id = \"%s\", from = %p\n",
4995 obj, _id_str, _from_obj);
4998 SFVec4dNativeAssign(ptr, fptr);
4999 #if JS_VERSION < 185
5000 *rval = OBJECT_TO_JSVAL(obj);
5002 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5005 #ifdef JSVRMLCLASSESVERBOSE
5006 printf (
"end of SFVec4dAssign\n");
5013 #if JS_VERSION < 185
5014 SFVec4dConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) {
5016 SFVec4dConstr(JSContext *cx, uintN argc, jsval *vp) {
5017 JSObject *obj = JS_NewObject(cx,&SFVec4dClass,NULL,NULL);
5018 jsval *argv = JS_ARGV(cx,vp);
5023 #ifdef JSVRMLCLASSESVERBOSE
5024 printf (
"start of SFVec4dConstr\n");
5030 printf(
"SFVec4dNativeNew failed in SFVec4dConstr.\n");
5038 if (!JS_SetPrivate(cx, obj, ptr)) {
5039 printf(
"JS_SetPrivate failed in SFVec4dConstr.\n");
5044 (ptr->v).c[0] = (
float) 0.0;
5045 (ptr->v).c[1] = (
float) 0.0;
5046 (ptr->v).c[2] = (
float) 0.0;
5047 (ptr->v).c[3] = (
float) 0.0;
5049 if (!JS_ConvertArguments(cx, argc, argv,
"d d d d",
5050 &(pars[0]), &(pars[1]), &(pars[2]), &(pars[3]))) {
5051 printf(
"JS_ConvertArguments failed in SFVec4dConstr.\n");
5054 (ptr->v).c[0] = (
float) pars[0];
5055 (ptr->v).c[1] = (
float) pars[1];
5056 (ptr->v).c[2] = (
float) pars[2];
5057 (ptr->v).c[3] = (
float) pars[3];
5059 #ifdef JSVRMLCLASSESVERBOSE
5060 printf(
"SFVec4dConstr: obj = %p, %u args, %f %f %f %f\n",
5062 (ptr->v).c[0], (ptr->v).c[1], (ptr->v).c[2], ptr->v.c[3]);
5065 ptr->valueChanged = 1;
5067 #if JS_VERSION < 185
5068 *rval = OBJECT_TO_JSVAL(obj);
5070 JS_SET_RVAL(cx,vp,OBJECT_TO_JSVAL(obj));
5076 #if JS_VERSION < 185
5077 SFVec4dGetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
5079 SFVec4dGetProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp)
5084 #ifdef JSVRMLCLASSESVERBOSE
5088 #if JS_VERSION >= 185
5090 if (!JS_IdToValue(cx,iid,&
id)) {
5091 printf(
"JS_IdToValue failed in SFVec4dGetProperty.\n");
5096 #ifdef JSVRMLCLASSESVERBOSE
5100 _idStr = JS_ValueToString(cx, *vp);
5101 #if JS_VERSION < 185
5102 _id_c = JS_GetStringBytes(_idStr);
5104 _id_c = JS_EncodeString(cx,_idStr);
5108 if ((ptr = (
SFVec4dNative *)JS_GetPrivate(cx,obj)) == NULL) {
5109 printf(
"JS_GetPrivate failed in SFVec4dGetProperty.\n");
5113 if (JSVAL_IS_INT(
id)) {
5114 switch (JSVAL_TO_INT(
id)) {
5117 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5119 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
5126 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5128 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
5135 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5137 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
5144 if (JS_NewNumberValue(cx, d, vp) == JS_FALSE) {
5146 "JS_NewDouble failed for %f in SFVec4dGetProperty.\n",
5153 #ifdef JSVRMLCLASSESVERBOSE
5154 printf (
"SFVec4dGetProperty, id is NOT an int...\n");
5162 #if JS_VERSION < 185
5163 SFVec4dSetProperty(JSContext *cx, JSObject *obj, jsval
id, jsval *vp)
5165 SFVec4dSetProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp)
5170 #if JS_VERSION >= 185
5172 if (!JS_IdToValue(cx,iid,&
id)) {
5173 printf(
"JS_IdToValue failed in SFVec4dSetProperty.\n");
5178 if ((ptr = (
SFVec4dNative *)JS_GetPrivate(cx, obj)) == NULL) {
5179 printf(
"JS_GetPrivate failed in SFVec4dSetProperty.\n");
5182 ptr->valueChanged++;
5183 #ifdef JSVRMLCLASSESVERBOSE
5184 printf(
"SFVec4dSetProperty: obj = %p, id = %d, valueChanged = %d\n",
5185 obj, JSVAL_TO_INT(
id), ptr->valueChanged);
5188 if (!JS_ConvertValue(cx, *vp, JSTYPE_NUMBER, &myv)) {
5189 printf(
"JS_ConvertValue failed in SFVec4dSetProperty.\n");
5193 if (JSVAL_IS_INT(
id)) {
5194 switch (JSVAL_TO_INT(
id)) {
5196 #if JS_VERSION < 185
5197 (ptr->v).c[0] = (
float) *JSVAL_TO_DOUBLE(myv);
5199 (ptr->v).c[0] = (
float) JSVAL_TO_DOUBLE(myv);
5203 #if JS_VERSION < 185
5204 (ptr->v).c[1] = (
float) *JSVAL_TO_DOUBLE(myv);
5206 (ptr->v).c[1] = (
float) JSVAL_TO_DOUBLE(myv);
5210 #if JS_VERSION < 185
5211 (ptr->v).c[2] = (
float) *JSVAL_TO_DOUBLE(myv);
5213 (ptr->v).c[2] = (
float) JSVAL_TO_DOUBLE(myv);
5217 #if JS_VERSION < 185
5218 (ptr->v).c[3] = (
float) *JSVAL_TO_DOUBLE(myv);
5220 (ptr->v).c[3] = (
float) JSVAL_TO_DOUBLE(myv);